<?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>206566</bug_id>
          
          <creation_ts>2020-01-21 19:18:27 -0800</creation_ts>
          <short_desc>Don&apos;t include BytecodeStructs.h in CommonSlowPaths.h</short_desc>
          <delta_ts>2020-01-23 17:18:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206563</see_also>
          <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>206720</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</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>1609432</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 19:18:27 -0800</bug_when>
    <thetext>BytecodeStructs.h is quite large, even after https://bugs.webkit.org/show_bug.cgi?id=206563 (roughly 40k lines). It is currently inlined in CommonSlowPaths.h just for 2 functions, which are only used in 2 cpp files.
Not only is CommonSlowPaths.h directly included in many places, but it it is also included in JIT.h, which is included by something like half of JSC.

By only including BytecodeStructs.h in a more specialized CommonSlowPathsInlines.h I hope to improve compile times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609433</commentid>
    <comment_count>1</comment_count>
      <attachid>388390</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-21 19:21:18 -0800</bug_when>
    <thetext>Created attachment 388390
WIP

I only have to actually measure the compile times for the Changelog, this patch is otherwise ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610234</commentid>
    <comment_count>2</comment_count>
      <attachid>388570</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-23 11:44:51 -0800</bug_when>
    <thetext>Created attachment 388570
Patch

The compile time improvement is sadly too small to measure in the noise, but I still think it is worth landing as it is a fairly trivial patch.
I&apos;ve also fixed the patch, as the new file was added in the wrong directory, and two forward declarations are no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610326</commentid>
    <comment_count>3</comment_count>
      <attachid>388591</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-23 14:25:48 -0800</bug_when>
    <thetext>Created attachment 388591
Patch

Fixing style nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610334</commentid>
    <comment_count>4</comment_count>
      <attachid>388591</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-01-23 14:40:58 -0800</bug_when>
    <thetext>Comment on attachment 388591
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610352</commentid>
    <comment_count>5</comment_count>
      <attachid>388591</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-23 15:25:37 -0800</bug_when>
    <thetext>Comment on attachment 388591
Patch

Clearing flags on attachment: 388591

Committed r255040: &lt;https://trac.webkit.org/changeset/255040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610353</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-23 15:25:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610354</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-23 15:26:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58851022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388390</attachid>
            <date>2020-01-21 19:21:18 -0800</date>
            <delta_ts>2020-01-23 11:44:51 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>patch206566</filename>
            <type>text/plain</type>
            <size>27239</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5MjNlMmU3OWUwLi5mMWYwZjc5MTMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDEtMjEgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBpbmNsdWRl
