<?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>233919</bug_id>
          
          <creation_ts>2021-12-07 02:32:38 -0800</creation_ts>
          <short_desc>[WASM-GC] Add support for GC structs static subtyping</short_desc>
          <delta_ts>2024-07-24 15:25:15 -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>WebAssembly</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>239668</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>247394</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Dmitry">dbezhetskov</assigned_to>
          <cc>asumu</cc>
    
    <cc>bashorov</cc>
    
    <cc>d_degazio</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820955</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-12-07 02:32:38 -0800</bug_when>
    <thetext>Wasm GC introduces (https://github.com/WebAssembly/gc/blob/master/proposals/gc/MVP.md) structural subtyping rules so in this bug we are going to support them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820959</commentid>
    <comment_count>1</comment_count>
      <attachid>446147</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-12-07 02:44:25 -0800</bug_when>
    <thetext>Created attachment 446147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820960</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-12-07 02:45:09 -0800</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823946</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 02:33:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86459038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2011122</commentid>
    <comment_count>4</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2024-02-06 12:10:49 -0800</bug_when>
    <thetext>This bug is ok to close too, as struct subtyping has landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2048184</commentid>
    <comment_count>5</comment_count>
    <who name="David Degazio">d_degazio</who>
    <bug_when>2024-07-24 15:25:15 -0700</bug_when>
    <thetext>Closing since we now have subtyping support. I think https://bugs.webkit.org/show_bug.cgi?id=239668 is a reasonably accurate bug for us to dupe this to.

*** This bug has been marked as a duplicate of bug 239668 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446147</attachid>
            <date>2021-12-07 02:44:25 -0800</date>
            <delta_ts>2021-12-07 02:44:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233919-20211207174423.patch</filename>
            <type>text/plain</type>
            <size>98608</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi45NWQxMTJiNzFjMGE5YTk0
MTkzNjdiNDc5ZTE5YmEyODRlNmQyZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjIgQEAKKzIwMjEtMTEtMjIgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZA
aWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1HQ10gQWRkIHN1cHBvcnQgZm9yIEdDIHN0cnVj
dHMgc3RhdGljIHN1YnR5cGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBXSVA6IEFkZGVkIHZhbGlkYXRpb24gY2hlY2sgZm9yIGFsbCBy
ZWYgdHlwZXMgYWZ0ZXIgdHlwZSdzIHNlY3Rpb24gcGFyc2luZworICAgICAgICBhbmQgc3VwcG9y
dGVkIHN0cnVjdHVyYWwgc3VidHlwaW5nIHJ1bGVzIGZvciBzdHJ1Y3RzLgorCisyMDIxLTExLTIy
ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1dBU00tR0NdIEFkZCBzdXBwb3J0IGZvciBHQyBzdHJ1Y3RzIHR5cGVzIGVuY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEludHJv
ZHVjZWQgZmxhZyBmb3IgV2FzbSBHQyBhbmQgYWRkIHN1cHBvcnQgb2YgV2FzbSBHQyBzdHJ1Y3Qg
dHlwZXMgZW5jb2RpbmcKKyAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBNVlAgc3BlYzoKKyAgICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2djL2Jsb2IvbWFzdGVyL3Byb3Bvc2Fs
cy9nYy9NVlAubWQuCisgICAgICAgIAorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoK
KyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjpnZXRHbG9iYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJ
UkdlbmVyYXRvcjo6c2V0R2xvYmFsKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Z2V0R2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKToKKyAgICAgICAgKiB3
YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNz
aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21HbG9iYWwuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpHbG9iYWw6OnNldCk6CisgICAgICAgICogd2FzbS9XYXNtR2xvYmFsLmg6CisgICAgICAgICog
d2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdl
bmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZSk6CisgICAgICAgIChKU0M6
Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAqIHdhc20vV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3Jt
YXRpb246OmdldFNpZ25hdHVyZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlSW5m
b3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OnR5cGVz
Q291bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6aXNT
dHJ1Y3RUeXBlIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VCbG9ja1NpZ25hdHVyZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5cGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZSk6
CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OlNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rp
b25QYXJzZXI6OnBhcnNlSW1wb3J0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNl
cjo6cGFyc2VGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBh
cnNlRXhwb3J0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0
RXhwcik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb25U
eXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VTdHJ1Y3RUeXBl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWxUeXBlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFeGNlcHRpb24pOgorICAg
ICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlHbG9iYWwuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5R2xvYmFsOjp0
eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMpOgorICAgICAgICAqIHdhc20vd2FzbS5q
c29uOgorCisyMDIxLTExLTIzICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW1dBU00tRnVuY3Rpb24tUmVmZXJlbmNlc10gU2ltcGxpZnkgcmVw
cmVzZW50YXRpb24gb2YgV2FzbSBUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2UgU2lnbmF0dXJlIGluZGV4IHdpdGggaW5k
ZXggaW50byBXYXNtIFR5cGUgc2VjdGlvbi4KKyAgICAgICAgQWRkIGNvcnJlc3BvbmRpbmcgbWFw
cGluZyB0byBiZSBhYmxlIHRvIGdldCBpdHJvZHVjZWQgdHlwZSBpbmRleAorICAgICAgICB2aWEg
Z2l2ZW4gZnVuY3Rpb24gaW5kZXguCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJ5dGVjb2RlRHVtcGVyOjpkdW1wQmxvY2spOgor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBs
YW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QkJRUGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtRm9y
bWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206OmlzRXh0ZXJucmVmKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6aXNGdW5jcmVmKToKKyAgICAgICAgKEpTQzo6V2FzbTo6ZnVuY3JlZlR5cGUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpleHRlcm5yZWZUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNU
eXBlSW5kZXhIZWFwVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRQbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TExJbnRQbGFuOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludFBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24pOgorICAgICAgICAqIHdh
c20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uOjpzaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6Z2V0VHlwZUluZGV4Rm9yRnVu
Y3Rpb24gY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA6
CisgICAgICAgIChKU0M6Oldhc206Ok9NR0Zvck9TUkVudHJ5UGxhbjo6d29yayk6CisgICAgICAg
ICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondv
cmspOgorICAgICAgICAqIHdhc20vV2FzbVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQ
YXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZSk6CisgICAgICAgICogd2FzbS9XYXNt
U2VjdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBh
cnNlSW1wb3J0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5j
dGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIp
OgorICAgICAgICAqIHdhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5OgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2spOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRzKToKKwogMjAyMS0xMS0y
MiAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtlIHNo
YXJpbmcgb2YgdW5saW5rZWQgYmFzZWxpbmUgY29kZSBwb3NzaWJsZSBvbiBKU1ZBTFVFMzJfNjQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CmluZGV4IDM5OGY1NWIzZTc1NjVkYjM2MjQ2ZjdlMWUyMTMxOTM5ZTAxMWE5NzYuLjg2MTRlOTUz
YTk4ZDIwOGIwNmIwMGY5OTRmNmFkM2QxZGJmMDI5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9jayogYmxvY2ss
IGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uCiAgICAgb3V0LnByaW50KG1ha2VTdHJpbmcoSW5kZXhP
ck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtb2R1bGVJbmZvcm1hdGlvbi5uYW1lU2VjdGlvbi0+
Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKSk7CiAKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9
IG1vZHVsZUluZm9ybWF0aW9uLmZ1bmN0aW9uc1tibG9jay0+ZnVuY3Rpb25JbmRleCgpXTsKLSAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Jsb2NrLT5mdW5jdGlvbkluZGV4KCldOworICAg
IFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW50ZXJu
YWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbYmxvY2stPmZ1bmN0aW9uSW5kZXgoKV0uc2lnbmF0
dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICBvdXQucHJpbnQoIiA6ICIsIHNpZ25h
dHVyZSwgIlxuIik7CiAgICAgb3V0LnByaW50KCJ3YXNtIHNpemU6ICIsIGZ1bmN0aW9uLmRhdGEu
c2l6ZSgpLCAiIGJ5dGVzXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCmluZGV4IDk1N2FlYTQyMWYzYTM5YjUzMWY4YmRiOGQzYTAyNjM5MDY3OGRlZjMu
LmE4YjhhZGVmZDZmOTAzNWI4NTc5YjVlNzMxYWIwNWVhYTdlZWVkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTQ2LDYgKzU0Niw3IEBAIGJv
b2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgdihCb29sLCB1c2VUZW1wb3Jh
bCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgVGVtcG9yYWwgb2JqZWN0LiIpIFwKICAgICB2
KEJvb2wsIHVzZVdlYkFzc2VtYmx5VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0
cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSB0aHJlYWRpbmcgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1
c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzLCBmYWxzZSwgTm9ybWFsLCAiQWxs
b3cgZnVuY3Rpb24gdHlwZXMgZnJvbSB0aGUgd2FzbSB0eXBlZCBmdW5jdGlvbiByZWZlcmVuY2Vz
IHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlHQywgZmFsc2UsIE5vcm1hbCwg
IkFsbG93IGdjIHR5cGVzIGZyb20gdGhlIHdhc20gZ2MgcHJvcG9zYWwuIikgXAogICAgIHYoQm9v
bCwgdXNlV2ViQXNzZW1ibHlFeGNlcHRpb25zLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0aGUgbmV3
IHNlY3Rpb24gYW5kIGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIGV4Y2VwdGlvbiBoYW5kbGlu
ZyBzcGVjLiIpIFwKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcAppbmRleCBlNDI4YjBkNWYzMmJlZjA4NDk5MzQxMDVkOTFlZmMwMWMx
MjI3YTk3Li40MTlmZTI4OWVjZjM4NDIyYmIzYWYzNmQ2ZTdhMmY3MmNiMGRjNTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAg
LTExMjQsOCArMTEyNCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMy
X3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpCiB7CiAgICAgLy8gRklY
TUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTg1MDY+LgogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rp
b25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKLSAg
ICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6
Ok5vLCBzaWduYXR1cmVJbmRleCB9KTsKKyAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBl
IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUluZGV4Rm9yRnVu
Y3Rpb24oaW5kZXgpIH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBl
KFR5cGVzOjpGdW5jcmVmKTsKICAgICBlbWl0Q0NhbGwoJm9wZXJhdGlvbldhc21SZWZGdW5jLCBy
ZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwgaW5kZXgpKTsK
QEAgLTEyMTYsNyArMTIxNSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1
bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtCiBhdXRvIEFpcklS
R2VuZXJhdG9yOjphZGRUYWJsZUdyb3codW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5
cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICBBU1NFUlQoZmlsbC50bXAoKSk7Ci0gICAgQVNTRVJUKGlz
U3VidHlwZShmaWxsLnR5cGUoKSwgbV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS53YXNtVHlwZSgp
KSk7CisgICAgQVNTRVJUKG1faW5mby5pc1N1YnR5cGUoZmlsbC50eXBlKCksIG1faW5mby50YWJs
ZXNbdGFibGVJbmRleF0ud2FzbVR5cGUoKSkpOwogICAgIEFTU0VSVChkZWx0YS50bXAoKSk7CiAg
ICAgQVNTRVJUKGRlbHRhLnR5cGUoKS5pc0kzMigpKTsKICAgICByZXN1bHQgPSB0bXBGb3JUeXBl
KFR5cGVzOjpJMzIpOwpAQCAtMTIyOSw3ICsxMjI4LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkVGFibGVHcm93KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGZpbGwsIEV4
cHIKIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFRhYmxlRmlsbCh1bnNpZ25lZCB0YWJsZUluZGV4
LCBFeHByZXNzaW9uVHlwZSBvZmZzZXQsIEV4cHJlc3Npb25UeXBlIGZpbGwsIEV4cHJlc3Npb25U
eXBlIGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKGZpbGwudG1wKCkpOwot
ICAgIEFTU0VSVChpc1N1YnR5cGUoZmlsbC50eXBlKCksIG1faW5mby50YWJsZXNbdGFibGVJbmRl
eF0ud2FzbVR5cGUoKSkpOworICAgIEFTU0VSVChtX2luZm8uaXNTdWJ0eXBlKGZpbGwudHlwZSgp
LCBtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCkpKTsKICAgICBBU1NFUlQob2Zm
c2V0LnRtcCgpKTsKICAgICBBU1NFUlQob2Zmc2V0LnR5cGUoKS5pc0kzMigpKTsKICAgICBBU1NF
UlQoY291bnQudG1wKCkpOwpAQCAtMTQzOCw3ICsxNDM3LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRv
cjo6Z2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQ
YXJ0aWEKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okdsb2JhbElu
Zm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6Ci0gICAgICAgIEFTU0VSVChnbG9iYWwu
bXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJs
ZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5
OjpNdXRhYmxlKTsKICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6
OldpZHRoNjQpKQogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wLCBvZmZz
ZXQpLCB0ZW1wKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNDc4LDcgKzE0NzcsNyBAQCBhdXRvIEFp
cklSR2VuZXJhdG9yOjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZh
bHVlKSAtPiBQYXJ0aWFsUgogICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpTV3JhcHBl
cigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpC
aW5kaW5nTW9kZTo6UG9ydGFibGU6Ci0gICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9
PSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CisgICAgICAg
IEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsK
ICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgQjM6OldpZHRoNjQpKQog
ICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcih0ZW1wLCBvZmZzZXQpLCB0ZW1wKTsK
ICAgICAgICAgZWxzZSB7CkBAIC0zNTQzLDcgKzM1NDIsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9y
OjplbWl0SW5kaXJlY3RDYWxsKFR5cGVkVG1wIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlw
ZSBjYQogCiB2b2lkIEFpcklSR2VuZXJhdG9yOjp1bmlmeShjb25zdCBFeHByZXNzaW9uVHlwZSBk
c3QsIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNvdXJjZSkKIHsKLSAgICBBU1NFUlQoaXNTdWJ0eXBl
KHNvdXJjZS50eXBlKCksIGRzdC50eXBlKCkpKTsKKyAgICBBU1NFUlQobV9pbmZvLmlzU3VidHlw
ZShzb3VyY2UudHlwZSgpLCBkc3QudHlwZSgpKSk7CiAgICAgYXBwZW5kKG1vdmVPcEZvclZhbHVl
VHlwZShkc3QudHlwZSgpKSwgc291cmNlLCBkc3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGI1OWNhMGQ4OTk0YWJm
ODE3YzViOGRmMTIxMDUyZmZhNTc0NjE4Ni4uMWM5YjgzM2MyMDE2MjdiMGYxZDZmOTVjN2I0MjE2
ZDIyOGVjYTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcApAQCAtMTM2Niw3ICsxMzY2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpn
ZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWwKICAgICAgICAgcmVzdWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBlKGdsb2JhbC50eXBlKSwgb3JpZ2luKCksIGds
b2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5k
aW5nTW9kZTo6UG9ydGFibGU6IHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09
IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAg
QVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwog
ICAgICAgICBWYWx1ZSogcG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgQjM6OkludDY0LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBz
YWZlQ2FzdDxpbnQzMl90PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICAgICAgcmVz
dWx0ID0gcHVzaChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHRvQjNUeXBlKGdsb2JhbC50eXBlKSwgb3JpZ2luKCksIHBvaW50ZXIpKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldEds
b2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZQog
ICAgICAgICAgICAgZW1pdFdyaXRlQmFycmllckZvckpTV3JhcHBlcigpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFi
bGU6IHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbC5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbElu
Zm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbC5t
dXRhYmlsaXR5ID09IFdhc206Ok11dGFiaWxpdHk6Ok11dGFibGUpOwogICAgICAgICBWYWx1ZSog
cG9pbnRlciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgQjM6OkludDY0LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90
PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIGdldCh2YWx1ZSks
IHBvaW50ZXIpOwogICAgICAgICAvLyBXZSBlbWl0IGEgd3JpdGUtYmFycmllciBvbnRvIEpTV2Vi
QXNzZW1ibHlHbG9iYWwsIG5vdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMjQzMDI5ZTYyYjMzYzFkMzk3MDk3
YWI0OWRhOGM5MzgzOWFhZGJjMS4uYzI3ZWM4NmUxYjZiZWUyODZhZGQxYTFhZGU4MmY5Mzg5Zjc1
NWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAt
MTE0LDcgKzExNCw3IEBAIHZvaWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCBlZmZv
cnQpCiAgICAgY29tcHV0ZUV4Y2VwdGlvbkhhbmRsZXJMb2NhdGlvbnMoZXhjZXB0aW9uSGFuZGxl
ckxvY2F0aW9ucywgZnVuY3Rpb24uZ2V0KCksIGNvbnRleHQsIGxpbmtCdWZmZXIpOwogCiAgICAg
c2l6ZV90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlSW5m
b3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWdu
YXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5k
aWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7
CiAgICAgZnVuY3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPENvbXBp
bGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfV0FTTV9DT0RFX0ZPUl9NT0RFKENvbXBpbGF0aW9u
TW9kZTo6QkJRTW9kZSwgbGlua0J1ZmZlciwgSklUQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3Nl
bWJseSBCQlEgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25h
dHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1
bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChm
dW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLApAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAK
ICAgICBpZiAobV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4
KSB8fCBtX21vZHVsZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMo
ZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAg
ICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgICAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmlu
dGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUlu
ZGV4OwogICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9y
bWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZW1i
ZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb25JbmRleCwgY3JlYXRlSlNU
b1dhc21XcmFwcGVyKCptX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF0uZW1iZWRk
ZXJFbnRyeXBvaW50SklULCBzaWduYXR1cmUsICZtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1
bmN0aW9uSW5kZXhdLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIGZ1bmN0aW9u
SW5kZXgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50
MzJfdCBmdW5jdGlvbkluZGV4KQogc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IEJC
UVBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBDb21waWxhdGlv
bkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHMsIFRpZXJVcENvdW50KiB0aWVyVXApCiB7CiAgICAgY29uc3QgYXV0
byYgZnVuY3Rpb24gPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnNbZnVuY3Rpb25JbmRl
eF07Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0
aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmlu
dGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUlu
ZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNl
ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpICsgZnVuY3Rpb25J
bmRleDsKICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZv
cm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5k
ZXhTcGFjZSkgPT0gc2lnbmF0dXJlSW5kZXgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQkJR
UGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbigpCiB7CiAgICAgZm9yICh1aW50MzJfdCBmdW5j
dGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0
aW9ucy5zaXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewogICAgICAgICBDb21waWxhdGlvbkNvbnRl
eHQmIGNvbnRleHQgPSBtX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF07Ci0gICAg
ICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgICAg
IFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50
ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5k
ZXg7CiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgICAgIGNvbnN0IHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXhTcGFjZSA9IGZ1bmN0aW9uSW5kZXggKyBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBv
cnRGdW5jdGlvbkNvdW50KCk7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbkluZGV4U3BhY2UgPCBt
X21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDgyNGZhOGI3MzQ3YzVmNDg2YzdlMDlj
MWQ1YTlkMWUwNzRlYjJjMzcuLmFiZWNjNzVjNWFmYWExNTYzNGI4Y2NkNjg4ZTQ1NzMwYTE1MDkw
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTEwNSwyOCAr
MTA1LDI4IEBAIGlubGluZSBib29sIGlzUmVmVHlwZShUeXBlIHR5cGUpCiBpbmxpbmUgYm9vbCBp
c0V4dGVybnJlZihUeXBlIHR5cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBl
KSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihUeXBlS2luZDo6
RXh0ZXJucmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4
ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RXh0ZXJucmVmKTsKICAgICByZXR1
cm4gdHlwZS5raW5kID09IFR5cGVLaW5kOjpFeHRlcm5yZWY7CiB9CiAKIGlubGluZSBib29sIGlz
RnVuY3JlZihUeXBlIHR5cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlw
ZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAm
JiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihUeXBlS2luZDo6RnVu
Y3JlZik7CisgICAgICAgIHJldHVybiBpc1JlZlR5cGUodHlwZSkgJiYgdHlwZS5pbmRleCA9PSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYpOwogICAgIHJldHVybiB0eXBl
LmtpbmQgPT0gVHlwZUtpbmQ6OkZ1bmNyZWY7CiB9CiAKIGlubGluZSBUeXBlIGZ1bmNyZWZUeXBl
KCkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJl
bmNlcygpKQotICAgICAgICByZXR1cm4gV2FzbTo6VHlwZSB7IFdhc206OlR5cGVLaW5kOjpSZWZO
dWxsLCBXYXNtOjpOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxXYXNtOjpTaWduYXR1cmVJbmRl
eD4oV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWYpIH07CisgICAgICAgIHJldHVybiBXYXNtOjpUeXBl
IHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKICAgICByZXR1cm4gVHlw
ZXM6OkZ1bmNyZWY7CiB9CiAKIGlubGluZSBUeXBlIGV4dGVybnJlZlR5cGUoKQogewogICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAg
ICAgIHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51
bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFdhc206OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBl
S2luZDo6RXh0ZXJucmVmKSB9OworICAgICAgICByZXR1cm4gV2FzbTo6VHlwZSB7IFdhc206OlR5
cGVLaW5kOjpSZWZOdWxsLCBXYXNtOjpOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oV2FzbTo6VHlwZUtpbmQ6OkV4dGVybnJlZikgfTsKICAgICByZXR1cm4gVHlwZXM6OkV4dGVy
bnJlZjsKIH0KIApAQCAtMTM4LDI4ICsxMzgsNiBAQCBpbmxpbmUgYm9vbCBpc1JlZldpdGhUeXBl
SW5kZXgoVHlwZSB0eXBlKQogICAgIHJldHVybiBpc1JlZlR5cGUodHlwZSkgJiYgIWlzRXh0ZXJu
cmVmKHR5cGUpICYmICFpc0Z1bmNyZWYodHlwZSk7CiB9CiAKLWlubGluZSBib29sIGlzVHlwZUlu
ZGV4SGVhcFR5cGUoaW50MzJfdCBoZWFwVHlwZSkKLXsKLSAgICBpZiAoIU9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGhlYXBUeXBlID49IDA7Ci19Ci0KLWlubGluZSBib29sIGlzU3VidHlw
ZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQpCi17Ci0gICAgaWYgKHN1Yi5pc051bGxhYmxlKCkgJiYg
IXBhcmVudC5pc051bGxhYmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgo
c3ViLmlzUmVmKCkgfHwgc3ViLmlzUmVmTnVsbCgpKSAmJiBpc0Z1bmNyZWYocGFyZW50KSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoc3ViLmlzUmVmKCkgJiYgcGFyZW50LmlzUmVm
TnVsbCgpICYmIHN1Yi5pbmRleCA9PSBwYXJlbnQuaW5kZXgpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgcmV0dXJuIHN1YiA9PSBwYXJlbnQ7Ci19Ci0KIGlubGluZSBib29sIGlzVmFsaWRI
ZWFwVHlwZUtpbmQoVHlwZUtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTIz
NiwxMyArMjE0LDE0IEBAIHN0cnVjdCBFeHBvcnQgewogCiBTdHJpbmcgbWFrZVN0cmluZyhjb25z
dCBOYW1lJiBjaGFyYWN0ZXJzKTsKIAorZW51bSBNdXRhYmlsaXR5IDogdWludDhfdCB7CisgICAg
Ly8gRklYTUUgYXV0by1nZW5lcmF0ZSB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MjMxCisgICAgTXV0YWJsZSA9IDEsCisgICAgSW1tdXRhYmxlID0gMAor
fTsKKwogc3RydWN0IEdsb2JhbEluZm9ybWF0aW9uIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7Ci0gICAgZW51bSBNdXRhYmlsaXR5IDogdWludDhfdCB7Ci0gICAgICAgIC8v
IEZJWE1FIGF1dG8tZ2VuZXJhdGUgdGhpcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NTIzMQotICAgICAgICBNdXRhYmxlID0gMSwKLSAgICAgICAgSW1tdXRhYmxl
ID0gMAotICAgIH07CiAKICAgICBlbnVtIEluaXRpYWxpemF0aW9uVHlwZSA6IHVpbnQ4X3Qgewog
ICAgICAgICBJc0ltcG9ydCwKQEAgLTI2Myw2ICsyNDIsMjkgQEAgc3RydWN0IEdsb2JhbEluZm9y
bWF0aW9uIHsKICAgICB1aW50NjRfdCBpbml0aWFsQml0c09ySW1wb3J0TnVtYmVyIHsgMCB9Owog
fTsKIAorc3RydWN0IEZ1bmN0aW9uRGVzY3JpcHRpb24geworICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4OworICAgIHVpbnQzMl90IHR5cGVJbmRleDsKK307CisKK3N0cnVjdCBGdW5j
VHlwZSB7CisgICAgUmVmUHRyPFNpZ25hdHVyZT4gc2lnbmF0dXJlOworfTsKKworc3RydWN0IFN0
cnVjdEZpZWxkIHsKKyAgICBUeXBlIHR5cGU7CisgICAgTXV0YWJpbGl0eSBtdXRhYmlsaXR5Owor
CisgICAgYm9vbCBpc011dGFibGUoKSBjb25zdCB7IHJldHVybiBtdXRhYmlsaXR5ID09IE11dGFi
aWxpdHk6Ok11dGFibGU7IH0KKyAgICBib29sIElzSW1tdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpJbW11dGFibGU7IH0KK307CisKK3N0cnVjdCBTdHJ1
Y3RUeXBlIHsKKyAgICBWZWN0b3I8U3RydWN0RmllbGQ+IGZpZWxkczsKK307CisKK3VzaW5nIFR5
cGVSZWNvcmQgPSBzdGQ6OnZhcmlhbnQ8RnVuY1R5cGUsIFN0cnVjdFR5cGU+OworCiBzdHJ1Y3Qg
RnVuY3Rpb25EYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
c2l6ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaAppbmRleCBkOTdlN2U3NTlhNGYyNDc1YTM3Nzc3Mzg3MTc4MzFiYzQ5ZTA5M2Qy
Li43YWRlODg4NTgzNGM5ZDYyMTgxN2I1NWIwMzA4YTVhMmI0MTVjZWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMjU3LDcgKzI1
Nyw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkgLT4gUmVzdWx0CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKG51bWJlck9mTG9jYWxz
KSwgImNhbid0IGdldCBGdW5jdGlvbidzIG51bWJlciBvZiBsb2NhbHMgaW4gZ3JvdXAgIiwgaSk7
CiAgICAgICAgIHRvdGFsTnVtYmVyT2ZMb2NhbHMgKz0gbnVtYmVyT2ZMb2NhbHM7CiAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYodG90YWxOdW1iZXJPZkxvY2FscyA+IG1heEZ1bmN0aW9uTG9j
YWxzLCAiRnVuY3Rpb24ncyBudW1iZXIgb2YgbG9jYWxzIGlzIHRvbyBiaWcgIiwgdG90YWxOdW1i
ZXJPZkxvY2FscywgIiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uTG9jYWxzKTsKLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB0eXBlT2ZMb2NhbCksICJj
YW4ndCBnZXQgRnVuY3Rpb24gbG9jYWwncyB0eXBlIGluIGdyb3VwICIsIGkpOworICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZSh0eXBlT2ZMb2NhbCksICJjYW4ndCBn
ZXQgRnVuY3Rpb24gbG9jYWwncyB0eXBlIGluIGdyb3VwICIsIGkpOwogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFpc0RlZmF1bHRhYmxlVHlwZSh0eXBlT2ZMb2NhbCksICJGdW5jdGlvbiBs
b2NhbHMgbXVzdCBoYXZlIGEgZGVmYXVsdGFibGUgdHlwZSIpOwogCiAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIW1fbG9jYWxzLnRyeVJlc2VydmVDYXBhY2l0eSh0b3RhbE51bWJlck9mTG9j
YWxzKSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIGZ1bmN0aW9uJ3MgIiwgdG90
YWxOdW1iZXJPZkxvY2FscywgIiBsb2NhbHMiKTsKQEAgLTY2OSw3ICs2NjksNyBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUFubm90YXRlZFNlbGVjdEltbWVkaWF0ZXMoQW5u
b3RhdGVkU2VsZWN0SW1tZQogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoc2l6ZU9mQW5ub3RhdGlv
blZlY3RvciAhPSAxLCAic2VsZWN0IGludmFsaWQgcmVzdWx0IGFyaXR5IGZvciIpOwogCiAgICAg
VHlwZSB0YXJnZXRUeXBlOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBl
KG1faW5mbywgdGFyZ2V0VHlwZSksICJzZWxlY3QgY2FuJ3QgcGFyc2UgYW5ub3RhdGlvbnMiKTsK
KyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZSh0YXJnZXRUeXBlKSwgInNl
bGVjdCBjYW4ndCBwYXJzZSBhbm5vdGF0aW9ucyIpOwogCiAgICAgcmVzdWx0LnNpemVPZkFubm90
YXRpb25WZWN0b3IgPSBzaXplT2ZBbm5vdGF0aW9uVmVjdG9yOwogICAgIHJlc3VsdC50YXJnZXRU
eXBlID0gdGFyZ2V0VHlwZTsKQEAgLTcyNCw3ICs3MjQsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpjaGVja0JyYW5jaFRhcmdldChjb25zdCBDb250cm9sVHlwZSYgdGFyZ2V0KSAt
PiBQYQogCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0g
dGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpOyArK2kpCi0gICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYoIWlzU3VidHlwZShtX2V4cHJlc3Npb25TdGFja1tvZmZzZXQgKyBpXS50eXBlKCks
IHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkpKSwgImJyYW5jaCdzIHN0YWNrIHR5cGUgaXMgbm90
IGEgYmxvY2sncyB0eXBlIGJyYW5jaCB0YXJnZXQgdHlwZS4gU3RhY2sgdmFsdWUgaGFzIHR5cGUg
IiwgbV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLmtpbmQsICIgYnV0IGJyYW5j
aCB0YXJnZXQgZXhwZWN0cyBhIHZhbHVlIG9mICIsIHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkp
LmtpbmQsICIgYXQgaW5kZXggIiwgaSk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
IW1faW5mby5pc1N1YnR5cGUobV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLCB0
YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShpKSksICJicmFuY2gncyBzdGFjayB0eXBlIGlzIG5vdCBh
IGJsb2NrJ3MgdHlwZSBicmFuY2ggdGFyZ2V0IHR5cGUuIFN0YWNrIHZhbHVlIGhhcyB0eXBlICIs
IG1fZXhwcmVzc2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKS5raW5kLCAiIGJ1dCBicmFuY2gg
dGFyZ2V0IGV4cGVjdHMgYSB2YWx1ZSBvZiAiLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShpKS5r
aW5kLCAiIGF0IGluZGV4ICIsIGkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTczNCw3ICs3
MzQsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojp1bmlmeShjb25zdCBDb250cm9s
VHlwZSYgY29udHJvbERhdGEpIC0+IFBhcnRpYWxSZQogewogICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoY29udHJvbERhdGEuc2lnbmF0dXJlKCktPnJldHVybkNvdW50KCkgIT0gbV9leHByZXNz
aW9uU3RhY2suc2l6ZSgpLCAiIGJsb2NrIHdpdGggdHlwZTogIiwgY29udHJvbERhdGEuc2lnbmF0
dXJlKCktPnRvU3RyaW5nKCksICIgcmV0dXJuczogIiwgY29udHJvbERhdGEuc2lnbmF0dXJlKCkt
PnJldHVybkNvdW50KCksICIgYnV0IHN0YWNrIGhhczogIiwgbV9leHByZXNzaW9uU3RhY2suc2l6
ZSgpLCAiIHZhbHVlcyIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250cm9sRGF0
YS5zaWduYXR1cmUoKS0+cmV0dXJuQ291bnQoKTsgKytpKQotICAgICAgICBXQVNNX1ZBTElEQVRP
Ul9GQUlMX0lGKCFpc1N1YnR5cGUobV9leHByZXNzaW9uU3RhY2tbaV0udHlwZSgpLCBjb250cm9s
RGF0YS5zaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKSksICJjb250cm9sIGZsb3cgcmV0dXJucyB3
aXRoIHVuZXhwZWN0ZWQgdHlwZS4gIiwgbV9leHByZXNzaW9uU3RhY2tbaV0udHlwZSgpLmtpbmQs
ICIgaXMgbm90IGEgIiwgY29udHJvbERhdGEuc2lnbmF0dXJlKCktPnJldHVyblR5cGUoaSkua2lu
ZCk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIW1faW5mby5pc1N1YnR5cGUobV9l
eHByZXNzaW9uU3RhY2tbaV0udHlwZSgpLCBjb250cm9sRGF0YS5zaWduYXR1cmUoKS0+cmV0dXJu
VHlwZShpKSksICJjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVuZXhwZWN0ZWQgdHlwZS4gIiwg
bV9leHByZXNzaW9uU3RhY2tbaV0udHlwZSgpLmtpbmQsICIgaXMgbm90IGEgIiwgY29udHJvbERh
dGEuc2lnbmF0dXJlKCktPnJldHVyblR5cGUoaSkua2luZCk7CiAKICAgICByZXR1cm4geyB9Owog
fQpAQCAtODU2LDcgKzg1Niw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFU
RV9DQVNFKQogICAgICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGluZGV4
LCAidGFibGUuc2V0Iik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6
OkkzMiAhPSBpbmRleC50eXBlKCkua2luZCwgInRhYmxlLnNldCBpbmRleCB0byB0eXBlICIsIGlu
ZGV4LnR5cGUoKS5raW5kLCAiIGV4cGVjdGVkICIsIFR5cGVLaW5kOjpJMzIpOwogICAgICAgICBU
eXBlIHR5cGUgPSBtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7Ci0gICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIHR5cGUpLCAi
dGFibGUuc2V0IHZhbHVlIHRvIHR5cGUgIiwgdmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQg
IiwgdHlwZS5raW5kKTsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9pbmZvLmlz
U3VidHlwZSh2YWx1ZS50eXBlKCksIHR5cGUpLCAidGFibGUuc2V0IHZhbHVlIHRvIHR5cGUgIiwg
dmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgdHlwZS5raW5kKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVt
ZW50VHlwZTo6RXh0ZXJucmVmIHx8IG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09O
VEVYVChhZGRUYWJsZVNldCh0YWJsZUluZGV4LCBpbmRleCwgdmFsdWUpKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9P
UChDUkVBVEVfQ0FTRSkKICAgICAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NUQUNL
X0lOVE8oZmlsbCwgInRhYmxlLmdyb3ciKTsKIAogICAgICAgICAgICAgVHlwZSB0YWJsZVR5cGUg
PSBtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLndhc21UeXBlKCk7Ci0gICAgICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUoZmlsbC50eXBlKCksIHRhYmxlVHlwZSksICJ0
YWJsZS5ncm93IGV4cGVjdHMgZmlsbCB2YWx1ZSBvZiB0eXBlICIsIHRhYmxlVHlwZS5raW5kLCAi
IGdvdCAiLCBmaWxsLnR5cGUoKS5raW5kKTsKKyAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIW1faW5mby5pc1N1YnR5cGUoZmlsbC50eXBlKCksIHRhYmxlVHlwZSksICJ0YWJsZS5n
cm93IGV4cGVjdHMgZmlsbCB2YWx1ZSBvZiB0eXBlICIsIHRhYmxlVHlwZS5raW5kLCAiIGdvdCAi
LCBmaWxsLnR5cGUoKS5raW5kKTsKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
VHlwZUtpbmQ6OkkzMiAhPSBkZWx0YS50eXBlKCkua2luZCwgInRhYmxlLmdyb3cgZXhwZWN0cyBh
biBpMzIgZGVsdGEgdmFsdWUsIGdvdCAiLCBkZWx0YS50eXBlKCkua2luZCk7CiAKICAgICAgICAg
ICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKQEAgLTkzMCw3ICs5MzAsNyBAQCBGT1JfRUFDSF9X
QVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgICAgIFdBU01fVFJZX1BP
UF9FWFBSRVNTSU9OX1NUQUNLX0lOVE8ob2Zmc2V0LCAidGFibGUuZmlsbCIpOwogCiAgICAgICAg
ICAgICBUeXBlIHRhYmxlVHlwZSA9IG1faW5mby50YWJsZXNbdGFibGVJbmRleF0ud2FzbVR5cGUo
KTsKLSAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShmaWxsLnR5
cGUoKSwgdGFibGVUeXBlKSwgInRhYmxlLmZpbGwgZXhwZWN0cyBmaWxsIHZhbHVlIG9mIHR5cGUg
IiwgdGFibGVUeXBlLmtpbmQsICIgZ290ICIsIGZpbGwudHlwZSgpLmtpbmQpOworICAgICAgICAg
ICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9pbmZvLmlzU3VidHlwZShmaWxsLnR5cGUoKSwg
dGFibGVUeXBlKSwgInRhYmxlLmZpbGwgZXhwZWN0cyBmaWxsIHZhbHVlIG9mIHR5cGUgIiwgdGFi
bGVUeXBlLmtpbmQsICIgZ290ICIsIGZpbGwudHlwZSgpLmtpbmQpOwogICAgICAgICAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRihUeXBlS2luZDo6STMyICE9IG9mZnNldC50eXBlKCkua2luZCwg
InRhYmxlLmZpbGwgZXhwZWN0cyBhbiBpMzIgb2Zmc2V0IHZhbHVlLCBnb3QgIiwgb2Zmc2V0LnR5
cGUoKS5raW5kKTsKICAgICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoVHlwZUtpbmQ6
OkkzMiAhPSBjb3VudC50eXBlKCkua2luZCwgInRhYmxlLmZpbGwgZXhwZWN0cyBhbiBpMzIgY291
bnQgdmFsdWUsIGdvdCAiLCBjb3VudC50eXBlKCkua2luZCk7CiAKQEAgLTEwODAsMTQgKzEwODAs
MTAgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAg
IFR5cGUgdHlwZU9mTnVsbDsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlw
ZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewogICAgICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsK
LSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSGVhcFR5cGUobV9pbmZvLCBo
ZWFwVHlwZSksICJyZWYubnVsbCBoZWFwdHlwZSBtdXN0IGJlIGZ1bmNyZWYsIGV4dGVybnJlZiBv
ciB0eXBlX2lkeCIpOwotICAgICAgICAgICAgaWYgKGlzVHlwZUluZGV4SGVhcFR5cGUoaGVhcFR5
cGUpKSB7Ci0gICAgICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0u
Z2V0KCkpOwotICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJl
Zk51bGwsIE51bGxhYmxlOjpZZXMsIHNpZ25hdHVyZUluZGV4IH07Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxs
LCBOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIH07
CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUhlYXBUeXBlKGhlYXBUeXBl
KSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVf
aWR4Iik7CisgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxs
LCBOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaGVhcFR5cGUpIH07CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBl
KG1faW5mbywgdHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2Ug
dHlwZSIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHR5
cGVPZk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUiKTsKICAg
ICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKHR5cGVPZk51bGwsIG1f
Y29udGV4dC5hZGRDb25zdGFudCh0eXBlT2ZOdWxsLCBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
KSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTExMyw4ICsxMTA5LDcgQEAgRk9S
X0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fVFJZ
X0FERF9UT19DT05URVhUKGFkZFJlZkZ1bmMoaW5kZXgsIHJlc3VsdCkpOwogCiAgICAgICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAg
ICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLnNpZ25hdHVy
ZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAgICBtX2V4cHJl
c3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxh
YmxlOjpObywgc2lnbmF0dXJlSW5kZXggfSwgcmVzdWx0KTsKKyAgICAgICAgICAgIG1fZXhwcmVz
c2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFi
bGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0sIHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTExMzksNyArMTEzNCw3
IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBU
eXBlZEV4cHJlc3Npb24gdmFsdWU7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBSRVNTSU9OX1NU
QUNLX0lOVE8odmFsdWUsICJzZXRfbG9jYWwiKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihpbmRleCA+PSBtX2xvY2Fscy5zaXplKCksICJhdHRlbXB0IHRvIHNldCB1bmtub3duIGxv
Y2FsICIsIGluZGV4LCAiIGxhc3Qgb25lIGlzICIsIG1fbG9jYWxzLnNpemUoKSk7Ci0gICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZSh2YWx1ZS50eXBlKCksIG1fbG9jYWxz
W2luZGV4XSksICJzZXRfbG9jYWwgdG8gdHlwZSAiLCB2YWx1ZS50eXBlKCkua2luZCwgIiBleHBl
Y3RlZCAiLCBtX2xvY2Fsc1tpbmRleF0ua2luZCk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIW1faW5mby5pc1N1YnR5cGUodmFsdWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAi
c2V0X2xvY2FsIHRvIHR5cGUgIiwgdmFsdWUudHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9s
b2NhbHNbaW5kZXhdLmtpbmQpOwogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChzZXRM
b2NhbChpbmRleCwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xMTUx
LDcgKzExNDYsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkK
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5pc0VtcHR5KCks
ICJjYW4ndCB0ZWVfbG9jYWwgb24gZW1wdHkgZXhwcmVzc2lvbiBzdGFjayIpOwogICAgICAgICBU
eXBlZEV4cHJlc3Npb24gdmFsdWUgPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCk7CiAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoaW5kZXggPj0gbV9sb2NhbHMuc2l6ZSgpLCAiYXR0ZW1w
dCB0byB0ZWUgdW5rbm93biBsb2NhbCAiLCBpbmRleCwgIiBsYXN0IG9uZSBpcyAiLCBtX2xvY2Fs
cy5zaXplKCkpOwotICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodmFs
dWUudHlwZSgpLCBtX2xvY2Fsc1tpbmRleF0pLCAic2V0X2xvY2FsIHRvIHR5cGUgIiwgdmFsdWUu
dHlwZSgpLmtpbmQsICIgZXhwZWN0ZWQgIiwgbV9sb2NhbHNbaW5kZXhdLmtpbmQpOworICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2luZm8uaXNTdWJ0eXBlKHZhbHVlLnR5cGUoKSwg
bV9sb2NhbHNbaW5kZXhdKSwgInNldF9sb2NhbCB0byB0eXBlICIsIHZhbHVlLnR5cGUoKS5raW5k
LCAiIGV4cGVjdGVkICIsIG1fbG9jYWxzW2luZGV4XS5raW5kKTsKICAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoc2V0TG9jYWwoaW5kZXgsIHZhbHVlKSk7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQpAQCAtMTE3NSwxMSArMTE3MCwxMSBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9T
VE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgVHlwZWRFeHByZXNzaW9uIHZhbHVlOwogICAg
ICAgICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKHZhbHVlLCAic2V0X2dsb2Jh
bCB2YWx1ZSIpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGluZGV4ID49IG1faW5m
by5nbG9iYWxzLnNpemUoKSwgInNldF9nbG9iYWwgIiwgaW5kZXgsICIgb2YgdW5rbm93biBnbG9i
YWwsIGxpbWl0IGlzICIsIG1faW5mby5nbG9iYWxzLnNpemUoKSk7Ci0gICAgICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYobV9pbmZvLmdsb2JhbHNbaW5kZXhdLm11dGFiaWxpdHkgPT0gR2xvYmFs
SW5mb3JtYXRpb246OkltbXV0YWJsZSwgInNldF9nbG9iYWwgIiwgaW5kZXgsICIgaXMgaW1tdXRh
YmxlIik7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9pbmZvLmdsb2JhbHNbaW5k
ZXhdLm11dGFiaWxpdHkgPT0gTXV0YWJpbGl0eTo6SW1tdXRhYmxlLCAic2V0X2dsb2JhbCAiLCBp
bmRleCwgIiBpcyBpbW11dGFibGUiKTsKIAogICAgICAgICBUeXBlIGdsb2JhbFR5cGUgPSBtX2lu
Zm8uZ2xvYmFsc1tpbmRleF0udHlwZTsKICAgICAgICAgQVNTRVJUKGlzVmFsdWVUeXBlKGdsb2Jh
bFR5cGUpKTsKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0eXBlKHZhbHVl
LnR5cGUoKSwgZ2xvYmFsVHlwZSksICJzZXRfZ2xvYmFsICIsIGluZGV4LCAiIHdpdGggdHlwZSAi
LCBnbG9iYWxUeXBlLmtpbmQsICIgd2l0aCBhIHZhcmlhYmxlIG9mIHR5cGUgIiwgdmFsdWUudHlw
ZSgpLmtpbmQpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2luZm8uaXNTdWJ0
eXBlKHZhbHVlLnR5cGUoKSwgZ2xvYmFsVHlwZSksICJzZXRfZ2xvYmFsICIsIGluZGV4LCAiIHdp
dGggdHlwZSAiLCBnbG9iYWxUeXBlLmtpbmQsICIgd2l0aCBhIHZhcmlhYmxlIG9mIHR5cGUgIiwg
dmFsdWUudHlwZSgpLmtpbmQpOwogCiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKHNl
dEdsb2JhbChpbmRleCwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExOTgsNyAr
MTE5Myw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFhcmdzLnRyeVJlc2VydmVDYXBhY2l0eShjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpKSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkg
Zm9yIGNhbGwncyAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50
cyIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBcmd1bWVudEluZGV4OyBpIDwgbV9l
eHByZXNzaW9uU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lv
biBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChpKTsKLSAgICAgICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoIWlzU3VidHlwZShhcmcudHlwZSgpLCBjYWxsZWVTaWduYXR1cmUuYXJndW1l
bnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBj
YWxsLCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZWVTaWduYXR1
cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkua2luZCk7CisgICAgICAgICAgICBX
QVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2luZm8uaXNTdWJ0eXBlKGFyZy50eXBlKCksIGNhbGxl
ZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1bWVudCB0
eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVk
ICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KS5raW5k
KTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7CiAgICAgICAgICAgICBt
X2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKICAgICAgICAgfQpAQCAtMTIyNCwxMCAr
MTIxOSwxMCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoc2lnbmF0dXJlSW5kZXgp
LCAiY2FuJ3QgZ2V0IGNhbGxfaW5kaXJlY3QncyBzaWduYXR1cmUgaW5kZXgiKTsKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBn
ZXQgY2FsbF9pbmRpcmVjdCdzIHRhYmxlIGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8udGFibGVDb3VudCgpLCAiY2FsbF9pbmRpcmVjdCdz
IHRhYmxlIGluZGV4ICIsIHRhYmxlSW5kZXgsICIgaW52YWxpZCwgbGltaXQgaXMgIiwgbV9pbmZv
LnRhYmxlQ291bnQoKSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLnVzZWRT
aWduYXR1cmVzLnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCwgImNhbGxfaW5kaXJlY3QncyBzaWdu
YXR1cmUgaW5kZXggIiwgc2lnbmF0dXJlSW5kZXgsICIgZXhjZWVkcyBrbm93biBzaWduYXR1cmVz
ICIsIG1faW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkpOworICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKG1faW5mby50eXBlc0NvdW50KCkgPD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGly
ZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIsIHNpZ25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24g
c2lnbmF0dXJlcyAiLCBtX2luZm8udHlwZXNDb3VudCgpKTsKICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihtX2luZm8udGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRU
eXBlOjpGdW5jcmVmLCAiY2FsbF9pbmRpcmVjdCBpcyBvbmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBo
YXMgdHlwZSBmdW5jcmVmIik7CiAKLSAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWdu
YXR1cmUgPSBtX2luZm8udXNlZFNpZ25hdHVyZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOworICAg
ICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IG1faW5mby5nZXRTaWduYXR1
cmUoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxl
ZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIGluZGV4
LgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Np
b25TdGFjay5zaXplKCksICJjYWxsX2luZGlyZWN0IGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwg
IiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwg
bV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCkBAIC0xMjM5LDcgKzEyMzQs
NyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNr
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBUeXBlZEV4cHJlc3Npb24gYXJnID0gbV9leHBy
ZXNzaW9uU3RhY2suYXQoaSk7CiAgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0YWNr
LnNpemUoKSAtIDEpCi0gICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNT
dWJ0eXBlKGFyZy50eXBlKCksIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1
bWVudEluZGV4KSksICJhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdv
dCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1
bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KS5raW5kKTsKKyAgICAgICAgICAgICAgICBXQVNN
X1ZBTElEQVRPUl9GQUlMX0lGKCFtX2luZm8uaXNTdWJ0eXBlKGFyZy50eXBlKCksIGNhbGxlZVNp
Z25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSksICJhcmd1bWVudCB0eXBl
IG1pc21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4
cGVjdGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4
KS5raW5kKTsKICAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7CiAgICAgICAg
ICAgICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKICAgICAgICAgfQpAQCAtMTI1
OCw4ICsxMjUzLDggQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlw
ZWRGdW5jdGlvblJlZmVyZW5jZXMoKSwgImZ1bmN0aW9uIHJlZmVyZW5jZXMgYXJlIG5vdCBlbmFi
bGVkIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzUmVmV2l0aFR5cGVJbmRl
eChtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpKSwgIm5vbi1mdW5jcmVmIGNhbGxfcmVm
IHZhbHVlICIsIG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkua2luZCk7CiAKLSAgICAg
ICAgY29uc3QgU2lnbmF0dXJlSW5kZXggY2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2V4cHJlc3Np
b25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4OwotICAgICAgICBjb25zdCBTaWduYXR1cmUmIGNh
bGxlZVNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVlU2lnbmF0dXJl
SW5kZXgpOworICAgICAgICBjb25zdCBhdXRvIGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9leHBy
ZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsKKyAgICAgICAgY29uc3QgU2lnbmF0dXJl
JiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8uZ2V0U2lnbmF0dXJlKGNhbGxlZVNpZ25hdHVyZUlu
ZGV4KTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyB2YWx1ZS4KICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgp
LCAiY2FsbF9yZWYgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRo
ZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5z
aXplKCksICIgdmFsdWVzIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21HbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2Jh
bC5jcHAKaW5kZXggY2IzZDE2M2JiZTA4YjZhNTc1OGNkOWRjMjhkZTA2OGExZGU1NmYxNy4uYTJh
MGFjYjVmMTBkNzM1OGM1MGMwYTA5ZGY5NmU0ZjFlZjg1YmFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBHbG9iYWw6
OnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBBU1NFUlQobV9tdXRhYmlsaXR5ICE9IFdhc206
Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpOworICAgIEFTU0VSVChtX211dGFiaWxpdHkg
IT0gV2FzbTo6SW1tdXRhYmxlKTsKICAgICBzd2l0Y2ggKG1fdHlwZS5raW5kKSB7CiAgICAgY2Fz
ZSBUeXBlS2luZDo6STMyOiB7CiAgICAgICAgIGludDMyX3QgdmFsdWUgPSBhcmd1bWVudC50b0lu
dDMyKGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtR2xvYmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmgK
aW5kZXggMTdmODg2ODFlMDZlNDAyMjgwZDE5YWZhMmVlYmJjYWU4ZDliZDE1ZS4uNDM4YTdmNzQw
ZmY5OTMxNmM3NjU4MTNlYWU4NzJmN2Q2Nzk0MGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21HbG9iYWwuaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVmFs
dWUqIG1fcG9pbnRlcjsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxHbG9iYWw+IGNyZWF0ZShX
YXNtOjpUeXBlIHR5cGUsIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFi
aWxpdHksIHVpbnQ2NF90IGluaXRpYWxWYWx1ZSA9IDApCisgICAgc3RhdGljIFJlZjxHbG9iYWw+
IGNyZWF0ZShXYXNtOjpUeXBlIHR5cGUsIFdhc206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSwgdWlu
dDY0X3QgaW5pdGlhbFZhbHVlID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdsb2JhbCh0eXBlLCBtdXRhYmlsaXR5LCBpbml0aWFsVmFsdWUpKTsKICAgICB9CiAKICAg
ICBXYXNtOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBXYXNtOjpH
bG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4g
bV9tdXRhYmlsaXR5OyB9CisgICAgV2FzbTo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9tdXRhYmlsaXR5OyB9CiAgICAgSlNWYWx1ZSBnZXQoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKICAgICB1aW50NjRfdCBnZXRQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlLm1fcHJpbWl0aXZlOyB9CiAgICAgdm9pZCBzZXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiB2YWx1ZVBvaW50ZXIoKSB7
IHJldHVybiAmbV92YWx1ZTsgfQogCiBwcml2YXRlOgotICAgIEdsb2JhbChXYXNtOjpUeXBlIHR5
cGUsIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFiaWxpdHksIHVpbnQ2
NF90IGluaXRpYWxWYWx1ZSkKKyAgICBHbG9iYWwoV2FzbTo6VHlwZSB0eXBlLCBXYXNtOjpNdXRh
YmlsaXR5IG11dGFiaWxpdHksIHVpbnQ2NF90IGluaXRpYWxWYWx1ZSkKICAgICAgICAgOiBtX3R5
cGUodHlwZSkKICAgICAgICAgLCBtX211dGFiaWxpdHkobXV0YWJpbGl0eSkKICAgICAgICAgLCBt
X3ZhbHVlKCkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBXYXNtOjpU
eXBlIG1fdHlwZTsKLSAgICBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtX211
dGFiaWxpdHk7CisgICAgV2FzbTo6TXV0YWJpbGl0eSBtX211dGFiaWxpdHk7CiAgICAgSlNPYmpl
Y3QqIG1fb3duZXIgeyBudWxscHRyIH07CiAgICAgVmFsdWUgbV92YWx1ZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCA4
ZWQyMzA5M2Y3MTNlMWY0MjI5ZWIzZjFmYzc0NWQ1NDFiZmZiMjc3Li5kMTBiYmM4MGRhODNkODVj
Yjk5ZWNlZmM5NWQ4ZjY0NTQwMmRhNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTYyNSw2ICs2MjUsNyBAQCBhdXRvIExM
SW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBz
aWduYXR1cmUpIC0+IExMSQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjgyLDYgKzY4Myw3IEBAIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkg
LT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6U3Ry
dWN0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTcxMSw2ICs3MTMsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5m
b3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CkBA
IC03NjgsNiArNzcxLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9y
Q2FsbGVlKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBWZWMKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5k
OjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtODE4LDYgKzgy
Miw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21MTEludFBsYW4uY3BwCmluZGV4IDdjMGJiYzVmNzFmNTljYmQ2NmIyZThlMzI5ZTNj
MjM1NzdkY2U4MGEuLmIxNjY1OGE3M2ZjZDc5N2MwNGIxZWEzZWM4NjhhODhhN2Q5ZTU4MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCkBAIC03OSw3
ICs3OSw3IEBAIGJvb2wgTExJbnRQbGFuOjpwcmVwYXJlSW1wbCgpCiB2b2lkIExMSW50UGxhbjo6
Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiB7CiAgICAgY29uc3QgYXV0
byYgZnVuY3Rpb24gPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnNbZnVuY3Rpb25JbmRl
eF07Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0
aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmlu
dGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUlu
ZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNl
ID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKSArIGZ1bmN0aW9uSW5kZXg7CiAgICAgQVNT
RVJUX1VOVVNFRChmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPnNpZ25h
dHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4U3BhY2UpID09IHNp
Z25hdHVyZUluZGV4KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIExMSW50UGxhbjo6ZGlkQ29t
cGxldGVDb21waWxhdGlvbigpCiAKICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAw
OyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsg
ZnVuY3Rpb25JbmRleCsrKSB7CiAgICAgICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2Vz
LmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5j
ZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewotICAgICAgICAgICAgU2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5h
bEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICAgICAgICAgIFNp
Z25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJu
YWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7
CiAgICAgICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9y
bWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKICAgICAgICAgICAgIC8vIFRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxpbWl0cy5oCmluZGV4IGY4ZjA1M2I1ODYwZTdkZjk3ZGI0
NDY0YWEwZWExNzQ4ZDliODdmMzYuLmY4MmU3MDMxZGE0MDYxZTI5NzQ0NGMxNWM5NDllMGM4MzA0
YTNmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgY29uc3RleHByIHNpemVfdCBtYXhFeHBvcnRzID0gMTAwMDAwOwogY29uc3RleHBy
IHNpemVfdCBtYXhFeGNlcHRpb25zID0gMTAwMDAwOwogY29uc3RleHByIHNpemVfdCBtYXhHbG9i
YWxzID0gMTAwMDAwMDsKIGNvbnN0ZXhwciBzaXplX3QgbWF4RGF0YVNlZ21lbnRzID0gMTAwMDAw
OworY29uc3RleHByIHNpemVfdCBtYXhTdHJ1Y3RzRmllbGRzID0gMTAwMDAwMDsKIAogY29uc3Rl
eHByIHNpemVfdCBtYXhTdHJpbmdTaXplID0gMTAwMDAwOwogY29uc3RleHByIHNpemVfdCBtYXhN
b2R1bGVTaXplID0gMTAyNCAqIDEwMjQgKiAxMDI0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1vZHVsZS5oCmluZGV4IGQ1MGZkZGZiMzc4MzdhMjkxM2FjN2QwMTU2OGZhNjk0YzIyYTdi
MzEuLjVmMzU4NmVkOTQ0ODU5YTdjMzM0MzA0ZmE4ZWJkOTFjNTkwMDcyMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJXYXNtQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2FzbUVtYmVkZGVyLmgiCiAjaW5jbHVkZSAi
V2FzbU1lbW9yeS5oIgotI2luY2x1ZGUgIldhc21PcHMuaCIKICNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+
CkBAIC00MSw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiBjbGFz
cyBMTEludFBsYW47CiBzdHJ1Y3QgQ29udGV4dDsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsK
K3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludHB0cl90OwogCiBjbGFzcyBNb2R1bGUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNwcAppbmRleCBj
NmU4YjhjN2ZlYjljYzIwOGViMjc5NmVhN2YyYTQyMDRkNDA3NjcyLi42NDRlMjEwYzk0MWFkNzYz
NmQ4OGZjOTMzYWQxNTMzZjgyZTNiNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAKQEAgLTM5LDYgKzM5LDY5IEBAIE1v
ZHVsZUluZm9ybWF0aW9uOjpNb2R1bGVJbmZvcm1hdGlvbigpCiAKIE1vZHVsZUluZm9ybWF0aW9u
Ojp+TW9kdWxlSW5mb3JtYXRpb24oKSB7IH0KIAorY29uc3QgU2lnbmF0dXJlJiBNb2R1bGVJbmZv
cm1hdGlvbjo6Z2V0U2lnbmF0dXJlKHVpbnQzMl90IGluZGV4KSBjb25zdAoreworICAgIGNvbnN0
IGF1dG8qIGZ1bmNUeXBlID0gc3RkOjpnZXRfaWY8RnVuY1R5cGU+KCZ0eXBlc1tpbmRleF0pOwor
ICAgIEFTU0VSVChmdW5jVHlwZSk7CisgICAgQVNTRVJUKGZ1bmNUeXBlLT5zaWduYXR1cmUuZ2V0
KCkpOworICAgIHJldHVybiAqZnVuY1R5cGUtPnNpZ25hdHVyZS5nZXQoKTsKK30KKworY29uc3Qg
U3RydWN0VHlwZSYgTW9kdWxlSW5mb3JtYXRpb246OmdldFN0cnVjdFR5cGUodWludDMyX3QgdHlw
ZUluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChpc1N0cnVjdFR5cGUodHlwZUluZGV4KSk7Cisg
ICAgcmV0dXJuICpzdGQ6OmdldF9pZjxTdHJ1Y3RUeXBlPigmdHlwZXNbdHlwZUluZGV4XSk7Cit9
CisKK2Jvb2wgTW9kdWxlSW5mb3JtYXRpb246OmlzU3VidHlwZShUeXBlIHN1YiwgVHlwZSBwYXJl
bnQpIGNvbnN0Cit7CisgICAgaWYgKHN1Yi5pc051bGxhYmxlKCkgJiYgIXBhcmVudC5pc051bGxh
YmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgoc3ViLmlzUmVmKCkgfHwg
c3ViLmlzUmVmTnVsbCgpKSAmJiAocGFyZW50LmlzUmVmKCkgfHwgcGFyZW50LmlzUmVmTnVsbCgp
KSkKKyAgICAgICAgcmV0dXJuIGlzU3VidHlwZShzdWIuaW5kZXgsIHBhcmVudC5pbmRleCk7CisK
KyAgICByZXR1cm4gc3ViID09IHBhcmVudDsKK30KKworYm9vbCBNb2R1bGVJbmZvcm1hdGlvbjo6
aXNTdWJ0eXBlKHVuc2lnbmVkIHN1YlR5cGVJbmRleCwgdW5zaWduZWQgcGFyZW50VHlwZUluZGV4
KSBjb25zdAoreworICAgIGlmIChzdWJUeXBlSW5kZXggPT0gcGFyZW50VHlwZUluZGV4KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChwYXJlbnRUeXBlSW5kZXggPT0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KFR5cGVLaW5kOjpGdW5jcmVmKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoaXNTdHJ1Y3RUeXBlKHN1YlR5cGVJbmRleCkgJiYgaXNTdHJ1Y3RUeXBlKHBhcmVu
dFR5cGVJbmRleCkpCisgICAgICAgIHJldHVybiBpc1N0cnVjdFN1YnR5cGUoZ2V0U3RydWN0VHlw
ZShzdWJUeXBlSW5kZXgpLCBnZXRTdHJ1Y3RUeXBlKHBhcmVudFR5cGVJbmRleCkpOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIE1vZHVsZUluZm9ybWF0aW9uOjppc1N0cnVjdFN1YnR5
cGUoY29uc3QgU3RydWN0VHlwZSYgc3ViU3RydWN0VHlwZSwgY29uc3QgU3RydWN0VHlwZSYgcGFy
ZW50U3RydWN0VHlwZSkgY29uc3QKK3sKKyAgICBpZiAoc3ViU3RydWN0VHlwZS5maWVsZHMuc2l6
ZSgpIDwgcGFyZW50U3RydWN0VHlwZS5maWVsZHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3IgKHN0ZDo6c2l6ZV90IGZpZWxkSW5kZXggPSAwdTsgZmllbGRJbmRleCA8
IHBhcmVudFN0cnVjdFR5cGUuZmllbGRzLnNpemUoKTsgKytmaWVsZEluZGV4KSB7CisgICAgICAg
IGlmICghaXNTdHJ1Y3RGaWVsZFN1YnR5cGUoc3ViU3RydWN0VHlwZS5maWVsZHNbZmllbGRJbmRl
eF0sIHBhcmVudFN0cnVjdFR5cGUuZmllbGRzW2ZpZWxkSW5kZXhdKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNb2R1bGVJ
bmZvcm1hdGlvbjo6aXNTdHJ1Y3RGaWVsZFN1YnR5cGUoY29uc3QgU3RydWN0RmllbGQmIHN1YkZp
ZWxkLCBjb25zdCBTdHJ1Y3RGaWVsZCYgcGFyZW50RmllbGQpIGNvbnN0Cit7CisgICAgaWYgKHN1
YkZpZWxkLklzSW1tdXRhYmxlKCkgJiYgcGFyZW50RmllbGQuaXNNdXRhYmxlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNTdWJ0eXBlKHN1YkZpZWxkLnR5cGUsIHBhcmVu
dEZpZWxkLnR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmgKaW5kZXggMzI4YzZiY2E2YmZhNjYyYjUzZTljOGM4ZGE5YWNiMThmNTA0NGFj
NS4uNmQ1ZTliNDM2N2Q5NDQ0OTcxZjJiMDVkNjY3ZjE4MWYxMDBhOWQ0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKIAorI2luY2x1ZGUgPHZhcmlh
bnQ+CiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIFdhc20gewpAQCAtNTQsOCArNTUsOCBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2Uoc2l6ZV90IGZ1
bmN0aW9uSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNJbXBvcnRlZEZ1bmN0
aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KQotICAgICAgICAgICAgPyBp
bXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0KLSAgICAgICAgICAg
IDogaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9y
dEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldOworICAgICAgICAgICAgPyBpbXBvcnRG
dW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXgKKyAg
ICAgICAgICAgIDogaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRl
eCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldLnNpZ25hdHVyZUluZGV4
OwogICAgIH0KIAogICAgIHNpemVfdCBleGNlcHRpb25JbmRleFNwYWNlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGltcG9ydEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpICsgaW50ZXJuYWxF
eGNlcHRpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKTsgfQpAQCAtODEsNiArODIsNyBAQCBzdHJ1
Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxl
SW5mb3JtYXRpb24+IHsKICAgICB1aW50MzJfdCB0YWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
dGFibGVzLnNpemUoKTsgfQogICAgIHVpbnQzMl90IGVsZW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGVsZW1lbnRzLnNpemUoKTsgfQogICAgIHVpbnQzMl90IGRhdGFTZWdtZW50c0NvdW50KCkg
Y29uc3QgeyByZXR1cm4gbnVtYmVyT2ZEYXRhU2VnbWVudHM7IH0KKyAgICB1aW50MzJfdCB0eXBl
c0NvdW50KCkgY29uc3QgeyByZXR1cm4gdHlwZXMuc2l6ZSgpOyB9CiAKICAgICBjb25zdCBUYWJs
ZUluZm9ybWF0aW9uJiB0YWJsZSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gdGFibGVz
W2luZGV4XTsgfQogCkBAIC05MywxMiArOTUsMjggQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAg
Ym9vbCBpc0RlY2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2RlY2xhcmVkRXhjZXB0aW9ucy5jb250YWlucyhpbmRleCk7IH0KICAgICB2b2lkIGFkZERlY2xh
cmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4KSB7IG1fZGVjbGFyZWRFeGNlcHRpb25zLnNldChp
bmRleCk7IH0KIAorICAgIHVpbnQzMl90IGdldFR5cGVJbmRleEZvckZ1bmN0aW9uKHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNJbXBvcnRlZEZ1bmN0
aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KSkKKyAgICAgICAgICAgIHJl
dHVybiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0udHlwZUlu
ZGV4OworICAgICAgICByZXR1cm4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldLnR5cGVJ
bmRleDsKKyAgICB9CisKKyAgICBjb25zdCBTaWduYXR1cmUmIGdldFNpZ25hdHVyZSh1aW50MzJf
dCBpbmRleCkgY29uc3Q7CisgICAgYm9vbCBpc1N0cnVjdFR5cGUodWludDMyX3QgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RydWN0VHlwZT4odHlwZXNbaW5k
ZXhdKTsgfQorICAgIGNvbnN0IFN0cnVjdFR5cGUmIGdldFN0cnVjdFR5cGUodWludDMyX3QgdHlw
ZUluZGV4KSBjb25zdDsKKworICAgIGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVu
dCkgY29uc3Q7CisgICAgYm9vbCBpc1N1YnR5cGUodW5zaWduZWQgc3ViVHlwZUluZGV4LCB1bnNp
Z25lZCBwYXJlbnRUeXBlSW5kZXgpIGNvbnN0OworICAgIGJvb2wgaXNTdHJ1Y3RTdWJ0eXBlKGNv
bnN0IFN0cnVjdFR5cGUmIHN1YlN0cnVjdFR5cGUsIGNvbnN0IFN0cnVjdFR5cGUmIHBhcmVudFN0
cnVjdFR5cGUpIGNvbnN0OworICAgIGJvb2wgaXNTdHJ1Y3RGaWVsZFN1YnR5cGUoY29uc3QgU3Ry
dWN0RmllbGQmIHN1YkZpZWxkLCBjb25zdCBTdHJ1Y3RGaWVsZCYgcGFyZW50RmllbGQpIGNvbnN0
OworCiAgICAgVmVjdG9yPEltcG9ydD4gaW1wb3J0czsKLSAgICBWZWN0b3I8U2lnbmF0dXJlSW5k
ZXg+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKLSAgICBWZWN0b3I8U2lnbmF0dXJl
SW5kZXg+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOworICAgIFZlY3RvcjxGdW5j
dGlvbkRlc2NyaXB0aW9uPiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7CisgICAgVmVj
dG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2Vz
OwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5k
aWNlczsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVybmFsRXhjZXB0aW9uU2lnbmF0
dXJlSW5kaWNlczsKLSAgICBWZWN0b3I8UmVmPFNpZ25hdHVyZT4+IHVzZWRTaWduYXR1cmVzOwor
ICAgIFZlY3RvcjxUeXBlUmVjb3JkPiB0eXBlczsKIAogICAgIE1lbW9yeUluZm9ybWF0aW9uIG1l
bW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zv
ck9TUkVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9y
T1NSRW50cnlQbGFuLmNwcAppbmRleCA0OGZiNDUwYzRjMDg5MDljMTZkMThjMTI2MTdjOThlNjlj
YWFkMzM0Li4wNzMxMzlmNWRkNWI0MDBiNGIyOTQ4M2VmN2M1Yjg3NDVlMWM1ZWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFu
LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE9NR0Zvck9TUkVudHJ5UGxhbjo6d29yayhDb21w
aWxhdGlvbkVmZm9ydCkKICAgICBjb25zdCB1aW50MzJfdCBmdW5jdGlvbkluZGV4U3BhY2UgPSBt
X2Z1bmN0aW9uSW5kZXggKyBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5j
dGlvbkNvdW50KCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlLT5t
b2R1bGVJbmZvcm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CiAKLSAgICBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFs
RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0
aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAg
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChz
aWduYXR1cmVJbmRleCk7CiAKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4gdW5s
aW5rZWRDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
TUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApp
bmRleCA2YTRmNzg3MjY5NTQ4NTQ2MzBlZThlODM1M2U2OGZmNDQzZjBlNjFmLi41OGQ1ZWY0ZWQ5
NGMyMTMwMTkwN2RhZTI1OTAzYzU3NDEzNjc4OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgT01HUGxhbjo6d29y
ayhDb21waWxhdGlvbkVmZm9ydCkKICAgICBjb25zdCB1aW50MzJfdCBmdW5jdGlvbkluZGV4U3Bh
Y2UgPSBtX2Z1bmN0aW9uSW5kZXggKyBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBv
cnRGdW5jdGlvbkNvdW50KCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9k
dWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CiAKLSAg
ICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmlu
dGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgU2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5h
bEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4
OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246
OmdldChzaWduYXR1cmVJbmRleCk7CiAKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bD4gdW5saW5rZWRDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApp
bmRleCBlZDAwZDlhMGE0MmI3OWFkYzFmM2M4YWIwZjM0NmZjNGY2ZGE4OWFlLi4yMjI4ZWY5Mzg3
OWFjMzE4OGZkYTI2YWE1ZWJiZGVkNjFiMzY2NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBhcnNlci5oCkBAIC04NCwxMCArODQsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFySW50NjQoaW50NjRfdCYpOwogCiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VCbG9ja1NpZ25hdHVyZShjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYsIEJsb2NrU2lnbmF0dXJlJik7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBUeXBlJik7Ci0g
ICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VSZWZUeXBlKGNvbnN0IE1vZHVsZUluZm9y
bWF0aW9uJiwgVHlwZSYpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFsdWVU
eXBlKFR5cGUmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVJlZlR5cGUoVHlw
ZSYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRXh0ZXJuYWxLaW5kKEV4dGVy
bmFsS2luZCYpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSGVhcFR5cGUoY29u
c3QgTW9kdWxlSW5mb3JtYXRpb24mLCBpbnQzMl90Jik7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VIZWFwVHlwZShpbnQzMl90Jik7CiAKICAgICBzaXplX3QgbV9vZmZzZXQgPSAw
OwogCkBAIC0yODgsMTQgKzI4OCwxNCBAQCBBTFdBWVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxT
dWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cAogICAgIGlu
dDY0X3QgaW5kZXg7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJJbnQ2NChpbmRl
eCksICJCbG9jay1saWtlIGluc3RydWN0aW9uIGRvZXNuJ3QgcmV0dXJuIHZhbHVlIHR5cGUgYnV0
IGNhbid0IGRlY29kZSB0eXBlIHNlY3Rpb24gaW5kZXgiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKGluZGV4IDwgMCwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlz
IG5lZ2F0aXZlIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+
KGluZGV4KSA+PSBpbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1
Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwg
IiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZvLnVzZWRTaWduYXR1cmVzLnNpemUoKSk7CisgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBpbmZvLnR5
cGVzQ291bnQoKSwgIkJsb2NrLWxpa2UgaW5zdHJ1Y3Rpb24gc2lnbmF0dXJlIGluZGV4IGlzIG91
dCBvZiBib3VuZHMuIEluZGV4OiAiLCBpbmRleCwgIiB0eXBlIGluZGV4IHNwYWNlOiAiLCBpbmZv
LnR5cGVzQ291bnQoKSk7CiAKLSAgICByZXN1bHQgPSAmaW5mby51c2VkU2lnbmF0dXJlc1tpbmRl
eF0uZ2V0KCk7CisgICAgcmVzdWx0ID0gJmluZm8uZ2V0U2lnbmF0dXJlKGluZGV4KTsKICAgICBy
ZXR1cm4geyB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KLUFMV0FZU19J
TkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUhlYXBUeXBlKGNvbnN0IE1vZHVs
ZUluZm9ybWF0aW9uJiBpbmZvLCBpbnQzMl90JiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VIZWFwVHlwZShpbnQzMl90JiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMiwxNSArMzEyLDEyIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUhlYXBUeXBlKGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkgPj0gaW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJlc3VsdCA9IGhlYXBUeXBlOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KLUFMV0FZU19J
TkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgVHlwZSYgcmVzdWx0KQorQUxXQVlTX0lOTElORSBib29sIFBh
cnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKFR5cGUmIHJlc3VsdCkKIHsKICAgICBp
bnQ4X3Qga2luZDsKICAgICBpZiAoIXBhcnNlSW50NyhraW5kKSkKQEAgLTMzMCwyMCArMzI3LDIy
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlw
ZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYKIAogICAgIFR5cGVLaW5kIHR5cGVLaW5kID0gc3Rh
dGljX2Nhc3Q8VHlwZUtpbmQ+KGtpbmQpOwogICAgIGJvb2wgaXNOdWxsYWJsZSA9IHRydWU7Ci0g
ICAgU2lnbmF0dXJlSW5kZXggc2lnSW5kZXggPSAwOworICAgIHVuc2lnbmVkIHR5cGVJbmRleCA9
IDA7ICAgIAogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJl
ZmVyZW5jZXMoKSAmJiAodHlwZUtpbmQgPT0gVHlwZUtpbmQ6OkZ1bmNyZWYgfHwgdHlwZUtpbmQg
PT0gVHlwZUtpbmQ6OkV4dGVybnJlZikpIHsKLSAgICAgICAgc2lnSW5kZXggPSBzdGF0aWNfY2Fz
dDxTaWduYXR1cmVJbmRleD4odHlwZUtpbmQpOworICAgICAgICB0eXBlSW5kZXggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odHlwZUtpbmQpOwogICAgICAgICB0eXBlS2luZCA9IFR5cGVLaW5kOjpS
ZWZOdWxsOwogICAgIH0gZWxzZSBpZiAodHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZiB8fCB0eXBl
S2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbCkgewogICAgICAgICBpc051bGxhYmxlID0gdHlwZUtp
bmQgPT0gVHlwZUtpbmQ6OlJlZk51bGw7CiAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7Ci0gICAg
ICAgIGlmICghcGFyc2VIZWFwVHlwZShpbmZvLCBoZWFwVHlwZSkpCisgICAgICAgIGlmICghcGFy
c2VIZWFwVHlwZShoZWFwVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmIChoZWFwVHlwZSA8IDAgJiYgIWlzVmFsaWRIZWFwVHlwZUtpbmQoc3RhdGljX2Nhc3Q8VHlw
ZUtpbmQ+KGhlYXBUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNp
Z0luZGV4ID0gaGVhcFR5cGUgPCAwID8gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBU
eXBlKSA6IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoaW5mby51c2VkU2lnbmF0dXJlc1toZWFw
VHlwZV0uZ2V0KCkpOworICAgICAgICB0eXBlSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aGVhcFR5cGUpOwogICAgIH0KIAotICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19j
YXN0PE51bGxhYmxlPihpc051bGxhYmxlKSwgc2lnSW5kZXggfTsKKyAgICBUeXBlIHR5cGUgPSB7
IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHR5cGVJbmRleCB9
OwogICAgIGlmICghaXNWYWx1ZVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXN1bHQgPSB0eXBlOwpAQCAtMzUxLDkgKzM1MCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQ
YXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlv
biYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+Ci1BTFdBWVNfSU5MSU5FIGJv
b2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VSZWZUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0
aW9uJiBpbmZvLCBUeXBlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nl
c3NUeXBlPjo6cGFyc2VSZWZUeXBlKFR5cGUmIHJlc3VsdCkKIHsKLSAgICBjb25zdCBib29sIHBh
cnNlZCA9IHBhcnNlVmFsdWVUeXBlKGluZm8sIHJlc3VsdCk7CisgICAgY29uc3QgYm9vbCBwYXJz
ZWQgPSBwYXJzZVZhbHVlVHlwZShyZXN1bHQpOwogICAgIHJldHVybiBwYXJzZWQgJiYgaXNSZWZU
eXBlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAppbmRleCBhODg5NWM5NTEyOWQzM2M3YzBjZGJmODY2NGU4OTBkNGFm
MzUxM2JhLi5iYWQwZjBkMzNlY2QzYjkzOTI3MGZhMWYxNWNlZjk3OWIzNmY4ZjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUgIldhc21TaWduYXR1
cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAt
NDQsNDIgKzQ1LDM3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gUGFydGlh
bFJlc3VsdAogCiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQp
LCAiY2FuJ3QgZ2V0IFR5cGUgc2VjdGlvbidzIGNvdW50Iik7CiAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRihjb3VudCA+IG1heFR5cGVzLCAiVHlwZSBzZWN0aW9uJ3MgY291bnQgaXMgdG9vIGJpZyAi
LCBjb3VudCwgIiBtYXhpbXVtICIsIG1heFR5cGVzKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFtX2luZm8tPnVzZWRTaWduYXR1cmVzLnRyeVJlc2VydmVDYXBhY2l0eShjb3VudCksICJjYW4n
dCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBjb3VudCwgIiBl
bnRyaWVzIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT50eXBlcy50cnlSZXNl
cnZlQ2FwYWNpdHkoY291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlw
ZSBzZWN0aW9uJ3MgIiwgY291bnQsICIgZW50cmllcyIpOwogCiAgICAgZm9yICh1aW50MzJfdCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaW50OF90IHR5cGU7Ci0gICAgICAgIHVp
bnQzMl90IGFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIFZlY3RvcjxUeXBlPiBhcmd1bWVudFR5cGVz
OwotCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlKSwgImNhbid0
IGdldCAiLCBpLCAidGggVHlwZSdzIHR5cGUiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rih0eXBlICE9IHN0YXRpY19jYXN0PGludDhfdD4oVHlwZUtpbmQ6OkZ1bmMpLCBpLCAidGggVHlw
ZSBpcyBub24tRnVuYyAiLCB0eXBlKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIoYXJndW1lbnRDb3VudCksICJjYW4ndCBnZXQgIiwgaSwgInRoIFR5cGUncyBh
cmd1bWVudCBjb3VudCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291
bnQgPiBtYXhGdW5jdGlvblBhcmFtcywgaSwgInRoIGFyZ3VtZW50IGNvdW50IGlzIHRvbyBiaWcg
IiwgYXJndW1lbnRDb3VudCwgIiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uUGFyYW1zKTsKLSAgICAg
ICAgVmVjdG9yPFR5cGU+IGFyZ3VtZW50czsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
YXJndW1lbnRzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50KSwgImNhbid0IGFsbG9j
YXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGksICJ0aCBzaWduYXR1cmUi
KTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytp
KSB7Ci0gICAgICAgICAgICBUeXBlIGFyZ3VtZW50VHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgYXJndW1lbnRUeXBlKSwgImNhbid0
IGdldCAiLCBpLCAidGggYXJndW1lbnQgVHlwZSIpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChhcmd1bWVudFR5cGUpOworICAgICAgICBUeXBlUmVjb3JkIHR5cGVSZWNvcmQ7CisgICAg
ICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KHR5cGUpKSB7CisgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkZ1bmM6IHsKKyAgICAgICAgICAgIEZ1bmNUeXBlIGZ1bmNUeXBlOworICAgICAg
ICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9uVHlwZShpLCBmdW5j
VHlwZSkpOworICAgICAgICAgICAgdHlwZVJlY29yZCA9IFR5cGVSZWNvcmQgeyBGdW5jVHlwZSB7
IFdURk1vdmUoZnVuY1R5cGUpIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDogeworICAgICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUdDKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoaSwgInRo
IFR5cGUgaXMgbm9uLUZ1bmMgIiwgdHlwZSk7CiAKLSAgICAgICAgdWludDMyX3QgcmV0dXJuQ291
bnQ7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHJldHVybkNv
dW50KSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJldHVybiBjb3VudCIpOwotCi0gICAg
ICAgIFZlY3RvcjxUeXBlLCAxPiByZXR1cm5UeXBlczsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQpLCAiY2Fu
J3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgaSwgInRoIHNp
Z25hdHVyZSIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmV0dXJuQ291bnQ7
ICsraSkgewotICAgICAgICAgICAgVHlwZSB2YWx1ZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgdmFsdWUpLCAiY2FuJ3QgZ2V0ICIsIGks
ICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVlIik7Ci0gICAgICAgICAgICByZXR1cm5UeXBlcy5hcHBl
bmQodmFsdWUpOworICAgICAgICAgICAgU3RydWN0VHlwZSBzdHJ1Y3RUeXBlOworICAgICAgICAg
ICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZVN0cnVjdFR5cGUoaSwgc3RydWN0VHlw
ZSkpOworICAgICAgICAgICAgdHlwZVJlY29yZCA9IFR5cGVSZWNvcmQgeyBXVEZNb3ZlKHN0cnVj
dFR5cGUpIH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIGZhaWwoaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMgIiwgdHlw
ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8U2lnbmF0dXJlPiBzaWduYXR1cmUgPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlRm9yKHJldHVyblR5cGVzLCBhcmd1bWVudHMp
OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0
ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7
Ci0KLSAgICAgICAgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0
dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtX2luZm8tPnR5cGVzLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKHR5cGVSZWNvcmQpKTsKICAgICB9CisKKyAgICBXQVNNX0ZBSUxfSUZfSEVM
UEVSX0ZBSUxTKFJlZlR5cGVzVmFsaWQoKSk7CisKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0x
MTMsMTAgKzEwOSwxMCBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFy
dGlhbFJlc3VsdAogICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKICAgICAg
ICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvblNpZ25hdHVyZUluZGV4KSwg
ImNhbid0IGdldCAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQncyBmdW5jdGlvbiBzaWduYXR1
cmUgaW4gbW9kdWxlICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywg
IiciKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaWduYXR1cmVJ
bmRleCA+PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgImludmFsaWQgZnVuY3Rpb24g
c2lnbmF0dXJlIGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGZ1bmN0aW9uU2ln
bmF0dXJlSW5kZXgsICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVy
ZXMuc2l6ZSgpLCAiIGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmll
bGRTdHJpbmcsICInIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9u
U2lnbmF0dXJlSW5kZXggPj0gbV9pbmZvLT50eXBlc0NvdW50KCksICJpbnZhbGlkIGZ1bmN0aW9u
IHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0LCAiLCBmdW5jdGlvblNp
Z25hdHVyZUluZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291bnQo
KSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5n
LCAiJyIpOwogICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNp
Z25hdHVyZUluZGljZXMuc2l6ZSgpOwotICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0
dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVy
ZXNbZnVuY3Rpb25TaWduYXR1cmVJbmRleF0pOwotICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRG
dW5jdGlvblNpZ25hdHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsK
KyAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5m
b3JtYXRpb246OmdldChtX2luZm8tPmdldFNpZ25hdHVyZShmdW5jdGlvblNpZ25hdHVyZUluZGV4
KSk7CisgICAgICAgICAgICBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51
bmNoZWNrZWRBcHBlbmQoRnVuY3Rpb25EZXNjcmlwdGlvbiB7IHNpZ25hdHVyZUluZGV4LCBmdW5j
dGlvblNpZ25hdHVyZUluZGV4IH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0xMzgsNyArMTM0LDcgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUltcG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAg
ICAgIEdsb2JhbEluZm9ybWF0aW9uIGdsb2JhbDsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VHbG9iYWxUeXBlKGdsb2JhbCkpOwogICAgICAgICAgICAgLy8gT25s
eSBtdXRhYmxlIGdsb2JhbHMgbmVlZCBmbG9hdGluZyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGlm
IChnbG9iYWwubXV0YWJpbGl0eSA9PSBHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0
YWJsZSkKKyAgICAgICAgICAgIGlmIChnbG9iYWwubXV0YWJpbGl0eSA9PSBNdXRhYmlsaXR5OjpN
dXRhYmxlKQogICAgICAgICAgICAgICAgIGdsb2JhbC5iaW5kaW5nTW9kZSA9IEdsb2JhbEluZm9y
bWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU7CiAgICAgICAgICAgICBraW5kSW5kZXggPSBt
X2luZm8tPmdsb2JhbHMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pbmZvLT5nbG9iYWxzLnVuY2hl
Y2tlZEFwcGVuZChXVEZNb3ZlKGdsb2JhbCkpOwpAQCAtMTUzLDkgKzE0OSw5IEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAgICAg
IHVpbnQzMl90IGV4Y2VwdGlvblNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgpLCAiY2Fu
J3QgZ2V0ICIsIGltcG9ydE51bWJlciwgInRoIEltcG9ydCdzIGV4Y2VwdGlvbiBzaWduYXR1cmUg
aW4gbW9kdWxlICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIici
KTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZXhjZXB0aW9uU2lnbmF0dXJlSW5k
ZXggPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksICJpbnZhbGlkIGV4Y2VwdGlvbiBz
aWduYXR1cmUgZm9yICIsIGltcG9ydE51bWJlciwgInRoIEltcG9ydCwgIiwgZXhjZXB0aW9uU2ln
bmF0dXJlSW5kZXgsICIgaXMgb3V0IG9mIHJhbmdlIG9mICIsIG1faW5mby0+dXNlZFNpZ25hdHVy
ZXMuc2l6ZSgpLCAiIGluIG1vZHVsZSAnIiwgbW9kdWxlU3RyaW5nLCAiJyBmaWVsZCAnIiwgZmll
bGRTdHJpbmcsICInIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGV4Y2VwdGlv
blNpZ25hdHVyZUluZGV4ID49IG1faW5mby0+dHlwZXNDb3VudCgpLCAiaW52YWxpZCBleGNlcHRp
b24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJbXBvcnQsICIsIGV4Y2VwdGlv
blNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBtX2luZm8tPnR5cGVzQ291
bnQoKSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3Ry
aW5nLCAiJyIpOwogICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRFeGNlcHRp
b25TaWduYXR1cmVJbmRpY2VzLnNpemUoKTsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWdu
YXR1cmVzW2V4Y2VwdGlvblNpZ25hdHVyZUluZGV4XSk7CisgICAgICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT5n
ZXRTaWduYXR1cmUoZXhjZXB0aW9uU2lnbmF0dXJlSW5kZXgpKTsKICAgICAgICAgICAgIG1faW5m
by0+aW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0
dXJlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3OSwxMyArMTc1
LDEzIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvbigpIC0+IFBhcnRpYWxSZXN1
bHQKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICB1
aW50MzJfdCB0eXBlTnVtYmVyOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMih0eXBlTnVtYmVyKSwgImNhbid0IGdldCAiLCBpLCAidGggRnVuY3Rpb24ncyB0eXBl
IG51bWJlciIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9p
bmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksIGksICJ0aCBGdW5jdGlvbiB0eXBlIG51bWJlciBp
cyBpbnZhbGlkICIsIHR5cGVOdW1iZXIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHR5
cGVOdW1iZXIgPj0gbV9pbmZvLT50eXBlc0NvdW50KCksIGksICJ0aCBGdW5jdGlvbiB0eXBlIG51
bWJlciBpcyBpbnZhbGlkICIsIHR5cGVOdW1iZXIpOwogCi0gICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRT
aWduYXR1cmVzW3R5cGVOdW1iZXJdKTsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+Z2V0U2lnbmF0dXJlKHR5
cGVOdW1iZXIpKTsKICAgICAgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBmaXhlcyB1cCBzdGFydCBh
bmQgZW5kLgogICAgICAgICBzaXplX3Qgc3RhcnQgPSAwOwogICAgICAgICBzaXplX3QgZW5kID0g
MDsKLSAgICAgICAgbV9pbmZvLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNo
ZWNrZWRBcHBlbmQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICBtX2luZm8tPmludGVybmFsRnVu
Y3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRlc2NyaXB0aW9u
IHsgc2lnbmF0dXJlSW5kZXgsIHR5cGVOdW1iZXIgfSk7CiAgICAgICAgIG1faW5mby0+ZnVuY3Rp
b25zLnVuY2hlY2tlZEFwcGVuZCh7IHN0YXJ0LCBlbmQsIFZlY3Rvcjx1aW50OF90PigpIH0pOwog
ICAgIH0KIApAQCAtMzE5LDcgKzMxNSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VHbG9i
YWwoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBnbG9iYWwuaW5pdGlhbGl6YXRpb25U
eXBlID0gR2xvYmFsSW5mb3JtYXRpb246OkZyb21SZWZGdW5jOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBnbG9iYWwuaW5pdGlhbGl6YXRpb25UeXBlID0gR2xvYmFsSW5mb3JtYXRpb246OkZy
b21FeHByZXNzaW9uOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFpc1N1YnR5cGUodHlw
ZUZvckluaXRPcGNvZGUsIGdsb2JhbC50eXBlKSwgIkdsb2JhbCBpbml0X2V4cHIgb3Bjb2RlIG9m
IHR5cGUgIiwgdHlwZUZvckluaXRPcGNvZGUua2luZCwgIiBkb2Vzbid0IG1hdGNoIGdsb2JhbCdz
IHR5cGUgIiwgZ2xvYmFsLnR5cGUua2luZCk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IW1faW5mby0+aXNTdWJ0eXBlKHR5cGVGb3JJbml0T3Bjb2RlLCBnbG9iYWwudHlwZSksICJHbG9i
YWwgaW5pdF9leHByIG9wY29kZSBvZiB0eXBlICIsIHR5cGVGb3JJbml0T3Bjb2RlLmtpbmQsICIg
ZG9lc24ndCBtYXRjaCBnbG9iYWwncyB0eXBlICIsIGdsb2JhbC50eXBlLmtpbmQpOwogCiAgICAg
ICAgIGlmIChpbml0T3Bjb2RlID09IFJlZkZ1bmMpCiAgICAgICAgICAgICBtX2luZm8tPmFkZERl
Y2xhcmVkRnVuY3Rpb24oZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIpOwpAQCAtMzcx
LDcgKzM2Nyw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFeHBvcnQoKSAtPiBQYXJ0aWFs
UmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGtpbmRJbmRleCA+PSBtX2lu
Zm8tPmdsb2JhbHMuc2l6ZSgpLCBleHBvcnROdW1iZXIsICJ0aCBFeHBvcnQgaGFzIGludmFsaWQg
Z2xvYmFsIG51bWJlciAiLCBraW5kSW5kZXgsICIgaXQgZXhjZWVkcyB0aGUgZ2xvYmFscyBjb3Vu
dCAiLCBtX2luZm8tPmdsb2JhbHMuc2l6ZSgpLCAiLCBuYW1lZCAnIiwgZmllbGRTdHJpbmcsICIn
Iik7CiAgICAgICAgICAgICAvLyBPbmx5IG11dGFibGUgZ2xvYmFscyBuZWVkIGZsb2F0aW5nIGJp
bmRpbmdzLgogICAgICAgICAgICAgR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCA9IG1faW5mby0+
Z2xvYmFsc1traW5kSW5kZXhdOwotICAgICAgICAgICAgaWYgKGdsb2JhbC5tdXRhYmlsaXR5ID09
IEdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlKQorICAgICAgICAgICAgaWYg
KGdsb2JhbC5tdXRhYmlsaXR5ID09IE11dGFiaWxpdHk6Ok11dGFibGUpCiAgICAgICAgICAgICAg
ICAgZ2xvYmFsLmJpbmRpbmdNb2RlID0gR2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQ
b3J0YWJsZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01MDAsNyArNDk2LDcg
QEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSAweDA1OiB7CiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7
Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCBy
ZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUocmVmVHlwZSksICJjYW4ndCBw
YXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcmVmVHlwZS5pc0Z1bmNyZWYoKSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9u
IHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7
CkBAIC01MjIsNyArNTE4LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAt
PiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBh
cnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihpbml0RXhwcikpOwogCiAgICAgICAgICAg
ICBUeXBlIHJlZlR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJl
ZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0
aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUocmVm
VHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwogICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmVmVHlwZS5pc0Z1bmNyZWYoKSwgInJlZnR5cGUgaW4g
ZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4Q291bnQ7CkBAIC01MzgsNyArNTM0LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpw
YXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAw
eDA3OiB7CiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJl
ZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVJlZlR5cGUocmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2Vj
dGlvbiIpOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmVmVHlwZS5pc0Z1bmNy
ZWYoKSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CiAK
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CkBAIC02MDksNyArNjA1LDcgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3Qm
IGJpdHNPckltcG9ydE51bWJlciwKIAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4
ID49IG1faW5mby0+Z2xvYmFscy5zaXplKCksICJnZXRfZ2xvYmFsJ3MgaW5kZXggIiwgaW5kZXgs
ICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGdsb2JhbHMgIiwgbV9pbmZvLT5nbG9iYWxzLnNpemUo
KSk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5maXJzdElu
dGVybmFsR2xvYmFsLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBpbmRleCwgIiBl
eGNlZWRzIHRoZSBmaXJzdCBpbnRlcm5hbCBnbG9iYWwgIiwgbV9pbmZvLT5maXJzdEludGVybmFs
R2xvYmFsKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNbaW5k
ZXhdLm11dGFiaWxpdHkgIT0gR2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSwgImdldF9nbG9i
YWwgaW1wb3J0IGtpbmQgaW5kZXggIiwgaW5kZXgsICIgaXMgbXV0YWJsZSAiKTsKKyAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPmdsb2JhbHNbaW5kZXhdLm11dGFiaWxpdHkgIT0g
TXV0YWJpbGl0eTo6SW1tdXRhYmxlLCAiZ2V0X2dsb2JhbCBpbXBvcnQga2luZCBpbmRleCAiLCBp
bmRleCwgIiBpcyBtdXRhYmxlICIpOwogCiAgICAgICAgIHJlc3VsdFR5cGUgPSBtX2luZm8tPmds
b2JhbHNbaW5kZXhdLnR5cGU7CiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGluZGV4OwpA
QCAtNjIwLDE0ICs2MTYsMTAgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVp
bnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKICAgICAgICAgVHlw
ZSB0eXBlT2ZOdWxsOwogICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1
bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwotICAg
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBU
eXBlKSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5
cGVfaWR4Iik7Ci0gICAgICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkp
IHsKLSAgICAgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25h
dHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0
KCkpOwotICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51
bGwsIE51bGxhYmxlOjpZZXMsIHNpZ25hdHVyZUluZGV4IH07Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBO
dWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIH07Cisg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUhlYXBUeXBlKGhlYXBUeXBlKSwg
InJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4
Iik7CisgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBO
dWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcFR5cGUpIH07CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1f
aW5mbywgdHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlw
ZSIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHR5cGVP
Zk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUiKTsKIAogICAg
ICAgICByZXN1bHRUeXBlID0gdHlwZU9mTnVsbDsKICAgICAgICAgYml0c09ySW1wb3J0TnVtYmVy
ID0gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTYzNSwxNyArNjI3LDE2IEBAIGF1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBi
aXRzT3JJbXBvcnROdW1iZXIsCiAgICAgfQogCiAgICAgY2FzZSBSZWZGdW5jOiB7Ci0gICAgICAg
IHVpbnQzMl90IGluZGV4OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihpbmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsKLSAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihpbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCksICJyZWYuZnVu
YyBpbmRleCIsIGluZGV4LCAiIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBmdW5jdGlvbnMgIiwgbV9p
bmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoZnVuY3Rpb25JbmRl
eCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRihmdW5jdGlvbkluZGV4ID49IG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSwgInJlZi5mdW5j
IGluZGV4IiwgZnVuY3Rpb25JbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25z
ICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICAgICAgU2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX2luZm8tPnNpZ25hdHVyZUluZGV4RnJvbUZ1
bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAgICByZXN1bHRUeXBlID0geyBUeXBl
S2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIHNpZ25hdHVyZUluZGV4IH07CisgICAgICAgICAgICBy
ZXN1bHRUeXBlID0geyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby0+Z2V0VHlw
ZUluZGV4Rm9yRnVuY3Rpb24oZnVuY3Rpb25JbmRleCkgfTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXN1bHRUeXBlID0gVHlwZXM6OkZ1bmNyZWY7CiAKLSAgICAgICAgYml0c09ySW1w
b3J0TnVtYmVyID0gaW5kZXg7CisgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGZ1bmN0aW9u
SW5kZXg7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNjgwLDYgKzY3MSw2MCBAQCBhdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHIoc3RkOjpvcHRpb25hbDxJMzJJbml0RXhw
cj4mIGluaXRFeHByLCBBU0NJSQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VGdW5jdGlvblR5cGUodWludDMyX3QgcG9zaXRpb24sIEZ1bmNUeXBlJiBmdW5j
VHlwZSkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQzMl90IGFyZ3VtZW50Q291bnQ7Cisg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoYXJndW1lbnRDb3VudCksICJj
YW4ndCBnZXQgIiwgcG9zaXRpb24sICJ0aCBUeXBlJ3MgYXJndW1lbnQgY291bnQiKTsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtYXhGdW5jdGlvblBhcmFtcywgcG9z
aXRpb24sICJ0aCBhcmd1bWVudCBjb3VudCBpcyB0b28gYmlnICIsIGFyZ3VtZW50Q291bnQsICIg
bWF4aW11bSAiLCBtYXhGdW5jdGlvblBhcmFtcyk7CisgICAgVmVjdG9yPFR5cGU+IGFyZ3VtZW50
VHlwZXM7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighYXJndW1lbnRUeXBlcy50cnlSZXNlcnZl
Q2FwYWNpdHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZv
ciBUeXBlIHNlY3Rpb24ncyAiLCBwb3NpdGlvbiwgInRoIHNpZ25hdHVyZSIpOworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgeworICAgICAgICBUeXBl
IGFyZ3VtZW50VHlwZTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5
cGUoYXJndW1lbnRUeXBlKSwgImNhbid0IGdldCAiLCBpLCAidGggYXJndW1lbnQgVHlwZSIpOwor
ICAgICAgICBhcmd1bWVudFR5cGVzLmFwcGVuZChhcmd1bWVudFR5cGUpOworICAgIH0KKworICAg
IHVpbnQzMl90IHJldHVybkNvdW50OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKHJldHVybkNvdW50KSwgImNhbid0IGdldCAiLCBwb3NpdGlvbiwgInRoIFR5cGUncyBy
ZXR1cm4gY291bnQiKTsKKworICAgIFZlY3RvcjxUeXBlLCAxPiByZXR1cm5UeXBlczsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFyZXR1cm5UeXBlcy50cnlSZXNlcnZlQ2FwYWNpdHkoYXJndW1l
bnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24n
cyAiLCBwb3NpdGlvbiwgInRoIHNpZ25hdHVyZSIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXR1cm5Db3VudDsgKytpKSB7CisgICAgICAgIFR5cGUgdmFsdWU7CisgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKHZhbHVlKSwgImNhbid0IGdldCAiLCBp
LCAidGggVHlwZSdzIHJldHVybiB2YWx1ZSIpOworICAgICAgICByZXR1cm5UeXBlcy5hcHBlbmQo
dmFsdWUpOworICAgIH0KKworICAgIGZ1bmNUeXBlLnNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9y
bWF0aW9uOjpzaWduYXR1cmVGb3IocmV0dXJuVHlwZXMsIGFyZ3VtZW50VHlwZXMpOworICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIWZ1bmNUeXBlLnNpZ25hdHVyZSwgImNhbid0IGFsbG9jYXRlIGVu
b3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIHBvc2l0aW9uLCAidGggc2lnbmF0dXJl
Iik7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlU3Ry
dWN0VHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgU3RydWN0VHlwZSYgc3RydWN0VHlwZSkgLT4gUGFy
dGlhbFJlc3VsdAoreworICAgIEFTU0VSVChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpOwor
CisgICAgdWludDMyX3QgZmllbGRDb3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMihmaWVsZENvdW50KSwgImNhbid0IGdldCAiLCBwb3NpdGlvbiwgInRoIHN0cnVj
dCB0eXBlJ3MgZmllbGQgY291bnQiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZpZWxkQ291
bnQgPiBtYXhTdHJ1Y3RzRmllbGRzLCAibnVtYmVyIG9mIGZpZWxkcyBmb3Igc3RydWN0IHR5cGUg
YXQgcG9zaXRpb24gIiwgcG9zaXRpb24sICIgaXMgdG9vIGJpZyAiLCBmaWVsZENvdW50LCAiIG1h
eGltdW0gIiwgbWF4U3RydWN0c0ZpZWxkcyk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighc3Ry
dWN0VHlwZS5maWVsZHMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGZpZWxkQ291bnQpLCAiY2FuJ3QgYWxs
b2NhdGUgZW5vdWdoIG1lbW9yeSBmb3Igc3RydWN0IGZpZWxkcyAiLCBmaWVsZENvdW50LCAiIGVu
dHJpZXMiKTsKKworICAgIGZvciAodWludDMyX3QgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXgg
PCBmaWVsZENvdW50OyArK2ZpZWxkSW5kZXgpIHsKKyAgICAgICAgVHlwZSBmaWVsZFR5cGU7Cisg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKGZpZWxkVHlwZSksICJj
YW4ndCBnZXQgIiwgZmllbGRJbmRleCwgInRoIGZpZWxkIFR5cGUiKTsKKworICAgICAgICB1aW50
OF90IG11dGFiaWxpdHk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgo
bXV0YWJpbGl0eSksIHBvc2l0aW9uLCAiY2FuJ3QgZ2V0ICIsIGZpZWxkSW5kZXgsICJ0aCBmaWVs
ZCBtdXRhYmlsaXR5Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobXV0YWJpbGl0eSAh
PSAweDAgJiYgbXV0YWJpbGl0eSAhPSAweDEsICJpbnZhbGlkIEZpZWxkJ3MgbXV0YWJpbGl0eTog
MHgiLCBoZXgobXV0YWJpbGl0eSwgMiwgTG93ZXJjYXNlKSk7CisKKyAgICAgICAgc3RydWN0VHlw
ZS5maWVsZHMudW5jaGVja2VkQXBwZW5kKFN0cnVjdEZpZWxkIHsgZmllbGRUeXBlLCBzdGF0aWNf
Y2FzdDxNdXRhYmlsaXR5PihtdXRhYmlsaXR5KSB9KTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9
OworfQorCiBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2Vj
dGlvbihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKICAgICByZXR1cm4gcGFyc2VJMzJJbml0RXhwcihpbml0RXhwciwgIkVsZW1lbnQgaW5p
dF9leHByIG11c3QgcHJvZHVjZSBhbiBpMzIiX3MpOwpAQCAtNzE5LDcgKzc2NCw3IEBAIGF1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mRXhwcmVzc2lvbnMoVmVj
dG9yPHVpbnQzMl90PiYgcmVzCiAgICAgICAgICAgICBtX2luZm8tPmFkZERlY2xhcmVkRnVuY3Rp
b24oZnVuY3Rpb25JbmRleCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBUeXBlIHR5
cGVPZk51bGw7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUo
bV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIGZ1bmMgdHlwZSBp
biBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
UmVmVHlwZSh0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIGZ1bmMgdHlwZSBp
biBlbGVtIHNlY3Rpb24iKTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXR5cGVP
Zk51bGwuaXNGdW5jcmVmKCksICJyZWYubnVsbCBleHRlcm4gaXMgZm9yYmlkZGVuIGluIGVsZW1l
bnQgc2VjdGlvbidzLCAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGgg
aW5kZXgiKTsKICAgICAgICAgICAgIGZ1bmN0aW9uSW5kZXggPSBFbGVtZW50OjpudWxsRnVuY0lu
ZGV4OwogICAgICAgICB9CkBAIC03NTIsMTMgKzc5Nyw0NSBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6
OnBhcnNlSTMySW5pdEV4cHJGb3JEYXRhU2VjdGlvbihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHBy
PiYgaQogICAgIHJldHVybiBwYXJzZUkzMkluaXRFeHByKGluaXRFeHByLCAiRGF0YSBpbml0X2V4
cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiJfcyk7CiB9CiAKK2F1dG8gU2VjdGlvblBhcnNlcjo6UmVm
VHlwZXNWYWxpZCgpIGNvbnN0IC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBjb25zdCB1aW50MzJf
dCB0eXBlc0NvdW50ID0gbV9pbmZvLT50eXBlc0NvdW50KCk7CisgICAgYXV0byByZWZUeXBlc0No
ZWNrVmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW3R5cGVzQ291bnRdKGNvbnN0IFN0cnVjdFR5
cGUmIHN0cnVjdFR5cGUpIC0+IGJvb2wgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxk
IDogc3RydWN0VHlwZS5maWVsZHMpIHsKKyAgICAgICAgICAgIGlmIChpc1JlZldpdGhUeXBlSW5k
ZXgoZmllbGQudHlwZSkgJiYgZmllbGQudHlwZS5pbmRleCA+IHR5cGVzQ291bnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0sIFt0eXBlc0NvdW50XShjb25zdCBGdW5jVHlwZSYgZnVuY1R5cGUpIC0+IGJvb2wgewor
ICAgICAgICBmb3IgKHVpbnQzMl90IGFyZ3VtZW50SW5kZXggPSAwOyBhcmd1bWVudEluZGV4IDwg
ZnVuY1R5cGUuc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7ICsrYXJndW1lbnRJbmRleCkgewor
ICAgICAgICAgICAgY29uc3QgYXV0byYgYXJndW1lbnRUeXBlID0gZnVuY1R5cGUuc2lnbmF0dXJl
LT5hcmd1bWVudChhcmd1bWVudEluZGV4KTsKKyAgICAgICAgICAgIGlmIChpc1JlZldpdGhUeXBl
SW5kZXgoYXJndW1lbnRUeXBlKSAmJiBhcmd1bWVudFR5cGUuaW5kZXggPiB0eXBlc0NvdW50KQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAo
dWludDMyX3QgcmV0dXJuSW5kZXggPSAwOyByZXR1cm5JbmRleCA8IGZ1bmNUeXBlLnNpZ25hdHVy
ZS0+cmV0dXJuQ291bnQoKTsgKytyZXR1cm5JbmRleCkgeworICAgICAgICAgICAgY29uc3QgYXV0
byYgcmV0dXJuVHlwZSA9IGZ1bmNUeXBlLnNpZ25hdHVyZS0+cmV0dXJuVHlwZShyZXR1cm5JbmRl
eCk7CisgICAgICAgICAgICBpZiAoaXNSZWZXaXRoVHlwZUluZGV4KHJldHVyblR5cGUpICYmIHJl
dHVyblR5cGUuaW5kZXggPiB0eXBlc0NvdW50KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKworICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX2luZm8tPnR5cGVzQ291bnQoKTsgKytpKSB7CisgICAgICAg
IGlmICghc3RkOjp2aXNpdChyZWZUeXBlc0NoZWNrVmlzaXRvciwgbV9pbmZvLT50eXBlc1tpXSkp
CisgICAgICAgICAgICByZXR1cm4gZmFpbCgiaW5jb3JyZWN0IHR5cGUgYXQgaW5kZXggIiwgaSk7
CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJz
ZUdsb2JhbFR5cGUoR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCkgLT4gUGFydGlhbFJlc3VsdAog
ewogICAgIHVpbnQ4X3QgbXV0YWJpbGl0eTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhbHVlVHlwZShtX2luZm8sIGdsb2JhbC50eXBlKSwgImNhbid0IGdldCBHbG9iYWwncyB2YWx1
ZSB0eXBlIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUoZ2xvYmFs
LnR5cGUpLCAiY2FuJ3QgZ2V0IEdsb2JhbCdzIHZhbHVlIHR5cGUiKTsKICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxpdHkpLCAiY2FuJ3QgZ2V0IEdsb2JhbCB0eXBl
J3MgbXV0YWJpbGl0eSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobXV0YWJpbGl0eSAhPSAw
eDAgJiYgbXV0YWJpbGl0eSAhPSAweDEsICJpbnZhbGlkIEdsb2JhbCdzIG11dGFiaWxpdHk6IDB4
IiwgaGV4KG11dGFiaWxpdHksIDIsIExvd2VyY2FzZSkpOwotICAgIGdsb2JhbC5tdXRhYmlsaXR5
ID0gc3RhdGljX2Nhc3Q8R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk+KG11dGFiaWxpdHkp
OworICAgIGdsb2JhbC5tdXRhYmlsaXR5ID0gc3RhdGljX2Nhc3Q8TXV0YWJpbGl0eT4obXV0YWJp
bGl0eSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODY3LDggKzk0NCw4IEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VFeGNlcHRpb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAg
dWludDMyX3QgdHlwZU51bWJlcjsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VW
YXJVSW50MzIodHlwZU51bWJlciksICJjYW4ndCBnZXQgIiwgZXhjZXB0aW9uTnVtYmVyLCAidGgg
RXhjZXB0aW9uJ3MgdHlwZSBudW1iZXIiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0
eXBlTnVtYmVyID49IG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCBleGNlcHRpb25OdW1i
ZXIsICJ0aCBFeGNlcHRpb24gdHlwZSBudW1iZXIgaXMgaW52YWxpZCAiLCB0eXBlTnVtYmVyKTsK
LSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbdHlwZU51bWJlcl0pOworICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKHR5cGVOdW1iZXIgPj0gbV9pbmZvLT50eXBlc0NvdW50KCksIGV4
Y2VwdGlvbk51bWJlciwgInRoIEV4Y2VwdGlvbiB0eXBlIG51bWJlciBpcyBpbnZhbGlkICIsIHR5
cGVOdW1iZXIpOworICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25h
dHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLT5nZXRTaWduYXR1cmUodHlwZU51bWJlcikpOwog
ICAgICAgICBtX2luZm8tPmludGVybmFsRXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNr
ZWRBcHBlbmQoc2lnbmF0dXJlSW5kZXgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKaW5kZXggOTFmZDNlZDgzNDIyNWM4MTNlMmQw
MTM5MmI0OWU4ZDljM2JlMmI4Ny4uNGNkMzIzZmI3YWFiZGU2MzI2YmI4MDcyYzVkZTQ3NTA0NmE1
ZTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5oCkBAIC02OSw2ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VJbml0RXhwcih1aW50OF90JiwgdWludDY0X3QmLCBUeXBlJiBpbml0
RXhwclR5cGUpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSTMy
SW5pdEV4cHIoc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mLCBBU0NJSUxpdGVyYWwgZmFpbE1l
c3NhZ2UpOwogCisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5j
dGlvblR5cGUodWludDMyX3QgcG9zaXRpb24sIEZ1bmNUeXBlJik7CisgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VTdHJ1Y3RUeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBT
dHJ1Y3RUeXBlJik7CisKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiB2YWxp
ZGF0ZUVsZW1lbnRUYWJsZUlkeCh1aW50MzJfdCk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8STMySW5pdEV4cHI+Jik7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VFbGVtZW50S2luZCh1aW50OF90JiBlbGVtZW50S2luZCk7CkBAIC03OCw2ICs4MSw4IEBA
IHByaXZhdGU6CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkz
MkluaXRFeHByRm9yRGF0YVNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKIAor
ICAgIFBhcnRpYWxSZXN1bHQgUmVmVHlwZXNWYWxpZCgpIGNvbnN0OworCiAgICAgc2l6ZV90IG1f
b2Zmc2V0SW5Tb3VyY2U7CiAgICAgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBtX2luZm87CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCmluZGV4IDNhY2U5YWZi
MTc1Nzg5NjYzODJhNzBiOTUwZWNiMzhiOWY0NzA2ZjYuLjNkNGE4YjFkODQxMDU3YWVhODRkOTUx
YmU5MGMwZTc0YTVjMjQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2ln
bmF0dXJlLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgV2Fz
bSB7CiAKIHVzaW5nIFNpZ25hdHVyZUFyZ0NvdW50ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1
cmVJbmRleCA9IHVpbnRwdHJfdDsKIAogY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNpZ25hdHVyZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVh
ZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVy
LnB5CmluZGV4IDY1NzZhNjljNTY4MzUzYWI2NzdiOGUxYjRjODQxNDZhNzRjMDM1ZmYuLjYzZTk0
ZGJjMmU4YWU0NTQyYTc5ZDhhYWM5MjBiMDZkMGUwMWE4ZTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTIxOCwxMiAr
MjE4LDEwIEBAIGVudW0gY2xhc3MgTnVsbGFibGUgOiBib29sIHsKICAgWWVzID0gdHJ1ZSwKIH07
CiAKLXVzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludHB0cl90OwotCiBzdHJ1Y3QgVHlwZSB7CiAg
ICAgVHlwZUtpbmQga2luZDsKICAgICBOdWxsYWJsZSBudWxsYWJsZTsKLSAgICBTaWduYXR1cmVJ
bmRleCBpbmRleDsKKyAgICB1bnNpZ25lZCBpbmRleDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUeXBlJiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCmluZGV4IDU0ZTk3
NDE0YjY2MjYwMzRmMTMwZTE1ZDQ5M2Q3Yzk1MGUzODE1NzUuLjcxNWYwYTdlZDcxYzk5MzUzMmU5
OWUzOWM4ZGVmZjUxYzhiZjAyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwCkBAIC01Miw3ICs1Miw3IEBA
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2soVk0mIHZtLCBS
ZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDU2NwogICAgIG1fd2FzbVRvSlNFeGl0U3R1YnMucmVzZXJ2ZUNh
cGFjaXR5KG1fY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCkpOwogICAgIGZvciAodW5z
aWduZWQgaW1wb3J0SW5kZXggPSAwOyBpbXBvcnRJbmRleCA8IG1fY29kZUJsb2NrLT5mdW5jdGlv
bkltcG9ydENvdW50KCk7ICsraW1wb3J0SW5kZXgpIHsKLSAgICAgICAgV2FzbTo6U2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNp
Z25hdHVyZUluZGljZXMuYXQoaW1wb3J0SW5kZXgpOworICAgICAgICBXYXNtOjpTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2ln
bmF0dXJlSW5kaWNlcy5hdChpbXBvcnRJbmRleCkuc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGF1
dG8gYmluZGluZyA9IFdhc206Ondhc21Ub0pTKHZtLCBtX2NhbGxMaW5rSW5mb3MsIHNpZ25hdHVy
ZUluZGV4LCBpbXBvcnRJbmRleCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghYmluZGluZykpIHsK
ICAgICAgICAgICAgIHN3aXRjaCAoYmluZGluZy5lcnJvcigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5R2xvYmFsLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCmluZGV4IDc2
OTVkNzcwYzFkNTg0MzhhMGEzMDYyMzQwOTk5ZmI5MDBlYmM2MjIuLjJjMjNjZDU0NDY3MTkzNjUx
MjBjODlmODIwNzAyNzA2M2IxOGEwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlHbG9iYWwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIEpT
T2JqZWN0KiBKU1dlYkFzc2VtYmx5R2xvYmFsOjp0eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCAyKTsKIAotICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibXV0YWJsZSIp
LCBqc0Jvb2xlYW4obV9nbG9iYWwtPm11dGFiaWxpdHkoKSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1h
dGlvbjo6TXV0YWJsZSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibXV0YWJsZSIpLCBqc0Jvb2xlYW4obV9nbG9iYWwtPm11dGFiaWxpdHko
KSA9PSBXYXNtOjpNdXRhYmxlKSk7CiAKICAgICBXYXNtOjpUeXBlIHZhbHVlVHlwZSA9IG1fZ2xv
YmFsLT50eXBlKCk7CiAgICAgSlNTdHJpbmcqIHZhbHVlU3RyaW5nID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApp
bmRleCBhNmQ2NGVlMzQ1ZmJjN2E0M2NlMWM1ZTRjYTNkNzc3MjRhMDAzY2M5Li5hOTEzNWUzNGE5
NjRjNWI2NDg2OGJhODhkMjNlNDRiMTRiNzIwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCkBAIC00Myw2ICs0Myw3IEBA
IG5hbWVzcGFjZSBXYXNtIHsKIGNsYXNzIE1vZHVsZTsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlv
bjsKIGNsYXNzIFBsYW47Cit1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnRwdHJfdDsKIH0KIAog
Y2xhc3MgU3ltYm9sVGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKaW5kZXggNTgxMDQxYjNjYTM0MzNjN2FmYWJmMWJlMzQ2NzVkYWI3ZDRhNGZkNi4uNjZh
OTIxM2U5YTRhMTNhOThlZDZlNzM5MDUwY2ZjMzEyNDU1MTljYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUua2luZCkgewogICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQg
YWJvdmUuCkBAIC0xNzgsNiArMTc5LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAg
ICAgICAgIHN3aXRjaCAoYXJnVHlwZS5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpWb2lkOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6
CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggMGI5NjMxZWE1NDY1NDVmNzZhMzJlODcyZDM5NzhlMGY1OGM4MDhl
Yy4uYThlMjBjNzkwMzdhNjQzN2MxZjZmYmQ3YWExMjY5MDMyMmVlNDA0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9i
YWxDb25zdHJ1Y3Rvci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlHbG9iYWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKICAgICAgICAgZ2xvYmFsRGVzY3JpcHRvciA9IGpzQ2FzdDxKU09iamVjdCo+KGFyZ3VtZW50
KTsKICAgICB9CiAKLSAgICBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRh
YmlsaXR5OworICAgIFdhc206Ok11dGFiaWxpdHkgbXV0YWJpbGl0eTsKICAgICB7CiAgICAgICAg
IElkZW50aWZpZXIgbXV0YWJsZUlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm11
dGFibGUiKTsKICAgICAgICAgSlNWYWx1ZSBtdXRhYmxlVmFsdWUgPSBnbG9iYWxEZXNjcmlwdG9y
LT5nZXQoZ2xvYmFsT2JqZWN0LCBtdXRhYmxlSWRlbnQpOwpAQCAtNzQsOSArNzQsOSBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJseUdsb2JhbCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBib29sIG11dGFibGVCb29sZWFuID0gbXV0YWJs
ZVZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAobXV0YWJsZUJv
b2xlYW4pCi0gICAgICAgICAgICBtdXRhYmlsaXR5ID0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246
Ok11dGFibGU7CisgICAgICAgICAgICBtdXRhYmlsaXR5ID0gV2FzbTo6TXV0YWJsZTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbXV0YWJpbGl0eSA9IFdhc206Okdsb2JhbEluZm9ybWF0aW9u
OjpJbW11dGFibGU7CisgICAgICAgICAgICBtdXRhYmlsaXR5ID0gV2FzbTo6SW1tdXRhYmxlOwog
ICAgIH0KIAogICAgIFdhc206OlR5cGUgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAppbmRl
eCBjN2IzZDZmN2U5NDUxMWMxOGFkZmQ3YTc2Yzg5MjE5NjkwNjRlOTVjLi5kYjhkOTA0YWRkNzQy
NmVlODdhMmRlZDhiYzIwYjQ2OGFhZjE0OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5R2xv
YmFsUHJvdG9TZXR0ZXJGdW5jVmFsdWUsIChKU0dsb2JhbE9iamVjdCoKICAgICBKU1dlYkFzc2Vt
Ymx5R2xvYmFsKiBnbG9iYWwgPSBnZXRHbG9iYWwoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChnbG9iYWwtPmdsb2JhbCgpLT5tdXRhYmlsaXR5KCkg
PT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk6OkltbXV0YWJsZSkKKyAgICBp
ZiAoZ2xvYmFsLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgpID09IFdhc206Ok11dGFiaWxpdHk6Oklt
bXV0YWJsZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJX
ZWJBc3NlbWJseS5HbG9iYWwucHJvdG90eXBlLnZhbHVlIGF0dGVtcHRzIHRvIG1vZGlmeSBpbW11
dGFibGUgZ2xvYmFsIHZhbHVlIl9zKSkpOwogCiAgICAgZ2xvYmFsLT5nbG9iYWwoKS0+c2V0KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5k
ZXggMDY0YWM2OTkxM2M4ZDZhMWIxODhhZGRiY2U0NGNkOGNjZDQ4ZjZlOS4uMTE1NjhhMWUyODgx
NjY1N2M0NjM0NjExN2U4Y2FkMzE5MDZjNWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtMjMw
LDcgKzIzMCw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBv
cnRzQW5kRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgICAgICAgICAgICAgICAg
IC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCiAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rpb24oKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0ZWRTaWdu
YXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5k
aWNlc1tpbXBvcnQua2luZEluZGV4XTsKKyAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJ
bmRleCBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVu
Y3Rpb25TaWduYXR1cmVJbmRpY2VzW2ltcG9ydC5raW5kSW5kZXhdLnNpZ25hdHVyZUluZGV4Owog
ICAgICAgICAgICAgICAgIGlmIChpbXBvcnRlZFNpZ25hdHVyZUluZGV4ICE9IGV4cGVjdGVkU2ln
bmF0dXJlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRl
SlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2Fn
ZShpbXBvcnQsICJpbXBvcnRlZCBmdW5jdGlvbiIsICJzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0
aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUiKSkpOwogICAgICAg
ICAgICAgfQpAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAg
ICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Okdsb2JhbDogewogICAgICAgICAgICAgLy8g
NS4gSWYgaSBpcyBhIGdsb2JhbCBpbXBvcnQ6CiAgICAgICAgICAgICBjb25zdCBXYXNtOjpHbG9i
YWxJbmZvcm1hdGlvbiYgZ2xvYmFsID0gbW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQu
a2luZEluZGV4XTsKLSAgICAgICAgICAgIGlmIChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpH
bG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxlKSB7CisgICAgICAgICAgICBpZiAoZ2xvYmFsLm11
dGFiaWxpdHkgPT0gV2FzbTo6SW1tdXRhYmxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
LmluaGVyaXRzPEpTV2ViQXNzZW1ibHlHbG9iYWw+KHZtKSkgewogICAgICAgICAgICAgICAgICAg
ICBKU1dlYkFzc2VtYmx5R2xvYmFsKiBnbG9iYWxWYWx1ZSA9IGpzQ2FzdDxKU1dlYkFzc2VtYmx5
R2xvYmFsKj4odmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsVmFsdWUtPmds
b2JhbCgpLT50eXBlKCkgIT0gZ2xvYmFsLnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0
LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3Qg
YmUgYSBzYW1lIHR5cGUiKSkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsVmFsdWUt
Pmdsb2JhbCgpLT5tdXRhYmlsaXR5KCkgIT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0
YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+bXV0
YWJpbGl0eSgpICE9IFdhc206OkltbXV0YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3Qs
IHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBi
ZSBhIHNhbWUgbXV0YWJpbGl0eSIpKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGRlY2xhcmVkR2xvYmFsVHlwZSA9IG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0Lmtp
bmRJbmRleF0udHlwZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZWNsYXJlZEdsb2Jh
bFR5cGUua2luZCkgewpAQCAtNTAxLDggKzUwMSw4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6UG9ydGFibGU6IHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5mb3Jt
YXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpOwotICAgICAgICAgICAgICAgIFJlZjxXYXNtOjpH
bG9iYWw+IGdsb2JhbFJlZiA9IFdhc206Okdsb2JhbDo6Y3JlYXRlKGdsb2JhbC50eXBlLCBXYXNt
OjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSwgaW5pdGlhbEJpdHMpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpNdXRhYmxl
KTsKKyAgICAgICAgICAgICAgICBSZWY8V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBXYXNtOjpH
bG9iYWw6OmNyZWF0ZShnbG9iYWwudHlwZSwgV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSwgaW5p
dGlhbEJpdHMpOwogICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlHbG9iYWwqIGdsb2JhbFZh
bHVlID0gSlNXZWJBc3NlbWJseUdsb2JhbDo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlHbG9iYWxTdHJ1Y3R1cmUoKSwgV1RGTW92ZShnbG9iYWxS
ZWYpKTsKICAgICAgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAg
ICAgICAgICAgIG1faW5zdGFuY2UtPmxpbmtHbG9iYWwodm0sIGdsb2JhbEluZGV4LCBnbG9iYWxW
YWx1ZSk7CkBAIC01NTcsMTIgKzU1NywxMiBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
Ojppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAg
ICAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNXZWJBc3NlbWJseUdsb2JhbDo6dHJ5
Q3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlHbG9iYWxT
dHJ1Y3R1cmUoKSwgV1RGTW92ZShnbG9iYWxSZWYpKTsKICAgICAgICAgICAgICAgICAgICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsSW5m
b3JtYXRpb246Ok11dGFiaWxpdHk6Ok11dGFibGUpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZ2xvYmFsLm11dGFiaWxpdHkgPT0gV2FzbTo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CiAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxXYXNtOjpHbG9iYWw+IGdsb2JhbFJlZiA9IG1faW5zdGFu
Y2UtPmluc3RhbmNlKCkuZ2V0R2xvYmFsQmluZGluZyhleHAua2luZEluZGV4KTsKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGdsb2JhbFJlZik7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChnbG9iYWxSZWYtPnR5cGUoKSA9PSBnbG9iYWwudHlwZSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChnbG9iYWxSZWYtPm11dGFiaWxpdHkoKSA9PSBnbG9iYWwubXV0YWJpbGl0eSk7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxSZWYtPm11dGFiaWxpdHkoKSA9PSBXYXNt
OjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChnbG9iYWxSZWYtPm11dGFiaWxpdHkoKSA9PSBXYXNtOjpNdXRhYmlsaXR5
OjpNdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbFJlZi0+b3duZXI8
SlNXZWJBc3NlbWJseUdsb2JhbD4oKSk7CiAgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFs
dWUgPSBnbG9iYWxSZWYtPm93bmVyPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCk7CiAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDMyYzhhZjhiYmY1
N2VhNjA1YjMzNTVhNTZkODgyZThkZGUxZTBlZWQuLjc0MjgxMmNkZWIwM2Q1YTU0ODQ1YTA3N2Fi
YjFkNzRiNTI3ZmU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTE2
LDYgKzE2LDcgQEAKICAgICAgICAgInJlZl9udWxsIjogIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAtMjAsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAicmVmIjogICAg
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yMSwgImIzdHlwZSI6ICJCMzo6SW50
NjQiIH0sCiAgICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUi
OiAgLTMyLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAic3RydWN0IjogICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMywgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwK
ICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQs
ICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAogICAgICJ2YWx1ZV90eXBlIjogWyJpMzIi
LCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNyZWYiXSwKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTkyNmU0NGZh
ODE0YzEzMWY2M2Y5ZTA5ODA3MDUyYTE2MDY1NGFjMC4uNmRjOWRmMDFmYTlmYzFhNGEzMWRiZmI0
NjAzODY0NjZiN2Y5ZTI0YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0xMS0yMiAgRG1pdHJ5IEJlemhl
dHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUdDXSBBZGQg
c3VwcG9ydCBmb3IgR0Mgc3RydWN0cyBzdGF0aWMgc3VidHlwaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdJUDogQWRkZWQgdGVzdHMg
Zm9yIHJlZiB0eXBlcyB0aGF0IHBvaW50cyB0byBub24tZXhpc3RlbnQgdHlwZXMKKyAgICAgICAg
YW5kIGFkZGVkIGJhc2ljcyB0ZXN0cyBmb3Igc3RydWN0dXJhbCBzdWJ0eXBpbmcgb2Ygc3RydWN0
cy4KKworCisyMDIxLTExLTIyICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW1dBU00tR0NdIEFkZCBzdXBwb3J0IGZvciBHQyBzdHJ1Y3RzIHR5
cGVzIGVuY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIEFkZCBzaW1wbGUgdGVzdHMgZm9yIHBhcnNpbmcgV2FzbSBzdHJ1Y3RzLgor
ICAgICAgICAKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9nYy9zdHJ1Y3Rz
LmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgICh0ZXN0U3RydWN0RGVjbGFy
YXRpb24pOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTExLTE5ICBBc3VtdSBU
YWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IFdlYkFzc2VtYmx5IG1l
bW9yeS5maWxsIG91dCBvZiBib3VuZHMgZXJyb3IgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbAppbmRleCAwMDZjMzNiZTc4Mzc5MzdmNTU0
MDhjYmU4NmY2NjgyNmUyOTRhOTI4Li45NGQ2ZDRmMjdlZjk2YWMwZDc4YTI3Nzc5NzZlZTI0ZjYx
MWFjM2E3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20u
eWFtbApAQCAtMzUsNiArMzUsOCBAQAogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNz
IHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDogd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzCiAgIGNt
ZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcworLSBwYXRoOiB3
YXNtL2djCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5k
cwogLSBwYXRoOiB3YXNtL2Z1enoKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBw
YXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vbG93RXhlY3V0YWJsZU1lbW9yeQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpzIGIvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpzCmluZGV4IDg2YmVjNjE5
OThhYjAyOTBhMDhmNWQyNDk4YTlkNTMxMTliMjNlNTQuLmJiZTM5YTI0NTczMjc3ODFmZDE2Yzk2
NzY1MWZhNTkwZjJhNTViMjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZl
cmVuY2VzL3JlZl90eXBlcy5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNl
cy9yZWZfdHlwZXMuanMKQEAgLTM2OSw2ICszNjksMzYgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdFJl
ZlR5cGVzSW5UYWJsZXMoKSB7CiAgIGFzc2VydC5lcSh3YXNtVGFibGVFeHRlcm5yZWYuZ2V0KDAp
LCBjb25zb2xlLmxvZyk7CiB9CiAKK2FzeW5jIGZ1bmN0aW9uIHRlc3RGdW5jUGFyYW1BbmRSZXN1
bHRUeXBlc1BvaW50VG9Ob25FeGlzdGVudFR5cGUoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAg
ICogICAoZnVuYyAocGFyYW0gKHJlZiAzNykpIChyZXN1bHQgKHJlZiBmdW5jKSkpCisgICAqICkK
KyAgICovCisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4KKyAgICAgIG1vZHVsZSgKKyAgICAg
ICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDZceDAxXHg2MFx4MDFc
eDZiXHgyNVx4MDBceDAzXHgwMlx4MDFceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiIgorICAg
ICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1v
ZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTY6IGluY29ycmVjdCB0eXBlIGF0IGluZGV4IDAg
KGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICApOworCisg
IC8qCisgICAqIChtb2R1bGUKKyAgICogICAoZnVuYyAocmVzdWx0IChyZWYgMzcpKSkKKyAgICog
KQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAorICAg
ICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNlx4MDFceDYwXHgw
MFx4MDFceDZiXHgyNVx4MDNceDAyXHgwMVx4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGIiCisg
ICAgICApLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAiV2ViQXNzZW1ibHku
TW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNjogaW5jb3JyZWN0IHR5cGUgYXQgaW5kZXgg
MCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiCisgICk7Cit9
CisKIGFzc2VydC5hc3luY1Rlc3QodGVzdFJlZlR5cGVMb2NhbCgpKTsKIGFzc2VydC5hc3luY1Rl
c3QodGVzdE5vbk51bGxSZWZUeXBlTG9jYWwoKSk7CiBhc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZU
eXBlSW5TaWduYXR1cmUoKSk7CkBAIC0zODEsMyArNDExLDQgQEAgYXNzZXJ0LmFzeW5jVGVzdCh0
ZXN0RnVuY3JlZkNvbXBhdGliaWxpdHkoKSk7CiBhc3NlcnQuYXN5bmNUZXN0KHRlc3ROb25OdWxs
RnVuY3JlZkluY29tcGF0aWJsZSgpKTsKIGFzc2VydC5hc3luY1Rlc3QodGVzdFdhc21KU0dsb2Jh
bHMoKSk7CiBhc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZUeXBlc0luVGFibGVzKCkpOworYXNzZXJ0
LmFzeW5jVGVzdCh0ZXN0RnVuY1BhcmFtQW5kUmVzdWx0VHlwZXNQb2ludFRvTm9uRXhpc3RlbnRU
eXBlKCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2djL3N0cnVjdHMuanMgYi9KU1Rlc3Rz
L3dhc20vZ2Mvc3RydWN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGZlZTIwN2M5ZjJkYTAwY2YwMzBiNGQ5
MWYwZGUyYzI0NjhlNDAxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2djL3N0cnVj
dHMuanMKQEAgLTAsMCArMSwxMDAgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdl
YkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdlYkFzc2VtYmx5
R0M9dHJ1ZSIpCisKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOworaW1w
b3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOworCitmdW5jdGlv
biBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
KTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdb
aV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHJ1Y3REZWNsYXJhdGlvbigpIHsK
KyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QpKQorICAgKiApCisgICAq
LworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceDAzXHgwMVx4NWZceDAwIikpOworCisgIC8qCisgICAqIChtb2R1
bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCBpMzIpKSkKKyAgICogKQorICAgKi8KKyAg
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHgwNVx4MDFceDVmXHgwMVx4N2ZceDAwIikpOworCisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAodHlwZSAoc3RydWN0IChmaWVsZCBpMzIpIChmaWVsZCBpMzIpKSkKKyAg
ICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDVmXHgwMlx4N2ZceDAwXHg3Zlx4
MDAiKSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxk
IChtdXQgaTMyKSkpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA1XHgwMVx4NWZc
eDAxXHg3Zlx4MDEiKSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlICRQb2lu
dCAoc3RydWN0IChmaWVsZCAobXV0IGkzMikgKG11dCBpMzIpKSkpCisgICAqICAgKHR5cGUgJExp
bmUgKHN0cnVjdCAoZmllbGQgKG11dCAocmVmICRQb2ludCkpIChtdXQgKHJlZiAkUG9pbnQpKSkp
KQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBmXHgwMlx4NWZceDAyXHg3Zlx4MDFc
eDdmXHgwMVx4NWZceDAyXHg2Ylx4MDBceDAxXHg2Ylx4MDBceDAxIikpOworCisgIC8qCisgICAq
IHRvbyBtYW55IGZpZWxkcworICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0cnVjdCAoZmll
bGQgaTMyKSkpCisgICAqICkKKyAgICovCisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4KKyAg
ICAgIG1vZHVsZSgKKyAgICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4MDdceDAxXHg1Zlx4ZmZceGZmXHhmZlx4N2ZceDAwIgorICAgICAgKSwKKyAgICBXZWJBc3Nl
bWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgMTY6IG51bWJlciBvZiBmaWVsZHMgZm9yIHN0cnVjdCB0eXBlIGF0IHBvc2l0aW9u
IDAgaXMgdG9vIGJpZyAyNjg0MzU0NTUgbWF4aW11bSAxMDAwMDAwIChldmFsdWF0aW5nICduZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgKTsKKworICAvKgorICAgKiBpbnZhbGlk
IG11dGFiaWxpdHkKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChzdHJ1Y3QgKGZpZWxkICht
dXQgaTMyKSkpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+Cisg
ICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceDA1XHgwMVx4NWZceDAxXHg3Zlx4MDIiCisgICAgICApLAorICAgIFdlYkFzc2VtYmx5LkNv
bXBpbGVFcnJvciwKKyAgICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0
ZSAxNTogaW52YWxpZCBGaWVsZCdzIG11dGFiaWxpdHk6IDB4MDIgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICApOworfQorCitmdW5jdGlvbiB0ZXN0SW52
YWxpZFJlZkluRmllbGRzKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKHN0
cnVjdCAoZmllbGQgKHJlZiA3KSkpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAor
ICAgICgpID0+CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDA2XHgwMVx4NWZceDAxXHg2Ylx4MDdceDAwIgorICAgICAgKSwKKyAg
ICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vz
bid0IHBhcnNlIGF0IGJ5dGUgMTY6IGluY29ycmVjdCB0eXBlIGF0IGluZGV4IDAgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIgorICApOworfQorCit0ZXN0U3Ry
dWN0RGVjbGFyYXRpb24oKTsKK3Rlc3RJbnZhbGlkUmVmSW5GaWVsZHMoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9nYy9zdHJ1Y3RzX3N1YnR5cGluZy5qcyBiL0pTVGVzdHMvd2FzbS9nYy9z
dHJ1Y3RzX3N1YnR5cGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTc4ZTMyMjFiZTVhNzg2NWUwOTczMmE5
NGQ1NGE5OTJmODA0NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2djL3N0cnVj
dHNfc3VidHlwaW5nLmpzCkBAIC0wLDAgKzEsNTYgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRl
KCItLXVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdl
YkFzc2VtYmx5R0M9dHJ1ZSIpCisKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQu
anMiOworaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOwor
CitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0g
bmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJy
YXkoYnVmZmVyKTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgewor
ICAgIHZpZXdbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHJ1Y3RTdWJ0eXBp
bmcoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAgICh0eXBlICR0MCAoc3RydWN0IChm
aWVsZCBpMzIpKSkKKyAgICogICAgICh0eXBlICR0MSAoc3RydWN0IChmaWVsZCBpMzIpIChmaWVs
ZCBpMzIpKSkKKyAgICoKKyAgICogICAgIChmdW5jICRmb28gKHBhcmFtIChyZWYgbnVsbCAkdDAp
KSAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAzNykpCisgICAqCisgICAqICAgICAoZnVuYyAoZXhw
b3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAqICAgICAgICAgKGkzMi5hZGQgKGNhbGwgJGZv
byAocmVmLm51bGwgJHQwKSkKKyAgICogICAgICAgICAgICAgICAgICAoY2FsbCAkZm9vIChyZWYu
bnVsbCAkdDEpKSkKKyAgICogICAgICkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgx
NVx4MDRceDVmXHgwMVx4N2ZceDAwXHg2MFx4MDFceDZjXHgwMFx4MDFceDdmXHg2MFx4MDBceDAx
XHg3Zlx4NWZceDAyXHg3Zlx4MDBceDdmXHgwMFx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhc
eDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDEyXHgwMlx4MDRceDAwXHg0MVx4
MjVceDBiXHgwYlx4MDBceGQwXHgwMFx4MTBceDAwXHhkMFx4MDNceDEwXHgwMFx4NmFceDBiIikp
OworCisgIC8qCisgICAqIFJlcGxhY2UgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciBv
ZiAkZm9vIHRvICR0MSBhbmQgY2hlY2sgZm9yIGZhaWx1cmUuCisgICAqCisgICAqIChtb2R1bGUK
KyAgICogICAgICh0eXBlICR0MCAoc3RydWN0IChmaWVsZCBpMzIpKSkKKyAgICogICAgICh0eXBl
ICR0MSAoc3RydWN0IChmaWVsZCBpMzIpIChmaWVsZCBpMzIpKSkKKyAgICoKKyAgICogICAgIChm
dW5jICRmb28gKHBhcmFtIChyZWYgbnVsbCAkdDEpKSAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAz
NykpCisgICAqCisgICAqICAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisg
ICAqICAgICAgICAgKGkzMi5hZGQgKGNhbGwgJGZvbyAocmVmLm51bGwgJHQwKSkKKyAgICogICAg
ICAgICAgICAgICAgICAoY2FsbCAkZm9vIChyZWYubnVsbCAkdDEpKSkKKyAgICogICAgICkKKyAg
ICogKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAor
ICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgxNVx4MDRceDVm
XHgwMVx4N2ZceDAwXHg2MFx4MDFceDZjXHgwM1x4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4NWZc
eDAyXHg3Zlx4MDBceDdmXHgwMFx4MDNceDAzXHgwMlx4MDFceDAyXHgwN1x4MDhceDAxXHgwNFx4
NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MGFceDEyXHgwMlx4MDRceDAwXHg0MVx4MjVceDBiXHgw
Ylx4MDBceGQwXHgwMFx4MTBceDAwXHhkMFx4MDNceDEwXHgwMFx4NmFceDBiIgorICAgICAgKSwK
KyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBk
b2Vzbid0IHZhbGlkYXRlOiBhcmd1bWVudCB0eXBlIG1pc21hdGNoIGluIGNhbGwsIGdvdCBSZWZO
dWxsLCBleHBlY3RlZCBSZWZOdWxsLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAxIChldmFsdWF0aW5n
ICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIKKyAgKTsKK30KKwordGVzdFN0cnVj
dFN1YnR5cGluZygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVz
dHMvd2FzbS93YXNtLmpzb24KaW5kZXggMzJjOGFmOGJiZjU3ZWE2MDViMzM1NWE1NmQ4ODJlOGRk
ZTFlMGVlZC4uNzQyODEyY2RlYjAzZDVhNTQ4NDVhMDc3YWJiMWQ3NGI1MjdmZTUzNSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmlu
dDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgInJl
ZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAi
QjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3Iiwg
InZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgInN0cnVjdCI6
ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZv
aWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUi
OiAgLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6
IFsiaTMyIiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>