IEJ5dGVjb2RlU3RydWN0cy5oIGluIENvbW1vblNsb3dQYXRocy5oCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGUgaW1wcm92ZW1lbnQgdG8gY29t
cGlsZSB0aW1lcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKwogMjAyMC0wMS0yMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFkZCBidWlsZCBmbGFnIGZvciBzdGFsZS13aGlsZS1yZXZhbGlkYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2ZjkzNWRkYjE5Li4yNTM4MjM1ODg3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg2Nyw2ICs4NjcsNyBAQAogCQkyQUY3MzgyRDE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0
cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0
NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxp
bWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzOTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmgg
Ki87IH07CisJCTMzOUM4MjAyMjNEN0VGNzEwMDNBNkExRSAvKiBDb21tb25TbG93UGF0aHNJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzlD
ODIwMTIzRDdFRjYwMDAzQTZBMUUgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0
ODEwMDVBMEY3OSAvKiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJ
bmxpbmVzLmggKi87IH07CiAJCTMzQjJBNTQ4MjI2NTQzQkYwMDVBMEY3OSAvKiBGVExMb3dlckRG
R1RvQjMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTBBMDQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9CMy5jcHAgKi87IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07CkBAIC0zNTA4LDYgKzM1MDksNyBAQAogCQkzMzc0MzY0QTIy
NEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBw
YXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1p
bmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
RWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzRWxpbWluYXRlRGVhZENvZGUuaDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM5QzgyMDEyM0Q3RUY2MDAwM0E2QTFFIC8q
IENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tbW9uU2xvd1BhdGhz
SW5saW5lcy5oOyBwYXRoID0gLi4vLi4vLi4vVG9vbHMvRHVtcFJlbmRlclRyZWUvQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0IyQTU0NTIy
NjUxRDUzMDA1QTBGNzkgLyogTWFya2VkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFy
a2VkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzExOUE3NzIwQ0NC
NURDMDAyQzZEQzkgLyogV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYnouZHls
aWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtNDgzNCwxNiArNDgzNiwxNiBAQAogCQlD
RTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjBCRDAzMjM3RDNBRDQw
MDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZUJhc2VkRnV6emVyQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
MjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNl
ZEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVCYXNlZEZ1enplckFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFQ0ZBRDMzMjM3MkRBQTcwMDI5MTU5OSAvKiBG
aWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlQmFzZWRGdXp6
ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFQ0ZBRDM0MjM3MkRB
QTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdXp6ZXJQ
cmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRUNGQUQzNTIzNzJE
QUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RnV6emVyUHJlZGljdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI3
QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyN0EzRDYyMzc1OUJBQzAwODk2MDVF
IC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyN0EzRDcyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI3QTNE
OTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0RBMjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFQ0ZBRDMyMjM3MkRB
QTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUNGQUQz
MzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0VDRkFEMzUyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVy
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMw
MEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMw
MDAzOTAxOUQ4QkU2RjAwMDIzRUIwIC8qIERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5o
OyBwYXRoID0gZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY5NTIsNiArNjk1NCw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5
QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkzMzlDODIwMTIzRDdFRjYwMDAzQTZBMUUgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5l
cy5oICovLAogCQkJCUFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJl
Y29yZC5jcHAgKi8sCiAJCQkJQUQ0OTM3QzIxRERCRTYwQTAwNzdDODA3IC8qIEFic3RyYWN0TW9k
dWxlUmVjb3JkLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
Y3BwICovLApAQCAtOTEzOCw2ICs5MTQxLDcgQEAKIAkJCQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFE
RTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIy
MTY0MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTEx
NkIxMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTMzOUM4MjAyMjNEN0VGNzEwMDNBNkExRSAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkJEN0U2OTE0NDc5OTk2MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4
NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCmluZGV4IGFjOGM2Y2IxOWM4Li45NDQyNjdlNzJlMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZjZmMDliOTJhMGMuLmY1
MDc1ZDc0ODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTY4LDYgKzY4LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBTaW1wbGVKdW1wVGFibGU7CiAgICAgc3RydWN0IFN0
cmluZ0p1bXBUYWJsZTsKIAorICAgIHN0cnVjdCBPcFB1dEJ5VmFsOworICAgIHN0cnVjdCBPcFB1
dEJ5VmFsRGlyZWN0OworICAgIHN0cnVjdCBPcFB1dFRvU2NvcGU7CisKICAgICBzdHJ1Y3QgQ2Fs
bFJlY29yZCB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZyb207CiAgICAgICAgIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggOWMxMTczNDM0MGMuLjNjY2ZjZjQ1NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
ZiBFTkFCTEUoSklUKQorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYWYxZmFjZGZlYmYuLmUzNjI2NzMyNWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJBcnJheUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKLSNp
bmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiREZHQ29tcGlsYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiREZHRHJp
dmVyLmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDRiZmRkN2JjNmRhLi5iOWQ3YWUyMzU0
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5o
IgotI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
c0lubGluZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdT
Y29wZS5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQmxvY2suaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggMjI4NzE3ZWEwZmYuLjE5NDY2
N2U4NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkJ5
dGVjb2RlU3RydWN0cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKQEAgLTQ3
LDYgKzQ2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBmcmFtZSBsYXlvdXQgaXMgdW5tb2RpZmll
ZCwgbWFraW5nIGl0IHBvdGVudGlhbGx5IGF3a3dhcmQgdG8gdXNlIHRoZXNlCiAvLyBmcm9tIGFu
eSBvcHRpbWl6aW5nIEpJVCwgbGlrZSB0aGUgREZHKS4KIAorc3RydWN0IE9wUHV0VG9TY29wZTsK
K3N0cnVjdCBPcEdldEZyb21TY29wZTsKKwogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAK
IEFMV0FZU19JTkxJTkUgaW50IG51bWJlck9mRXh0cmFTbG90cyhpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpCkBAIC0xMTcsMTIzICsxMTksNiBAQCBpbmxpbmUgYm9vbCBvcEluQnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHBy
bwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZU9iai0+aGFzUHJvcGVydHkoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eSkpOwogfQogCi1pbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2Nv
cGVHbG9iYWwoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wUHV0VG9TY29wZSYgYnl0ZWNvZGUsIEpTT2JqZWN0KiBzY29wZSwKLSAgICBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIC8v
IENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRo
ZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29t
cGlsZSB0aW1lLgotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKLSAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpOwotCi0gICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewotICAgIGNhc2Ug
VW5yZXNvbHZlZFByb3BlcnR5OgotICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrczogewotICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsK
LSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIDogR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29s
dmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgotICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0g
ICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQ
dXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIH0KLSAgICBjYXNlIEdsb2JhbFByb3BlcnR5
OgotICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAg
ICAgICAvLyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBv
cF9nZXRfZnJvbV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIu
Ci0gICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewotICAg
ICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9u
bWVudCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAg
ICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Mg
OiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKLSAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQg
PSBlbnRyeS53YXRjaHBvaW50U2V0KCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQg
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52
YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
KSB7Ci0gICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0ID09IHNjb3BlIHx8IGdsb2JhbE9iamVjdC0+dmFySW5q
ZWN0aW9uV2F0Y2hwb2ludCgpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIGlmICgh
c2xvdC5pc0NhY2hlYWJsZVB1dCgpCi0gICAgICAgICAgICB8fCBzbG90LmJhc2UoKSAhPSBzY29w
ZQotICAgICAgICAgICAgfHwgc2NvcGUgIT0gZ2xvYmFsT2JqZWN0Ci0gICAgICAgICAgICB8fCAh
c2NvcGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQ
dXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAvLyBEb24ndCBjYWNo
ZSBpZiB3ZSd2ZSBkb25lIGEgdHJhbnNpdGlvbi4gV2Ugd2FudCB0byBkZXRlY3QgdGhlIGZpcnN0
IHJlcGxhY2Ugc28gdGhhdCB3ZQotICAgICAgICAgICAgLy8gY2FuIGludmFsaWRhdGUgdGhlIHdh
dGNocG9pbnQuCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0s
IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotCi0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZS5zZXQo
dm0sIGNvZGVCbG9jaywgc2NvcGUtPnN0cnVjdHVyZSh2bSkpOwotICAgICAgICBtZXRhZGF0YS5t
X29wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQg
dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZNJiB2bSwgT3BHZXRGcm9tU2NvcGUmIGJ5dGVj
b2RlLCBKU09iamVjdCogc2NvcGUsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCi17Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOwotICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCk7Ci0KLSAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7Ci0gICAgY2Fz
ZSBVbnJlc29sdmVkUHJvcGVydHk6Ci0gICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkg
ewotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKLSAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVz
b2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCi0g
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEu
bV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgfQotICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHk6Ci0gICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAg
ICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRl
IG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZh
ci4KLSAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7Ci0g
ICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwotICAg
ICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1w
bCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwotICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNl
dCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFu
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQt
PnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBT
aW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0
IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgotICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgQVNTRVJUKHNjb3BlID09IGdsb2JhbE9i
amVjdCB8fCBnbG9iYWxPYmplY3QtPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+aGFzQmVlbklu
dmFsaWRhdGVkKCkpOwotICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgc2xv
dC5zbG90QmFzZSgpID09IHNjb3BlICYmIHNjb3BlID09IGdsb2JhbE9iamVjdCAmJiBzY29wZS0+
c3RydWN0dXJlKHZtKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7Ci0gICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNjb3BlLT5zdHJ1Y3R1cmUodm0pOwotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlLnNldCh2
bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3Bl
cmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBz
dHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5j
YWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBib29sIGNhbkFj
Y2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KEpTT2JqZWN0JiBvYmplY3QsIHVpbnQzMl90IGluZGV4
KQogewogICAgIHN3aXRjaCAob2JqZWN0LnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRleCA1NGY2MzZhYzFiNS4uYjM1YTBiOGY2YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJCeXRl
Y29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiRnJh
bWVUcmFjZXJzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjU1YjNmZjBlYWIuLjUyNzYwNTEzZjEy
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjAtMDEtMjEgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KKworICAgICAgICBEb24ndCBpbmNsdWRlIEJ5dGVjb2RlU3RydWN0cy5oIGluIENvbW1v
blNsb3dQYXRocy5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBwYXRjaDIwNjU2NgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQ29tbW9uU2xvd1Bh
dGhzSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlD
YWNoZVB1dFRvU2NvcGVHbG9iYWwpOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnRy
eUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKToKKwogMjAyMC0wMS0yMSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBBIHBhcnRpYWxseSBzZWxlY3Rl
ZCBSVEwgdGV4dCBpcyBwbGFjZWQgYXQgYSB3cm9uZyB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBpdCBo
YXMgYSB2ZXJ0aWNhbCBpbml0aWFsIGFkdmFuY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0Nv
bW1vblNsb3dQYXRoc0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uNDVjODdjNzU2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorCisjaW5jbHVk
ZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQ29t
bW9uU2xvd1BhdGhzIHsKKworaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBP
cFB1dFRvU2NvcGUmIGJ5dGVjb2RlLCBKU09iamVjdCogc2NvcGUsCisgICAgUHV0UHJvcGVydHlT
bG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICAvLyBDb3ZlcnMgaW1w
bGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4
ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4K
KyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAg
UmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5
cGUoKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQ
cm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3M6IHsKKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKSB7CisgICAgICAgICAg
ICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2Jh
bFByb3BlcnR5OworICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8g
QWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KKyAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAgICBjYXNl
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAgLy8gR2xv
YmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfZ2V0X2Zyb21f
c2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgorICAgICAgICBp
ZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nh
c3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7CisgICAgICAgICAgICBSZXNv
bHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVU
eXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4
aWNhbFZhcjsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOworICAgICAg
ICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2Rl
KCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpOworICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0
Y2hwb2ludFNldCgpOworICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChl
bnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdCA9PSBzY29wZSB8fCBnbG9iYWxPYmplY3QtPnZhckluamVjdGlvbldhdGNo
cG9pbnQoKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBpZiAoIXNsb3QuaXNDYWNo
ZWFibGVQdXQoKQorICAgICAgICAgICAgfHwgc2xvdC5iYXNlKCkgIT0gc2NvcGUKKyAgICAgICAg
ICAgIHx8IHNjb3BlICE9IGdsb2JhbE9iamVjdAorICAgICAgICAgICAgfHwgIXNjb3BlLT5zdHJ1
Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3
UHJvcGVydHkpIHsKKyAgICAgICAgICAgIC8vIERvbid0IGNhY2hlIGlmIHdlJ3ZlIGRvbmUgYSB0
cmFuc2l0aW9uLiBXZSB3YW50IHRvIGRldGVjdCB0aGUgZmlyc3QgcmVwbGFjZSBzbyB0aGF0IHdl
CisgICAgICAgICAgICAvLyBjYW4gaW52YWxpZGF0ZSB0aGUgd2F0Y2hwb2ludC4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5k
aWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworCisg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAg
ICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZS5zZXQodm0sIGNvZGVCbG9jaywgc2NvcGUtPnN0cnVj
dHVyZSh2bSkpOworICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwo
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZNJiB2bSwgT3BHZXRGcm9tU2NvcGUmIGJ5dGVjb2RlLCBKU09iamVjdCogc2NvcGUsIFByb3Bl
cnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIFJlc29sdmVUeXBlIHJl
c29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CisKKyAgICBz
d2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CisgICAg
Y2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAg
IGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgeworICAgICAgICAgICAgUmVzb2x2ZVR5cGUg
bmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKKyAg
ICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNh
Y2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0
UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCks
IG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgfQorICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJp
bmRpbmcgRXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xv
YmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVz
b2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxM
ZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CisgICAg
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
ZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZl
VHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZz
ZXQoKSkuc2xvdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGls
IHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQg
Y29tcGlsZSB0aW1lLgorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBy
ZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKKyAg
ICAgICAgQVNTRVJUKHNjb3BlID09IGdsb2JhbE9iamVjdCB8fCBnbG9iYWxPYmplY3QtPnZhcklu
amVjdGlvbldhdGNocG9pbnQoKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IHNjb3BlICYmIHNj
b3BlID09IGdsb2JhbE9iamVjdCAmJiBzY29wZS0+c3RydWN0dXJlKHZtKS0+cHJvcGVydHlBY2Nl
c3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHNjb3BlLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlLnNldCh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9w
ZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK319IC8vIG5hbWVzcGFjZSBKU0M6OkNvbW1vblNsb3dQYXRocwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388570</attachid>
            <date>2020-01-23 11:44:51 -0800</date>
            <delta_ts>2020-01-23 14:25:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206566</filename>
            <type>text/plain</type>
            <size>26311</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDE5MjNlMmU3OWUwLi5mMWYwZjc5MTMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDEtMjEgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBpbmNsdWRl
IEJ5dGVjb2RlU3RydWN0cy5oIGluIENvbW1vblNsb3dQYXRocy5oCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGUgaW1wcm92ZW1lbnQgdG8gY29t
cGlsZSB0aW1lcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKwogMjAyMC0wMS0yMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFkZCBidWlsZCBmbGFnIGZvciBzdGFsZS13aGlsZS1yZXZhbGlkYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2ZjkzNWRkYjE5Li5iNGE1MTRjNTdkNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg2Nyw2ICs4NjcsNyBAQAogCQkyQUY3MzgyRDE4
QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0
cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjVCQTEzMzdFNDM0
NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxp
bWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzOTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmgg
Ki87IH07CisJCTMzQTkyMEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5
MjBCQzIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzQjJBNTQ3MjI2NTM0
ODEwMDVBMEY3OSAvKiBCM1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJ
bmxpbmVzLmggKi87IH07CiAJCTMzQjJBNTQ4MjI2NTQzQkYwMDVBMEY3OSAvKiBGVExMb3dlckRG
R1RvQjMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTBBMDQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9CMy5jcHAgKi87IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07CkBAIC0zNTA4LDYgKzM1MDksNyBAQAogCQkzMzc0MzY0QTIy
NEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5oOyBw
YXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA0MjI1NTVGNkMwMEJEQkZBRCAvKiBCM0VsaW1p
bmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
RWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzOTVDNzA1MjI1NTVGNkQwMEJEQkZBRCAv
KiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzRWxpbWluYXRlRGVhZENvZGUuaDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8q
IENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzM0IyQTU0NTIyNjUxRDUzMDA1QTBGNzkgLyogTWFya2VkU3BhY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWFya2VkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzExOUE3NzIwQ0NCNURDMDAyQzZEQzkgLyogV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxp
YnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSB1c3Iv
bGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtNDgzNCwxNiArNDgz
NiwxNiBAQAogCQlDRTIwQkQwMjIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVh
dGluZ0Z1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZWRpY3Rpb25GaWxlQ3Jl
YXRpbmdGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjBC
RDAzMjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNFMjBCRDA0MjM3RDNBRDQwMDQ2RTUyMCAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2Vu
dEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5
IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVCYXNlZEZ1enpl
ckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFQ0ZBRDMzMjM3MkRBQTcw
MDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNF
Q0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGdXp6ZXJQcmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
RUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTI3QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0
aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyN0EzRDYyMzc1
OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyN0EzRDcyMzc1OUJBQzAwODk2MDVF
IC8qIE5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93
aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTI3QTNEOTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0RBMjM3NUE2REMwMDg5NjA1
RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
Q0ZBRDMyMjM3MkRBQTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRUNGQUQzMzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJl
ZGljdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VDRkFEMzUyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclBy
ZWRpY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8q
IERhdGVDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEYXRlQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIw
MjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREMwMDAzOTAxOUQ4QkU2RjAwMDIzRUIwIC8qIERGR1ByZWNpc2VMb2NhbENsb2Ji
ZXJpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oOyBwYXRoID0gZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNDIsNiArNzA0NCw3IEBACiAJCQkJNjVFQTcz
NjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8sCiAJCQkJQTcwOUYy
RjExN0EwQUMyQTAwNTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8sCiAJCQkJMEYxNUYx
NUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAorCQkJCTMzQTkyMEJD
MjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi8sCiAJCQkJQTdF
NUEzQTUxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmNwcCAqLywKIAkJCQlB
N0U1QTNBNjE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCAqLywKIAkJCQk5
NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8sCkBAIC05MzgzLDYg
KzkzODYsNyBAQAogCQkJCTBGMUZCMzk3MUUxQUY3RTMwMEE5QkU1MCAvKiBERkdXb3JrbGlzdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDE4MUFBOTA5MTEwMEQzM0IzMyAvKiBE
aXJlY3RBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDE2MUFBOTA5MTEwMEQz
M0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzQTky
MEJEMjNEQTJDNkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NjlBMDc5ODBFRDFEM0FFMDBGMUY2ODEgLyogRGlyZWN0RXZhbENvZGVDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVj
dEV2YWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA4RjFDMENENjg1MDAw
NTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggYWM4YzZj
YjE5YzguLjk0NDI2N2U3MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNs
dWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCBmNmYwOWI5MmEwYy4uZjUwNzVkNzQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNjgsNiArNjgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IFNpbXBs
ZUp1bXBUYWJsZTsKICAgICBzdHJ1Y3QgU3RyaW5nSnVtcFRhYmxlOwogCisgICAgc3RydWN0IE9w
UHV0QnlWYWw7CisgICAgc3RydWN0IE9wUHV0QnlWYWxEaXJlY3Q7CisgICAgc3RydWN0IE9wUHV0
VG9TY29wZTsKKwogICAgIHN0cnVjdCBDYWxsUmVjb3JkIHsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgZnJvbTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA5YzExNzM0MzQwYy4uM2NjZmNm
NDU0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShKSVQpCisjaW5jbHVkZSAiQ29tbW9u
U2xvd1BhdGhzSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCBhZjFmYWNkZmViZi4uZTM2MjY3MzI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFyaXRoUHJv
ZmlsZS5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oIgotI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIkNvbW1vblNsb3dQYXRoc0lubGluZXMuaCIKICNpbmNsdWRlICJERkdDb21waWxhdGlv
bk1vZGUuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJERkdPU1JFbnRyeS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggNGJmZGQ3YmM2ZGEuLmI5ZDdhZTIzNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJC
eXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNo
ZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmgiCi0jaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgi
CisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXZhbENvZGVCbG9j
ay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAppbmRleCAyMjg3MTdlYTBmZi4uYjcxMzVlMmI3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUg
IkRpcmVjdEFyZ3VtZW50cy5oIgpAQCAtMTE3LDEyMyArMTE2LDYgQEAgaW5saW5lIGJvb2wgb3BJ
bkJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbCwgSlNW
YWx1ZSBwcm8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VPYmotPmhhc1Byb3Bl
cnR5KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5Q2FjaGVQ
dXRUb1Njb3BlR2xvYmFsKAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBPcFB1dFRvU2NvcGUmIGJ5dGVjb2RlLCBKU09iamVjdCogc2NvcGUs
Ci0gICAgUHV0UHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLXsK
LSAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1
bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVt
IGF0IGNvbXBpbGUgdGltZS4KLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7Ci0gICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLQotICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKLSAg
ICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKLSAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbE9iamVj
dCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwotICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBu
ZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBp
bi4KLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICB9Ci0gICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eToKLSAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczog
ewotICAgICAgICAgLy8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBV
cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhp
Y2FsVmFyLgotICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkp
IHsKLSAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7
Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIDogR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVu
dC5pbXBsKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7Ci0gICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBv
aW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwotICAgICAgICAgICAgbWV0YWRhdGEubV9v
cGVyYW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9u
bWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2Jh
bFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcykgewotICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCA9PSBzY29wZSB8fCBnbG9iYWxPYmplY3Qt
PnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOwotICAgICAg
ICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKQotICAgICAgICAgICAgfHwgc2xvdC5iYXNlKCkg
IT0gc2NvcGUKLSAgICAgICAgICAgIHx8IHNjb3BlICE9IGdsb2JhbE9iamVjdAotICAgICAgICAg
ICAgfHwgIXNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBpZiAoc2xvdC50eXBl
KCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgLy8gRG9u
J3QgY2FjaGUgaWYgd2UndmUgZG9uZSBhIHRyYW5zaXRpb24uIFdlIHdhbnQgdG8gZGV0ZWN0IHRo
ZSBmaXJzdCByZXBsYWNlIHNvIHRoYXQgd2UKLSAgICAgICAgICAgIC8vIGNhbiBpbnZhbGlkYXRl
IHRoZSB3YXRjaHBvaW50LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBzY29wZS0+c3RydWN0dXJlKHZtKS0+ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2Vt
ZW50KHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLQotICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1
cmUuc2V0KHZtLCBjb2RlQmxvY2ssIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsKLSAgICAgICAgbWV0
YWRhdGEubV9vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKLSAgICB9Ci19Ci0KLWlubGlu
ZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBWTSYgdm0sIE9wR2V0RnJvbVNjb3Bl
JiBieXRlY29kZSwgSlNPYmplY3QqIHNjb3BlLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQotewotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKLSAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwotCi0gICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewot
ICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgotICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2Jq
ZWN0KCkpIHsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9
IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNr
IGluLgotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1l
dGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIH0KLSAgICBjYXNlIEdsb2Jh
bFByb3BlcnR5OgotICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OiB7Ci0gICAgICAgICAvLyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQu
IFVwZGF0ZSBvcF9nZXRfZnJvbV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExl
eGljYWxWYXIuCi0gICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQo
KSkgewotICAgICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3Bl
KTsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlk
ZW50LmltcGwoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKLSAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAg
ICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNo
cG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xv
YmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdl
IGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KLSAgICBpZiAo
cmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgIEFTU0VSVChzY29wZSA9PSBn
bG9iYWxPYmplY3QgfHwgZ2xvYmFsT2JqZWN0LT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCktPmhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgp
ICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBzY29wZSAmJiBzY29wZSA9PSBnbG9iYWxPYmplY3QgJiYg
c2NvcGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewot
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzY29wZS0+c3RydWN0dXJlKHZtKTsK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVy
ZS5zZXQodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX29wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0s
IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCiBpbmxpbmUgYm9v
bCBjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVpY2tseShKU09iamVjdCYgb2JqZWN0LCB1aW50MzJf
dCBpbmRleCkKIHsKICAgICBzd2l0Y2ggKG9iamVjdC50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDVjODdjNzU2NTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNJ
bmxpbmVzLmgKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3Rz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKKwor
aW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKAorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBPcFB1dFRvU2NvcGUmIGJ5dGVj
b2RlLCBKU09iamVjdCogc2NvcGUsCisgICAgUHV0UHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2lu
Y2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBr
bm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KKyAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKKworICAgIHN3aXRj
aCAocmVzb2x2ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNl
IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgaWYg
KHNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKSB7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdS
ZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OworICAgICAg
ICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGlu
ZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3
UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAg
ICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAgLy8gR2xvYmFsIExleGljYWwgQmluZGlu
ZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQ
cm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgorICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQqPihzY29wZSk7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZl
VHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbExleGlj
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNhbFZhcjsKKyAgICAgICAg
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5
bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgQVNTRVJUKCFlbnRy
eS5pc051bGwoKSk7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1
dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBl
LCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAg
ICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgp
KS5zbG90KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgICAgICBWTSYgdm0gPSBnZXRWTShn
bG9iYWxPYmplY3QpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCA9PSBz
Y29wZSB8fCBnbG9iYWxPYmplY3QtPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+aGFzQmVlbklu
dmFsaWRhdGVkKCkpOworICAgICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVQdXQoKQorICAgICAg
ICAgICAgfHwgc2xvdC5iYXNlKCkgIT0gc2NvcGUKKyAgICAgICAgICAgIHx8IHNjb3BlICE9IGds
b2JhbE9iamVjdAorICAgICAgICAgICAgfHwgIXNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAg
ICAgICAgIC8vIERvbid0IGNhY2hlIGlmIHdlJ3ZlIGRvbmUgYSB0cmFuc2l0aW9uLiBXZSB3YW50
IHRvIGRldGVjdCB0aGUgZmlyc3QgcmVwbGFjZSBzbyB0aGF0IHdlCisgICAgICAgICAgICAvLyBj
YW4gaW52YWxpZGF0ZSB0aGUgd2F0Y2hwb2ludC4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5kaWRDYWNoZVByb3BlcnR5UmVw
bGFjZW1lbnQodm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworCisgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBtZXRhZGF0YS5tX3N0
cnVjdHVyZS5zZXQodm0sIGNvZGVCbG9jaywgc2NvcGUtPnN0cnVjdHVyZSh2bSkpOworICAgICAg
ICBtZXRhZGF0YS5tX29wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgIH0KK30KKwor
aW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZNJiB2bSwgT3BHZXRGcm9t
U2NvcGUmIGJ5dGVjb2RlLCBKU09iamVjdCogc2NvcGUsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOworICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRh
dGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CisKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBl
KSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgIGlmIChzY29wZS0+aXNHbG9i
YWxPYmplY3QoKSkgeworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKKyAgICAgICAgICAgIHJlc29sdmVU
eXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRv
IGtpY2sgaW4uCisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAgIGNhc2Ug
R2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2ggaXMgY2hh
bmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJvcGVydHkgdG8gR2xv
YmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpKSB7CisgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4o
c2NvcGUpOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CisgICAgICAgICAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5n
ZXQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
CisgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
d2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgICAgIG1ldGFk
YXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENvdmVycyBpbXBsaWNp
dCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0
ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgorICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKKyAgICAgICAgQVNTRVJUKHNjb3Bl
ID09IGdsb2JhbE9iamVjdCB8fCBnbG9iYWxPYmplY3QtPnZhckluamVjdGlvbldhdGNocG9pbnQo
KS0+aGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IHNjb3BlICYmIHNjb3BlID09IGdsb2JhbE9iamVj
dCAmJiBzY29wZS0+c3RydWN0dXJlKHZtKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgp
KSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNjb3BlLT5zdHJ1Y3R1cmUo
dm0pOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3Ry
dWN0dXJlLnNldCh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50
cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK319IC8v
IG5hbWVzcGFjZSBKU0M6OkNvbW1vblNsb3dQYXRocwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRleCA1NGY2MzZhYzFiNS4uYjM1YTBiOGY2YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJCeXRlY29k
ZVN0cnVjdHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiRnJhbWVU
cmFjZXJzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388591</attachid>
            <date>2020-01-23 14:25:48 -0800</date>
            <delta_ts>2020-01-23 15:25:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206566</filename>
            <type>text/plain</type>
            <size>26345</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFmZTJjMjcyZTc4Li40NjI5OGIyNjVkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDEtMjEgIFJvYmlu
IE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBpbmNsdWRl
IEJ5dGVjb2RlU3RydWN0cy5oIGluIENvbW1vblNsb3dQYXRocy5oCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGUgaW1wcm92ZW1lbnQgdG8gY29t
cGlsZSB0aW1lcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKwogMjAyMC0wMS0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzIHNob3VsZCByZXNl
dCB2YWx1ZSBvd25lcnMgYmVmb3JlIHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjZmOTM1ZGRiMTkuLmI0YTUxNGM1N2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODY3LDYgKzg2Nyw3IEBACiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBT
dHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEMzQyRjM2
RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3Vy
Y2VPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5NUM3MDUyMjU1
NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCAqLzsgfTsKKwkJMzNBOTIwQkQy
M0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQTkyMEJDMjNEQTJDNkQwMDBFQkFG
MCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzNCMkE1NDcyMjY1MzQ4MTAwNUEwRjc5IC8qIEIzVmFs
dWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODRGQjFCREFDREFDMDA4MEZGNzQgLyogQjNWYWx1ZUlubGluZXMuaCAqLzsgfTsKIAkJ
MzNCMkE1NDgyMjY1NDNCRjAwNUEwRjc5IC8qIEZUTExvd2VyREZHVG9CMy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEEwNDE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMTG93ZXJERkdUb0IzLmNwcCAqLzsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAw
RUNGOTk0IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsg
fTsKQEAgLTM1MDgsNiArMzUwOSw3IEBACiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBC
M09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNP
cHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXpl
QXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzM5NUM3MDQyMjU1NUY2QzAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29kZS5j
cHA7IHBhdGggPSBiMy9CM0VsaW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENv
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNFbGltaW5hdGVEZWFkQ29k
ZS5oOyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzM0E5MjBCQzIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHNJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQjJBNTQ1MjI2NTFENTMw
MDVBMEY3OSAvKiBNYXJrZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRTcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTE5QTc3MjBDQ0I1REMwMDJD
NkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
V2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBuYW1lID0gbGliei5keWxpYjsgcGF0aCA9IHVzci9saWIvbGliei5keWxpYjsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC00ODM0LDE2ICs0ODM2LDE2IEBACiAJCUNFMjBCRDAy
MjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyMEJEMDMyMzdEM0FENDAwNDZFNTIw
IC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlQmFzZWRG
dXp6ZXJBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyMEJEMDQy
MzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDRUNGQUQzMjIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVy
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VDRkFEMzMyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVCYXNlZEZ1enplckFnZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0VDRkFEMzQyMzcyREFBNzAwMjkx
NTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1enplclByZWRpY3Rp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFQ0ZBRDM1MjM3MkRBQTcwMDI5
MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdXp6ZXJQ
cmVkaWN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0Q1MjM3
NTlCQUMwMDg5NjA1RSAvKiBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTI3QTNENjIzNzU5QkFDMDA4OTYwNUUgLyogV2lk
ZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTI3QTNENzIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVy
UHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMjdBM0Q4MjM3NTlCQUMwMDg5NjA1RSAvKiBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9u
RnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMjdBM0Q5MjM3NUE2
REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UyN0EzREEyMzc1QTZEQzAwODk2MDVFIC8qIE51bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VDRkFEMzIyMzcyREFBNzAwMjkx
NTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVCYXNlZEZ1
enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFQ0ZBRDMzMjM3MkRB
QTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGdXp6ZXJQcmVkaWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2
IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzAwMDM5MDE5
RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg7IHBhdGgg
PSBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzA0Miw2ICs3MDQ0LDcgQEAKIAkJCQk2NUVBNzM2MzBCQUUzNUQxMDAxQkI1NjAg
LyogQ29tbW9uSWRlbnRpZmllcnMuaCAqLywKIAkJCQlBNzA5RjJGMTE3QTBBQzJBMDA1MTJFOTgg
LyogQ29tbW9uU2xvd1BhdGhzLmNwcCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0Qg
LyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCisJCQkJMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8q
IENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLywKIAkJCQlBN0U1QTNBNTE3OTc0MzJEMDBFODkz
QzAgLyogQ29tcGlsYXRpb25SZXN1bHQuY3BwICovLAogCQkJCUE3RTVBM0E2MTc5NzQzMkQwMEU4
OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oICovLAogCQkJCTk2OUEwOTIyMEVEMUUwOUMwMEYx
RjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKQEAgLTkzODMsNiArOTM4Niw3IEBACiAJCQkJMEYx
RkIzOTcxRTFBRjdFMzAwQTlCRTUwIC8qIERGR1dvcmtsaXN0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFMDUwMTgxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMTYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3Vt
ZW50c09mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzNBOTIwQkQyM0RBMkM2RDAwMEVCQUYw
IC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk4
MEVEMUQzQUUwMEYxRjY4MSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDM4NkE3NTFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzczMDhGMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAppbmRleCBhYzhjNmNiMTljOC4uOTQ0MjY3ZTcyZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0
cy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkRGR0pJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDU1YTk3MGJl
Njc1Li41ODEyMGYyMDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC02OCw2ICs2OCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlOwogICAgIHN0
cnVjdCBTdHJpbmdKdW1wVGFibGU7CiAKKyAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsKKyAgICBzdHJ1
Y3QgT3BQdXRCeVZhbERpcmVjdDsKKyAgICBzdHJ1Y3QgT3BQdXRUb1Njb3BlOworCiAgICAgc3Ry
dWN0IENhbGxSZWNvcmQgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmcm9tOwogICAg
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IGEyYjU3N2M2YjBhLi4xNjQzYmRhNWI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaWYgRU5BQkxFKEpJVCkKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHNJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGFmMWZhY2RmZWJmLi5lMzYy
NjczMjVjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAi
QXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1Bh
dGhzSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0NvbXBpbGF0aW9uTW9kZS5oIgogI2luY2x1ZGUg
IkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA0YmZkZDdiYzZkYS4uYjlk
N2FlMjM1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgi
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGUuaCIKLSNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJDb21tb25T
bG93UGF0aHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhh
bmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFdmFsQ29kZUJsb2NrLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDIyODcxN2VhMGZm
Li5iNzEzNWUyYjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgi
CkBAIC0xMTcsMTIzICsxMTYsNiBAQCBpbmxpbmUgYm9vbCBvcEluQnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHBybwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZU9iai0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSkpOwogfQogCi1pbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
UHV0VG9TY29wZSYgYnl0ZWNvZGUsIEpTT2JqZWN0KiBzY29wZSwKLSAgICBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIC8vIENvdmVycyBpbXBs
aWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhl
Y3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgot
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBS
ZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpOwotCi0gICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewotICAgIGNhc2UgVW5yZXNvbHZlZFBy
b3BlcnR5OgotICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czogewotICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVz
b2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFs
UHJvcGVydHk7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBB
bGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgotICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBt
ZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5y
ZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IEZBTExUSFJPVUdIOwotICAgIH0KLSAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgotICAgIGNhc2Ug
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAgICAgICAvLyBHbG9i
YWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRfZnJvbV9z
Y29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCi0gICAgICAgIGlm
IChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewotICAgICAgICAgICAgSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2Fz
dDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgICAgIFJlc29s
dmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5
cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhp
Y2FsVmFyOwotICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWV0YWRhdGEubV9n
ZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUo
KSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRj
aHBvaW50U2V0KCk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVu
dHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2
ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0ID09IHNjb3BlIHx8IGdsb2JhbE9iamVjdC0+dmFySW5qZWN0aW9uV2F0Y2hw
b2ludCgpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAgICAgIGlmICghc2xvdC5pc0NhY2hl
YWJsZVB1dCgpCi0gICAgICAgICAgICB8fCBzbG90LmJhc2UoKSAhPSBzY29wZQotICAgICAgICAg
ICAgfHwgc2NvcGUgIT0gZ2xvYmFsT2JqZWN0Ci0gICAgICAgICAgICB8fCAhc2NvcGUtPnN0cnVj
dHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNs
b3Q6Ok5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICAvLyBEb24ndCBjYWNoZSBpZiB3ZSd2ZSBk
b25lIGEgdHJhbnNpdGlvbi4gV2Ugd2FudCB0byBkZXRlY3QgdGhlIGZpcnN0IHJlcGxhY2Ugc28g
dGhhdCB3ZQotICAgICAgICAgICAgLy8gY2FuIGludmFsaWRhdGUgdGhlIHdhdGNocG9pbnQuCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNjb3BlLT5z
dHJ1Y3R1cmUodm0pLT5kaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQodm0sIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOwotCi0gICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOwotICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZS5zZXQodm0sIGNvZGVCbG9j
aywgc2NvcGUtPnN0cnVjdHVyZSh2bSkpOwotICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRG
cm9tU2NvcGVHbG9iYWwoCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZNJiB2bSwgT3BHZXRGcm9tU2NvcGUmIGJ5dGVjb2RlLCBKU09iamVj
dCogc2NvcGUsIFByb3BlcnR5U2xvdCYgc2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi17
Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVU
eXBlKCk7Ci0KLSAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7Ci0gICAgY2FzZSBVbnJlc29sdmVk
UHJvcGVydHk6Ci0gICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOiB7Ci0gICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgewotICAgICAgICAg
ICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhy
ZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9i
YWxQcm9wZXJ0eTsKLSAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8v
IEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCi0gICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZv
LnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgfQotICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6Ci0gICAgY2Fz
ZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgIC8vIEds
b2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9t
X3Njb3BlIGZyb20gR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KLSAgICAgICAg
aWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7Ci0gICAgICAgICAgICBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganND
YXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVz
b2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExl
eGljYWxWYXI7Ci0gICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKLSAgICAg
ICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwotICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5Lndh
dGNocG9pbnRTZXQoKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQo
ZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRv
bid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRv
IGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9i
YWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MpIHsKLSAgICAgICAgQVNTRVJUKHNjb3BlID09IGdsb2JhbE9iamVjdCB8fCBnbG9i
YWxPYmplY3QtPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+aGFzQmVlbkludmFsaWRhdGVkKCkp
OwotICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgp
ID09IHNjb3BlICYmIHNjb3BlID09IGdsb2JhbE9iamVjdCAmJiBzY29wZS0+c3RydWN0dXJlKHZt
KS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHNjb3BlLT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlLnNldCh2bSwgY29kZUJsb2Nr
LCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0
YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGlubGluZSBib29sIGNhbkFjY2Vzc0FyZ3VtZW50
SW5kZXhRdWlja2x5KEpTT2JqZWN0JiBvYmplY3QsIHVpbnQzMl90IGluZGV4KQogewogICAgIHN3
aXRjaCAob2JqZWN0LnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi4zN2FmYTc2YzQwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0lubGluZXMuaApAQCAtMCwwICsx
LDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVT
dHJ1Y3RzLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCituYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKKworaW5saW5lIHZvaWQgdHJ5Q2FjaGVQ
dXRUb1Njb3BlR2xvYmFsKAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBPcFB1dFRvU2NvcGUmIGJ5dGVjb2RlLCBKU09iamVjdCogc2NvcGUs
CisgICAgUHV0UHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sK
KyAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1
bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVt
IGF0IGNvbXBpbGUgdGltZS4KKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CisgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKKyAg
ICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbE9iamVj
dCgpKSB7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OworICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBu
ZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBp
bi4KKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2spOworICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczog
eworICAgICAgICAvLyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVw
ZGF0ZSBvcF9nZXRfZnJvbV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGlj
YWxWYXIuCisgICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkg
eworICAgICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxF
bnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsK
KyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50
LmltcGwoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9p
bnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29w
ZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzKSB7CisgICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
OworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0ID09IHNjb3BlIHx8IGdsb2JhbE9iamVjdC0+
dmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpLT5oYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAg
IGlmICghc2xvdC5pc0NhY2hlYWJsZVB1dCgpCisgICAgICAgICAgICB8fCBzbG90LmJhc2UoKSAh
PSBzY29wZQorICAgICAgICAgICAgfHwgc2NvcGUgIT0gZ2xvYmFsT2JqZWN0CisgICAgICAgICAg
ICB8fCAhc2NvcGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0
UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgLy8gRG9uJ3QgY2FjaGUg
aWYgd2UndmUgZG9uZSBhIHRyYW5zaXRpb24uIFdlIHdhbnQgdG8gZGV0ZWN0IHRoZSBmaXJzdCBy
ZXBsYWNlIHNvIHRoYXQgd2UKKyAgICAgICAgICAgIC8vIGNhbiBpbnZhbGlkYXRlIHRoZSB3YXRj
aHBvaW50LgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2NvcGUt
PnN0cnVjdHVyZSh2bSktPmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7CisKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlLnNldCh2bSwgY29kZUJs
b2NrLCBzY29wZS0+c3RydWN0dXJlKHZtKSk7CisgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCB0cnlDYWNoZUdl
dEZyb21TY29wZUdsb2JhbCgKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVk0mIHZtLCBPcEdldEZyb21TY29wZSYgYnl0ZWNvZGUsIEpTT2Jq
ZWN0KiBzY29wZSwgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
K3sKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Cisg
ICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZVR5cGUoKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M6IHsKKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKSB7CisgICAgICAg
ICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEds
b2JhbFByb3BlcnR5OworICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsg
Ly8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KKyAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAgICBj
YXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAvLyBH
bG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRfZnJv
bV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCisgICAgICAg
IGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgeworICAgICAgICAgICAg
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpz
Q2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKKyAgICAgICAgICAgIFJl
c29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2
ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxM
ZXhpY2FsVmFyOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CisgICAg
ICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgbWV0YWRhdGEu
bV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1v
ZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlv
bk1vZGUoKSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53
YXRjaHBvaW50U2V0KCk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0
KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhleSBk
b24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0
byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKSB7CisgICAgICAgIEFTU0VSVChzY29wZSA9PSBnbG9iYWxPYmplY3QgfHwgZ2xv
YmFsT2JqZWN0LT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCktPmhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBzY29wZSAmJiBzY29wZSA9PSBnbG9iYWxPYmplY3QgJiYgc2NvcGUtPnN0cnVjdHVyZSh2
bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBzY29wZS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZS5zZXQodm0sIGNvZGVCbG9j
aywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RydWN0dXJlLT5z
dGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0
KCkpOworICAgICAgICB9CisgICAgfQorfQorCit9fSAvLyBuYW1lc3BhY2UgSlNDOjpDb21tb25T
bG93UGF0aHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAK
aW5kZXggNTRmNjM2YWMxYjUuLmIzNWEwYjhmNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uRnV6ei5oIgogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>