<?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>59141</bug_id>
          
          <creation_ts>2011-04-21 14:44:30 -0700</creation_ts>
          <short_desc>Start moving to a general visitor pattern for GC traversal</short_desc>
          <delta_ts>2011-04-21 16:43:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390351</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-21 14:44:30 -0700</bug_when>
    <thetext>Start moving to a general visitor pattern for GC traversal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390361</commentid>
    <comment_count>1</comment_count>
      <attachid>90608</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-21 14:53:42 -0700</bug_when>
    <thetext>Created attachment 90608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390363</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-21 14:55:45 -0700</bug_when>
    <thetext>Attachment 90608 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject...&quot; exit_code: 1

Source/JavaScriptCore/runtime/SmallStrings.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 119 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390372</commentid>
    <comment_count>3</comment_count>
      <attachid>90611</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-21 15:02:26 -0700</bug_when>
    <thetext>Created attachment 90611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390375</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-21 15:04:48 -0700</bug_when>
    <thetext>Attachment 90611 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject...&quot; exit_code: 1

Source/JavaScriptCore/runtime/SmallStrings.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 120 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390392</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-21 15:20:20 -0700</bug_when>
    <thetext>Attachment 90608 did not build on win:
Build output: http://queues.webkit.org/results/8496149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390421</commentid>
    <comment_count>6</comment_count>
      <attachid>90611</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-21 16:04:05 -0700</bug_when>
    <thetext>Comment on attachment 90611
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390426</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-21 16:08:48 -0700</bug_when>
    <thetext>Committed r84556: &lt;http://trac.webkit.org/changeset/84556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390453</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-21 16:43:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84556 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90608</attachid>
            <date>2011-04-21 14:53:42 -0700</date>
            <delta_ts>2011-04-21 15:02:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59141-20110421145340.patch</filename>
            <type>text/plain</type>
            <size>160539</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ1NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZDJlMGRjYjdhM2E0ODliODU5ZjhiYmRiNTY4MjVjNGFi
MjYxZjY2Mi4uMzM4ZDA1NzI3YjdiM2E1ZTJjYWY5NjgwNjYwZjZkMWZhZGFkNjc4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTY4LDExICs2
OCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgOiBXZWFrSGFuZGxlT3duZXIgewog
ICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5kZWxldGVQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lKTsKICAgICB9CiAKLSAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKKyAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
ewogICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPm1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwor
ICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAg
IH0KIAogICAgIHZvaWQqIHByaXZhdGVEYXRhOwpAQCAtOTcsMTEgKzk3LDExIEBAIHN0cnVjdCBK
U0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgICAgICBtX3By
b3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgICAgICB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGZvciAoUHJpdmF0ZVByb3BlcnR5TWFwOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5TWFw
LmJlZ2luKCk7IHB0ciAhPSBtX3Byb3BlcnR5TWFwLmVuZCgpOyArK3B0cikgewogICAgICAgICAg
ICAgICAgIGlmIChwdHItPnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCgmcHRyLT5zZWNvbmQpOworICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
cHRyLT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE0OSw3ICsxNDks
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVt
ZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNNYXJrQ2hp
bGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKQEAgLTE3MiwxMCArMTcyLDEwIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwog
ICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICBC
YXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERh
dGEtPm1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOworICAgICAgICBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKICAgICB9CiAKICAgICB2b2lkIGluaXQoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCA5ZjA4ZTdmZWY1NWFlN2IxNjNkMGI5NDU1YmQ4NGQ0NDFmN2NmYjYw
Li5lNWU4NjA4MTc4ODBiNDE3NGQwY2VlNmIzNTQ2MDAzZDU0YzFiNjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMTEtMDQtMjEgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdGFydCBtb3ZpbmcgdG8gYSBnZW5lcmFsIHZpc2l0b3IgcGF0dGVybiBmb3Ig
R0MgdHJhdmVyc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTE0MQorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlbmFtZToKKyAgICAgICAgICAg
IG1hcmtDaGlsZHJlbiAtPiB2aXNpdENoaWxkcmVuCisgICAgICAgICAgICBtYXJrQWdncmVnYXRl
IC0+IHZpc2l0QWdncmVnYXRlCisgICAgICAgICAgICBtYXJrU3RhY2sgLT4gdmlzaXRvcgorICAg
ICAgICAgICAgTWFya1N0YWNrIC0+IHR5cGVkZWYnZCB0byBTbG90VmlzaXRvcgorCisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dERhdGE6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0
YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5leHA6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hl
Ojp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRBZ2dyZWdh
dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAg
ICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAq
IGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OldlYWtIYW5kbGVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjptYXJr
U3Ryb25nSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Om1hcmtXZWFrSGFuZGxl
cyk6CisgICAgICAgICogaGVhcC9IYW5kbGVIZWFwLmg6CisgICAgICAgICogaGVhcC9IYW5kbGVT
dGFjay5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjptYXJrKToKKyAgICAgICAgKiBo
ZWFwL0hhbmRsZVN0YWNrLmg6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpT
Qzo6SGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
VGVtcFNvcnRWZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtTdGFjazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1hcmtTdGFj
azo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChKU0M6Okhl
YXBSb290VmlzaXRvcjo6SGVhcFJvb3RWaXNpdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcFJvb3RW
aXNpdG9yOjptYXJrKToKKyAgICAgICAgKEpTQzo6SGVhcFJvb3RWaXNpdG9yOjp2aXNpdG9yKToK
KyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogcnVudGltZS9BcmdMaXN0
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyk6Cisg
ICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMu
Y3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2V0
dGVyU2V0dGVyLmg6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgIChKU0M6
OkpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNp
dERpcmVjdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpKU0NlbGw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjp2aXNpdElmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dmlzaXREaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3Rh
dGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0
aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6VHlwZUluZm8pOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6b3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1pv
bWJpZS5oOgorICAgICAgICAoSlNDOjpKU1pvbWJpZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWlu
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJp
bmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorCiAyMDExLTA0LTIwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggMWIwMGM2NmQwMzI0YmY4M2E1MmUxZTAxZDE1MTU2
NWM5NGVhOTZiMS4uZjMzYTM4YzEyOWMyOGFhY2NjYTZkZTdhMzViMzZkZWRkMjgxMGY0YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNTYsNyArMTU2LDcg
QEAgX19aTjNKU0MxM1N0YXRlbWVudE5vZGU2c2V0TG9jRWlpCiBfX1pOM0pTQzE0SlNHbG9iYWxP
YmplY3QxMGdsb2JhbEV4ZWNFdgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0
ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEVqCiBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEybWFy
a0NoaWxkcmVuRVJOU185TWFya1N0YWNrRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNp
dENoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRX
aXRoQXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1
ZUVqCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUgIAogX19aTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0NGluaXRFUE5TXzhKU09iamVjdEUKQEAgLTE2OCw3ICsxNjgsNyBAQCBf
X1pOM0pTQzE0U2FtcGxpbmdUaHJlYWQ1c3RhcnRFagogX19aTjNKU0MxNFRpbWVvdXRDaGVja2Vy
MTBkaWRUaW1lT3V0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJl
c2V0RXYKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlND
MTVKU1dyYXBwZXJPYmplY3QxMm1hcmtDaGlsZHJlbkVSTlNfOU1hcmtTdGFja0UKK19fWk4zSlND
MTVKU1dyYXBwZXJPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzlNYXJrU3RhY2tFCiBfX1pOM0pT
QzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOU182SGFuZGxl
SU5TXzdVbmtub3duRUVFUHZSTlNfOU1hcmtTdGFja0UKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3du
ZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vha0hh
bmRsZU93bmVyRDJFdgpAQCAtMjUyLDcgKzI1Miw3IEBAIF9fWk4zSlNDNkpTTG9jazlsb2NrQ291
bnRFdgogX19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzZSZWdFeHA2
Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NF
CiBfX1pOM0pTQzZSZWdFeHBEMUV2Ci1fX1pOM0pTQzdKU0FycmF5MTJtYXJrQ2hpbGRyZW5FUk5T
XzlNYXJrU3RhY2tFCitfX1pOM0pTQzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVJOU185TWFya1N0
YWNrRQogX19aTjNKU0M3SlNBcnJheTE1c2V0U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0Fy
cmF5MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xv
dEUKIF9fWk4zSlNDN0pTQXJyYXk2c19pbmZvRQpAQCAtMjg0LDcgKzI4NCw3IEBAIF9fWk4zSlND
OEpTT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
UFMwX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFUFMwX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBHZXR0ZXJFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDEybG9va3Vw
U2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0M4SlNPYmpl
Y3QxMm1hcmtDaGlsZHJlbkVSTlNfOU1hcmtTdGFja0UKK19fWk4zSlNDOEpTT2JqZWN0MTN2aXNp
dENoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3Bl
cnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3Qx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk4zSlNDOEpTT2JqZWN0MTV1bndy
YXBwZWRPYmplY3RFdgpAQCAtMzA2LDcgKzMwNiw3IEBAIF9fWk4zSlNDOEpTT2JqZWN0MjJmaWxs
R2V0dGVyUHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQTlNfMTZXcml0ZUJhcnJpZXJC
CiBfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VFbW0KIF9fWk4zSlND
OEpTT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M4SlNPYmplY3Qz
cHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1
dFByb3BlcnR5U2xvdEUKLV9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNf
N0pTVmFsdWVFICAKK19fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzhKU09iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhQcm9maWxlcjEzc3Rv
cFByb2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmls
ZXIxNHN0YXJ0UHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBlNjQ4YmE4MDNk
ODA5Y2NlMzdjZTdiNTUyZDFlZTkzZGFmYTkyMjguLjQ2MDUyYjI3NjBhNzZiOTkxNzI3NWE5Zjcz
NDUwMmNjNDgwYjk3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xNDAwLDM3ICsxNDAwLDM3IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygp
CiAjZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxvY2s6Om1hcmtTdHJ1Y3R1cmVzKE1hcmtTdGFjayYg
bWFya1N0YWNrLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdAordm9pZCBDb2RlQmxvY2s6OnZpc2l0
U3RydWN0dXJlcyhTbG90VmlzaXRvciYgdmlzaXRvciwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QK
IHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJl
dGVyOwogCiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
KG9wX2dldF9ieV9pZF9zZWxmKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGYpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fc2VsZikpIHsKLSAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJnZQQ1s0XS51LnN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9wcm90bykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bykpIHsKLSAgICAgICAgbWFy
a1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKLSAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnZQQ1s0
XS51LnN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1
cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4p
IHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZF9jdXN0b21fY2hhaW4pKSB7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0
cnVjdHVyZSk7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnZQQ1s0XS51LnN0cnVjdHVyZSk7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewotICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUpOwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENb
NV0udS5zdHJ1Y3R1cmUpOwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNl0udS5zdHJ1
Y3R1cmVDaGFpbik7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUp
OworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnZQQ1s2XS51LnN0cnVjdHVyZUNoYWluKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQ
Q1s0XS51LnN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNF0udS5zdHJ1
Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXNvbHZlX2dsb2JhbCkgfHwgdlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YykpIHsKICAgICAgICAgaWYgKHZQQ1szXS51LnN0cnVjdHVyZSkKLSAgICAgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoJnZQQ1szXS51LnN0cnVjdHVyZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmdlBDWzNdLnUuc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAoKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZF9wcm90b19saXN0KSkKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjptYXJr
U3RydWN0dXJlcyhNYXJrU3RhY2smIG1hcmtTdGFjaywgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QK
ICAgICAgICAgfHwgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X2dldF9ieV9pZF9jdXN0b21fcHJvdG9fbGlzdCkpCiAgICAgICAgIHx8ICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGZfbGlz
dCkpKSB7CiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBo
aWNTdHJ1Y3R1cmVzID0gdlBDWzRdLnUucG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwotICAgICAgICBw
b2x5bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrLCB2UENbNV0udS5v
cGVyYW5kKTsKKyAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT52aXNpdEFnZ3JlZ2F0ZSh2
aXNpdG9yLCB2UENbNV0udS5vcGVyYW5kKTsKICAgICAgICAgZGVsZXRlIHBvbHltb3JwaGljU3Ry
dWN0dXJlczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NDksNDggKzE0NDksNDggQEAg
dm9pZCBDb2RlQmxvY2s6Om1hcmtTdHJ1Y3R1cmVzKE1hcmtTdGFjayYgbWFya1N0YWNrLCBJbnN0
cnVjdGlvbiogdlBDKSBjb25zdAogICAgIEFTU0VSVCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9nZW5lcmljKSB8fCB2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVu
Z3RoKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
c3RyaW5nX2xlbmd0aCkpOwogfQogCi12b2lkIEV2YWxDb2RlQ2FjaGU6Om1hcmtBZ2dyZWdhdGUo
TWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRl
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgZW5k
ID0gbV9jYWNoZU1hcC5lbmQoKTsKICAgICBmb3IgKEV2YWxDYWNoZU1hcDo6aXRlcmF0b3IgcHRy
ID0gbV9jYWNoZU1hcC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKLSAgICAgICAgbWFya1N0
YWNrLmFwcGVuZCgmcHRyLT5zZWNvbmQpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT5z
ZWNvbmQpOwogfQogCi12b2lkIENvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2dsb2JhbE9iamVjdCk7Ci0gICAgbWFy
a1N0YWNrLmFwcGVuZCgmbV9vd25lckV4ZWN1dGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZt
X2dsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJm1fb3duZXJFeGVjdXRhYmxlKTsK
ICAgICBpZiAobV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hl
Lm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKG1f
Y29uc3RhbnRSZWdpc3RlcnMuZGF0YSgpLCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKSk7Cisg
ICAgICAgIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEoKSwg
bV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mdW5jdGlvbkV4cHJzLnNpemUoKTsgKytpKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZt
X2Z1bmN0aW9uRXhwcnNbaV0pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkV4
cHJzW2ldKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxF
KEpJVF9PUFRJTUlaRV9DQUxMKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
ZkNhbGxMaW5rSW5mb3MoKTsgKytpKQogICAgICAgICBpZiAoY2FsbExpbmtJbmZvKGkpLmlzTGlu
a2VkKCkpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZjYWxsTGlua0luZm8oaSkuY2Fs
bGVlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZjYWxsTGlua0luZm8oaSkuY2FsbGVl
KTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBtYXJrU3RydWN0dXJlcyhtYXJrU3RhY2ssICZtX2luc3RydWN0aW9uc1tt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIG1hcmtTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZtX2luc3RydWN0aW9uc1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ld
XSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2ds
b2JhbFJlc29sdmVJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGlmIChtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX2dsb2JhbFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZ2xvYmFsUmVzb2x2ZUluZm9zW2ldLnN0cnVjdHVyZSk7
CiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNp
emUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9z
W2ldLm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgbV9zdHJ1Y3R1cmVTdHViSW5m
b3NbaV0udmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAKICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1cmUpIHsKICAg
ICAgICAgICAgIC8vIEJvdGggbWVtYmVycyBtdXN0IGJlIGZpbGxlZCBhdCB0aGUgc2FtZSB0aW1l
Ci0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0u
Y2FjaGVkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX21ldGhvZENh
bGxMaW5rSW5mb3NbaV0uY2FjaGVkU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVCghIW1f
bWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFBy
b3RvdHlwZVN0cnVjdHVyZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCBhZjY4ZWI1ODFjYWRhZDI3NWE5Y2ZmNDhkODA0NDE4MGM2Mjk1ZTc1Li41MDUzNjM2ZTAw
MTRkYTliMWVjM2QxZTZlNDc5MDg4N2RmNTNmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMTEsNyArMjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKIAotICAgICAgICB2
b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJik7CisgICAgICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygp
OwogCkBAIC00ODEsNyArNDgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJp
bnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBw
cmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogI2VuZGlmCi0gICAg
ICAgIHZvaWQgbWFya1N0cnVjdHVyZXMoTWFya1N0YWNrJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29u
c3Q7CisgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rp
b24qIHZQQykgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29k
ZUNhY2hlLmgKaW5kZXggM2U0NTBiMTJjM2U0NTBiZDVlYzA4Nzk0MjQ3MGI0ODI5NjJkNGJlZS4u
ZGY5MzdkZDU0NzIzMzQxMjBhNmQwN2EwMWYwYzIzNTQwNDFlNjc1NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC00Miw2ICs0Miw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE1hcmtTdGFjazsKKyAgICB0eXBlZGVmIE1h
cmtTdGFjayBTbG90VmlzaXRvcjsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewogICAgIHB1
YmxpYzoKQEAgLTY3LDcgKzY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU1hcC5pc0VtcHR5KCk7IH0KIAotICAgICAg
ICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJik7CisgICAgICAgIHZvaWQgdmlzaXRBZ2dy
ZWdhdGUoU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhDYWNoZWFibGVTb3VyY2VMZW5ndGggPSAyNTY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IGQ5Y2JiMTFhZDg2NjBhNGZk
YTBjMjQ5MGJhYmUyY2YzODkyMDAxNDEuLjg2Njg0NmNhYWNiYjcwZTcwOTEyOWUwNTJkNTM4ZjFh
MDg4ZTEzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGxp
c3RbMF0uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHViUm91dGluZSwgZmlyc3RCYXNlLCBmaXJz
dENoYWluKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3Rh
Y2smIG1hcmtTdGFjaywgaW50IGNvdW50KQorICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNs
b3RWaXNpdG9yJiB2aXNpdG9yLCBpbnQgY291bnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIFBvbHltb3Jw
aGljU3R1YkluZm8mIGluZm8gPSBsaXN0W2ldOwogICAgICAgICAgICAgICAgIEFTU0VSVChpbmZv
LmJhc2UpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBl
bmQoJmluZm8uYmFzZSk7CisgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmluZm8uYmFz
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluZm8udS5wcm90byAmJiAhaW5mby5pc0NoYWluKQot
ICAgICAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLnUucHJvdG8pOworICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5mby51LnByb3RvKTsKICAgICAgICAg
ICAgICAgICBpZiAoaW5mby51LmNoYWluICYmIGluZm8uaXNDaGFpbikKLSAgICAgICAgICAgICAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby51LmNoYWluKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJmluZm8udS5jaGFpbik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYmU1NzYwYTFhOGRiNDc1OTAxMjk5ZWJkZWJkNjUyYWUy
NTU4MDU5Mi4uOWRkNDFhNmUzMmY3YmRhNzgzMWQ0N2YxMTcwYjAxY2M5ODIyNWMyMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC02MywzNyArNjMsMzcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQog
ICAgIH0KIH0KIAotdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6bWFya0FnZ3JlZ2F0ZShNYXJrU3Rh
Y2smIG1hcmtTdGFjaykKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0QWdncmVnYXRlKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewogICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOgotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1Lmdl
dEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
dS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
dS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46Ci0gICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoJnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOwotICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRDaGFpbi5jaGFpbik7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZ1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnUuZ2V0QnlJZENoYWluLmNoYWluKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmX2xpc3Q6IHsKICAgICAgICAgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSB1LmdldEJ5
SWRTZWxmTGlzdC5zdHJ1Y3R1cmVMaXN0OwotICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMt
Pm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrLCB1LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7Cisg
ICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvciwgdS5n
ZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OiB7CiAgICAgICAgIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkUHJvdG9M
aXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+bWFya0Fn
Z3JlZ2F0ZShtYXJrU3RhY2ssIHUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CisgICAgICAg
IHBvbHltb3JwaGljU3RydWN0dXJlcy0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvciwgdS5nZXRCeUlk
UHJvdG9MaXN0Lmxpc3RTaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIGFj
Y2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbjoKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5w
dXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZSk7Ci0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlKTsKLSAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCgmdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbik7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLnByZXZpb3VzU3RydWN0dXJlKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4pOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6Ci0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZ1LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkOgogICAgIGNhc2UgYWNjZXNz
X3B1dF9ieV9pZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgKaW5kZXggYmZlZWIxZWFkMDMxZGY0OWI5ZjUxZWEwNTlkNGE4MWIzYTJh
ZjQ5ZS4uN2YxMWVkZDc2OTY5MTUxODg3NmNkMTBmNWYyODU1ZTg0MjNmNjhjZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAg
LTExNiw3ICsxMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZGVyZWYoKTsKLSAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOworICAg
ICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgYm9vbCBz
ZWVuT25jZSgpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKaW5kZXggNjdhNzk2YTZhYzc0ODRjMWU3YzMy
YzAzZTlkZjk3NTg5OWUwOTIyYS4uNDdkY2Q3ZmE2NDU2NmQ0ODExZmRkNTBmZGI1NWNkNzBkZDNi
ODc0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBEZWJ1Z2dlckFjdGl2YXRpb246
OkRlYnVnZ2VyQWN0aXZhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBh
Y3RpdgogICAgIG1fYWN0aXZhdGlvbi5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3RhdGljX2Nhc3Q8
SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbikpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlv
bjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBEZWJ1Z2dlckFjdGl2
YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNPYmpl
Y3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwogCiAgICAgaWYgKG1fYWN0aXZhdGlvbikKLSAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCgmbV9hY3RpdmF0aW9uKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fYWN0aXZhdGlv
bik7CiB9CiAKIFVTdHJpbmcgRGVidWdnZXJBY3RpdmF0aW9uOjpjbGFzc05hbWUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZh
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlv
bi5oCmluZGV4IGJmYjM2ZGI1MzNiN2ZkZDM2YWJlMzVjNzk5NDhlODQ3OTg2YTMzYzIuLjU3NDk4
NmEwZmQ2NjJmNjgxZjNhMDZlYjRiZTIwZTdkYzBhZmYzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBEZWJ1Z2dlckFjdGl2
YXRpb24oSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpAQCAtNTUsNyArNTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgogICAgICAgICBXcml0ZUJhcnJpZXI8SlNBY3Rp
dmF0aW9uPiBtX2FjdGl2YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IYW5kbGVIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhl
YXAuY3BwCmluZGV4IDFhMDA1MWVlNTU2Nzc4YzliOGQyZGZiNTAwZWU2NGI0YWViNjcyZGYuLjli
MDVkYjIyZGQ3OThjYmM1ZTlhZTE1MTk5YmUxOWU1YTZlN2ZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdlYWtIYW5kbGVP
d25lcjo6fldlYWtIYW5kbGVPd25lcigpCiB7CiB9CiAKLWJvb2wgV2Vha0hhbmRsZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj4sIHZvaWQqLCBNYXJrU3Rh
Y2smKQorYm9vbCBXZWFrSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhh
bmRsZTxVbmtub3duPiwgdm9pZCosIFNsb3RWaXNpdG9yJikKIHsKICAgICByZXR1cm4gZmFsc2U7
CiB9CkBAIC02MCwxNiArNjAsMTYgQEAgdm9pZCBIYW5kbGVIZWFwOjpncm93KCkKICAgICB9CiB9
CiAKLXZvaWQgSGFuZGxlSGVhcDo6bWFya1N0cm9uZ0hhbmRsZXMoSGVhcFJvb3RNYXJrZXImIGhl
YXBSb290TWFya2VyKQordm9pZCBIYW5kbGVIZWFwOjptYXJrU3Ryb25nSGFuZGxlcyhIZWFwUm9v
dFZpc2l0b3ImIGhlYXBSb290TWFya2VyKQogewogICAgIE5vZGUqIGVuZCA9IG1fc3Ryb25nTGlz
dC5lbmQoKTsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9k
ZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkpCiAgICAgICAgIGhlYXBSb290TWFya2VyLm1h
cmsobm9kZS0+c2xvdCgpKTsKIH0KIAotdm9pZCBIYW5kbGVIZWFwOjptYXJrV2Vha0hhbmRsZXMo
SGVhcFJvb3RNYXJrZXImIGhlYXBSb290TWFya2VyKQordm9pZCBIYW5kbGVIZWFwOjptYXJrV2Vh
a0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCiB7Ci0gICAgTWFya1N0
YWNrJiBtYXJrU3RhY2sgPSBoZWFwUm9vdE1hcmtlci5tYXJrU3RhY2soKTsKKyAgICBTbG90Vmlz
aXRvciYgdmlzaXRvciA9IGhlYXBSb290VmlzaXRvci52aXNpdG9yKCk7CiAKICAgICBOb2RlKiBl
bmQgPSBtX3dlYWtMaXN0LmVuZCgpOwogICAgIGZvciAoTm9kZSogbm9kZSA9IG1fd2Vha0xpc3Qu
YmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkpIHsKQEAgLTgyLDEwICs4
MiwxMCBAQCB2b2lkIEhhbmRsZUhlYXA6Om1hcmtXZWFrSGFuZGxlcyhIZWFwUm9vdE1hcmtlciYg
aGVhcFJvb3RNYXJrZXIpCiAgICAgICAgIGlmICghd2Vha093bmVyKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKCF3ZWFrT3duZXItPmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3Qobm9kZS0+c2xvdCgpKSwgbm9kZS0+d2Vha093
bmVyQ29udGV4dCgpLCBtYXJrU3RhY2spKQorICAgICAgICBpZiAoIXdlYWtPd25lci0+aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdChub2RlLT5zbG90
KCkpLCBub2RlLT53ZWFrT3duZXJDb250ZXh0KCksIHZpc2l0b3IpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaGVhcFJvb3RNYXJrZXIubWFyayhub2RlLT5zbG90KCkpOworICAg
ICAgICBoZWFwUm9vdFZpc2l0b3IubWFyayhub2RlLT5zbG90KCkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCmluZGV4IDg4NmM5NGEwMDBjN2RmNGUy
MjE2ZWE3MTczNDRkZmNiNGExZjM4MzMuLjVjMTUxYzMzYjc3YTQ2MTIwMTk5ZDJjMTUyNjkxZjk3
NDMxOWE4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhl
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgKQEAgLTM0
LDE2ICszNCwxNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhhbmRsZUhlYXA7Ci1jbGFz
cyBIZWFwUm9vdE1hcmtlcjsKK2NsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEpTR2xvYmFs
RGF0YTsKIGNsYXNzIEpTVmFsdWU7CiBjbGFzcyBNYXJrU3RhY2s7CiBjbGFzcyBUeXBlQ291bnRl
cjsKK3R5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwogCiBjbGFzcyBXZWFrSGFuZGxlT3du
ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYWtIYW5kbGVPd25lcigpOwotICAgIHZpcnR1
YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQsIE1hcmtTdGFjayYpOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4
dCk7CiB9OwogCkBAIC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VXZWFrKEhh
bmRsZVNsb3QsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CiAgICAg
SGFuZGxlU2xvdCBjb3B5V2VhayhIYW5kbGVTbG90KTsKIAotICAgIHZvaWQgbWFya1N0cm9uZ0hh
bmRsZXMoSGVhcFJvb3RNYXJrZXImKTsKLSAgICB2b2lkIG1hcmtXZWFrSGFuZGxlcyhIZWFwUm9v
dE1hcmtlciYpOworICAgIHZvaWQgbWFya1N0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJik7
CisgICAgdm9pZCBtYXJrV2Vha0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgdm9pZCBm
aW5hbGl6ZVdlYWtIYW5kbGVzKCk7CiAKICAgICB2b2lkIHdyaXRlQmFycmllcihIYW5kbGVTbG90
LCBjb25zdCBKU1ZhbHVlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IYW5kbGVTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFj
ay5jcHAKaW5kZXggMWMxNTFhZjE4YTEwMzdlNDYwOWY1YzE2YTUwOWQ1YThkOGQ2NTJjZS4uYWRh
NGY5OTI3ODMxNzMwY2VlNTc5MDA5OTEzNjRiM2Y3NmJhNmQ4OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcApAQCAtMzksNyArMzksNyBAQCBIYW5kbGVTdGFj
azo6SGFuZGxlU3RhY2soKQogICAgIGdyb3coKTsKIH0KIAotdm9pZCBIYW5kbGVTdGFjazo6bWFy
ayhIZWFwUm9vdE1hcmtlciYgaGVhcFJvb3RNYXJrZXIpCit2b2lkIEhhbmRsZVN0YWNrOjptYXJr
KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RNYXJrZXIpCiB7CiAgICAgY29uc3QgVmVjdG9yPEhh
bmRsZVNsb3Q+JiBibG9ja3MgPSBtX2Jsb2NrU3RhY2suYmxvY2tzKCk7CiAgICAgc2l6ZV90IGJs
b2NrTGVuZ3RoID0gbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hhbmRsZVN0YWNrLmgKaW5kZXggNTRlNmM2MGRkM2MxZjBjNjM4ZGQ0NTZhNmEyODEz
YzBjMzIyYmM5NS4uMTE1Nzg0YTg3YjNmM2E1ODcxZDU5ZjNiNGQ0MjJmYzlkM2MwMzMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCkBAIC0zNSw3ICszNSw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTG9jYWxTY29wZTsKLWNsYXNzIEhlYXBSb290TWFy
a2VyOworY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogCiBjbGFzcyBIYW5kbGVTdGFjayB7CiBwdWJs
aWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIEhhbmRsZVNsb3QgcHVzaCgpOwog
Ci0gICAgdm9pZCBtYXJrKEhlYXBSb290TWFya2VyJik7CisgICAgdm9pZCBtYXJrKEhlYXBSb290
VmlzaXRvciYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZ3JvdygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAppbmRleCAxMTk5OWI3ODRhZDNjMGVkYTdiODk5OTcyZDQ3NjkzOWM4ZDlh
Zjk0Li42Mzc1YjE0ZDM5MjgwNzFhMDdkY2MyOGVhZDJhOGUwYjYxMDYwYmJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgSGVhcDo6dW5w
cm90ZWN0KEpTVmFsdWUgaykKICAgICByZXR1cm4gbV9wcm90ZWN0ZWRWYWx1ZXMucmVtb3ZlKGsu
YXNDZWxsKCkpOwogfQogCi12b2lkIEhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3RzKEhlYXBSb290
TWFya2VyJiBoZWFwUm9vdE1hcmtlcikKK3ZvaWQgSGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMo
SGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdE1hcmtlcikKIHsKICAgICBQcm90ZWN0Q291bnRTZXQ6
Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFsdWVzLmVuZCgpOwogICAgIGZvciAoUHJvdGVj
dENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEhlYXA6OnBvcFRlbXBTb3J0VmVj
dG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiB0ZW1wVmVjdG9yKQogICAgIG1fdGVtcFNvcnRp
bmdWZWN0b3JzLnJlbW92ZUxhc3QoKTsKIH0KICAgICAKLXZvaWQgSGVhcDo6bWFya1RlbXBTb3J0
VmVjdG9ycyhIZWFwUm9vdE1hcmtlciYgaGVhcFJvb3RNYXJrZXIpCit2b2lkIEhlYXA6Om1hcmtU
ZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdE1hcmtlcikKIHsKICAgICB0
eXBlZGVmIFZlY3RvcjxWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiogPiBWZWN0b3JPZlZhbHVlU3Ry
aW5nVmVjdG9yczsKIApAQCAtMjA3LDggKzIwNyw4IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkK
IAogICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IENvbGxlY3Rpb247CiAKLSAgICBNYXJrU3Rh
Y2smIG1hcmtTdGFjayA9IG1fbWFya1N0YWNrOwotICAgIEhlYXBSb290TWFya2VyIGhlYXBSb290
TWFya2VyKG1hcmtTdGFjayk7CisgICAgTWFya1N0YWNrJiB2aXNpdG9yID0gbV9tYXJrU3RhY2s7
CisgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290TWFya2VyKHZpc2l0b3IpOwogICAgIAogICAg
IC8vIFdlIGdhdGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0
cyBiZWNhdXNlCiAgICAgLy8gY29uc2VydmF0aXZlIGdhdGhlcmluZyB1c2VzIHRoZSBtYXJrIGJp
dHMgZnJvbSBvdXIgbGFzdCBtYXJrIHBhc3MgdG8KQEAgLTIyMSw0NyArMjIxLDQ3IEBAIHZvaWQg
SGVhcDo6bWFya1Jvb3RzKCkKIAogICAgIG1fbWFya2VkU3BhY2UuY2xlYXJNYXJrcygpOwogCi0g
ICAgbWFya1N0YWNrLmFwcGVuZChtYWNoaW5lVGhyZWFkUm9vdHMpOwotICAgIG1hcmtTdGFjay5k
cmFpbigpOworICAgIHZpc2l0b3IuYXBwZW5kKG1hY2hpbmVUaHJlYWRSb290cyk7CisgICAgdmlz
aXRvci5kcmFpbigpOwogCi0gICAgbWFya1N0YWNrLmFwcGVuZChyZWdpc3RlckZpbGVSb290cyk7
Ci0gICAgbWFya1N0YWNrLmRyYWluKCk7CisgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0ZXJGaWxl
Um9vdHMpOworICAgIHZpc2l0b3IuZHJhaW4oKTsKIAogICAgIG1hcmtQcm90ZWN0ZWRPYmplY3Rz
KGhlYXBSb290TWFya2VyKTsKLSAgICBtYXJrU3RhY2suZHJhaW4oKTsKKyAgICB2aXNpdG9yLmRy
YWluKCk7CiAgICAgCiAgICAgbWFya1RlbXBTb3J0VmVjdG9ycyhoZWFwUm9vdE1hcmtlcik7Ci0g
ICAgbWFya1N0YWNrLmRyYWluKCk7CisgICAgdmlzaXRvci5kcmFpbigpOwogCiAgICAgaWYgKG1f
bWFya0xpc3RTZXQgJiYgbV9tYXJrTGlzdFNldC0+c2l6ZSgpKQogICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlcjo6bWFya0xpc3RzKGhlYXBSb290TWFya2VyLCAqbV9tYXJrTGlzdFNldCk7CiAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKQogICAgICAgICBoZWFwUm9vdE1hcmtlci5t
YXJrKCZtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7Ci0gICAgbWFya1N0YWNrLmRyYWluKCk7Cisg
ICAgdmlzaXRvci5kcmFpbigpOwogCiAgICAgbV9oYW5kbGVIZWFwLm1hcmtTdHJvbmdIYW5kbGVz
KGhlYXBSb290TWFya2VyKTsKLSAgICBtYXJrU3RhY2suZHJhaW4oKTsKKyAgICB2aXNpdG9yLmRy
YWluKCk7CiAKICAgICBtX2hhbmRsZVN0YWNrLm1hcmsoaGVhcFJvb3RNYXJrZXIpOwotICAgIG1h
cmtTdGFjay5kcmFpbigpOworICAgIHZpc2l0b3IuZHJhaW4oKTsKIAogICAgIC8vIE1hcmsgdGhl
IHNtYWxsIHN0cmluZ3MgY2FjaGUgYXMgbGF0ZSBhcyBwb3NzaWJsZSwgc2luY2UgaXQgd2lsbCBj
bGVhcgogICAgIC8vIGl0c2VsZiBpZiBub3RoaW5nIGVsc2UgaGFzIG1hcmtlZCBpdC4KICAgICAv
LyBGSVhNRTogQ2hhbmdlIHRoZSBzbWFsbCBzdHJpbmdzIGNhY2hlIHRvIHVzZSBXZWFrPFQ+Lgot
ICAgIG1fZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLm1hcmtDaGlsZHJlbihoZWFwUm9vdE1hcmtl
cik7Ci0gICAgbWFya1N0YWNrLmRyYWluKCk7CisgICAgbV9nbG9iYWxEYXRhLT5zbWFsbFN0cmlu
Z3MudmlzaXRDaGlsZHJlbihoZWFwUm9vdE1hcmtlcik7CisgICAgdmlzaXRvci5kcmFpbigpOwog
ICAgIAogICAgIC8vIFdlYWsgaGFuZGxlcyBtdXN0IGJlIG1hcmtlZCBsYXN0LCBiZWNhdXNlIHRo
ZWlyIG93bmVycyB1c2UgdGhlIHNldCBvZgogICAgIC8vIG9wYXF1ZSByb290cyB0byBkZXRlcm1p
bmUgcmVhY2hhYmlsaXR5LgogICAgIGludCBsYXN0T3BhcXVlUm9vdENvdW50OwogICAgIGRvIHsK
LSAgICAgICAgbGFzdE9wYXF1ZVJvb3RDb3VudCA9IG1hcmtTdGFjay5vcGFxdWVSb290Q291bnQo
KTsKKyAgICAgICAgbGFzdE9wYXF1ZVJvb3RDb3VudCA9IHZpc2l0b3Iub3BhcXVlUm9vdENvdW50
KCk7CiAgICAgICAgIG1faGFuZGxlSGVhcC5tYXJrV2Vha0hhbmRsZXMoaGVhcFJvb3RNYXJrZXIp
OwotICAgICAgICBtYXJrU3RhY2suZHJhaW4oKTsKKyAgICAgICAgdmlzaXRvci5kcmFpbigpOwog
ICAgIC8vIElmIHRoZSBzZXQgb2Ygb3BhcXVlIHJvb3RzIGhhcyBncm93biwgbW9yZSB3ZWFrIGhh
bmRsZXMgbWF5IGhhdmUgYmVjb21lIHJlYWNoYWJsZS4KLSAgICB9IHdoaWxlIChsYXN0T3BhcXVl
Um9vdENvdW50ICE9IG1hcmtTdGFjay5vcGFxdWVSb290Q291bnQoKSk7CisgICAgfSB3aGlsZSAo
bGFzdE9wYXF1ZVJvb3RDb3VudCAhPSB2aXNpdG9yLm9wYXF1ZVJvb3RDb3VudCgpKTsKIAotICAg
IG1hcmtTdGFjay5yZXNldCgpOworICAgIHZpc2l0b3IucmVzZXQoKTsKIAogICAgIG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CmluZGV4IGMyZDNiYWM4MmUxMzMzYjE0OTQ5OGUwY2FhNWU0Nzc1NDc5NmFmM2QuLmI4NWVhYTM0
YjFiOTg2NDFjZWJkOWM0MzA1N2FhMjIzY2FkMTBhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBHQ0Fj
dGl2aXR5Q2FsbGJhY2s7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwotICAgIGNsYXNzIEhl
YXBSb290TWFya2VyOworICAgIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKICAgICBjbGFzcyBKU0Nl
bGw7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBj
bGFzcyBVU3RyaW5nOwogICAgIGNsYXNzIFdlYWtHQ0hhbmRsZVBvb2w7CisgICAgdHlwZWRlZiBN
YXJrU3RhY2sgU2xvdFZpc2l0b3I7CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxKU1ZhbHVlLCBV
U3RyaW5nPiBWYWx1ZVN0cmluZ1BhaXI7CiAgICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxKU0Nl
bGwqPiBQcm90ZWN0Q291bnRTZXQ7CkBAIC0xMTQsOCArMTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsKIAog
ICAgICAgICB2b2lkIG1hcmtSb290cygpOwotICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmpl
Y3RzKEhlYXBSb290TWFya2VyJik7Ci0gICAgICAgIHZvaWQgbWFya1RlbXBTb3J0VmVjdG9ycyhI
ZWFwUm9vdE1hcmtlciYpOworICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKEhlYXBS
b290VmlzaXRvciYpOworICAgICAgICB2b2lkIG1hcmtUZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RW
aXNpdG9yJik7CiAKICAgICAgICAgZW51bSBTd2VlcFRvZ2dsZSB7IERvTm90U3dlZXAsIERvU3dl
ZXAgfTsKICAgICAgICAgdm9pZCByZXNldChTd2VlcFRvZ2dsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCAzZmIxYTk4ZGZiYWViNTliODUxNmUwMDFhNTlm
MGIwZWIzYTI4OWNmLi42YmNjODI0ZTUxNWM0MDI4NmU4ZjdmYzQxNTZmYWJmMzI4MzQ1ZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTU0LDMyICs1NCwz
MiBAQCB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRp
dmVSb290cykKICAgICAgICAgaW50ZXJuYWxBcHBlbmQocm9vdHNbaV0pOwogfQogCi1pbmxpbmUg
dm9pZCBNYXJrU3RhY2s6Om1hcmtDaGlsZHJlbihKU0NlbGwqIGNlbGwpCitpbmxpbmUgdm9pZCBN
YXJrU3RhY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChIZWFw
Ojppc01hcmtlZChjZWxsKSk7CiAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
LnR5cGUoKSA8IENvbXBvdW5kVHlwZSkgewotICAgICAgICBjZWxsLT5KU0NlbGw6Om1hcmtDaGls
ZHJlbigqdGhpcyk7CisgICAgICAgIGNlbGwtPkpTQ2VsbDo6dmlzaXRDaGlsZHJlbigqdGhpcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNlbGwtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc01hcmtDaGlsZHJlbigpKSB7CisgICAgaWYgKCFjZWxsLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpIHsKICAgICAgICAg
QVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwogI2lmZGVmIE5ERUJVRwotICAgICAgICBhc09iamVj
dChjZWxsKS0+bWFya0NoaWxkcmVuRGlyZWN0KCp0aGlzKTsKKyAgICAgICAgYXNPYmplY3QoY2Vs
bCktPnZpc2l0RGlyZWN0KCp0aGlzKTsKICNlbHNlCiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lzQ2hlY2tpbmdGb3JEZWZh
dWx0TWFya1Zpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgIGNlbGwtPm1hcmtDaGlsZHJlbigqdGhp
cyk7CisgICAgICAgIGNlbGwtPnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICBBU1NFUlQo
bV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKGNlbGwtPnZwdHIoKSA9PSBtX2pzQXJyYXlWUHRyKSB7Ci0gICAg
ICAgIGFzQXJyYXkoY2VsbCktPm1hcmtDaGlsZHJlbkRpcmVjdCgqdGhpcyk7CisgICAgICAgIGFz
QXJyYXkoY2VsbCktPnZpc2l0RGlyZWN0KCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBjZWxsLT5tYXJrQ2hpbGRyZW4oKnRoaXMpOworICAgIGNlbGwtPnZpc2l0Q2hpbGRyZW4o
KnRoaXMpOwogfQogCiB2b2lkIE1hcmtTdGFjazo6ZHJhaW4oKQpAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgTWFya1N0YWNrOjpkcmFpbigpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsK
LSAgICAgICAgICAgICAgICBjZWxsLT5KU0NlbGw6Om1hcmtDaGlsZHJlbigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgY2VsbC0+SlNDZWxsOjp2aXNpdENoaWxkcmVuKCp0aGlzKTsKICAgICAgICAg
ICAgICAgICBpZiAoY3VycmVudC5tX3ZhbHVlcyA9PSBlbmQpIHsKICAgICAgICAgICAgICAgICAg
ICAgbV9tYXJrU2V0cy5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMTIyLDEwICsxMjIsMTAgQEAgdm9pZCBNYXJrU3RhY2s6OmRyYWluKCkKICAgICAgICAg
ICAgIGlmIChjdXJyZW50Lm1fdmFsdWVzID09IGVuZCkKICAgICAgICAgICAgICAgICBtX21hcmtT
ZXRzLnJlbW92ZUxhc3QoKTsKIAotICAgICAgICAgICAgbWFya0NoaWxkcmVuKGNlbGwpOworICAg
ICAgICAgICAgdmlzaXRDaGlsZHJlbihjZWxsKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAo
IW1fdmFsdWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1hcmtDaGlsZHJlbihtX3ZhbHVlcy5y
ZW1vdmVMYXN0KCkpOworICAgICAgICAgICAgdmlzaXRDaGlsZHJlbihtX3ZhbHVlcy5yZW1vdmVM
YXN0KCkpOwogICAgIH0KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9pc0RyYWluaW5nID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCmluZGV4IGFiYTc2NDc2
ZTg1MjZhODFkYjBkNGQyZGJjYWUyZTRkMmUzYzFjNjQuLjE2MzM1MTYzMDc1MmJkNDI0NWM1ZDgw
YTljMjlkMzhkN2Q4OTQzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5o
CkBAIC04MCwxNCArODAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdE1hcmtlcjsg
Ly8gQWxsb3dlZCB0byBtYXJrIGEgSlNWYWx1ZSogb3IgSlNDZWxsKiogZGlyZWN0bHkuCisgICAg
ICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7IC8vIEFsbG93ZWQgdG8gbWFyayBhIEpT
VmFsdWUqIG9yIEpTQ2VsbCoqIGRpcmVjdGx5LgogICAgICAgICB2b2lkIGFwcGVuZChKU1ZhbHVl
Kik7CiAgICAgICAgIHZvaWQgYXBwZW5kKEpTVmFsdWUqLCBzaXplX3QgY291bnQpOwogICAgICAg
ICB2b2lkIGFwcGVuZChKU0NlbGwqKik7CiAKICAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChK
U0NlbGwqKTsKICAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU1ZhbHVlKTsKLSAgICAgICAg
dm9pZCBtYXJrQ2hpbGRyZW4oSlNDZWxsKik7CisgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqKTsKIAogICAgICAgICBzdHJ1Y3QgTWFya1NldCB7CiAgICAgICAgICAgICBNYXJrU2V0
KEpTVmFsdWUqIHZhbHVlcywgSlNWYWx1ZSogZW5kLCBNYXJrU2V0UHJvcGVydGllcyBwcm9wZXJ0
aWVzKQpAQCAtMjAyLDYgKzIwMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgfTsK
IAorICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOworCiAgICAgaW5saW5lIHZvaWQg
TWFya1N0YWNrOjphcHBlbmQoSlNWYWx1ZSogc2xvdCwgc2l6ZV90IGNvdW50KQogICAgIHsKICAg
ICAgICAgaWYgKCFjb3VudCkKQEAgLTI0MywxMCArMjQ1LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIC8vIHRoaXMgY2xhc3MgdG8gbWFyayBkaXJlY3QgaGVhcCByb290cyB0aGF0IGFyZSBtYXJr
ZWQgZHVyaW5nIGV2ZXJ5IEdDIHBhc3MuCiAgICAgLy8gQWxsIG90aGVyIHJlZmVyZW5jZXMgc2hv
dWxkIGJlIHdyYXBwZWQgaW4gV3JpdGVCYXJyaWVycyBhbmQgbWFya2VkIHRocm91Z2gKICAgICAv
LyB0aGUgTWFya1N0YWNrLgotICAgIGNsYXNzIEhlYXBSb290TWFya2VyIHsKKyAgICBjbGFzcyBI
ZWFwUm9vdFZpc2l0b3IgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFw
OwotICAgICAgICBIZWFwUm9vdE1hcmtlcihNYXJrU3RhY2smKTsKKyAgICAgICAgSGVhcFJvb3RW
aXNpdG9yKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9p
ZCBtYXJrKEpTVmFsdWUqKTsKQEAgLTI1NCw0MCArMjU2LDQwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIG1hcmsoSlNTdHJpbmcqKik7CiAgICAgICAgIHZvaWQgbWFyayhKU0NlbGwq
Kik7CiAgICAgICAgIAotICAgICAgICBNYXJrU3RhY2smIG1hcmtTdGFjaygpOworICAgICAgICBT
bG90VmlzaXRvciYgdmlzaXRvcigpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgTWFya1N0YWNr
JiBtX21hcmtTdGFjazsKKyAgICAgICAgU2xvdFZpc2l0b3ImIG1fdmlzaXRvcjsKICAgICB9Owog
Ci0gICAgaW5saW5lIEhlYXBSb290TWFya2VyOjpIZWFwUm9vdE1hcmtlcihNYXJrU3RhY2smIG1h
cmtTdGFjaykKLSAgICAgICAgOiBtX21hcmtTdGFjayhtYXJrU3RhY2spCisgICAgaW5saW5lIEhl
YXBSb290VmlzaXRvcjo6SGVhcFJvb3RWaXNpdG9yKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAg
ICAgICA6IG1fdmlzaXRvcih2aXNpdG9yKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9p
ZCBIZWFwUm9vdE1hcmtlcjo6bWFyayhKU1ZhbHVlKiBzbG90KQorICAgIGlubGluZSB2b2lkIEhl
YXBSb290VmlzaXRvcjo6bWFyayhKU1ZhbHVlKiBzbG90KQogICAgIHsKLSAgICAgICAgbV9tYXJr
U3RhY2suYXBwZW5kKHNsb3QpOworICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kKHNsb3QpOwogICAg
IH0KIAotICAgIGlubGluZSB2b2lkIEhlYXBSb290TWFya2VyOjptYXJrKEpTVmFsdWUqIHNsb3Qs
IHNpemVfdCBjb3VudCkKKyAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6Om1hcmsoSlNW
YWx1ZSogc2xvdCwgc2l6ZV90IGNvdW50KQogICAgIHsKLSAgICAgICAgbV9tYXJrU3RhY2suYXBw
ZW5kKHNsb3QsIGNvdW50KTsKKyAgICAgICAgbV92aXNpdG9yLmFwcGVuZChzbG90LCBjb3VudCk7
CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RNYXJrZXI6Om1hcmsoSlNTdHJpbmcq
KiBzbG90KQorICAgIGlubGluZSB2b2lkIEhlYXBSb290VmlzaXRvcjo6bWFyayhKU1N0cmluZyoq
IHNsb3QpCiAgICAgewotICAgICAgICBtX21hcmtTdGFjay5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxKU0NlbGwqKj4oc2xvdCkpOworICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKio+KHNsb3QpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9v
dE1hcmtlcjo6bWFyayhKU0NlbGwqKiBzbG90KQorICAgIGlubGluZSB2b2lkIEhlYXBSb290Vmlz
aXRvcjo6bWFyayhKU0NlbGwqKiBzbG90KQogICAgIHsKLSAgICAgICAgbV9tYXJrU3RhY2suYXBw
ZW5kKHNsb3QpOworICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kKHNsb3QpOwogICAgIH0KIAotICAg
IGlubGluZSBNYXJrU3RhY2smIEhlYXBSb290TWFya2VyOjptYXJrU3RhY2soKQorICAgIGlubGlu
ZSBTbG90VmlzaXRvciYgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdG9yKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX21hcmtTdGFjazsKKyAgICAgICAgcmV0dXJuIG1fdmlzaXRvcjsKICAgICB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgKaW5kZXggMjlhOGNkMGU3NGMyODU0YjdhNTJjNjY3OWQ0MTA4NDk2NjY4M2M2MS4uZDhiNWVh
N2M2ZjE0ZmFhNGNkOTlhM2RhMjdhODYyN2Q0YTFjMGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAg
Y2xhc3MgV2Vha0dDSGFuZGxlOworICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwog
CiAgICAgY2xhc3MgTWFya2VkU3BhY2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
YXJrZWRTcGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCmlu
ZGV4IGY0NmQxMDgwZWJmYmI5MTdiNWUxNDQ2ZGFjMDlkYzk0ZjYyYzY4NzguLmMxYWE5ZGQ3YTY5
MzVlNmI5ODA1OWMwNDNiYjNjNGM4MGI0ZjQ2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgQXJnTGlzdDo6Z2V0U2xp
Y2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3QKICAgICByZXN1bHQgPSBB
cmdMaXN0KG1fYXJncyArIHN0YXJ0SW5kZXgsIG1fYXJnQ291bnQgLSBzdGFydEluZGV4KTsKIH0K
IAotdm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKEhlYXBSb290TWFya2VyJiBo
ZWFwUm9vdE1hcmtlciwgTGlzdFNldCYgbWFya1NldCkKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZm
ZXI6Om1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290TWFya2VyLCBMaXN0U2V0JiBt
YXJrU2V0KQogewogICAgIExpc3RTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1hcmtTZXQuZW5kKCk7CiAg
ICAgZm9yIChMaXN0U2V0OjppdGVyYXRvciBpdCA9IG1hcmtTZXQuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKaW5kZXggYTc5
NGEwNGNhZTMxYzY0NjViY2U0ODcwMmYxOWFiMDFhYjlmZWI5OS4uYmIyZDI4NDIxMjdhOTAyOGVi
MDVlMWZjNDY0MzIxNzkwNTRkYjdmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z0xpc3QuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBN
YXJrU3RhY2s7CisgICAgdHlwZWRlZiBNYXJrU3RhY2sgU2xvdFZpc2l0b3I7CiAKICAgICBjbGFz
cyBNYXJrZWRBcmd1bWVudEJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1h
cmtlZEFyZ3VtZW50QnVmZmVyKTsKQEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciAr
IG1fc2l6ZTsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhIZWFwUm9vdE1hcmtl
ciYsIExpc3RTZXQmKTsKKyAgICAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290Vmlz
aXRvciYsIExpc3RTZXQmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2xvd0FwcGVu
ZChKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CmluZGV4IGUyMDFiOTFmNTMwMWU3YzAzZWJkNDQ0NDYzZTA1YjQwNTM0YTI5YTQuLjgzOGZkMDlk
NGUzYzVmNWVmNGU5MGNkZGFhYWFiYjYzY2U3ZTZlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtNDMsMjIgKzQzLDIyIEBAIEFyZ3VtZW50czo6
fkFyZ3VtZW50cygpCiAgICAgICAgIGRlbGV0ZSBbXSBkLT5leHRyYUFyZ3VtZW50czsKIH0KIAot
dm9pZCBBcmd1bWVudHM6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQg
QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpT
T2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGls
ZHJlbih2aXNpdG9yKTsKIAogICAgIGlmIChkLT5yZWdpc3RlckFycmF5KQotICAgICAgICBtYXJr
U3RhY2suYXBwZW5kVmFsdWVzKGQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQtPm51bVBhcmFtZXRl
cnMpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhkLT5yZWdpc3RlckFycmF5LmdldCgp
LCBkLT5udW1QYXJhbWV0ZXJzKTsKIAogICAgIGlmIChkLT5leHRyYUFyZ3VtZW50cykgewogICAg
ICAgICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50cyA9IGQtPm51bUFyZ3VtZW50cyAtIGQtPm51
bVBhcmFtZXRlcnM7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoZC0+ZXh0cmFBcmd1
bWVudHMsIG51bUV4dHJhQXJndW1lbnRzKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
ZC0+ZXh0cmFBcmd1bWVudHMsIG51bUV4dHJhQXJndW1lbnRzKTsKICAgICB9CiAKLSAgICBtYXJr
U3RhY2suYXBwZW5kKCZkLT5jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5jYWxsZWUp
OwogCiAgICAgaWYgKGQtPmFjdGl2YXRpb24pCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmQt
PmFjdGl2YXRpb24pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+YWN0aXZhdGlvbik7CiB9
CiAKIHZvaWQgQXJndW1lbnRzOjpjb3B5VG9SZWdpc3RlcnMoRXhlY1N0YXRlKiBleGVjLCBSZWdp
c3RlciogYnVmZmVyLCB1aW50MzJfdCBtYXhTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuaAppbmRleCBiNWFhNDZiZjA3MjQwYTM4ODY1ZDY3OTE1MTc2MmMxZjVk
N2E2ZGYyLi45Njg2ZDhiNmNmZWEyMDU0YzM3YmFjOTViMjMxMTI3OGYyMzYzYTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtNzEsNyArNzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZv
aWQgZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiwgTWFya2VkQXJndW1lbnRCdWZmZXImKTsKIApAQCAt
OTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZv
aWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYg
Zmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBmYTE0YWQ1MDYw
ZTBlYTcwNWFlOTI0NTI2NGExNDNjODUwMDI5NTdiLi5jMTc5NDMwYmVjMzNmN2E5ZDQ0MjUwYWY3
ODE5YjEwZGViYmQ5YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtMTM1LDExICsxMzUsMTEgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxl
Ojpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGUK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBFdmFsRXhlY3V0YWJsZTo6bWFya0NoaWxkcmVuKE1h
cmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBTY3JpcHRFeGVjdXRhYmxlOjptYXJrQ2hpbGRy
ZW4obWFya1N0YWNrKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwogICAgIGlmIChtX2V2YWxDb2RlQmxvY2spCi0gICAgICAgIG1fZXZhbENvZGVCbG9jay0+
bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtX2V2YWxDb2RlQmxvY2stPnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOwogfQogCiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNo
ZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTIyMSwxMSArMjIxLDExIEBAIHN0YXRpYyBi
b29sIHRyeURGR0NvbXBpbGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSklUQ29kCiB9CiAjZW5kaWYKIAotdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBTY3JpcHRFeGVjdXRh
YmxlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOwogICAgIGlmIChtX3Byb2dyYW1Db2RlQmxvY2spCi0gICAgICAg
IG1fcHJvZ3JhbUNvZGVCbG9jay0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBt
X3Byb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQogCiBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpAQCAtMzIxLDEzICszMjEsMTMg
QEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVy
bmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIFNjcmlwdEV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIFNj
cmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgaWYgKG1fY29kZUJs
b2NrRm9yQ2FsbCkKLSAgICAgICAgbV9jb2RlQmxvY2tGb3JDYWxsLT5tYXJrQWdncmVnYXRlKG1h
cmtTdGFjayk7CisgICAgICAgIG1fY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRBZ2dyZWdhdGUodmlz
aXRvcik7CiAgICAgaWYgKG1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQotICAgICAgICBtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdC0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdC0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAKIHZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpkaXNjYXJkQ29kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggZmJlMzNjZjk4Mjg4ZjliYWM2NWNhZjA0OTc1ZjFh
N2E2ZmUyYmZlYy4uZThiNjlkMDk1OTBjYWVhMWEzMDBjNTY0NDJkMTJjMTRkYWUyYjUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMjM1LDEyICsy
MzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3Vu
ZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAg
ICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIEV2YWxFeGVjdXRhYmxl
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sKTsKIAogICAgICAgICBKU09iamVj
dCogY29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgT3duUHRyPEV2YWxD
b2RlQmxvY2s+IG1fZXZhbENvZGVCbG9jazsKICAgICB9OwpAQCAtMjgyLDEyICsyODIsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
TWFya0NoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUlu
dGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgT3duUHRyPFByb2dyYW1Db2RlQmxvY2s+
IG1fcHJvZ3JhbUNvZGVCbG9jazsKICAgICB9OwpAQCAtMzcwLDcgKzM3MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7
IHJldHVybiBtX3N5bWJvbFRhYmxlOyB9CiAKICAgICAgICAgdm9pZCBkaXNjYXJkQ29kZSgpOwot
ICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUqLCBEZWJ1Z2dl
ciosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCoqIGV4Y2VwdGlvbik7CiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAwKTsgfQogCkBAIC0zODEsNyArMzgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW5Ob2RlKik7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IFNj
cmlwdEV4ZWN1dGFibGU6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU2NyaXB0RXhl
Y3V0YWJsZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogICAgICAgICB1bnNpZ25lZCBtX251bUNhcHR1cmVkVmFyaWFibGVzIDogMzE7CiAg
ICAgICAgIGJvb2wgbV9mb3JjZVVzZXNBcmd1bWVudHMgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXggMmI5ZjQ0NDIzMWY4YTVkM2Uy
OTg5NTQ4ZWQ5ODQwYjBjNzMwMTU3Ny4uMzk3ZTkxOGM1MzY5YzA3NjZjZjUyN2U5MTI4Y2U5Mjg4
ODBhNTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuY3BwCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgR2V0
dGVyU2V0dGVyOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEdldHRl
clNldHRlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU0Nl
bGw6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKIAogICAgIGlmIChtX2dldHRlcikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
bV9nZXR0ZXIpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9nZXR0ZXIpOwogICAgIGlmICht
X3NldHRlcikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zZXR0ZXIpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9zZXR0ZXIpOwogfQogCiBib29sIEdldHRlclNldHRlcjo6aXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaAppbmRleCBhMjIyYzdhNGJhMWQ0ODA4ODQ5NjBkYmJmOGFmMjlkN2NkOGI3OGRmLi4w
ZDY1ZDFkMTNlNzcyZmE2NDlmNTlmMDc2NGZlMTg4YTczN2JhM2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBKU09iamVjdCogZ2V0dGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9nZXR0ZXIuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBzZXRHZXR0ZXIoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogZ2V0dGVyKSB7IG1fZ2V0dGVyLnNldChnbG9i
YWxEYXRhLCB0aGlzLCBnZXR0ZXIpOyB9CkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldFNldHRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBzZXR0ZXIpIHsgbV9zZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHNldHRlcik7IH0K
ICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdl
dHRlclNldHRlclR5cGUsIE92ZXJyaWRlc01hcmtDaGlsZHJlbiksIEFub255bW91c1Nsb3RDb3Vu
dCwgMCk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlLCBUeXBlSW5mbyhHZXR0ZXJTZXR0ZXJUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKICAgICAgICAgfQogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5kZXggMDE2NTQ4
ODViZDdiZDFlNTkzMjI1MGYyNjRjMzVmYzdlZmY3ZWViNS4uODhlOGU1ZTg2NGEwNWI4M2U0YTRi
OWRkNzBlYjBjZTY2YmMyNzVlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5m
byhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOworICAgICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRU
eXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyks
IEFub255bW91c1Nsb3RDb3VudCwgMCk7CiAgICAgICAgIH0KIAogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDRlMzY2NDFk
MGU1YzgwNWVjOWJmMGM4ZmQ2ZmYxMmQxYTU3ODE2NWUuLjgxZTE4YzE0YzlmNzY5NWZmMTFkYzk3
NmY3MTgwZWZjMzZhNGY2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsMTkgKzU4LDE5IEBAIEpTQWN0aXZhdGlvbjo6fkpTQWN0
aXZhdGlvbigpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkU3ltYm9sVGFibGUqPihtX3N5bWJvbFRh
YmxlKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBKU0FjdGl2YXRpb246Om1hcmtDaGlsZHJlbihNYXJr
U3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICAvLyBObyBuZWVkIHRvIG1h
cmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBSZWdpc3RlckZpbGUuCiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlckFycmF5ID0gbV9yZWdpc3RlckFycmF5
LmdldCgpOwogICAgIGlmICghcmVnaXN0ZXJBcnJheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bWFya1N0YWNrLmFwcGVuZFZhbHVlcyhyZWdpc3RlckFycmF5LCBtX251bVBhcmFtZXRlcnNNaW51
c1RoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIG1fbnVtUGFy
YW1ldGVyc01pbnVzVGhpcyk7CiAKICAgICAvLyBTa2lwIHRoZSBjYWxsIGZyYW1lLCB3aGljaCBz
aXRzIGJldHdlZW4gdGhlIHBhcmFtZXRlcnMgYW5kIHZhcnMuCi0gICAgbWFya1N0YWNrLmFwcGVu
ZFZhbHVlcyhyZWdpc3RlckFycmF5ICsgbV9udW1QYXJhbWV0ZXJzTWludXNUaGlzICsgUmVnaXN0
ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBtX251bUNhcHR1cmVkVmFycywgTWF5Q29udGFp
bk51bGxWYWx1ZXMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXkgKyBt
X251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNp
emUsIG1fbnVtQ2FwdHVyZWRWYXJzLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CiB9CiAKIGlubGlu
ZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQWN0aXZhdGlvbi5oCmluZGV4IDY1NjQyZjExMjYyYjM1ZTQ4Yzc3ZmRmZjliZTJm
MWIxZTY1YzY0Y2YuLjVmNGM5MzUxYzVlM2RlZTQxZWExMGRkYjZhODdhMzRhYTRkMmRkOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCkBAIC00NSw3
ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0FjdGl2YXRpb24oQ2FsbEZyYW1l
KiwgRnVuY3Rpb25FeGVjdXRhYmxlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTQWN0aXZhdGlvbigp
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykg
Y29uc3Q7CiAKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3Vu
dCwgJnNfaW5mbyk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTmVl
ZHNUaGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKaW5kZXggYmY2MTA5N2FjZjg4NThkNzI5MjczZjZkYjYyNjQ0ZDk5YzZj
MTJiMi4uODI5NjU5ODMyNTVmODZjNDk2Y2JlZDgxMTU1YmJlMTllNzdiYmY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTg1Nyw5ICs4NTcsOSBAQCB2
b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIGludCBjb3VudCkKICAg
ICAgICAgdmVjdG9yW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6bWFya0NoaWxkcmVu
KE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU0FycmF5Ojp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIG1hcmtDaGlsZHJlbkRpcmVjdChtYXJrU3RhY2spOwor
ICAgIHZpc2l0RGlyZWN0KHZpc2l0b3IpOwogfQogCiBzdGF0aWMgaW50IGNvbXBhcmVOdW1iZXJz
Rm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA4YmU4NTEzNmI0OWQxMDdmNWZiNmU5NTJkZmFjOTAy
OWU1NmZhYzZjLi5lODc3Yzc1NTE4NDllMzA1NzI1N2M0MmQ3NGJmOGUyMTg5NjdlZGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0xMjgsNyArMTI4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGlubGluZSB2b2lkIG1hcmtDaGlsZHJlbkRpcmVjdChNYXJrU3RhY2smIG1hcmtTdGFjayk7
CisgICAgICAgIGlubGluZSB2b2lkIHZpc2l0RGlyZWN0KFNsb3RWaXNpdG9yJik7CiAKICAgICAg
ICAgc3RhdGljIHB0cmRpZmZfdCBzdG9yYWdlT2Zmc2V0KCkKICAgICAgICAgewpAQCAtMTQxLDEy
ICsxNDEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICAg
ICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3ViY2xhc3NE
YXRhKHZvaWQqKTsKQEAgLTE4NSwxOSArMTg1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlu
bGluZSBib29sIGlzSlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTQ2VsbCogY2Vs
bCkgeyByZXR1cm4gY2VsbC0+dnB0cigpID09IGdsb2JhbERhdGEtPmpzQXJyYXlWUHRyOyB9CiAg
ICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNWYWx1
ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIGlzSlNBcnJheShnbG9iYWxEYXRhLCB2LmFzQ2Vs
bCgpKTsgfQogCi0gICAgaW5saW5lIHZvaWQgSlNBcnJheTo6bWFya0NoaWxkcmVuRGlyZWN0KE1h
cmtTdGFjayYgbWFya1N0YWNrKQorICAgIGlubGluZSB2b2lkIEpTQXJyYXk6OnZpc2l0RGlyZWN0
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgSlNPYmplY3Q6Om1hcmtDaGls
ZHJlbkRpcmVjdChtYXJrU3RhY2spOworICAgICAgICBKU09iamVjdDo6dmlzaXREaXJlY3Qodmlz
aXRvcik7CiAgICAgICAgIAogICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0b3Jh
Z2U7CiAKICAgICAgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IHN0ZDo6bWluKHN0b3Jh
Z2UtPm1fbGVuZ3RoLCBtX3ZlY3Rvckxlbmd0aCk7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmRW
YWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3IsIHVzZWRWZWN0b3JMZW5ndGgsIE1heUNvbnRhaW5OdWxs
VmFsdWVzKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3Is
IHVzZWRWZWN0b3JMZW5ndGgsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsKIAogICAgICAgICBpZiAo
U3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCkgewog
ICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLT5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBt
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKCZpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQt
PnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKaW5kZXggN2VlODcxYzFjNjkwMjRiN2Q0ODJiYTBjNTQ1MDJmNWE1ODUxOWYyMi4u
MThiNzU2NmRjZDdlNDgxYmJhOTMzZjEzN2ZhYzUwNzJmODJlZjJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CiAg
ICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHBsYWNlbWVudE5ld0Rlc3Rp
bmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbjsgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNab21iaWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmCkBAIC0xNzgsOSArMTc4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBKU0NlbGw6Om1h
cmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3N0
cnVjdHVyZSk7CiAgICAgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCmluZGV4IGExOGU5NzMwNmJiZjc0Nzg0OGJkOWZjMmNiNTliNTAyY2NiYTUyM2Mu
LjRlOWNkMzdkNWJlODRlZGYyNTVlMGM1YWMzMDY5ZTQ0MWU1NGFmYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMzMsMTYgKzEzMywxNiBA
QCBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgcmV0dXJuIG5hbWUoZXhlYyk7CiB9CiAKLXZvaWQgSlNGdW5jdGlvbjo6
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU0Z1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJl
bihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKLSAgICBt
YXJrU3RhY2suYXBwZW5kKCZtX3Njb3BlQ2hhaW4pOworICAgIHZpc2l0b3IuYXBwZW5kKCZtX3Nj
b3BlQ2hhaW4pOwogICAgIGlmIChtX2V4ZWN1dGFibGUpIHsKICAgICAgICAgLy8gRGVsaWdodGZ1
bCByYWNlIGNvbmRpdGlvbjogbV9leGVjdXRhYmxlIG1heSBub3QgaGF2ZSBiZWVuIGluaXRpYWxp
c2VkCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBob3N0IGZ1bmN0aW9uLCBhcyB0aGUgZXhlY3V0
YWJsZSBpc24ndCBuZWNlc3NhcmlseSBjcmVhdGVkIAogICAgICAgICAvLyB1bnRpbCBhZnRlciB0
aGUgZnVuY3Rpb24gaGFzIGJlZW4gYWxsb2NhdGVkLgotICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KCZtX2V4ZWN1dGFibGUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9leGVjdXRhYmxlKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApp
bmRleCAxNzRjZDM4NGU3MTQ1NDg0M2JlNWQyMzkwNDM5MjIxMWMzOTRhZjZiLi5iYTBhNzkyOGUx
Nzc3ODgxNDgzMzM4MGNlYTQ1MGFmMzkzZDJkYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAKICAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92
ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhw
bGljaXQgSlNGdW5jdGlvbihWUHRyU3RlYWxpbmdIYWNrVHlwZSk7CkBAIC05Nyw3ICs5Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIEpT
VmFsdWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCBiODI5NDlhYmVkYjhhNGI5OGM4YjA2OGZkYWZjZmVmZWFlODM3ODZiLi4yZTg0ZWQx
OTM5ODQzNjRjMzQ1Y2VjMzIzMmYyNGEzNjYzNTg4N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC03OCwxMCArNzgsMTAgQEAg
c3RhdGljIGNvbnN0IGludCBpbml0aWFsVGlja0NvdW50VGhyZXNob2xkID0gMjU1OwogLy8gUHJl
ZmVycmVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBlYWNoIHRpbWVvdXQgY2hlY2sK
IHN0YXRpYyBjb25zdCBpbnQgcHJlZmVycmVkU2NyaXB0Q2hlY2tUaW1lSW50ZXJ2YWwgPSAxMDAw
OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5lZWRl
ZChNYXJrU3RhY2smIG1hcmtTdGFjaywgV3JpdGVCYXJyaWVyPFQ+KiB2KQordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgdm9pZCB2aXNpdElmTmVlZGVkKFNsb3RWaXNpdG9yJiB2
aXNpdG9yLCBXcml0ZUJhcnJpZXI8VD4qIHYpCiB7CiAgICAgaWYgKCp2KQotICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKHYpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCh2KTsKIH0KIAogSlNHbG9i
YWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCkBAIC0zMDcsNjAgKzMwNyw2MCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJv
dG90eXBlKGdsb2JhbERhdGEsIG9iamVjdFByb3RvdHlwZSk7CiB9CiAKLXZvaWQgSlNHbG9iYWxP
YmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNWYXJp
YWJsZU9iamVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0KLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCAmbV9nbG9iYWxTY29wZUNoYWluKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmbV9tZXRob2RDYWxsRHVtbXkpOwotCi0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywg
Jm1fcmVnRXhwQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2Vy
cm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2V2YWxFcnJv
ckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9yYW5nZUVycm9y
Q29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3JlZmVyZW5jZUVy
cm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3N5bnRheEVy
cm9yQ29uc3RydWN0b3IpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3R5cGVFcnJv
ckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKLQotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2V2YWxGdW5jdGlv
bik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fY2FsbEZ1bmN0aW9uKTsKLSAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcHBseUZ1bmN0aW9uKTsKLQotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZtX29iamVjdFByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJm1fZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssICZtX2FycmF5UHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9i
b29sZWFuUHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9zdHJpbmdQ
cm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX251bWJlclByb3RvdHlw
ZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZGF0ZVByb3RvdHlwZSk7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fcmVnRXhwUHJvdG90eXBlKTsKLQotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssICZtX2FyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgJm1fYXJyYXlTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssICZtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRl
ZChtYXJrU3RhY2ssICZtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCAmbV9kYXRlU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9lbXB0eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJm1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZt
X2Z1bmN0aW9uU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9udW1i
ZXJPYmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1f
cmVnRXhwU3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2ludGVybmFs
RnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
dmlzaXRvcik7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2dsb2JhbFNjb3BlQ2hh
aW4pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbWV0aG9kQ2FsbER1bW15KTsKKwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwQ29uc3RydWN0b3IpOworICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5l
ZWRlZCh2aXNpdG9yLCAmbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9yYW5nZUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRJZk5lZWRl
ZCh2aXNpdG9yLCAmbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZp
c2l0b3IsICZtX1VSSUVycm9yQ29uc3RydWN0b3IpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9ldmFsRnVuY3Rpb24pOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fY2Fs
bEZ1bmN0aW9uKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FwcGx5RnVuY3Rpb24p
OworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9vYmplY3RQcm90b3R5cGUpOworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHZpc2l0
SWZOZWVkZWQodmlzaXRvciwgJm1fYXJyYXlQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fYm9vbGVhblByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9zdHJpbmdQcm90b3R5cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbnVt
YmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2RhdGVQcm90b3R5
cGUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmVnRXhwUHJvdG90eXBlKTsKKwor
ICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fYXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2
aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7CisgICAgdmlzaXRJ
Zk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNp
dElmTmVlZGVkKHZpc2l0b3IsICZtX2RhdGVTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQo
dmlzaXRvciwgJm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlz
aXRvciwgJm1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1f
ZnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fbnVtYmVy
T2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9yZWdF
eHBTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nT2JqZWN0
U3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUpOwogCiAgICAgaWYgKG1fcmVnaXN0ZXJBcnJheSkgewogICAgICAgICAvLyBP
dXRzaWRlIHRoZSBleGVjdXRpb24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBh
cmUgdG9ybiBvZmYsCiAgICAgICAgIC8vIHdlIGNhbiBtYXJrIHRoZSB0b3JuLW9mZiBhcnJheS4K
LSAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVyQXJyYXkuZ2V0KCksIG1f
cmVnaXN0ZXJBcnJheVNpemUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX3JlZ2lz
dGVyQXJyYXkuZ2V0KCksIG1fcmVnaXN0ZXJBcnJheVNpemUpOwogICAgIH0gZWxzZSBpZiAobV9y
ZWdpc3RlcnMpIHsKICAgICAgICAgLy8gRHVyaW5nIGV4ZWN1dGlvbiBvZiBnbG9iYWwgY29kZSwg
d2hlbiBvdXIgdmFyaWFibGVzIGFyZSBpbiB0aGUgcmVnaXN0ZXIgZmlsZSwKICAgICAgICAgLy8g
dGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyBob3cgbWFueSB2YXJpYWJsZXMgdGhlcmUgYXJlLCBh
bmQgcmVnaXN0ZXJzCiAgICAgICAgIC8vIHBvaW50cyB0byB3aGVyZSB0aGV5IGVuZCwgYW5kIHRo
ZSByZWdpc3RlcnMgdXNlZCBmb3IgZXhlY3V0aW9uIGJlZ2luLgotICAgICAgICBtYXJrU3RhY2su
YXBwZW5kVmFsdWVzKG1fcmVnaXN0ZXJzIC0gc3ltYm9sVGFibGUoKS5zaXplKCksIHN5bWJvbFRh
YmxlKCkuc2l6ZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9yZWdpc3RlcnMg
LSBzeW1ib2xUYWJsZSgpLnNpemUoKSwgc3ltYm9sVGFibGUoKS5zaXplKCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggMGUzNjkyMDg2MDkxZTM3ZWEyODIwYzA4MzdmNWE0YTkzODM2OWJkZS4uZDJhZDBhZDQ0NGJh
MzkyY2Q5YmQ0MGI0Zjc1YTIxZmM3MDM2Yjg4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
IAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gSlNW
YXJpYWJsZU9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ICsgMTsKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
VmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFi
bGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0
eUluZm8gewogICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKGNvbnN0IElkZW50aWZpZXIm
IGksIEpTVmFsdWUgdiwgdW5zaWduZWQgYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMjdmYzU2OWVhYWY5YjFmZThjYjY4ZmJiNDA0ODMyYTRm
NTk1Mjg1ZS4uODc0MmZkY2IwNGYxYTg3OTllNmEwYzJmMmJlOTViZjI2NTEyNTNhMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIFN0cmluZ2lmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IExvY2FsPFVu
a25vd24+JiByZXBsYWNlciwgY29uc3QgTG9jYWw8VW5rbm93bj4mIHNwYWNlKTsKICAgICBMb2Nh
bDxVbmtub3duPiBzdHJpbmdpZnkoSGFuZGxlPFVua25vd24+KTsKIAotICAgIHZvaWQgbWFya0Fn
Z3JlZ2F0ZShNYXJrU3RhY2smKTsKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
Jik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgSG9sZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA5Njc3ZjIzMjFlOWZiZTkxMGQ2NGI5NTUxYjkx
YjkzZGU0NDE5YTQ2Li4xYTZhZDI1ZWUxYWY1ZTk1YWMyZTE0ZWI4OGEzYTI4MmUyYmUzNDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02OCwxNyAr
NjgsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICB9CiB9CiAKLXZvaWQgSlNPYmpl
Y3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAg
IGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IG1hcmtTdGFjay5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKLSAgICBtYXJrU3RhY2subV9pc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKKyAgICBib29sIHdhc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRN
YXJrVmlvbGF0aW9uOworICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9s
YXRpb24gPSBmYWxzZTsKICNlbmRpZgogCi0gICAgbWFya0NoaWxkcmVuRGlyZWN0KG1hcmtTdGFj
ayk7CisgICAgdmlzaXREaXJlY3QodmlzaXRvcik7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgbWFy
a1N0YWNrLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1
bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA4
MDczNWY4YzQyMTA4MWEwMDk3N2Q0ZDNkZjMwNWVkMWU2YzQ4NTIwLi5kMjUwZGI2MTU0OWQyNWEz
NTJhZGExOTA5ODE3NzkyZmFhYzA3MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTc5LDggKzc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZy
aWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKLSAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIG1hcmtDaGlsZHJlbkRpcmVjdChNYXJrU3RhY2smIG1hcmtTdGFjayk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CisgICAgICAgIEFM
V0FZU19JTkxJTkUgdm9pZCB2aXNpdERpcmVjdChTbG90VmlzaXRvciYpOwogCiAgICAgICAgIC8v
IFRoZSBpbmxpbmUgdmlydHVhbCBkZXN0cnVjdG9yIGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVh
bCBmdW5jdGlvbiBkZWNsYXJlZAogICAgICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0
cyBpbiB0aGUgdnRhYmxlIGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sCkBAIC04MjAs
MTUgKzgyMCwxNSBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgYXNDZWxsKCktPnB1dChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpTT2Jq
ZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spCitBTFdBWVNfSU5M
SU5FIHZvaWQgSlNPYmplY3Q6OnZpc2l0RGlyZWN0KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgSlNDZWxsOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwogCiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSBwcm9wZXJ0
eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlU2l6ZSgpOwotICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3Rv
cmFnZVNpemUpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXpl
KTsKICAgICBpZiAobV9pbmhlcml0b3JJRCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9p
bmhlcml0b3JJRCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2luaGVyaXRvcklEKTsKIH0K
IAogLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCmluZGV4IGQ1YWYwNDQ2NTY3MTM0MTI0ZDZhZjVlZWJkYTA5YmVjYTcxMTlj
YjEuLmU2MDEwZGU5ZDdhODhlZDYzZGI4MmU0YjgyY2E1NjBkMDdlODdiMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwCkBAIC05NSwxMSArOTUsMTEgQEAgSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiAgICAgcmV0
dXJuIGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bWFya0No
aWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIG1hcmtTdGFjay5h
cHBlbmRWYWx1ZXMobV9qc1N0cmluZ3MuZ2V0KCksIG1fanNTdHJpbmdzU2l6ZSwgTWF5Q29udGFp
bk51bGxWYWx1ZXMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKG1fanNTdHJpbmdzLmdldCgp
LCBtX2pzU3RyaW5nc1NpemUsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsKICAgICBpZiAobV9jYWNo
ZWRQcm90b3R5cGVDaGFpbikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9jYWNoZWRQcm90
b3R5cGVDaGFpbik7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2NhY2hlZFByb3RvdHlwZUNo
YWluKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggYjg1N2RjMDlk
MDZiMjg4OTkxM2E1MDg1YjBiZjAzMWU4NGNmMWM4ZC4uMWE1NzM1MDMyMzg2YTJlMzg5NzQ0YjNm
YTM1YmE3ZDdlYzg3YWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwg
QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9wZXJ0eU5hbWVJdGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxk
cmVuKE1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIGJvb2wgZ2V0T2Zmc2V0KHNpemVfdCBpLCBpbnQmIG9mZnNl
dCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdGF0aWNTY29wZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0YXRpY1Njb3BlT2JqZWN0LmNwcAppbmRleCAzZDRkYzdjNmNlNWVhNzAyMDhhZWE2ZWYyMzUx
YjVkZmNjZDdlYjM3Li5kMDRlZTYyZjhkZTkwNzNmZTExMjZlMmUxMTdjMGVjZDFkZjZhMTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmNwcApAQCAtMzAsMTAgKzMwLDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIEFTU0VSVF9D
TEFTU19GSVRTX0lOX0NFTEwoSlNTdGF0aWNTY29wZU9iamVjdCk7CiAKLXZvaWQgSlNTdGF0aWNT
Y29wZU9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU1N0
YXRpY1Njb3BlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEpTVmFyaWFibGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtT
dGFjay5hcHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CisgICAgSlNWYXJpYWJsZU9iamVjdDo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWdpc3RlclN0b3Jl
KTsKIH0KIAogSlNPYmplY3QqIEpTU3RhdGljU2NvcGVPYmplY3Q6OnRvVGhpc09iamVjdChFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKaW5kZXggOGMzYTI0OTVjNjgwM2MwN2Q1NTEwNWY0ZGZm
ZjMzNDI3N2QwZDVkZi4uYjIwMWZlMDU2NzZiMmYxNzE3MWE3NGNhZWE0MThhOTlhZjMxYzkyOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICAgICAgc3lt
Ym9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KC0xLCBhdHRyaWJ1
dGVzKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1h
cmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0No
ZWNrcykgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVj
U3RhdGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVj
dChFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQ3sKICAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN5bWJvbFRhYmxlIG1f
c3ltYm9sVGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
aW5kZXggYWNkZTgxZjE3OGVlMzMxOTFhZTFkMTYxYjY2ZTEyNWYzYmU5MjM2OC4uYTE4Yzc1Nzhi
MTUxNGE2NzJmYjYxNmJkZTQzNWUxMWUxZWU2MzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZUluZm8uaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9
IDEgPDwgMzsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTmVlZHNUaGlzQ29udmVyc2lvbiA9
IDEgPDwgNDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90ID0gMSA8PCA1OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNNYXJr
Q2hpbGRyZW4gPSAxIDw8IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gPSAxIDw8IDY7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgPSAxIDw8IDc7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElz
SlNGaW5hbE9iamVjdCA9IDEgPDwgODsKIApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGZsYWdzIDw9IDB4MUZGKTsKICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlIDw9IDB4RkYpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUgPj0g
Q29tcG91bmRUeXBlIHx8ICEoZmxhZ3MgJiBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pKTsKKyAgICAg
ICAgICAgIEFTU0VSVCh0eXBlID49IENvbXBvdW5kVHlwZSB8fCAhKGZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbikpOwogICAgICAgICAgICAgLy8gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSBtZWFucyAoSW1wbGVtZW50c0hhc0luc3RhbmNlICYgIU92ZXJyaWRlc0hhc0luc3RhbmNl
KQogICAgICAgICAgICAgaWYgKChtX2ZsYWdzICYgKEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92
ZXJyaWRlc0hhc0luc3RhbmNlKSkgPT0gSW1wbGVtZW50c0hhc0luc3RhbmNlKQogICAgICAgICAg
ICAgICAgIG1fZmxhZ3MgfD0gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZTsKQEAgLTY3LDcg
KzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzSGFzSW5zdGFu
Y2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzSGFzSW5zdGFuY2U7IH0KICAg
ICAgICAgYm9vbCBuZWVkc1RoaXNDb252ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAm
IE5lZWRzVGhpc0NvbnZlcnNpb247IH0KICAgICAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90OyB9Ci0gICAgICAgIGJvb2wgb3ZlcnJpZGVzTWFya0NoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc01hcmtDaGlsZHJlbjsgfQorICAgICAgICBib29sIG92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbjsgfQogICAgICAgICBib29sIG92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsgfQog
ICAgICAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICAg
ICAgdW5zaWduZWQgaXNGaW5hbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MyICYmIChJc0pTRmlu
YWxPYmplY3QgPj4gOCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV3JhcHBlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuY3BwCmluZGV4IDZjNzNiMmYwZGE4YTU4MGUxZTEwZDFiY2U4ZTMwOGQ0
ZmMxODZjNDAuLjJiZjRhOTA0NTg5YzJhZGEwYmZjOGY2ODZkN2VkNTZiYmY2YzgyYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcApA
QCAtMjYsMTEgKzI2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTV3JhcHBlck9iamVjdCk7CiAKLXZvaWQgSlNXcmFwcGVyT2JqZWN0OjptYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spIAordm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpIAogewotICAgIEpTT2JqZWN0OjptYXJrQ2hp
bGRyZW4obWFya1N0YWNrKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
ICAgICBpZiAobV9pbnRlcm5hbFZhbHVlKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2lu
dGVybmFsVmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9pbnRlcm5hbFZhbHVlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV3JhcHBlck9iamVjdC5oCmluZGV4IGE3ZGJlMGQ5MDJlZmI5MDllZWE2ZTFiNWRkMDA4
NWZmMTBmYjI3ZDMuLjg5NzI2NDg2NTg0ZjQwNzUzNTI1YTVkOWE4MjAxNDgwYzczZDAxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBA
IC00MiwxMCArNDIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzTWFya0NoaWxkcmVuIHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IAogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRlcm5hbFZhbHVlOwogICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRleCAwNTU5Yjk2OTRi
ODkzMGNkMDFhMzcxNTAxN2JmOTkyYTA4YWQ1OTE5Li43OTUwMzZlYTFhMzMxODRlZTBkZDdmZDI0
Nzk5ZjkxNGY1MmQ0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1pvbWJpZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmll
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVy
KEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwLjA7IH0K
ICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3QgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuICIiOyB9CiAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmpl
Y3QoRXhlY1N0YXRlKikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNp
Z25lZCwgSlNWYWx1ZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDljZDVk
Y2JmN2YzNWQyZDRiYThiMTRhNWZlMmM2YTBkYTQ5ZGVhYWQuLjVjNGYwMDkyMDQxOWUyMDViN2I3
MWI1ODU2Zjg2ZTFjZTA2NmU2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC00NiwxMSArNDYsMTEg
QEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KgogICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKIH0KIAotdm9pZCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgSW50ZXJuYWxGdW5jdGlvbjo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgSW50
ZXJuYWxGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKICAgICBpZiAobV9lcnJvclN0
cnVjdHVyZSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lcnJvclN0cnVjdHVyZSk7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Vycm9yU3RydWN0dXJlKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IGU5NmRhZjY0NGZhNGEwYTlk
NDNhYTkxMDlmNWIwOTkzNTI4MzA4ZDcuLjRmYjE2ZjFhMzgyZThiNGM2NjExOTUxNjI4MmZiMTY4
NzczMmY1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTQzLDEwICs0MywxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JT
dHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IEludGVybmFs
RnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSW50ZXJuYWxGdW5jdGlv
bjo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRD
YWxsRGF0YShDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1h
cmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCmluZGV4IGQ4MjRlY2RiMDhiZTM4YzljYjBmZjUzODVmNjQ2YzEyMTU0NWIyYmYuLmZmYzAx
MTJmMGE5OTNlNGE5OWQ3M2JkOTFhZTA4MjdjODg4MGJmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzIsMTEgKzcyLDExIEBAIFJl
Z0V4cE9iamVjdDo6flJlZ0V4cE9iamVjdCgpCiB7CiB9CiAKLXZvaWQgUmVnRXhwT2JqZWN0Ojpt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIFJlZ0V4cE9iamVjdDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRy
ZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAgIGlm
IChVTkxJS0VMWSghZC0+bGFzdEluZGV4LmdldCgpLmlzSW50MzIoKSkpCi0gICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoJmQtPmxhc3RJbmRleCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5s
YXN0SW5kZXgpOwogfQogCiBib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CmluZGV4IDQyNzRmZmY0MTQ5MWQyZTU2NjU5NTgzMWU1NGM2NjU4MGRiZmRjYTguLmEwODAzZWJk
YWQxZjI2NmNhYjkwZGQxM2E5NmVhY2VkMTY3NTYyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC02NCwxMCArNjQsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCiAgICAgICAgIGJvb2wg
bWF0Y2goRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5jcHAKaW5kZXggMDI2ZDcyOTE5ZTFlZjViMWQ4ZWI2YjhmYTg0Nzg5NmFkZjE0ODJj
Ni4uZWQ2MGJiMTU5YWJmODcwZTQ5ZDI2YThmYTJmYjQxZDUxZGU4NGY3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5jcHAKQEAgLTY3LDEzICs2NywxMyBA
QCBpbnQgU2NvcGVDaGFpbk5vZGU6OmxvY2FsRGVwdGgoKQogICAgIHJldHVybiBzY29wZURlcHRo
OwogfQogCi12b2lkIFNjb3BlQ2hhaW5Ob2RlOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCit2b2lkIFNjb3BlQ2hhaW5Ob2RlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIGlmIChuZXh0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZuZXh0
KTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKCZvYmplY3QpOwotICAgIG1hcmtTdGFjay5hcHBlbmQo
Jmdsb2JhbE9iamVjdCk7Ci0gICAgbWFya1N0YWNrLmFwcGVuZCgmZ2xvYmFsVGhpcyk7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZuZXh0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmb2JqZWN0KTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmZ2xvYmFsT2JqZWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
Z2xvYmFsVGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCmluZGV4IGQwYTI2NzJiNjE4MGYxOWJiMTFmN2VmMmQ5
NWY4ZWJmMmU1NGRiNjAuLjg0ODFiZGNkYWU2MzQzNzIxNzZhMzE0MDIxZTE1ZGE5OWNkMzViYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKQEAgLTMyLDYg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3Mg
TWFya1N0YWNrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKKyAgICB0eXBlZGVmIE1h
cmtTdGFjayBTbG90VmlzaXRvcjsKICAgICAKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZSA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKQEAgLTY2LDkgKzY3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtD
aGlsZHJlbjsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5jcHAKaW5kZXggYWM2NzAyMDBhZjFiNjE4OGQxOGQxYzRhODVjZGU2MmRlMDY2N2Zm
NS4uODc0MWU5YmQyOWE1MzIyMGQ5MTZmOTk3MWMyMDI3OGZiMDRkZTFlNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCkBAIC03NCw3ICs3NCw3
IEBAIFNtYWxsU3RyaW5nczo6flNtYWxsU3RyaW5ncygpCiB7CiB9CiAKLXZvaWQgU21hbGxTdHJp
bmdzOjptYXJrQ2hpbGRyZW4oSGVhcFJvb3RNYXJrZXImIGhlYXBSb290TWFya2VyKQordm9pZCBT
bWFsbFN0cmluZ3M6OnZpc2l0Q2hpbGRyZW4oSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdE1hcmtl
cikKIHsKICAgICAvKgogICAgICAgIE91ciBoeXBvdGhlc2lzIGlzIHRoYXQgc21hbGwgc3RyaW5n
cyBhcmUgdmVyeSBjb21tb24uIFNvLCB3ZSBjYWNoZSB0aGVtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4IGI1NGQwMjBjZTM5YjFhMjI4NDQ2NTc2
MmYxNGI4N2NkZmZhNGE2NzIuLjE3NjA3YmJhMTFkMGJiMWMwNmEzNzRmMjdkYTY1MTczMGNlMGY4
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBA
IC0zMywxMSArMzMsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBIZWFwUm9v
dE1hcmtlcjsKKyAgICBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7CiAgICAgY2xhc3MgSlNHbG9iYWxE
YXRhOwogICAgIGNsYXNzIEpTU3RyaW5nOwogICAgIGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFz
cyBTbWFsbFN0cmluZ3NTdG9yYWdlOworICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9y
OwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNpbmdsZUNoYXJhY3RlclN0cmluZyA9
IDB4RkY7CiAKQEAgLTYzLDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU3Ry
aW5nSW1wbCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVy
KTsKIAotICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihIZWFwUm9vdE1hcmtlciYpOworICAgICAg
ICB2b2lkIHZpc2l0Q2hpbGRyZW4oSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgICAgIHZvaWQgY2xl
YXIoKTsKIAogICAgICAgICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZGNjOGU3YzkwYzRkOTgwODFmYzE2
MmEzOTM2OGEzY2Q3NWZmMWU2NC4uN2FhYmYwMGQ5ZjJkOThhZDRmYjMzNWM4NTlmMWM5N2VjY2Q0
ODJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBA
IC0xOTgsNyArMTk4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAi
U3RydWN0dXJlIiwgMCwgMCwgMCB9OwogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgdGhpcykKLSAgICAsIG1f
dHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pCisgICAgLCBtX3R5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbikKICAgICAsIG1fcHJv
dG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oJnNf
aW5mbykKICAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoMCkKQEAgLTc2NSwyNCArNzY1
LDI0IEBAIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkmIHByCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVy
ZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBTdHJ1Y3R1cmU6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNDZWxsOjptYXJrQ2hp
bGRyZW4obWFya1N0YWNrKTsKKyAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAg
ICAgaWYgKG1fcHJvdG90eXBlKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3Byb3RvdHlw
ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3Byb3RvdHlwZSk7CiAgICAgaWYgKG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4pCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRQcm90b3R5cGVD
aGFpbik7CiAgICAgaWYgKG1fcHJldmlvdXMpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1f
cHJldmlvdXMpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9wcmV2aW91cyk7CiAgICAgaWYg
KG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1f
c3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAgaWYgKG1fZW51bWVyYXRpb25DYWNoZSkKLSAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmbV9lbnVtZXJhdGlvbkNhY2hlKTsKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJm1fZW51bWVyYXRpb25DYWNoZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkg
ewogICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3Byb3BlcnR5VGFibGUt
PmVuZCgpOwogICAgICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIHB0ciA9IG1fcHJv
cGVydHlUYWJsZS0+YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgIGlm
IChwdHItPnNwZWNpZmljVmFsdWUpCi0gICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
cHRyLT5zcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRy
LT5zcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZmU5Y2U2Yjc0MzEyYzdhY2M2M2I0MDk1N2Nm
YjVkZmIxY2E4ZjA1OS4uMjcwNjVhOGViM2IxODJiYjE1OThlM2U1YzZlZGEzNDY0ZWIwNWIyMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTQ3LDYgKzQ3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAg
Y2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwor
ICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwogCiAgICAgc3RydWN0IENsYXNzSW5m
bzsKIApAQCAtOTksNyArMTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUg
c3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIHZvaWQgdmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYpOwogCiAgICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCmluZGV4IGFkNmFiZmY4MTYwMzk0
ZDY0MGM0OGJlMjUxMjMzMWI1YmVkMzg5MjIuLjA2Mjk1MWRjOWRiM2Q0NjQ2NzlkODc1OTMzNDAw
NzRmNmQzYWNmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBTdHJ1Y3R1cmVDaGFpbjo6flN0cnVj
dHVyZUNoYWluKCkKIHsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVDaGFpbjo6bWFya0NoaWxkcmVuKE1h
cmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgd2hpbGUgKG1f
dmVjdG9yW2ldKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3ZlY3RvcltpKytdKTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fdmVjdG9yW2krK10pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
CmluZGV4IGI5ODRiZTZhNmRjOGE2N2JiODAxN2E2MTQxMGZiOTU0ODVkZTQ3N2MuLjUwMzIzZmQ0
NWFmM2UxZDI4ZDhkM2I4ZGVhYzU1ZWE2ZGMyNDdhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNDQsOSArNDQsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKSB7IHJldHVybiBu
ZXcgKCZnbG9iYWxEYXRhKSBTdHJ1Y3R1cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0
cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBoZWFkKTsgfQogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9Ci0gICAgICAg
IHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21w
b3VuZFR5cGUsIE92ZXJyaWRlc01hcmtDaGlsZHJlbiksIDAsICZzX2luZm8pOyB9CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxE
YXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiksIDAsICZzX2luZm8pOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmVD
aGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGhlYWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cKaW5kZXggM2I4YWJkZDUyM2EzNjEyNmM2MTE3NmJkNGIzOTcxMTcwMGVi
YjEwZi4uZTk1NTgyNThhYjQzOTAwMGFmODZjOTVhODY3NmQ3MWZkMmZkZGNkMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMjEgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTdGFydCBtb3ZpbmcgdG8gYSBnZW5lcmFsIHZpc2l0b3IgcGF0dGVybiBm
b3IgR0MgdHJhdmVyc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTE0MQorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlbmFtZToKKyAgICAgICAg
ICAgIG1hcmtDaGlsZHJlbiAtPiB2aXNpdENoaWxkcmVuCisgICAgICAgICAgICBtYXJrQWdncmVn
YXRlIC0+IHZpc2l0QWdncmVnYXRlCisgICAgICAgICAgICBtYXJrU3RhY2sgLT4gdmlzaXRvcgor
ICAgICAgICAgICAgTWFya1N0YWNrIC0+IHR5cGVkZWYnZCB0byBTbG90VmlzaXRvcgorCisgICAg
ICAgICogVXNlck9iamVjdEltcC5jcHA6CisgICAgICAgIChVc2VyT2JqZWN0SW1wOjp2aXNpdENo
aWxkcmVuKToKKwogMjAxMS0wNC0xOSAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
VXNlck9iamVjdEltcC5jcHAKaW5kZXggYzkzNzQ4ZjAwMTBhN2ZjNmVlZmIwMzM2NTEyYjNhM2M1
NzRhOGE2Mi4uYWQzNjkzYjNhZDEzMDVlMGE5YzI0NmViNmM5OTgxMzM2MWUwZjRiZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcApAQCAtNDA0LDkgKzQwNCw5IEBAIFVT
dHJpbmcgVXNlck9iamVjdEltcDo6dG9TdHJpbmcoRXhlY1N0YXRlICpleGVjKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgVXNlck9iamVjdEltcDo6bWFya0NoaWxkcmVuKE1h
cmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBVc2VyT2JqZWN0SW1wOjp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0
YWNrKTsKKyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKICAgICBpZiAoZkpT
VXNlck9iamVjdCkKICAgICAgICAgZkpTVXNlck9iamVjdC0+TWFyaygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKaW5kZXggOWJkNmYwZmUwNjRmMTYyNDY4YjAyMzE4N2U4
OTFkNTZjZWVmNmVmMy4uNWUwZjhlZDkyMDc2NzZlNmE1MzliZTJiN2Q4NmY4MmNjYzYwOGYxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCkBAIC01NCwxMyArNTQsMTMgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSAqZXhlYykgY29u
c3Q7CiAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICBKU1VzZXJPYmplY3Qg
KkdldEpTVXNlck9iamVjdCgpIGNvbnN0OwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBP
dmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKSwgQW5vbnlt
b3VzU2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3OWVhMTJjNjhmYjMzNmQ4OWQ4OGM1NTg3NWZiYTkyNmMzOTJm
M2EyLi40NDMxMDc1OWY2ODY3NjYyNDU2ZWE5NDI2MzkwOGNlYzczY2Y2YThkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTE4IEBACisyMDExLTA0LTIxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RhcnQgbW92aW5nIHRvIGEgZ2VuZXJhbCB2aXNpdG9yIHBhdHRlcm4gZm9yIEdDIHRyYXZlcnNh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDEK
KworICAgICAgICBUaGlzIGlzIGp1c3QgYSByZW5hbWU6CisgICAgICAgICAgICBtYXJrQ2hpbGRy
ZW4gLT4gdmlzaXRDaGlsZHJlbgorICAgICAgICAgICAgbWFya0FnZ3JlZ2F0ZSAtPiB2aXNpdEFn
Z3JlZ2F0ZQorICAgICAgICAgICAgbWFya1N0YWNrIC0+IHZpc2l0b3IKKyAgICAgICAgICAgIE1h
cmtTdGFjayAtPiB0eXBlZGVmJ2QgdG8gU2xvdFZpc2l0b3IKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQXR0ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F0dHI6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RBdWRpbyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDU1NSdWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnZpc2l0QWN0aXZlT2JqZWN0c0ZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFya0RPTU9iamVjdFdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01JbXBsZW1lbnRhdGlvbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1
bWVudDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRWxlbWVudDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRXZlbnRMaXN0ZW5lcjo6bWFya0pTRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVu
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MTGlua0VsZW1lbnQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxTdHlsZUVsZW1lbnQ6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RJbWFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNK
YXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSmF2YVNj
cmlwdEF1ZGlvTm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFu
bmVsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05hdmlnYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JzZXJ2YWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjppc1JlYWNoYWJsZUZyb21ET00pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNOb2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTm9kZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6V2Vha093bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNOb2RlSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTU1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3R5bGVTaGVldDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYktpdEFuaW1hdGlvbkxpc3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hN
TEh0dHBSZXF1ZXN0VXBsb2FkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0SW5zdGFuY2U6Om1hcmtBZ2dyZWdh
dGUpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5oOgorICAgICAgICAqIGJyaWRn
ZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcDoKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGlt
ZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyOjp2
aXNpdEpTRnVuY3Rpb24pOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnZpc2l0SlNFdmVudExpc3RlbmVycyk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZUZpbHRlckNvbmRpdGlvbjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6
CisKIDIwMTEtMDQtMjEgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXR0ckN1c3RvbS5jcHAKaW5kZXggMzA1ZGM4MWI0NDNhZWJlZDEzOGRlODJhODc0ZDE4NzE1
MDIzNTIwYS4uMWNkMzM1OTA5MzMzNmFjMTRlYWU1YTQ0ZmM1YTRjMjUwYzdlYmFlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCkBAIC0zOSwxNCArMzks
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci12b2lkIEpTQXR0cjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBK
U0F0dHI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6
bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBpbXBsKCktPm93bmVyRWxlbWVudCgpOwogICAg
IGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIG1hcmtTdGFjay5hZGRPcGFxdWVS
b290KHJvb3QoZWxlbWVudCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChyb290KGVsZW1l
bnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOWFjNzk3YjFkZTg5ODA4
NTkxMWNlOWUyOTg1NGVkMWZmMjUwN2Q4Zi4uMzk4OGZkZDcxZTcwZTkwODRlZTNkZDQzYTYwZmE1
YTgxZjAzZDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
Q29uc3RydWN0b3IuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEF1ZGlvKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQXVkaW8g
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKIAogICAg
IC8vIENhbGxpbmcgdG9KUyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIHRoZSBKUyBkb2N1bWVudCB3
cmFwcGVyIHRvIGJlCi0gICAgLy8gYWRkZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QuIFRoaXMgaXMg
ZG9uZSB0byBlbnN1cmUgdGhhdCBKU0RvY3VtZW50OjptYXJrQ2hpbGRyZW4KKyAgICAvLyBhZGRl
ZCB0byB0aGUgd2luZG93IG9iamVjdC4gVGhpcyBpcyBkb25lIHRvIGVuc3VyZSB0aGF0IEpTRG9j
dW1lbnQ6OnZpc2l0Q2hpbGRyZW4KICAgICAvLyB3aWxsIGJlIGNhbGxlZCwgd2hpY2ggd2lsbCBj
YXVzZSB0aGUgYXVkaW8gZWxlbWVudCB0byBiZSBtYXJrZWQgaWYgbmVjZXNzYXJ5LgogICAgIHRv
SlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGRvY3VtZW50KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggMDNk
Mjk2MDdiZGJiZjhlNjdkZThkZjViZTRhOGU5MzMzNWMyNTkyZC4uN2Q0MTcxMjEyZTZiZGUyM2Mx
OTRkM2Y4ZTczZDZiNzMxNjdiOWM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1J1bGVDdXN0b20uY3BwCkBAIC03OSwxMCArNzksMTAgQEAgaW5saW5lIHZvaWQqIHdy
YXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIENTU1J1bGUqKQogICAgIHJldHVy
biB3b3JsZDsKIH0KIAotdm9pZCBKU0NTU1J1bGU6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgSlNDU1NSdWxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtTdGFj
ay5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKIH0KIAog
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ1NTUnVsZSogcnVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IGU0NmE0OTIyNzA5
MmM5NTk5MzE0YTY0MmNkNDU3MjMyNDg5NDg5MDMuLjNiYjM1NzFiN2E4YjVjMzgxNDE5MmQxZmU5
NWE4NmM4ZDM4NmUwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtNzMsMTAgKzczLDEwIEBA
IGlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBDU1NT
dHlsZURlY2xhcmF0aW9uKikKICAgICByZXR1cm4gd29ybGQ7CiB9CiAKLXZvaWQgSlNDU1NTdHls
ZURlY2xhcmF0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYWRk
T3BhcXVlUm9vdChyb290KGltcGwoKSkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRv
cik7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CiB9CiAKIC8vIENo
ZWNrIGZvciBhIENTUyBwcmVmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAppbmRleCA1YWMwN2E3NTgyNDEyMzRiNTU4ZGNiZDg2YjYxNzM3ZGYzOGU2MTc4
Li5lNDBjYWVkMWVjYjJmY2E5YzI3MDViNWIxMjM5ZDhhNjBkOTcwNzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBj
b25zdCBKU0M6Okhhc2hUYWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0CiAgICAgcmV0dXJuIERPTU9iamVjdEhhc2hUYWJsZU1hcDo6
bWFwRm9yKGdsb2JhbERhdGEpLmdldChzdGF0aWNUYWJsZSk7CiB9CiAKLXZvaWQgbWFya0FjdGl2
ZU9iamVjdHNGb3JDb250ZXh0KE1hcmtTdGFjayYgbWFya1N0YWNrLCBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Cit2b2lkIHZpc2l0QWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICAvLyBJZiBhbiBlbGVtZW50IGhhcyBwZW5kaW5nIGFj
dGl2aXR5IHRoYXQgbWF5IHJlc3VsdCBpbiBldmVudCBsaXN0ZW5lcnMgYmVpbmcgY2FsbGVkCiAg
ICAgLy8gKGUuZy4gYW4gWE1MSHR0cFJlcXVlc3QpLCB3ZSBuZWVkIHRvIGtlZXAgSlMgd3JhcHBl
cnMgYWxpdmUuCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckNv
bnRleHQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwKICAg
ICAgICAgaWYgKGl0ZXItPmZpcnN0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkgewogICAgICAgICAg
ICAgLy8gR2VuZXJhbGx5LCBhbiBhY3RpdmUgb2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBt
dXN0IGhhdmUgYSB3cmFwcGVyIHRvIG1hcmsgaXRzIGxpc3RlbmVycy4KICAgICAgICAgICAgIC8v
IEhvd2V2ZXIsIHNvbWUgQWN0aXZlRE9NT2JqZWN0cyBkb24ndCBoYXZlIEpTIHdyYXBwZXJzLgot
ICAgICAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBp
dGVyLT5zZWNvbmQpOworICAgICAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwg
Z2xvYmFsRGF0YSwgaXRlci0+c2Vjb25kKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU0LDEx
ICsxNTQsMTEgQEAgdm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoTWFya1N0YWNrJiBt
YXJrU3RhY2ssIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwKICAgICBmb3IgKEhhc2hTZXQ8TWVz
c2FnZVBvcnQqPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1lc3NhZ2VQb3J0cy5iZWdpbigpOyBp
dGVyICE9IHBvcnRzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gSWYgdGhlIG1lc3NhZ2UgcG9y
dCBpcyByZW1vdGVseSBlbnRhbmdsZWQsIHRoZW4gYWx3YXlzIG1hcmsgaXQgYXMgaW4tdXNlIGJl
Y2F1c2Ugd2UgY2FuJ3QgZGV0ZXJtaW5lIHJlYWNoYWJpbGl0eSBhY3Jvc3MgdGhyZWFkcy4KICAg
ICAgICAgaWYgKCEoKml0ZXIpLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpIHx8ICgqaXRlciktPmhh
c1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFy
a1N0YWNrLCBnbG9iYWxEYXRhLCAqaXRlcik7CisgICAgICAgICAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCAqaXRlcik7CiAgICAgfQogfQogCi12b2lkIG1hcmtE
T01PYmplY3RXcmFwcGVyKE1hcmtTdGFjayYgbWFya1N0YWNrLCBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIHZvaWQqIG9iamVjdCkKK3ZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoU2xvdFZpc2l0
b3ImIHZpc2l0b3IsIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgdG8gb25seSBtYXJrIHdyYXBwZXJz
IHRoYXQgYXJlICJvYnNlcnZhYmxlIgogICAgIC8vIGFzIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50
IGRvZXMsIGFsbG93aW5nIHVzIHRvIGNvbGxlY3QgbW9yZSB3cmFwcGVycywKQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKE1hcmtTdGFjayYgbWFya1N0YWNrLCBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqCiAKICAgICBmb3IgKEpTR2xvYmFsRGF0YVdv
cmxkSXRlcmF0b3Igd29ybGRJdGVyKCZnbG9iYWxEYXRhKTsgd29ybGRJdGVyOyArK3dvcmxkSXRl
cikgewogICAgICAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0gd29ybGRJdGVyLT5tX3dy
YXBwZXJzLmdldChvYmplY3QpLmdldCgpKQotICAgICAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0
ZWRBcHBlbmQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJndyYXBwZXIpKTsKKyAgICAgICAg
ICAgIHZpc2l0b3IuZGVwcmVjYXRlZEFwcGVuZChyZWludGVycHJldF9jYXN0PEpTQ2VsbCoqPigm
d3JhcHBlcikpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAppbmRleCA4MDM0MjlmZWM4YTRhNGM1MjBlMzdiMTQzN2MxY2QyZDZiZTg3ZGIxLi5l
NTQwNWRmY2ZiMDMyNzRjNGY4MDFjNmRkZWVkNjQ3MjQyY2U1MGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBKU0M6Ok92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IEpTRE9NV3JhcHBlcldpdGhHbG9iYWxQb2lu
dGVyOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0M6Ok92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBKU0RPTVdyYXBwZXJXaXRoR2xvYmFsUG9pbnRlcjo6U3RydWN0dXJlRmxh
Z3M7CiAgICAgICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICA6IEpTRE9N
V3JhcHBlcldpdGhHbG9iYWxQb2ludGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgICAg
ICB7CkBAIC0xMTMsOCArMTEzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAg
ICAgfTsKICAgICAKLSAgICB2b2lkIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dChKU0M6Ok1h
cmtTdGFjayYsIEpTQzo6SlNHbG9iYWxEYXRhJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwot
ICAgIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNDOjpNYXJrU3RhY2smLCBKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KTsKKyAgICB2b2lkIHZpc2l0QWN0aXZl
T2JqZWN0c0ZvckNvbnRleHQoSlNDOjpTbG90VmlzaXRvciYsIEpTQzo6SlNHbG9iYWxEYXRhJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIo
SlNDOjpTbG90VmlzaXRvciYsIEpTQzo6SlNHbG9iYWxEYXRhJiwgdm9pZCopOwogCiAgICAgSlND
OjpTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCosIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvKik7CiAgICAgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0
dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNz
SW5mbyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDNlM2QwMzc3MmI4OGExZDEwNWIwMjM4MjhlYTQ4YTZjZDE2NTJkZjMuLjMy
ODBhNjJlYzBiYmYzYzdhMzc3ZjVmZGRiNjRjOWZjOGQyNjllMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDIwICs1MCwy
MCBAQCBKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZv
KSk7CiB9CiAKLXZvaWQgSlNET01HbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKK3ZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIEpTRE9NU3RydWN0dXJlTWFw
OjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7CiAgICAgZm9yIChKU0RPTVN0cnVj
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpdC0+c2Vjb25kKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJml0LT5zZWNvbmQpOwogCiAgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRl
cmF0b3IgZW5kMiA9IGNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1
Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVu
ZDI7ICsraXQyKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpdDItPnNlY29uZCk7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZpdDItPnNlY29uZCk7CiAKICAgICBpZiAobV9pbmplY3RlZFNj
cmlwdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9pbmplY3RlZFNjcmlwdCk7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2luamVjdGVkU2NyaXB0KTsKIH0KIAogdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBjdXJyZW50RXZlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCA5MTkwZTAx
YjM2NGQzYzUzOTIyM2I0NDEyMzIwOGNhZmM2ZmRkYzc4Li4xYTFhZDRlM2E1N2FlNTFiZjQyMmYy
NzMzOGI5YWU3YWY0MTNlNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0KEpTT2JqZWN0Kik7CiAgICAgICAgIEpTT2Jq
ZWN0KiBpbmplY3RlZFNjcmlwdCgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJr
Q2hpbGRyZW4oSlNDOjpNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDOjpTbG90VmlzaXRvciYpOwogCiAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAKaW5kZXggYWEz
YTYwN2RmODExMWFlNGQ2MDIyNmNkYTBlMGM2NDY4MDIzZDVhMC4uNDQ5NzlhZWI1NmViMTQ3ODEy
NGRjNmMwY2FkOTNjZjFmZDM5NDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAKQEAgLTI5LDE0ICsyOSwx
NCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
SlNET01JbXBsZW1lbnRhdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQor
dm9pZCBKU0RPTUltcGxlbWVudGF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IGlt
cGwoKS0+b3duZXJEb2N1bWVudCgpOwogICAgIGlmICghb3duZXJEb2N1bWVudCkKICAgICAgICAg
cmV0dXJuOwotICAgIG1hcmtTdGFjay5hZGRPcGFxdWVSb290KG93bmVyRG9jdW1lbnQpOworICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdChvd25lckRvY3VtZW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDRiZGU5
ZTViMWU1MGZlOTMyMzAyMzc0M2NlMmM1ZmJlZGYyNGEzNTYuLjE2M2ZhOWMyZTIyNTc1NDE2MThl
NDJhODAxNzg2ZmYxMjE0Njc5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTcyLDMzICs3MiwzMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNET01XaW5kb3c6Om1hcmtD
aGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNET01XaW5kb3c6OnZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1h
cmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAotICAgIGltcGwo
KS0+bWFya0pTRXZlbnRMaXN0ZW5lcnMobWFya1N0YWNrKTsKKyAgICBpbXBsKCktPnZpc2l0SlNF
dmVudExpc3RlbmVycyh2aXNpdG9yKTsKIAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
ICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxDb25zb2xlKCkpOwot
ICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5v
cHRpb25hbEhpc3RvcnkoKSk7Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBn
bG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTG9jYXRpb25iYXIoKSk7Ci0gICAgbWFya0RPTU9i
amVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTWVudWJh
cigpKTsKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGlt
cGwoKS0+b3B0aW9uYWxOYXZpZ2F0b3IoKSk7Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFy
a1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsUGVyc29uYWxiYXIoKSk7Ci0gICAg
bWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlv
bmFsU2NyZWVuKCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFs
RGF0YSwgaW1wbCgpLT5vcHRpb25hbFNjcm9sbGJhcnMoKSk7Ci0gICAgbWFya0RPTU9iamVjdFdy
YXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsU2VsZWN0aW9uKCkp
OwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgp
LT5vcHRpb25hbFN0YXR1c2JhcigpKTsKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3Rh
Y2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxUb29sYmFyKCkpOwotICAgIG1hcmtET01P
YmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbExvY2F0
aW9uKCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwg
aW1wbCgpLT5vcHRpb25hbE1lZGlhKCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0
b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxDb25zb2xlKCkpOworICAgIG1hcmtET01P
YmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxIaXN0b3J5
KCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwo
KS0+b3B0aW9uYWxMb2NhdGlvbmJhcigpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNp
dG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTWVudWJhcigpKTsKKyAgICBtYXJrRE9N
T2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTmF2aWdh
dG9yKCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGlt
cGwoKS0+b3B0aW9uYWxQZXJzb25hbGJhcigpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2
aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsU2NyZWVuKCkpOworICAgIG1hcmtE
T01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxTY3Jv
bGxiYXJzKCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEs
IGltcGwoKS0+b3B0aW9uYWxTZWxlY3Rpb24oKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIo
dmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbFN0YXR1c2JhcigpKTsKKyAgICBt
YXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFs
VG9vbGJhcigpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRh
LCBpbXBsKCktPm9wdGlvbmFsTG9jYXRpb24oKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIo
dmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbE1lZGlhKCkpOwogI2lmIEVOQUJM
RShET01fU1RPUkFHRSkKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2Jh
bERhdGEsIGltcGwoKS0+b3B0aW9uYWxTZXNzaW9uU3RvcmFnZSgpKTsKLSAgICBtYXJrRE9NT2Jq
ZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxMb2NhbFN0
b3JhZ2UoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0YSwg
aW1wbCgpLT5vcHRpb25hbFNlc3Npb25TdG9yYWdlKCkpOworICAgIG1hcmtET01PYmplY3RXcmFw
cGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxMb2NhbFN0b3JhZ2UoKSk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgIG1hcmtE
T01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbEFw
cGxpY2F0aW9uQ2FjaGUoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xv
YmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbEFwcGxpY2F0aW9uQ2FjaGUoKSk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApp
bmRleCA0YzE1N2M5ZmQ1YjI3ZjI3ZWVkYTM5NTU2OTJmYmNhZjdhYzE5ZjY3Li5hOTg2MTQ0MWU4
MzY1M2M3OGY0ZGEzMDQxZTMxMTc4YTk0M2RjZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9K
U09iamVjdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNzIsMTEgKzczLDExIEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiAvLyBKU09iamVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLXZvaWQgSlNET01XaW5kb3dT
aGVsbDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU0RPTVdpbmRv
d1NoZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6
Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRv
cik7CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3dpbmRv
dyk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3dpbmRvdyk7CiB9CiAKIFVTdHJpbmcgSlNE
T01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAppbmRleCBjMmM1MzM2YWVkYTZhNmJlMTdlNWExZjE3
YzAyYjRiNzc0NWJkM2JhLi41Njc0Nzc2NDY2NWU5OTY3YzEzZGRjOTc5NzkwOWZmZjJiNzM0ZWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBA
IC02Niw5ICs2Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKEpTQzo6TWFya1N0YWNrJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA4
NDA0YTY3YmUyMjNiNWQ1M2FmMjRiZDE0YWYyMDRlOTY4MThjNjBmLi4wOGQ1YzJjZDY0YjIwOTcz
ZTgyYjNhMzNkZDQyNDM0MGE5MjkzOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpT
VG91Y2guaCIKICNpbmNsdWRlICJKU1RvdWNoTGlzdC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgi
CisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgog
CiAjaWYgRU5BQkxFKFNWRykKQEAgLTQ3LDE1ICs0OCwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNEb2N1bWVudDo6bWFya0NoaWxkcmVu
KE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU0RvY3VtZW50Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTTm9kZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFj
ayk7CisgICAgSlNOb2RlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gaW1wbCgpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpIZWFw
OjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBtYXJrQWN0aXZlT2JqZWN0c0ZvckNv
bnRleHQobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBkb2N1bWVudCk7Ci0gICAgbWFya0RPTU9iamVj
dFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBkb2N1bWVudC0+aW1wbGVtZW50YXRpb24o
KSk7CisgICAgdmlzaXRBY3RpdmVPYmplY3RzRm9yQ29udGV4dCh2aXNpdG9yLCBnbG9iYWxEYXRh
LCBkb2N1bWVudCk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0
YSwgZG9jdW1lbnQtPmltcGxlbWVudGF0aW9uKCkpOwogfQogCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6
OmxvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDRiZWRmM2E5MTQ0ZTgyZmUwZjM1ZTNm
MmE0OTAwMjYyMzRjNzU3MTcuLmUwOWQ4MDY2Yzc1NDI0NjAzNjViMTY2MmFjNjRiODkxMjY3OTNi
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNw
cApAQCAtNTEsMTkgKzUxLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotdm9pZCBKU0VsZW1lbnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKK3ZvaWQgSlNFbGVtZW50Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgp
OwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9i
YWxEYXRhKCk7CiAKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERh
dGEsIGVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpKTsKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlciht
YXJrU3RhY2ssIGdsb2JhbERhdGEsIGVsZW1lbnQtPm9wdGlvbmFsQ2xhc3NMaXN0KCkpOwotICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgZWxlbWVudC0+b3B0
aW9uYWxEYXRhc2V0KCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2Jh
bERhdGEsIGVsZW1lbnQtPmF0dHJpYnV0ZU1hcCgpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cih2aXNpdG9yLCBnbG9iYWxEYXRhLCBlbGVtZW50LT5vcHRpb25hbENsYXNzTGlzdCgpKTsKKyAg
ICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBlbGVtZW50LT5vcHRp
b25hbERhdGFzZXQoKSk7CiAKICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCi0g
ICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgc3RhdGlj
X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5pbmxpbmVTdHlsZURlY2woKSk7CisgICAg
ICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIHN0YXRpY19jYXN0
PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpOwogfQogCiBKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNDM2MjUxZTYzNmZmMzEwYTY0ZGQ3MTQ4
ZDI5YzNhYmZiMTljNDdhZS4uMTgzNTVmOGIyZjU5NjJjMTY5MWIwYzk5M2RiYTQyNWQ1NzNmZjVi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CkBAIC01NiwxMCArNTYsMTAgQEAgSlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6
ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0CiAgICAgcmV0dXJuIDA7
CiB9CiAKLXZvaWQgSlNFdmVudExpc3RlbmVyOjptYXJrSlNGdW5jdGlvbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgSlNFdmVudExpc3RlbmVyOjptYXJrSlNGdW5jdGlvbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICBpZiAobV9qc0Z1bmN0aW9uKQotICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKCZtX2pzRnVuY3Rpb24pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9qc0Z1bmN0
aW9uKTsKIH0KIAogdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV2ZW50KiBldmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggYTU5OWJlNzU2
OGNmZDI2NzhmNzk3NmZkNzkzMWM5YTU0NTY3NTdiNC4uMTdmMjRjNDkxZTFlZTc5ODY3MTQ5ZTE3
Mzk3MWEzMDgwZWZkNDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBtYXJrSlNGdW5jdGlvbihKU0M6Ok1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
bWFya0pTRnVuY3Rpb24oSlNDOjpTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
dmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCmluZGV4IDcyYWVjNGJiYWJkZTVhN2ZmN2U4YmI2ODk5MDdlZmY2OTZiMzBmZmYuLjE1NDFk
NmEwMzliODU1NDdhMjZjNDRiZGVkNmZiNjU1MmUzMTlmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBA
IC00MCwxNCArNDAsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEpTSFRNTENhbnZhc0VsZW1lbnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKK3ZvaWQgSlNIVE1MQ2FudmFzRWxlbWVudDo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcyA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oaW1wbCgpKTsKICAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpOwogCi0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBj
YW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlz
aXRvciwgZ2xvYmFsRGF0YSwgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpOwogfQogCiBKU1Zh
bHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0
b20uY3BwCmluZGV4IDhjYzhkNWYxN2Y4YTgxNDFlNjM5NzcxMjE4YzYwNzk3OTc2YWQ5ODQuLjI4
NTg4M2I4NjYxNDk5MzRjZjRjOGE1N2Y5NmJjMzE5NjVmNjBjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAKQEAg
LTMyLDEyICszMiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgSlNIVE1MTGlua0VsZW1lbnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgSlNIVE1MTGlua0VsZW1lbnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIGlmIChTdHlsZVNoZWV0KiBzaGVl
dCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KGltcGwoKSktPnNoZWV0KCkpCi0gICAg
ICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmds
b2JhbERhdGEoKSwgc2hlZXQpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9y
LCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBzaGVldCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0
b20uY3BwCmluZGV4IDliMGQxYTc0OTU4YTNiNzA5MzVhMzc4M2NlMDJkYjkzYzhjMjZkNjIuLjhm
NGU5MzNiNjViYmIyZDU4YjRjNjBmZGVjMTc2ZDRkMmQ1MWRiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU3R5bGVFbGVtZW50Q3VzdG9tLmNwcApA
QCAtMzIsMTIgKzMyLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBKU0hUTUxTdHlsZUVsZW1lbnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKK3ZvaWQgSlNIVE1MU3R5bGVFbGVtZW50Ojp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBpZiAoU3R5bGVTaGVldCog
c2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MU3R5bGVFbGVtZW50Kj4oaW1wbCgpKS0+c2hlZXQoKSkK
LSAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlz
KS0+Z2xvYmFsRGF0YSgpLCBzaGVldCk7CisgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZp
c2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHNoZWV0KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggYmU3NWFmMGJlN2NhZTkxNDY2MWMyZGVlZDRmNGIyNWRkMGQ3Y2ZkZC4uNTQ3NjE4M2U3
ZmRlNzU2N2JmNjE3YmQyMDk5YWY2YTE5NGFhYWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEltYWdlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVu
Y2VFcnJvcihleGVjLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1
bmF2YWlsYWJsZSIpKTsKIAogICAgIC8vIENhbGxpbmcgdG9KUyBvbiB0aGUgZG9jdW1lbnQgY2F1
c2VzIHRoZSBKUyBkb2N1bWVudCB3cmFwcGVyIHRvIGJlCi0gICAgLy8gYWRkZWQgdG8gdGhlIHdp
bmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCBKU0RvY3VtZW50OjptYXJr
Q2hpbGRyZW4KKyAgICAvLyBhZGRlZCB0byB0aGUgd2luZG93IG9iamVjdC4gVGhpcyBpcyBkb25l
IHRvIGVuc3VyZSB0aGF0IEpTRG9jdW1lbnQ6OnZpc2l0CiAgICAgLy8gd2lsbCBiZSBjYWxsZWQs
IHdoaWNoIHdpbGwgY2F1c2UgdGhlIGltYWdlIGVsZW1lbnQgdG8gYmUgbWFya2VkIGlmIG5lY2Vz
c2FyeS4KICAgICB0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBkb2N1
bWVudCk7CiAgICAgaW50IHdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAKaW5kZXggOWFjYWJmMzg1
NzA2YTI2NDBmMmEwYjQwMzNjMmZmMzQ0Y2MyNTY5Ny4uYzdhYWI4ZmZiNzljZTllMzhjYWJmNTVm
MzkwMTUwZGNjY2JhYjI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCkBAIC0zNCwxMCArMzQsMTAg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpT
SmF2YVNjcmlwdEF1ZGlvTm9kZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQor
dm9pZCBKU0phdmFTY3JpcHRBdWRpb05vZGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgc3RhdGlj
X2Nhc3Q8SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KGltcGwoKSktPm1hcmtKU0V2ZW50TGlzdGVuZXJz
KG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKKyAgICBzdGF0
aWNfY2FzdDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4oaW1wbCgpKS0+bWFya0pTRXZlbnRMaXN0ZW5l
cnModmlzaXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKaW5kZXgg
YzJmNTc3OTg5NDViY2ViM2RhNWJmZDVjNGYxNDdiZjhkNmZlZTY1Yi4uMGEwZWZiZTZkZTIyNjUw
ZjE0Y2MwNGE5YTkyNmZhZWYwNjE5MGZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTMzLDE1ICszMywxNSBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi12b2lk
IEpTTWVzc2FnZUNoYW5uZWw6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3Zv
aWQgSlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5w
b3J0MSgpKQotICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssICpIZWFwOjpo
ZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHBvcnQpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBwb3J0KTsKIAog
ICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1faW1wbC0+cG9ydDIoKSkKLSAgICAgICAgbWFy
a0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpLCBwb3J0KTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgKkhlYXA6
OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU01lc3Nh
Z2VDaGFubmVsKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggMDZiNDE3ODZhOWNmOWEzMjE0NTU0
ZjQyYTIwYzllZDBiNTY0MjYzMi4uYTg0OTg3NjY2YjNlOTlhYzAyZjE2N2M3ZTI3NDAwOWMyYTEz
YzdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHAKQEAgLTQxLDE1ICs0MSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNNZXNzYWdlUG9ydDo6bWFya0NoaWxkcmVuKE1h
cmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2sp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICAvLyBJZiB3ZSBoYXZl
IGEgbG9jYWxseSBlbnRhbmdsZWQgcG9ydCwgd2UgY2FuIGRpcmVjdGx5IG1hcmsgaXQgYXMgcmVh
Y2hhYmxlLiBQb3J0cyB0aGF0IGFyZSByZW1vdGVseSBlbnRhbmdsZWQgYXJlIG1hcmtlZCBpbi11
c2UgYnkgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCkuCiAgICAgaWYgKE1lc3NhZ2VQb3J0
KiBlbnRhbmdsZWRQb3J0ID0gbV9pbXBsLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpKQotICAgICAg
ICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9i
YWxEYXRhKCksIGVudGFuZ2xlZFBvcnQpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2
aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBlbnRhbmdsZWRQb3J0KTsK
IAotICAgIG1faW1wbC0+bWFya0pTRXZlbnRMaXN0ZW5lcnMobWFya1N0YWNrKTsKKyAgICBtX2lt
cGwtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogSlNDOjpKU1ZhbHVlIEpT
TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4
IDliMDY3Njc5ZDRkZjM1YmNiYjg3NTNkYWM0ZDRmOGNkNTBjMDJjZGIuLjM5MzkwNWQwMjM5MzM4
ZjI2OWMxZjQyMWU1ZDQwNGQwYWEzMzZmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJKU05hbWVkTm9kZU1hcC5oIgogCiAjaW5jbHVkZSAiSlNOb2RlLmgiCisKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAKQEAgLTM1LDExICsz
NiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBKU05hbWVkTm9kZU1hcE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpNYXJrU3RhY2smKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
Piwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAK
LWJvb2wgSlNOYW1lZE5vZGVNYXBPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBNYXJrU3RhY2smIG1hcmtTdGFj
aykKK2Jvb2wgSlNOYW1lZE5vZGVNYXBPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBKU05hbWVkTm9kZU1hcCoganNOYW1lZE5vZGVNYXAgPSBzdGF0aWNfY2Fz
dDxKU05hbWVkTm9kZU1hcCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgaWYgKCFqc05h
bWVkTm9kZU1hcC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQpAQCAtNDcsNyArNDgsNyBAQCBib29s
IEpTTmFtZWROb2RlTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc05hbWVkTm9kZU1h
cC0+aW1wbCgpLT5lbGVtZW50KCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChlbGVt
ZW50KSk7CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoZWxlbWVu
dCkpOwogfQogCiB2b2lkIEpTTmFtZWROb2RlTWFwT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQpAQCAtNzksOSArODAsOSBAQCBK
U1ZhbHVlIEpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgY29uc3QgSWRlbgogICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmlt
cGwoKS0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9
CiAKLXZvaWQgSlNOYW1lZE5vZGVNYXA6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFj
aykKK3ZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIC8vIFdlIG5lZWQgdG8ga2VlcCB0aGUgd3JhcHBl
ciBmb3Igb3VyIHVuZGVybHlpbmcgTmFtZWROb2RlTWFwJ3MgZWxlbWVudAogICAgIC8vIGFsaXZl
IGJlY2F1c2UgTmFtZWROb2RlTWFwIGFuZCBBdHRyIHJlbHkgb24gdGhlIGVsZW1lbnQgZm9yIGRh
dGEsIGFuZApAQCAtOTAsNyArOTEsNyBAQCB2b2lkIEpTTmFtZWROb2RlTWFwOjptYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+
ZWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIG1hcmtT
dGFjay5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVl
Um9vdChyb290KGVsZW1lbnQpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5hbWVkTm9kZU1hcCog
aW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9y
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcAppbmRleCA1MGZiNGRhNmMzNWM0YjJlZTdhMDE2NjVmZjg1NDYwYWVhMDgzNWQxLi4xZTdj
NWQzNzIzYjAzZjBhN2JlY2I2M2Q1Njc2MmMzZDdiNzVjMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC0zMiwxMyArMzIsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi12b2lkIEpT
TmF2aWdhdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTTmF2
aWdhdG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6
Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRv
cik7CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVhcCh0aGlzKS0+
Z2xvYmFsRGF0YSgpOwogCi0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9i
YWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsR2VvbG9jYXRpb24oKSk7CisgICAgbWFya0RPTU9iamVj
dFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbEdlb2xvY2F0aW9u
KCkpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDhiYTk2NzFmMDBmZjYyZWIyYzRkOTRiZTZl
NDJkODZjY2M4MzE3MzYuLmYwZDYwOTM3YTdkNmJjZTMzNzYxYmE5YTUwODJjYTMwOTMwZjY0ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGlzT2JzZXJ2YWJsZShKU05vZGUqIGpzTm9kZSwgTm9k
ZSogbm9kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICAvLyB0aGUgd3JhcHBlciBtdXN0
IGJlIHRyZWF0ZWQgYXMgb2JzZXJ2YWJsZSwgYmVjYXVzZSBmdXR1cmUgYWNjZXNzIHRvCiAgICAg
Ly8gdGhvc2Ugb2JqZWN0cyB0aHJvdWdoIHRoZSBET00gbXVzdCByZWZsZWN0IHRob3NlIHByb3Bl
cnRpZXMuCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIGxvZ2ljIGNv
dWxkIGJlIGluIHRoZSBub2RlIG5leHQgdG8KLSAgICAvLyB0aGUgY3VzdG9tIG1hcmtDaGlsZHJl
biBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gaGVyZS4KKyAgICAvLyB0aGUgY3VzdG9tIHZpc2l0IGZ1
bmN0aW9ucyByYXRoZXIgdGhhbiBoZXJlLgogICAgIC8vIE5vdGUgdGhhdCBmb3Igc29tZSBjb21w
b3VuZCBvYmplY3RzIGxpa2Ugc3R5bGVzaGVldHMgYW5kIENTU1N0eWxlRGVjbGFyYXRpb25zLAog
ICAgIC8vIHdlIGRvbid0IGRlc2NlbmQgdG8gY2hlY2sgY2hpbGRyZW4gZm9yIGN1c3RvbSBwcm9w
ZXJ0aWVzLCBhbmQganVzdCBjb25zZXJ2YXRpdmVseQogICAgIC8vIGtlZXAgdGhlIG5vZGUgd3Jh
cHBlcnMgcHJvdGVjdGluZyB0aGVtIGFsaXZlLgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBi
b29sIGlzT2JzZXJ2YWJsZShKU05vZGUqIGpzTm9kZSwgTm9kZSogbm9kZSwgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c1JlYWNoYWJsZUZyb21ET00oSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIERPTVdyYXBwZXJX
b3JsZCogd29ybGQsIE1hcmtTdGFjayYgbWFya1N0YWNrKQorc3RhdGljIGlubGluZSBib29sIGlz
UmVhY2hhYmxlRnJvbURPTShKU05vZGUqIGpzTm9kZSwgTm9kZSogbm9kZSwgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKCFub2RlLT5pbkRv
Y3VtZW50KCkpIHsKICAgICAgICAgLy8gSWYgYSB3cmFwcGVyIGlzIHRoZSBsYXN0IHJlZmVyZW5j
ZSB0byBhbiBpbWFnZSBvciBzY3JpcHQgZWxlbWVudApAQCAtMTcwLDE0ICsxNzAsMTQgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzUmVhY2hhYmxlRnJvbURPTShKU05vZGUqIGpzTm9kZSwgTm9kZSog
bm9kZSwgRE9NV3JhcHBlcldvcmwKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIHJldHVybiBpc09ic2VydmFibGUoanNOb2RlLCBub2RlLCB3b3JsZCkgJiYgbWFya1N0YWNr
LmNvbnRhaW5zT3BhcXVlUm9vdChyb290KG5vZGUpKTsKKyAgICByZXR1cm4gaXNPYnNlcnZhYmxl
KGpzTm9kZSwgbm9kZSwgd29ybGQpICYmIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qo
bm9kZSkpOwogfQogCi1ib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCwgTWFya1N0
YWNrJiBtYXJrU3RhY2spCitib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNOb2RlKiBqc05vZGUgPSBzdGF0aWNfY2FzdDxK
U05vZGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwogICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICByZXR1cm4g
aXNSZWFjaGFibGVGcm9tRE9NKGpzTm9kZSwganNOb2RlLT5pbXBsKCksIHdvcmxkLCBtYXJrU3Rh
Y2spOworICAgIHJldHVybiBpc1JlYWNoYWJsZUZyb21ET00oanNOb2RlLCBqc05vZGUtPmltcGwo
KSwgd29ybGQsIHZpc2l0b3IpOwogfQogCiB2b2lkIEpTTm9kZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKQEAgLTIzNiwxNCAr
MjM2LDE0IEBAIFNjb3BlQ2hhaW5Ob2RlKiBKU05vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZTsKIH0KIAot
dm9pZCBKU05vZGU6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNO
b2RlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
CiAKICAgICBOb2RlKiBub2RlID0gbV9pbXBsLmdldCgpOwotICAgIG5vZGUtPm1hcmtKU0V2ZW50
TGlzdGVuZXJzKG1hcmtTdGFjayk7CisgICAgbm9kZS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpOwogCi0gICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlKSk7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qobm9kZSkpOwogfQogCiBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAppbmRleCA2N2ZmZGUwNzFlMTE2ZTU0NzhlYjA3YWUzODdk
MTc0OGU5MTYwMTdiLi41MWU3OTVlNzRjNjUwNmRkMjU2OThmOWMzZjEwYzFlMjhiZDJiOWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NWYWx1ZTsKIAogY2xhc3MgSlNOb2Rl
T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
LCBKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggOTI3
YjFhMzNlOTY4NTFhNjY1ZWE5M2Y1OWNmZjg0MmFhYzgyNDVjYy4uOWQ1ZGYwNDIxZTdiNGJhZDcy
YjIwZGM2NzJkODlkZWI3Zjk2OTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC04Myw5ICs4Myw5IEBAIHNob3J0
IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Tm9kZSogZmlsdGVyTm9kZSkKICAgICByZXR1cm4gaW50UmVzdWx0OwogfQogCi1ib29sIEpTTm9k
ZUZpbHRlckNvbmRpdGlvbjo6V2Vha093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBNYXJrU3RhY2smIG1hcmtT
dGFjaykKK2Jvb2wgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjpXZWFrT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQs
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNP
cGFxdWVSb290KGNvbnRleHQpOworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAppbmRleCA4MDE0OGYx
YjY3ZDU3NTY4OGQxNDdkMGI5Y2YxN2RmZTFlNGNiZTJiLi45YjA1NmEwYzA3MWQ1MjliMzYxMzdj
ZjBjZTdhMzg1MzE0ZDVjNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9kZShTY3JpcHRTdGF0ZSosIE5v
ZGUqKSBjb25zdDsKIAogICAgICAgICBjbGFzcyBXZWFrT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewotICAgICAgICAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6
TWFya1N0YWNrJik7CisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpOwogICAgICAgICB9OwogICAgICAgICBXZWFrT3duZXIgbV93ZWFrT3duZXI7
CiAgICAgICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6VW5rbm93bj4gbV9maWx0ZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAppbmRl
eCBhZDRhYTdlNWEzMTNhNWY5OTViZTMxNDFhZTJlZDhhZDhlMTVlZjlkLi4xZmNmNDg3MGNkZTAz
MmNjMTY2MTUwNzg4N2ZmMDIxMTFjY2QzYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKQEAgLTM2LDEwICszNiwxMCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNOb2RlRmls
dGVyOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTTm9kZUZpbHRl
cjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJr
Q2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYWRkT3BhcXVlUm9vdChpbXBsKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KGltcGwoKSk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmlsdGVy
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAppbmRleCA3N2Yy
ZGMzOGE5Y2UxYjYwOWE4ZGU3NzMwN2U2YTNhYjk2YTBlZWEwLi42ODJlOTEzMzE1MjdjMWRmMGI0
MDY0M2NjNTVmNmFmODc1N2M5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCkBAIC0yOSwxMiArMjksMTIgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTTm9kZUl0ZXJh
dG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTTm9kZUl0ZXJh
dG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
CiAKICAgICBpZiAoTm9kZUZpbHRlciogZmlsdGVyID0gbV9pbXBsLT5maWx0ZXIoKSkKLSAgICAg
ICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsKKyAgICAgICAgdmlzaXRvci5hZGRP
cGFxdWVSb290KGZpbHRlcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggYTUyYWM2NDc2ODQ3ZjU1ZWVhODFhY2VkMjMw
YjZhYWM2ZjllMTE1Mi4uNTMzYjQzNDViZmNlZDkxYjM5Y2YzOGJhMDAxMDM1YmVmMjQ4MGU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAK
QEAgLTM3LDE4ICszNywxOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBKU05vZGVMaXN0T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgewotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOworICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgdmlydHVh
bCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQp
OwogfTsKIAotYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJr
U3RhY2spCitib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBKU05vZGVMaXN0KiBqc05vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8SlNOb2Rl
TGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgaWYgKCFqc05vZGVMaXN0LT5oYXND
dXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWpzTm9k
ZUxpc3QtPmltcGwoKS0+aXNEeW5hbWljTm9kZUxpc3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nh
c3Q8RHluYW1pY05vZGVMaXN0Kj4oanNOb2RlTGlzdC0+aW1wbCgpKS0+cm9vdE5vZGUoKSkpOwor
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PER5
bmFtaWNOb2RlTGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPnJvb3ROb2RlKCkpKTsKIH0KIAog
dm9pZCBKU05vZGVMaXN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwCmluZGV4IDg2OGUz
MTkwMDIwNThjODg3MWM3NzBlOWEzM2M3NzFlZTAwZDJjNmIuLmNmMzQ3N2M0NjY2NTY0OTNhMzFj
ZWVkNDJlOTdmMjdlNGY3MTk2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAKQEAgLTMyLDEy
ICszMiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIGlmIChTdHlsZVNoZWV0
KiBzaGVldCA9IHN0YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KGltcGwoKSktPnNo
ZWV0KCkpCi0gICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhlYXA6Omhl
YXAodGhpcyktPmdsb2JhbERhdGEoKSwgc2hlZXQpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBzaGVldCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVu
dEluc3RhbmNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxl
bWVudEluc3RhbmNlQ3VzdG9tLmNwcAppbmRleCBkZWZiZDVmM2M1MjgxY2Q1Zjk0MjM1M2YwODA1
YWU3YmRkYWQ5NWFiLi5iM2JlZWI1YTdhMDc3Y2JmNTFiYzNmMzk2NzZiNmE0MGM1MzU1MjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5j
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50
SW5zdGFuY2VDdXN0b20uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEpTU1ZHRWxlbWVudEluc3RhbmNlOjptYXJrQ2hpbGRyZW4oSlNDOjpNYXJr
U3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnZpc2l0Q2hpbGRy
ZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4o
bWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y29y
cmVzcG9uZGluZ0VsZW1lbnQoKSkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLT5jb3JyZXNwb25kaW5nRWxl
bWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAppbmRleCAwZDU3NmUw
NjQwNjg0ZGU4Zjk2MTNkZTYyMmJmNmJhYWNiZGE2NjBmLi4zNGI5YzNjYWQzNGU2ZDA1NDkyZTdh
NDU2N2Q1OWRkMGZlYjBmMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC00MywxMiArNDMsMTIgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTU2hhcmVkV29ya2Vy
OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTU2hhcmVkV29ya2Vy
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtD
aGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAK
ICAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCktPnBvcnQoKSkKLSAgICAgICAgbWFy
a0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpLCBwb3J0KTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgKkhlYXA6
OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNTaGFyZWRX
b3JrZXIoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKaW5kZXggZjgzNmQ4ZTMxYTI5NzY3ZTEzMzQ0MWQ1MWI4
MmI1YmVhY2FlZjc4Zi4uZmIwMjUzMDVkMjY3ZmU4ZWI4NWM0MTBmZmFiZDQ2YzY5NzY3OTRmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20u
Y3BwCkBAIC02NiwxMCArNjYsMTAgQEAgaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIFN0eWxlU2hlZXQqKQogICAgIHJldHVybiB3b3JsZDsKIH0KIAot
dm9pZCBKU1N0eWxlU2hlZXQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3Zv
aWQgSlNTdHlsZVNoZWV0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1hcmtTdGFjay5hZGRPcGFx
dWVSb290KHJvb3QoaW1wbCgpKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCkpKTsKIH0KIAogSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5
bGVTaGVldCogc3R5bGVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyZWVXYWxrZXJDdXN0b20uY3BwCmluZGV4IGZjNjQ5MDA3YWU4MTA0ZTkzNGFkNTA0Mjg1N2Uy
M2FhOTY1MzQyMWYuLjY5ZjZjM2JkNjNmOTkwMzcwMzVmNmFhMmE0N2I4OTRjNDczOTFlZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNw
cApAQCAtMjksMTIgKzI5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKLXZvaWQgSlNUcmVlV2Fsa2VyOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNr
JiBtYXJrU3RhY2spCit2b2lkIEpTVHJlZVdhbGtlcjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKE5vZGVGaWx0ZXIqIGZpbHRl
ciA9IG1faW1wbC0+ZmlsdGVyKCkpCi0gICAgICAgIG1hcmtTdGFjay5hZGRPcGFxdWVSb290KGZp
bHRlcik7CisgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0ZXIpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMGY1MjMwMTc4OGFiOGVkNDc2MjAxOGFkZTJjMmY2
Y2Q3NmFkNmZlMS4uNTRkYzQwNWIxYjI1MzI3MzhkNmQ3OTk3NzdhNzE5YmU3ZWY1N2QxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTkyLDEzICsxOTIsMTMgQEAgc3RhdGljIEpTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFdlYkdMRXh0ZW4KICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKLXZvaWQgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih2aXNpdG9yKTsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9
IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb250ZXh0LT5nZXROdW1iZXJPZkV4dGVuc2lvbnMoKTsgKytpKQotICAg
ICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssICpIZWFwOjpoZWFwKHRoaXMpLT5n
bG9iYWxEYXRhKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbk51bWJlcihpKSk7CisgICAgICAgIG1h
cmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRh
KCksIGNvbnRleHQtPmdldEV4dGVuc2lvbk51bWJlcihpKSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxp
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRp
b25MaXN0Q3VzdG9tLmNwcAppbmRleCBlYWY3N2NmNjQwNTEyMzYyYTc3NDA3OGNlZGVmYTNlNGEy
OGIzMGU0Li5iNGVmMzgxNDg3MDExNDNiM2NiNjFmMjBkYjJjY2QzN2ZmZjhiMTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9u
TGlzdEN1c3RvbS5jcHAKQEAgLTMyLDE2ICszMiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNXZWJLaXRBbmltYXRpb25MaXN0OjptYXJr
Q2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTV2ViS2l0QW5pbWF0aW9uTGlz
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJr
Q2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwog
CiAgICAgV2ViS2l0QW5pbWF0aW9uTGlzdCogbGlzdCA9IGltcGwoKTsKICAgICBKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpOwogCiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbGlzdC0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3Rh
Y2ssIGdsb2JhbERhdGEsIGxpc3QtPml0ZW0oaSkpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBsaXN0LT5pdGVtKGkpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggMTEwM2QwYjk2OTNiNzJmM2M5MjNlMjlhNTkwODIwOGRmMGYyMWZlNy4uNTNjNmI5ODhh
M2ZlZTIwNDg0NmUyNGRiZTc4YWE5NzIzNzQ0Yjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC01MywxOCArNTMs
MTggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IEpTV29ya2VyQ29udGV4dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9p
ZCBKU1dvcmtlckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih2aXNpdG9yKTsKIAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IHRoaXMtPmds
b2JhbERhdGEoKTsKIAotICAgIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dChtYXJrU3RhY2ss
IGdsb2JhbERhdGEsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgdmlzaXRBY3RpdmVP
YmplY3RzRm9yQ29udGV4dCh2aXNpdG9yLCBnbG9iYWxEYXRhLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogCi0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRh
LCBpbXBsKCktPm9wdGlvbmFsTG9jYXRpb24oKSk7Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIo
bWFya1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTmF2aWdhdG9yKCkpOworICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9u
YWxMb2NhdGlvbigpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxE
YXRhLCBpbXBsKCktPm9wdGlvbmFsTmF2aWdhdG9yKCkpOwogCi0gICAgaW1wbCgpLT5tYXJrSlNF
dmVudExpc3RlbmVycyhtYXJrU3RhY2spOworICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50TGlzdGVu
ZXJzKHZpc2l0b3IpOwogfQogCiBib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggZWJhNWRiN2RlZjE3YTU5OWU2
YTI0OGE0M2YzZDc1ODBjMjgwODI0NS4uOGRkMTc2MTQ2YWQzZjQzNjZjZjczZDliMGNhN2JmZTg2
OGY1Yzg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTU0LDI1ICs1NCwyNSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU1hNTEh0dHBSZXF1ZXN0Ojp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGls
ZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAg
ICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVwbG9hZCA9IG1faW1wbC0+b3B0aW9uYWxVcGxv
YWQoKSkKLSAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVh
cCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCB1cGxvYWQpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCB1cGxvYWQpOwog
CiAgICAgaWYgKERvY3VtZW50KiByZXNwb25zZURvY3VtZW50ID0gbV9pbXBsLT5vcHRpb25hbFJl
c3BvbnNlWE1MKCkpCi0gICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhl
YXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcmVzcG9uc2VEb2N1bWVudCk7CisgICAgICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxE
YXRhKCksIHJlc3BvbnNlRG9jdW1lbnQpOwogCiAgICAgaWYgKEFycmF5QnVmZmVyKiByZXNwb25z
ZUFycmF5QnVmZmVyID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlQXJyYXlCdWZmZXIoKSkKLSAg
ICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+
Z2xvYmFsRGF0YSgpLCByZXNwb25zZUFycmF5QnVmZmVyKTsKKyAgICAgICAgbWFya0RPTU9iamVj
dFdyYXBwZXIodmlzaXRvciwgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcmVzcG9u
c2VBcnJheUJ1ZmZlcik7CiAKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCiAgICAgaWYg
KEJsb2IqIHJlc3BvbnNlQmxvYiA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUJsb2IoKSkKLSAg
ICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+
Z2xvYmFsRGF0YSgpLCByZXNwb25zZUJsb2IpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCByZXNwb25zZUJsb2Ip
OwogI2VuZGlmCiAKLSAgICBtX2ltcGwtPm1hcmtKU0V2ZW50TGlzdGVuZXJzKG1hcmtTdGFjayk7
CisgICAgbV9pbXBsLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIC8vIEN1
c3RvbSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAKaW5kZXggMDkxYzM4MGVjZjY4OTlk
OWYxZjE2YTc1MmMyM2VmMjNhNmZmOTQxYi4uNmI4MGJiNDcyOTE3NjAwZDY1Y2U5ZWUwOTAyMTdk
OTBmMjBkZTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYTUxI
dHRwUmVxdWVzdFVwbG9hZDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9p
ZCBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBpZiAoWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBS
ZXF1ZXN0ID0gbV9pbXBsLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3QoKSkKLSAgICAgICAgbWFy
a0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0
YSgpLCB4bWxIdHRwUmVxdWVzdCk7CisgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0
b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHhtbEh0dHBSZXF1ZXN0KTsKIAot
ICAgIG1faW1wbC0+bWFya0pTRXZlbnRMaXN0ZW5lcnMobWFya1N0YWNrKTsKKyAgICBtX2ltcGwt
PnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCAxODFmZDI0NWVjZTk4MTBkODQ4NThjYzA1OGFjOTc1MDViNDg5ZGIwLi4w
MTYyMTZiZThlODdkZTJmOTY4ZjY1MWI4MTI4MTA2NjFhZTY0NmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNzUxLDEw
ICs3NTEsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICIgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAm
c19pbmZvKTtcbiIgLgogICAgICAgICAiICAgIH1cblxuIik7CiAKLSAgICAjIG1hcmtDaGlsZHJl
biBmdW5jdGlvbgorICAgICMgdmlzaXQgZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzTWFya0NoaWxk
cmVuKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIG1h
cmtDaGlsZHJlbihKU0M6Ok1hcmtTdGFjayYpO1xuXG4iKTsKLSAgICAgICAgJHN0cnVjdHVyZUZs
YWdzeyJKU0M6Ok92ZXJyaWRlc01hcmtDaGlsZHJlbiJ9ID0gMTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OlNsb3RWaXNp
dG9yJik7XG5cbiIpOworICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiJ9ID0gMTsKICAgICB9CiAKICAgICAjIEN1c3RvbSBwdXNoRXZlbnRIYW5kbGVy
U2NvcGUgZnVuY3Rpb24KQEAgLTk1NSw3ICs5NTUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCJ9
ID0gMTsKICAgICB9CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbU1hcmtGdW5jdGlvbiJ9IG9yICRuZWVkc01hcmtDaGlsZHJlbikgewotICAgICAgICAkc3Ry
dWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIn0gPSAxOworICAgICAgICAk
c3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiJ9ID0gMTsKICAgICB9
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwKICAgICAgICAgIiAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgpAQCAtMTQzMSwxMCArMTQzMSwxMCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAog
ICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaylc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGltcGwoKS0+bWFya0pTRXZlbnRMaXN0ZW5lcnMobWFya1N0YWNrKTtcbiIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwoKS0+dmlzaXRKU0V2ZW50
TGlzdGVuZXJzKHZpc2l0b3IpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9p
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmlu
ZGV4IDJkMjllMDExOGU0ODBhN2JjM2VmNTNlNzI1OGFiNjkzMWQ5YjlhYzkuLjY4ZTI5NTRiZDU1
NDdhMDJiYTFlYjM3Y2JkNmFiNzE5MTMwYzBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X2luc3RhbmNlLmNwcApAQCAtNTEsMTIgKzUxLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcmtTdGFjaykKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVPYmplY3Q6Om1hcmtD
aGlsZHJlbihtYXJrU3RhY2spOworICAgICAgICBSdW50aW1lT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwogICAgICAgICBRdEluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFF0
SW5zdGFuY2UqPihnZXRJbnRlcm5hbEluc3RhbmNlKCkpOwogICAgICAgICBpZiAoaW5zdGFuY2Up
Ci0gICAgICAgICAgICBpbnN0YW5jZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAg
ICAgICAgaW5zdGFuY2UtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVu
dGltZU9iamVjdDo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW47CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVudGltZU9iamVjdDo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogfTsKIAogY29uc3QgQ2xhc3NJ
bmZvIFF0UnVudGltZU9iamVjdDo6c19pbmZvID0geyAiUXRSdW50aW1lT2JqZWN0IiwgJlJ1bnRp
bWVPYmplY3Q6OnNfaW5mbywgMCwgMCB9OwpAQCAtMTg1LDEyICsxODUsMTIgQEAgUnVudGltZU9i
amVjdCogUXRJbnN0YW5jZTo6bmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIG5ldyAoZXhlYykgUXRSdW50aW1lT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGhpcyk7CiB9CiAKLXZvaWQgUXRJbnN0YW5jZTo6bWFya0FnZ3JlZ2F0ZShN
YXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgUXRJbnN0YW5jZTo6dmlzaXRBZ2dyZWdhdGUoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKG1fZGVmYXVsdE1ldGhvZCkKLSAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmbV9kZWZhdWx0TWV0aG9kKTsKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZGVmYXVsdE1ldGhvZCk7CiAgICAgZm9yIChRSGFzaDxRQnl0ZUFycmF5LCBXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+ID46Okl0ZXJhdG9yIGl0ID0gbV9tZXRob2RzLmJlZ2luKCksIGVuZCA9
IG1fbWV0aG9kcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKCZpdC52YWx1ZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0LnZhbHVlKCkpOwog
fQogCiB2b2lkIFF0SW5zdGFuY2U6OmJlZ2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2lu
c3RhbmNlLmgKaW5kZXggYjgwMjUwMGIwY2Q5OTZhMmNlZTVhMzdmODc4ZTEzNzZhMmFlODFlNS4u
MWQ1MWNhMjY1NjdjMDBlMjU0MDc0OGFmOTdhYTg2ZTZmYWQ2NzVjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3F0L3F0X2luc3RhbmNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29u
c3Q7CiAKLSAgICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJik7CisgICAgdm9pZCB2aXNp
dEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOwogCiAgICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAg
dmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKaW5kZXgg
YzQ5ODYzNzkzMDE5YjAyNzUyZjdmYjAzZDUzZTZjNmQ1MGQ0ZGYwOC4uMmRkYWFkNjNmYjI4M2Rj
YzQxOGE2OWJlN2EyODQ0M2NiY2RhY2JjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9waXhtYXBydW50aW1lLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBSdW50aW1lT2JqZWN0OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbjsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBSdW50aW1lT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiB9OwogCiBRdFBpeG1h
cFJ1bnRpbWVPYmplY3Q6OlF0UGl4bWFwUnVudGltZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDg3ZWU1MjI0YmVj
MWQ3MWQ4YjkzY2Y1NjAwMWNlYjNmMWQ3MjllYzMuLmFjNzZlZjNiNjIyZGZiOTMyM2FiZDE5ODhi
NDY0ZTE4OWJiZDU5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9y
dW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAK
QEAgLTE0MDAsMTQgKzE0MDAsMTQgQEAgUXRSdW50aW1lTWV0YU1ldGhvZDo6UXRSdW50aW1lTWV0
YU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW4KICAgICBkLT5t
X2FsbG93UHJpdmF0ZSA9IGFsbG93UHJpdmF0ZTsKIH0KIAotdm9pZCBRdFJ1bnRpbWVNZXRhTWV0
aG9kOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIFF0UnVudGltZU1l
dGFNZXRob2Q6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgUXRS
dW50aW1lTWV0aG9kOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBRdFJ1bnRpbWVNZXRo
b2Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgUVdfRChRdFJ1bnRpbWVNZXRhTWV0aG9k
KTsKICAgICBpZiAoZC0+bV9jb25uZWN0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZkLT5t
X2Nvbm5lY3QpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+bV9jb25uZWN0KTsKICAgICBp
ZiAoZC0+bV9kaXNjb25uZWN0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZkLT5tX2Rpc2Nv
bm5lY3QpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+bV9kaXNjb25uZWN0KTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgUXRSdW50aW1lTWV0YU1ldGhvZDo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAppbmRleCBmYTVjZTYyZGNkMTA3YWMy
ODBlOWQ1ZjQ1OWY1MmJjNzBjOTZmMWFlLi5iZGIxYWVkNWY3ZWMwNDZjMmJhNjlhYjkzZGUxYTRm
ZjJmODI1YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgKQEAgLTE1OSw3
ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW47CiAKICAgICBRdFJ1bnRpbWVNZXRob2REYXRhICpkX2Z1bmMoKSBj
b25zdCB7cmV0dXJuIGRfcHRyO30KICAgICBRdFJ1bnRpbWVNZXRob2QoUXRSdW50aW1lTWV0aG9k
RGF0YSAqZGQsIEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmbiwgUGFzc1JlZlB0
cjxRdEluc3RhbmNlPiBpbnN0KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogCi0gICAgdmlydHVhbCB2b2lk
IG1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjayk7CisgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAogcHJvdGVjdGVkOgogICAgIFF0UnVudGltZU1l
dGFNZXRob2REYXRhKiBkX2Z1bmMoKSBjb25zdCB7cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRS
dW50aW1lTWV0YU1ldGhvZERhdGEqPihkX3B0cik7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
LmgKaW5kZXggMzQ4NzA0ZmNjODUyZjJlMDRhY2Q0OTA2NDFkZDU3MmQzZmEwZDQ2OC4uMzA4NjEz
NTMzMmUwMzIyZWE2N2ZmMWYxOTZlNDMxNTQ1NjEwNjNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lci5oCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U09iamVjdDsKICAgICBjbGFzcyBNYXJrU3RhY2s7CisgICAgdHlwZWRlZiBNYXJrU3RhY2sgU2xv
dFZpc2l0b3I7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUzLDcgKzU0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJr
dXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgVVNFKEpTQykKLSAgICAgICAgdmly
dHVhbCB2b2lkIG1hcmtKU0Z1bmN0aW9uKEpTQzo6TWFya1N0YWNrJikgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCB2aXNpdEpTRnVuY3Rpb24oSlNDOjpTbG90VmlzaXRvciYpIHsgfQogI2VuZGlm
CiAKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxpc0F0
dHJpYnV0ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDM1NDRjZTY2ZWYyYTFh
ZGE3YTc2MjQ2MTk5ZTg1YjBmZmI0MDI4YmQuLjgxOTAyZDA4YmQyZWQwYTc3MzZiMThhYmRmZjMz
NTAwZjRmZGU2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0xNzAsNyArMTcwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzRmlyaW5nRXZlbnRMaXN0ZW5l
cnMoKTsKIAogI2lmIFVTRShKU0MpCi0gICAgICAgIHZvaWQgbWFya0pTRXZlbnRMaXN0ZW5lcnMo
SlNDOjpNYXJrU3RhY2smKTsKKyAgICAgICAgdm9pZCB2aXNpdEpTRXZlbnRMaXN0ZW5lcnMoSlND
OjpTbG90VmlzaXRvciYpOwogICAgICAgICB2b2lkIGludmFsaWRhdGVKU0V2ZW50TGlzdGVuZXJz
KEpTQzo6SlNPYmplY3QqKTsKICNlbmRpZgogCkBAIC0yMjMsNyArMjIzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBVU0UoSlNDKQotICAgIGlubGluZSB2b2lkIEV2ZW50
VGFyZ2V0OjptYXJrSlNFdmVudExpc3RlbmVycyhKU0M6Ok1hcmtTdGFjayYgbWFya1N0YWNrKQor
ICAgIGlubGluZSB2b2lkIEV2ZW50VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5lcnMoSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9
IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgICAgICBpZiAoIWQpCkBAIC0yMzMsNyArMjMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmb3IgKEV2ZW50TGlzdGVuZXJNYXA6Oml0ZXJh
dG9yIGl0ID0gZC0+ZXZlbnRMaXN0ZW5lck1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXJWZWN0b3ImIGVudHJ5ID0gKml0LT5zZWNvbmQ7CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5LnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgICAgIGVudHJ5W2ldLmxpc3RlbmVyLT5tYXJrSlNGdW5jdGlvbihtYXJrU3RhY2sp
OworICAgICAgICAgICAgICAgIGVudHJ5W2ldLmxpc3RlbmVyLT52aXNpdEpTRnVuY3Rpb24odmlz
aXRvcik7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNhY2FlZmNl
NGE0YzBmMjExODNmMjg4N2E4ZDFhNDM5ZTgyZTBkOWYuLjMwMWM0ZGUwYWZmNTMwN2YyNjU5YmVl
ZGU0OGY1ODZmODczYTI2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIE1hcmtTdGFjazsK
KyAgICB0eXBlZGVmIE1hcmtTdGFjayBTbG90VmlzaXRvcjsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaAppbmRleCAwZDYzMTNmMDJiMzIwYjI2N2E5
YzlkYzg5Y2MxM2UwMmYzNGM3Y2Y5Li40NjYwNzY0YTM0MjkzZDQ4ODRhY2VlYmNhYjdmOWYzNWUz
MDhjMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmgKQEAgLTMw
LDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTWFya1N0YWNrOworICAg
IHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MCw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfk5vZGVGaWx0ZXJDb25kaXRpb24oKSB7IH0KICAgICAgICAgdmlydHVhbCBz
aG9ydCBhY2NlcHROb2RlKFNjcmlwdFN0YXRlKiwgTm9kZSopIGNvbnN0ID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtBZ2dyZWdhdGUoSlNDOjpNYXJrU3RhY2smKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0QWdncmVnYXRlKEpTQzo6U2xvdFZpc2l0b3ImKSB7IH0KICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA2
Yzk2NDBlZWEzNjJlYjc5MDJkYmU5ZTNjMDljNTJiMGM2ODIxN2Y4Li45OWM5YWI3ZjJmZGM0N2Q0
NmNmMDRlOWU0ODYyZTQ3MjNiZTJlOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTM0
MCw3ICszNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmcoKTsKIAotICAgICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgZm9yIEdD
IG1hcmtpbmcuIFNlZSBKU0RPTVdpbmRvdzo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpIGluIEpT
RE9NV2luZG93Q3VzdG9tLmNwcC4KKyAgICAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2Vk
IGZvciBHQyBtYXJraW5nLiBTZWUgSlNET01XaW5kb3c6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImKSBpbiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAuCiAgICAgICAgIFNjcmVlbiogb3B0aW9uYWxT
Y3JlZW4oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbi5nZXQoKTsgfQogICAgICAgICBET01TZWxl
Y3Rpb24qIG9wdGlvbmFsU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0
KCk7IH0KICAgICAgICAgSGlzdG9yeSogb3B0aW9uYWxIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9oaXN0b3J5LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmlu
ZGV4IDgyMzdkYTFkYjU4MzRjYzBlYWEzNWRmYjI3ODZiZWUwYWI2MjlhODMuLjA3Mzc2NzkyOTNm
MTEzMWQ4NmRhZTE5MjJmMzFiZWEyMzM1NDA3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2Vk
IGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJikgaW4KKyAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2lu
Zy4gU2VlIEpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpIGluCiAg
ICAgICAgIC8vIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAuCiAgICAgICAgIFdvcmtlck5hdmln
YXRvciogb3B0aW9uYWxOYXZpZ2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRvci5nZXQo
KTsgfQogICAgICAgICBXb3JrZXJMb2NhdGlvbiogb3B0aW9uYWxMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb24uZ2V0KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90611</attachid>
            <date>2011-04-21 15:02:26 -0700</date>
            <delta_ts>2011-04-21 16:04:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59141-20110421150225.patch</filename>
            <type>text/plain</type>
            <size>161893</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ1NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZDJlMGRjYjdhM2E0ODliODU5ZjhiYmRiNTY4MjVjNGFi
MjYxZjY2Mi4uMzM4ZDA1NzI3YjdiM2E1ZTJjYWY5NjgwNjYwZjZkMWZhZGFkNjc4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTY4LDExICs2
OCwxMSBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgOiBXZWFrSGFuZGxlT3duZXIgewog
ICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5kZWxldGVQcml2YXRlUHJvcGVydHkocHJvcGVy
dHlOYW1lKTsKICAgICB9CiAKLSAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKKyAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
ewogICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPm1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwor
ICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAg
IH0KIAogICAgIHZvaWQqIHByaXZhdGVEYXRhOwpAQCAtOTcsMTEgKzk3LDExIEBAIHN0cnVjdCBK
U0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgICAgICBtX3By
b3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgICAgICB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGZvciAoUHJpdmF0ZVByb3BlcnR5TWFwOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5TWFw
LmJlZ2luKCk7IHB0ciAhPSBtX3Byb3BlcnR5TWFwLmVuZCgpOyArK3B0cikgewogICAgICAgICAg
ICAgICAgIGlmIChwdHItPnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFw
cGVuZCgmcHRyLT5zZWNvbmQpOworICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
cHRyLT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE0OSw3ICsxNDks
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVt
ZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNNYXJrQ2hp
bGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKQEAgLTE3MiwxMCArMTcyLDEwIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwog
ICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICBC
YXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICAgICAgbV9jYWxsYmFja09iamVjdERh
dGEtPm1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOworICAgICAgICBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+dmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKICAgICB9CiAKICAgICB2b2lkIGluaXQoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCA5ZjA4ZTdmZWY1NWFlN2IxNjNkMGI5NDU1YmQ4NGQ0NDFmN2NmYjYw
Li5lNWU4NjA4MTc4ODBiNDE3NGQwY2VlNmIzNTQ2MDAzZDU0YzFiNjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMTEtMDQtMjEgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdGFydCBtb3ZpbmcgdG8gYSBnZW5lcmFsIHZpc2l0b3IgcGF0dGVybiBmb3Ig
R0MgdHJhdmVyc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTE0MQorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHJlbmFtZToKKyAgICAgICAgICAg
IG1hcmtDaGlsZHJlbiAtPiB2aXNpdENoaWxkcmVuCisgICAgICAgICAgICBtYXJrQWdncmVnYXRl
IC0+IHZpc2l0QWdncmVnYXRlCisgICAgICAgICAgICBtYXJrU3RhY2sgLT4gdmlzaXRvcgorICAg
ICAgICAgICAgTWFya1N0YWNrIC0+IHR5cGVkZWYnZCB0byBTbG90VmlzaXRvcgorCisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dERhdGE6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0
YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5leHA6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2aXNpdFN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hl
Ojp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRBZ2dyZWdh
dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAg
ICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oOgorICAgICAgICAq
IGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OldlYWtIYW5kbGVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjptYXJr
U3Ryb25nSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Om1hcmtXZWFrSGFuZGxl
cyk6CisgICAgICAgICogaGVhcC9IYW5kbGVIZWFwLmg6CisgICAgICAgICogaGVhcC9IYW5kbGVT
dGFjay5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjptYXJrKToKKyAgICAgICAgKiBo
ZWFwL0hhbmRsZVN0YWNrLmg6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpT
Qzo6SGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
VGVtcFNvcnRWZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtTdGFjazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1hcmtTdGFj
azo6ZHJhaW4pOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChKU0M6Okhl
YXBSb290VmlzaXRvcjo6SGVhcFJvb3RWaXNpdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcFJvb3RW
aXNpdG9yOjptYXJrKToKKyAgICAgICAgKEpTQzo6SGVhcFJvb3RWaXNpdG9yOjp2aXNpdG9yKToK
KyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogcnVudGltZS9BcmdMaXN0
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyk6Cisg
ICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMu
Y3BwOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2V0
dGVyU2V0dGVyLmg6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgIChKU0M6
OkpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp2aXNp
dERpcmVjdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpKU0NlbGw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjp2aXNpdElmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6dmlzaXREaXJlY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3Rh
dGljU2NvcGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0
aWNTY29wZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6VHlwZUluZm8pOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6b3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1pv
bWJpZS5oOgorICAgICAgICAoSlNDOjpKU1pvbWJpZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWlu
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJp
bmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorCiAyMDExLTA0LTIwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggMWIwMGM2NmQwMzI0YmY4M2E1MmUxZTAxZDE1MTU2
NWM5NGVhOTZiMS4uZjMzYTM4YzEyOWMyOGFhY2NjYTZkZTdhMzViMzZkZWRkMjgxMGY0YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xNTYsNyArMTU2LDcg
QEAgX19aTjNKU0MxM1N0YXRlbWVudE5vZGU2c2V0TG9jRWlpCiBfX1pOM0pTQzE0SlNHbG9iYWxP
YmplY3QxMGdsb2JhbEV4ZWNFdgogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTJkZWZpbmVHZXR0
ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhKU09iamVjdEVqCiBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZVNldHRlckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEw
SWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RWoKLV9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDEybWFy
a0NoaWxkcmVuRVJOU185TWFya1N0YWNrRQorX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNp
dENoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRX
aXRoQXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1
ZUVqCiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUgIAogX19aTjNKU0Mx
NEpTR2xvYmFsT2JqZWN0NGluaXRFUE5TXzhKU09iamVjdEUKQEAgLTE2OCw3ICsxNjgsNyBAQCBf
X1pOM0pTQzE0U2FtcGxpbmdUaHJlYWQ1c3RhcnRFagogX19aTjNKU0MxNFRpbWVvdXRDaGVja2Vy
MTBkaWRUaW1lT3V0RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNFRpbWVvdXRDaGVja2VyNXJl
c2V0RXYKIF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlND
MTVKU1dyYXBwZXJPYmplY3QxMm1hcmtDaGlsZHJlbkVSTlNfOU1hcmtTdGFja0UKK19fWk4zSlND
MTVKU1dyYXBwZXJPYmplY3QxM3Zpc2l0Q2hpbGRyZW5FUk5TXzlNYXJrU3RhY2tFCiBfX1pOM0pT
QzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VOU182SGFuZGxl
SU5TXzdVbmtub3duRUVFUHZSTlNfOU1hcmtTdGFja0UKIF9fWk4zSlNDMTVXZWFrSGFuZGxlT3du
ZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pOM0pTQzE1V2Vha0hh
bmRsZU93bmVyRDJFdgpAQCAtMjUyLDcgKzI1Miw3IEBAIF9fWk4zSlNDNkpTTG9jazlsb2NrQ291
bnRFdgogX19aTjNKU0M2SlNMb2NrQzFFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzZSZWdFeHA2
Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRU5TXzExUmVnRXhwRmxhZ3NF
CiBfX1pOM0pTQzZSZWdFeHBEMUV2Ci1fX1pOM0pTQzdKU0FycmF5MTJtYXJrQ2hpbGRyZW5FUk5T
XzlNYXJrU3RhY2tFCitfX1pOM0pTQzdKU0FycmF5MTN2aXNpdENoaWxkcmVuRVJOU185TWFya1N0
YWNrRQogX19aTjNKU0M3SlNBcnJheTE1c2V0U3ViY2xhc3NEYXRhRVB2CiBfX1pOM0pTQzdKU0Fy
cmF5MThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzlFeGVjU3RhdGVFalJOU18xMlByb3BlcnR5U2xv
dEUKIF9fWk4zSlNDN0pTQXJyYXk2c19pbmZvRQpAQCAtMjg0LDcgKzI4NCw3IEBAIF9fWk4zSlND
OEpTT2JqZWN0MTJkZWZpbmVHZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
UFMwX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJkZWZpbmVTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFUFMwX2oKIF9fWk4zSlNDOEpTT2JqZWN0MTJsb29rdXBHZXR0ZXJFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQzhKU09iamVjdDEybG9va3Vw
U2V0dGVyRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0M4SlNPYmpl
Y3QxMm1hcmtDaGlsZHJlbkVSTlNfOU1hcmtTdGFja0UKK19fWk4zSlNDOEpTT2JqZWN0MTN2aXNp
dENoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0M4SlNPYmplY3QxNGRlbGV0ZVByb3Bl
cnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0M4SlNPYmplY3Qx
NGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKIF9fWk4zSlNDOEpTT2JqZWN0MTV1bndy
YXBwZWRPYmplY3RFdgpAQCAtMzA2LDcgKzMwNiw3IEBAIF9fWk4zSlNDOEpTT2JqZWN0MjJmaWxs
R2V0dGVyUHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQTlNfMTZXcml0ZUJhcnJpZXJC
CiBfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VFbW0KIF9fWk4zSlND
OEpTT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M4SlNPYmplY3Qz
cHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1
dFByb3BlcnR5U2xvdEUKLV9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNf
N0pTVmFsdWVFICAKK19fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzhKU09iamVjdDZzX2luZm9FCiBfX1pOM0pTQzhQcm9maWxlcjEzc3Rv
cFByb2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmls
ZXIxNHN0YXJ0UHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDBm
YTczZjE5OWZjYjczMGQ0YzkxMjIyNjAwODBiMThiMTZjODVlZWUuLjhiZTY2YTgwZThkMTdjODUx
OWQ1YWVhMTJkOThmOTNiY2Y5YmY5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVm
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0yMzcsMTAgKzIzNywxMCBAQCBFWFBPUlRT
CiAgICAgP2xvY2tDb3VudEBKU0xvY2tASlNDQEBTQUhYWgogICAgID9sb29rdXBHZXR0ZXJASlNP
YmplY3RASlNDQEBVQUU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QEBaCiAgICAgP2xvb2t1cFNldHRlckBKU09iamVjdEBKU0NAQFVBRT9BVkpTVmFsdWVAMkBQQVZF
eGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoKLSAgICA/bWFya0NoaWxkcmVuQEpTR2xvYmFs
T2JqZWN0QEpTQ0BAVUFFWEFBVk1hcmtTdGFja0AyQEBaCi0gICAgP21hcmtDaGlsZHJlbkBKU09i
amVjdEBKU0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBAWgotICAgID9tYXJrQ2hpbGRyZW5ASlNXcmFw
cGVyT2JqZWN0QEpTQ0BARUFFWEFBVk1hcmtTdGFja0AyQEBaCi0gICAgP21hcmtDaGlsZHJlbkBT
Y29wZUNoYWluTm9kZUBKU0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBAWgorICAgID92aXNpdENoaWxk
cmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAVUFFWEFBVk1hcmtTdGFja0AyQEBaCisgICAgP3Zpc2l0
Q2hpbGRyZW5ASlNPYmplY3RASlNDQEBVQUVYQUFWTWFya1N0YWNrQDJAQFoKKyAgICA/dmlzaXRD
aGlsZHJlbkBKU1dyYXBwZXJPYmplY3RASlNDQEBFQUVYQUFWTWFya1N0YWNrQDJAQFoKKyAgICA/
dmlzaXRDaGlsZHJlbkBTY29wZUNoYWluTm9kZUBKU0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBAWgog
ICAgID9tYXRlcmlhbGl6ZVByb3BlcnR5TWFwQFN0cnVjdHVyZUBKU0NAQEFBRVhBQVZKU0dsb2Jh
bERhdGFAMkBAWgogICAgID9tb250aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05AWgogICAgID9t
c1RvWWVhckBXVEZAQFlBSE5AWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCAwZTY0OGJhODAzZDgwOWNjZTM3Y2U3YjU1MmQxZWU5M2RhZmE5MjI4
Li40NjA1MmIyNzYwYTc2Yjk5MTcyNzVhOWY3MzQ1MDJjYzQ4MGI5NzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQwMCwzNyArMTQwMCwz
NyBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2Nr
OjptYXJrU3RydWN0dXJlcyhNYXJrU3RhY2smIG1hcmtTdGFjaywgSW5zdHJ1Y3Rpb24qIHZQQykg
Y29uc3QKK3ZvaWQgQ29kZUJsb2NrOjp2aXNpdFN0cnVjdHVyZXMoU2xvdFZpc2l0b3ImIHZpc2l0
b3IsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKIAogICAgIGlmICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfc2VsZikgfHwgdlBDWzBd
LnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9z
ZWxmKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
YnlfaWRfY3VzdG9tX3NlbGYpKSB7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51
LnN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG8pIHx8IHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG8pIHx8
IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9j
dXN0b21fcHJvdG8pKSB7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s0XS51LnN0cnVj
dHVyZSk7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0cnVjdHVyZSk7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUpOworICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0
X2J5X2lkX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluKSkgewotICAgICAgICBt
YXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUpOwotICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbik7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ2UENbNF0udS5zdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdlBDWzVdLnUu
c3RydWN0dXJlQ2hhaW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bikpIHsKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzVdLnUuc3RydWN0dXJlKTsKLSAgICAgICAgbWFy
a1N0YWNrLmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOworICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnZQ
Q1s1XS51LnN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2UENbNl0udS5zdHJ1
Y3R1cmVDaGFpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9yZXBsYWNlKSkgewot
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNF0udS5zdHJ1Y3R1cmUpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmdlBDWzRdLnUuc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
cmVzb2x2ZV9nbG9iYWwpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpKSB7CiAgICAgICAgIGlmICh2UENbM10udS5z
dHJ1Y3R1cmUpCi0gICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbM10udS5zdHJ1Y3R1
cmUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnZQQ1szXS51LnN0cnVjdHVyZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkpCkBAIC0xNDQwLDcgKzE0
NDAsNyBAQCB2b2lkIENvZGVCbG9jazo6bWFya1N0cnVjdHVyZXMoTWFya1N0YWNrJiBtYXJrU3Rh
Y2ssIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiAgICAgICAgIHx8ICh2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvX2xpc3Qp
KQogICAgICAgICB8fCAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmX2xpc3QpKSkgewogICAgICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcyA9IHZQQ1s0XS51LnBvbHlt
b3JwaGljU3RydWN0dXJlczsKLSAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5tYXJrQWdn
cmVnYXRlKG1hcmtTdGFjaywgdlBDWzVdLnUub3BlcmFuZCk7CisgICAgICAgIHBvbHltb3JwaGlj
U3RydWN0dXJlcy0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvciwgdlBDWzVdLnUub3BlcmFuZCk7CiAg
ICAgICAgIGRlbGV0ZSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNDQ5LDQ4ICsxNDQ5LDQ4IEBAIHZvaWQgQ29kZUJsb2NrOjptYXJrU3RydWN0dXJl
cyhNYXJrU3RhY2smIG1hcmtTdGFjaywgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKICAgICBBU1NF
UlQodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lk
KSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlf
aWQpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9nZW5lcmljKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9wdXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfZ2V0X2FycmF5X2xlbmd0aCkgfHwgdlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X3N0cmluZ19sZW5ndGgpKTsKIH0KIAotdm9pZCBF
dmFsQ29kZUNhY2hlOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBF
dmFsQ29kZUNhY2hlOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2FjaGVNYXAuZW5kKCk7CiAgICAgZm9y
IChFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIHB0ciA9IG1fY2FjaGVNYXAuYmVnaW4oKTsgcHRyICE9
IGVuZDsgKytwdHIpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnB0ci0+c2Vjb25kKTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnB0ci0+c2Vjb25kKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6
Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIENvZGVCbG9jazo6dmlz
aXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgbWFya1N0YWNrLmFwcGVu
ZCgmbV9nbG9iYWxPYmplY3QpOwotICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fb3duZXJFeGVjdXRh
YmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX293bmVyRXhlY3V0YWJsZSk7CiAgICAgaWYgKG1fcmFyZURhdGEpCi0gICAgICAg
IG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZS5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci0g
ICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhtX2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEoKSwgbV9j
b25zdGFudFJlZ2lzdGVycy5zaXplKCkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX2V2YWxDb2Rl
Q2FjaGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
bV9jb25zdGFudFJlZ2lzdGVycy5kYXRhKCksIG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25FeHBycy5zaXplKCk7ICsraSkK
LSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9mdW5jdGlvbkV4cHJzW2ldKTsKKyAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25FeHByc1tpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1
bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfQ0FMTCkKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkKICAgICAg
ICAgaWYgKGNhbGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpKQotICAgICAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCgmY2FsbExpbmtJbmZvKGkpLmNhbGxlZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmY2FsbExpbmtJbmZvKGkpLmNhbGxlZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbWFya1N0cnVjdHVyZXMo
bWFya1N0YWNrLCAmbV9pbnN0cnVjdGlvbnNbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV0pOworICAgICAgICBtYXJrU3RydWN0dXJlcyh2aXNpdG9yLCAmbV9pbnN0cnVjdGlvbnNbbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0u
c3RydWN0dXJlKQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9nbG9iYWxSZXNvbHZl
SW5mb3NbaV0uc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2dsb2Jh
bFJlc29sdmVJbmZvc1tpXS5zdHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX3N0cnVjdHVyZVN0dWJJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICBtX3N0cnVjdHVyZVN0dWJJbmZvc1tpXS5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7
CisgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLnZpc2l0QWdncmVnYXRlKHZpc2l0b3Ip
OwogCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmIChtX21ldGhvZENhbGxMaW5rSW5m
b3NbaV0uY2FjaGVkU3RydWN0dXJlKSB7CiAgICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVz
dCBiZSBmaWxsZWQgYXQgdGhlIHNhbWUgdGltZQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVu
ZCgmbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFN0cnVjdHVyZSk7CisgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICBBU1NFUlQoISFtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVk
UHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fbWV0
aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5
cGVTdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYWY2OGViNTgxY2FkYWQyNzVhOWNmZjQ4
ZDgwNDQxODBjNjI5NWU3NS4uNTA1MzYzNmUwMDE0ZGE5YjFlYzNkMWU2ZTQ3OTA4ODdkZjUzZjE3
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjEx
LDcgKzIxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB+Q29kZUJsb2NrKCk7CiAKLSAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYp
OworICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIApAQCAtNDgxLDcgKzQ4MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBs
b2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFy
KiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50
IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNo
YXIqIG9wKSBjb25zdDsKICNlbmRpZgotICAgICAgICB2b2lkIG1hcmtTdHJ1Y3R1cmVzKE1hcmtT
dGFjayYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OworICAgICAgICB2b2lkIHZpc2l0U3RydWN0
dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OwogCiAgICAgICAgIHZv
aWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDNlNDUwYjEyYzNlNDUw
YmQ1ZWMwODc5NDI0NzBiNDgyOTYyZDRiZWUuLmRmOTM3ZGQ1NDcyMzM0MTIwYTZkMDdhMDFmMGMy
MzU0MDQxZTY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
dmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxD
b2RlQ2FjaGUuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBNYXJrU3RhY2s7CisgICAgdHlwZWRlZiBNYXJrU3RhY2sgU2xvdFZpc2l0b3I7CiAKICAgICBj
bGFzcyBFdmFsQ29kZUNhY2hlIHsKICAgICBwdWJsaWM6CkBAIC02Nyw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fj
aGVNYXAuaXNFbXB0eSgpOyB9CiAKLSAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFj
ayYpOworICAgICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2FjaGVhYmxlU291cmNl
TGVuZ3RoID0gMjU2OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAppbmRleCBkOWNiYjExYWQ4NjYwYTRmZGEwYzI0OTBiYWJlMmNmMzg5MjAwMTQxLi44NjY4
NDZjYWFjYmI3MGU3MDkxMjllMDUyZDUzOGYxYTA4OGUxMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMTA3LDE3ICsxMDcsMTcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxEYXRhLCBvd25lciwg
c3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFpbik7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGludCBjb3VudCkKKyAg
ICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvciwgaW50IGNvdW50
KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKICAgICAgICAgICAgICAgICBQb2x5bW9ycGhpY1N0dWJJbmZvJiBpbmZvID0gbGlzdFtpXTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoaW5mby5iYXNlKTsKICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLmJhc2UpOworICAgICAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZpbmZvLmJhc2UpOwogICAgICAgICAgICAgICAgIGlmIChpbmZv
LnUucHJvdG8gJiYgIWluZm8uaXNDaGFpbikKLSAgICAgICAgICAgICAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCgmaW5mby51LnByb3RvKTsKKyAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJmluZm8udS5wcm90byk7CiAgICAgICAgICAgICAgICAgaWYgKGluZm8udS5jaGFpbiAmJiBp
bmZvLmlzQ2hhaW4pCi0gICAgICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmluZm8u
dS5jaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmZvLnUuY2hh
aW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGJlNTc2
MGExYThkYjQ3NTkwMTI5OWViZGViZDY1MmFlMjU1ODA1OTIuLjlkZDQxYTZlMzJmN2JkYTc4MzFk
NDdmMTE3MGIwMWNjOTgyMjVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNjMsMzcgKzYzLDM3IEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICB9CiB9CiAKLXZvaWQgU3RydWN0dXJlU3R1
YkluZm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIFN0cnVjdHVy
ZVN0dWJJbmZvOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBz
d2l0Y2ggKGFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjoKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJl
KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG86
Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1
Y3R1cmUpOwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRQcm90by5wcm90b3R5
cGVTdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdS5nZXRCeUlkUHJvdG8uYmFz
ZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ1LmdldEJ5SWRQcm90
by5wcm90b3R5cGVTdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2J5X2lkX2NoYWluOgotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRDaGFp
bi5iYXNlT2JqZWN0U3RydWN0dXJlKTsKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5nZXRC
eUlkQ2hhaW4uY2hhaW4pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdS5nZXRCeUlkQ2hhaW4u
YmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ1LmdldEJ5SWRD
aGFpbi5jaGFpbik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
c2VsZl9saXN0OiB7CiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKLSAg
ICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjaywgdS5n
ZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOworICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMt
PnZpc2l0QWdncmVnYXRlKHZpc2l0b3IsIHUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG9fbGlz
dDogewogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGlj
U3RydWN0dXJlcyA9IHUuZ2V0QnlJZFByb3RvTGlzdC5zdHJ1Y3R1cmVMaXN0OwotICAgICAgICBw
b2x5bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrLCB1LmdldEJ5SWRQ
cm90b0xpc3QubGlzdFNpemUpOworICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IsIHUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb246Ci0g
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1
Y3R1cmUpOwotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLnN0
cnVjdHVyZSk7Ci0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUucHV0QnlJZFRyYW5zaXRpb24u
Y2hhaW4pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2
aW91c1N0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0
aW9uLnN0cnVjdHVyZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0
aW9uLmNoYWluKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9y
ZXBsYWNlOgotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LnB1dEJ5SWRSZXBsYWNlLmJhc2VP
YmplY3RTdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdS5wdXRCeUlkUmVwbGFj
ZS5iYXNlT2JqZWN0U3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNz
X2dldF9ieV9pZDoKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGJmZWViMWVh
ZDAzMWRmNDliOWY1MWVhMDU5ZDRhODFiM2EyYWY0OWUuLjdmMTFlZGQ3Njk2OTE1MTg4NzZjZDEw
ZjVmMjg1NWU4NDIzZjY4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC0xMTYsNyArMTE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRlcmVmKCk7Ci0gICAgICAgIHZvaWQgbWFy
a0FnZ3JlZ2F0ZShNYXJrU3RhY2smKTsKKyAgICAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90
VmlzaXRvciYpOwogCiAgICAgICAgIGJvb2wgc2Vlbk9uY2UoKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
CmluZGV4IDY3YTc5NmE2YWM3NDg0YzFlN2MzMmMwM2U5ZGY5NzU4OTllMDkyMmEuLjQ3ZGNkN2Zh
NjQ1NjZkNDgxMWZkZDUwZmRiNTVjZDcwZGQzYjg3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC0zOCwxMiAr
MzgsMTIgQEAgRGVidWdnZXJBY3RpdmF0aW9uOjpEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU09iamVjdCogYWN0aXYKICAgICBtX2FjdGl2YXRpb24uc2V0KGds
b2JhbERhdGEsIHRoaXMsIHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRpb24pKTsK
IH0KIAotdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsK
KyAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIGlmIChtX2FjdGl2
YXRpb24pCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fYWN0aXZhdGlvbik7CisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZtX2FjdGl2YXRpb24pOwogfQogCiBVU3RyaW5nIERlYnVnZ2VyQWN0
aXZhdGlvbjo6Y2xhc3NOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAppbmRleCBiZmIzNmRiNTMzYjdmZGQzNmFi
ZTM1Yzc5OTQ4ZTg0Nzk4NmEzM2MyLi41NzQ5ODZhMGZkNjYyZjY4MWYzYTA2ZWI0YmUyMGU3ZGMw
YWZmM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgRGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0
Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICAgICAg
dmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgV3JpdGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gbV9hY3RpdmF0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmNwcAppbmRleCAxYTAwNTFlZTU1Njc3OGM5
YjhkMmRmYjUwMGVlNjRiNGFlYjY3MmRmLi45YjA1ZGIyMmRkNzk4Y2JjNWU5YWUxNTE5OWJlMTll
NWE2ZTdmZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVI
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmNwcApA
QCAtMzQsNyArMzQsNyBAQCBXZWFrSGFuZGxlT3duZXI6On5XZWFrSGFuZGxlT3duZXIoKQogewog
fQogCi1ib29sIFdlYWtIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiwgTWFya1N0YWNrJikKK2Jvb2wgV2Vha0hhbmRsZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj4sIHZvaWQqLCBTbG90Vmlz
aXRvciYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNjAsMTYgKzYwLDE2IEBAIHZvaWQg
SGFuZGxlSGVhcDo6Z3JvdygpCiAgICAgfQogfQogCi12b2lkIEhhbmRsZUhlYXA6Om1hcmtTdHJv
bmdIYW5kbGVzKEhlYXBSb290TWFya2VyJiBoZWFwUm9vdE1hcmtlcikKK3ZvaWQgSGFuZGxlSGVh
cDo6bWFya1N0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdE1hcmtlcikKIHsK
ICAgICBOb2RlKiBlbmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7CiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gbV9zdHJvbmdMaXN0LmJlZ2luKCk7IG5vZGUgIT0gZW5kOyBub2RlID0gbm9kZS0+bmV4dCgp
KQogICAgICAgICBoZWFwUm9vdE1hcmtlci5tYXJrKG5vZGUtPnNsb3QoKSk7CiB9CiAKLXZvaWQg
SGFuZGxlSGVhcDo6bWFya1dlYWtIYW5kbGVzKEhlYXBSb290TWFya2VyJiBoZWFwUm9vdE1hcmtl
cikKK3ZvaWQgSGFuZGxlSGVhcDo6bWFya1dlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYgaGVh
cFJvb3RWaXNpdG9yKQogewotICAgIE1hcmtTdGFjayYgbWFya1N0YWNrID0gaGVhcFJvb3RNYXJr
ZXIubWFya1N0YWNrKCk7CisgICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IgPSBoZWFwUm9vdFZpc2l0
b3IudmlzaXRvcigpOwogCiAgICAgTm9kZSogZW5kID0gbV93ZWFrTGlzdC5lbmQoKTsKICAgICBm
b3IgKE5vZGUqIG5vZGUgPSBtX3dlYWtMaXN0LmJlZ2luKCk7IG5vZGUgIT0gZW5kOyBub2RlID0g
bm9kZS0+bmV4dCgpKSB7CkBAIC04MiwxMCArODIsMTAgQEAgdm9pZCBIYW5kbGVIZWFwOjptYXJr
V2Vha0hhbmRsZXMoSGVhcFJvb3RNYXJrZXImIGhlYXBSb290TWFya2VyKQogICAgICAgICBpZiAo
IXdlYWtPd25lcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghd2Vha093
bmVyLT5pc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90
KG5vZGUtPnNsb3QoKSksIG5vZGUtPndlYWtPd25lckNvbnRleHQoKSwgbWFya1N0YWNrKSkKKyAg
ICAgICAgaWYgKCF3ZWFrT3duZXItPmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxV
bmtub3duPjo6d3JhcFNsb3Qobm9kZS0+c2xvdCgpKSwgbm9kZS0+d2Vha093bmVyQ29udGV4dCgp
LCB2aXNpdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGhlYXBSb290TWFy
a2VyLm1hcmsobm9kZS0+c2xvdCgpKTsKKyAgICAgICAgaGVhcFJvb3RWaXNpdG9yLm1hcmsobm9k
ZS0+c2xvdCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hhbmRsZUhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhl
YXAuaAppbmRleCA4ODZjOTRhMDAwYzdkZjRlMjIxNmVhNzE3MzQ0ZGZjYjRhMWYzODMzLi41YzE1
MWMzM2I3N2E0NjEyMDE5OWQyYzE1MjY5MWY5NzQzMTlhODEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGFuZGxlSGVhcC5oCkBAIC0zNCwxNiArMzQsMTcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBIYW5kbGVIZWFwOwotY2xhc3MgSGVhcFJvb3RNYXJrZXI7CitjbGFzcyBIZWFw
Um9vdFZpc2l0b3I7CiBjbGFzcyBKU0dsb2JhbERhdGE7CiBjbGFzcyBKU1ZhbHVlOwogY2xhc3Mg
TWFya1N0YWNrOwogY2xhc3MgVHlwZUNvdW50ZXI7Cit0eXBlZGVmIE1hcmtTdGFjayBTbG90Vmlz
aXRvcjsKIAogY2xhc3MgV2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5X
ZWFrSGFuZGxlT3duZXIoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0LCBNYXJrU3RhY2smKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+LCB2
b2lkKiBjb250ZXh0LCBTbG90VmlzaXRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShI
YW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIApAQCAtNjEsOCArNjIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtYWtlV2VhayhIYW5kbGVTbG90LCBXZWFrSGFuZGxlT3duZXIqID0g
MCwgdm9pZCogY29udGV4dCA9IDApOwogICAgIEhhbmRsZVNsb3QgY29weVdlYWsoSGFuZGxlU2xv
dCk7CiAKLSAgICB2b2lkIG1hcmtTdHJvbmdIYW5kbGVzKEhlYXBSb290TWFya2VyJik7Ci0gICAg
dm9pZCBtYXJrV2Vha0hhbmRsZXMoSGVhcFJvb3RNYXJrZXImKTsKKyAgICB2b2lkIG1hcmtTdHJv
bmdIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOworICAgIHZvaWQgbWFya1dlYWtIYW5kbGVzKEhl
YXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgZmluYWxpemVXZWFrSGFuZGxlcygpOwogCiAgICAg
dm9pZCB3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCmluZGV4IDFjMTUxYWYxOGExMDM3ZTQ2
MDlmNWMxNmE1MDlkNWE4ZDhkNjUyY2UuLmFkYTRmOTkyNzgzMTczMGNlZTU3OTAwOTkxMzY0YjNm
NzZiYTZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0
YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgSGFuZGxlU3RhY2s6OkhhbmRsZVN0YWNrKCkKICAgICBncm93KCk7
CiB9CiAKLXZvaWQgSGFuZGxlU3RhY2s6Om1hcmsoSGVhcFJvb3RNYXJrZXImIGhlYXBSb290TWFy
a2VyKQordm9pZCBIYW5kbGVTdGFjazo6bWFyayhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290TWFy
a2VyKQogewogICAgIGNvbnN0IFZlY3RvcjxIYW5kbGVTbG90PiYgYmxvY2tzID0gbV9ibG9ja1N0
YWNrLmJsb2NrcygpOwogICAgIHNpemVfdCBibG9ja0xlbmd0aCA9IG1fYmxvY2tTdGFjay5ibG9j
a0xlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0
YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCmluZGV4IDU0
ZTZjNjBkZDNjMWYwYzYzOGRkNDU2YTZhMjgxM2MwYzMyMmJjOTUuLjExNTc4NGE4N2IzZjNhNTg3
MWQ1OWYzYjRkNDIyZmM5ZDNjMDMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hhbmRsZVN0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFu
ZGxlU3RhY2suaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExv
Y2FsU2NvcGU7Ci1jbGFzcyBIZWFwUm9vdE1hcmtlcjsKK2NsYXNzIEhlYXBSb290VmlzaXRvcjsK
IAogY2xhc3MgSGFuZGxlU3RhY2sgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAKICAgICBIYW5kbGVTbG90IHB1c2goKTsKIAotICAgIHZvaWQgbWFyayhIZWFwUm9vdE1hcmtl
ciYpOworICAgIHZvaWQgbWFyayhIZWFwUm9vdFZpc2l0b3ImKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGdyb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMTE5OTliNzg0
YWQzYzBlZGE3Yjg5OTk3MmQ0NzY5MzljOGQ5YWY5NC4uNjM3NWIxNGQzOTI4MDcxYTA3ZGNjMjhl
YWQyYThlMGI2MTA2MGJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBib29sIEhlYXA6OnVucHJvdGVjdChKU1ZhbHVlIGspCiAgICAgcmV0dXJu
IG1fcHJvdGVjdGVkVmFsdWVzLnJlbW92ZShrLmFzQ2VsbCgpKTsKIH0KIAotdm9pZCBIZWFwOjpt
YXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdE1hcmtlciYgaGVhcFJvb3RNYXJrZXIpCit2b2lk
IEhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3RzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RNYXJr
ZXIpCiB7CiAgICAgUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBlbmQgPSBtX3Byb3RlY3RlZFZh
bHVlcy5lbmQoKTsKICAgICBmb3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgaXQgPSBtX3By
b3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBIZWFwOjpwb3BUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiog
dGVtcFZlY3RvcikKICAgICBtX3RlbXBTb3J0aW5nVmVjdG9ycy5yZW1vdmVMYXN0KCk7CiB9CiAg
ICAgCi12b2lkIEhlYXA6Om1hcmtUZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RNYXJrZXImIGhlYXBS
b290TWFya2VyKQordm9pZCBIZWFwOjptYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRv
ciYgaGVhcFJvb3RNYXJrZXIpCiB7CiAgICAgdHlwZWRlZiBWZWN0b3I8VmVjdG9yPFZhbHVlU3Ry
aW5nUGFpcj4qID4gVmVjdG9yT2ZWYWx1ZVN0cmluZ1ZlY3RvcnM7CiAKQEAgLTIwNyw4ICsyMDcs
OCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSBDb2xsZWN0aW9uOwogCi0gICAgTWFya1N0YWNrJiBtYXJrU3RhY2sgPSBtX21hcmtTdGFjazsK
LSAgICBIZWFwUm9vdE1hcmtlciBoZWFwUm9vdE1hcmtlcihtYXJrU3RhY2spOworICAgIE1hcmtT
dGFjayYgdmlzaXRvciA9IG1fbWFya1N0YWNrOworICAgIEhlYXBSb290VmlzaXRvciBoZWFwUm9v
dE1hcmtlcih2aXNpdG9yKTsKICAgICAKICAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJv
b3RzIGJlZm9yZSBjbGVhcmluZyBtYXJrIGJpdHMgYmVjYXVzZQogICAgIC8vIGNvbnNlcnZhdGl2
ZSBnYXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIGZyb20gb3VyIGxhc3QgbWFyayBwYXNzIHRv
CkBAIC0yMjEsNDcgKzIyMSw0NyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAgICBtX21h
cmtlZFNwYWNlLmNsZWFyTWFya3MoKTsKIAotICAgIG1hcmtTdGFjay5hcHBlbmQobWFjaGluZVRo
cmVhZFJvb3RzKTsKLSAgICBtYXJrU3RhY2suZHJhaW4oKTsKKyAgICB2aXNpdG9yLmFwcGVuZCht
YWNoaW5lVGhyZWFkUm9vdHMpOworICAgIHZpc2l0b3IuZHJhaW4oKTsKIAotICAgIG1hcmtTdGFj
ay5hcHBlbmQocmVnaXN0ZXJGaWxlUm9vdHMpOwotICAgIG1hcmtTdGFjay5kcmFpbigpOworICAg
IHZpc2l0b3IuYXBwZW5kKHJlZ2lzdGVyRmlsZVJvb3RzKTsKKyAgICB2aXNpdG9yLmRyYWluKCk7
CiAKICAgICBtYXJrUHJvdGVjdGVkT2JqZWN0cyhoZWFwUm9vdE1hcmtlcik7Ci0gICAgbWFya1N0
YWNrLmRyYWluKCk7CisgICAgdmlzaXRvci5kcmFpbigpOwogICAgIAogICAgIG1hcmtUZW1wU29y
dFZlY3RvcnMoaGVhcFJvb3RNYXJrZXIpOwotICAgIG1hcmtTdGFjay5kcmFpbigpOworICAgIHZp
c2l0b3IuZHJhaW4oKTsKIAogICAgIGlmIChtX21hcmtMaXN0U2V0ICYmIG1fbWFya0xpc3RTZXQt
PnNpemUoKSkKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhoZWFwUm9v
dE1hcmtlciwgKm1fbWFya0xpc3RTZXQpOwogICAgIGlmIChtX2dsb2JhbERhdGEtPmV4Y2VwdGlv
bikKICAgICAgICAgaGVhcFJvb3RNYXJrZXIubWFyaygmbV9nbG9iYWxEYXRhLT5leGNlcHRpb24p
OwotICAgIG1hcmtTdGFjay5kcmFpbigpOworICAgIHZpc2l0b3IuZHJhaW4oKTsKIAogICAgIG1f
aGFuZGxlSGVhcC5tYXJrU3Ryb25nSGFuZGxlcyhoZWFwUm9vdE1hcmtlcik7Ci0gICAgbWFya1N0
YWNrLmRyYWluKCk7CisgICAgdmlzaXRvci5kcmFpbigpOwogCiAgICAgbV9oYW5kbGVTdGFjay5t
YXJrKGhlYXBSb290TWFya2VyKTsKLSAgICBtYXJrU3RhY2suZHJhaW4oKTsKKyAgICB2aXNpdG9y
LmRyYWluKCk7CiAKICAgICAvLyBNYXJrIHRoZSBzbWFsbCBzdHJpbmdzIGNhY2hlIGFzIGxhdGUg
YXMgcG9zc2libGUsIHNpbmNlIGl0IHdpbGwgY2xlYXIKICAgICAvLyBpdHNlbGYgaWYgbm90aGlu
ZyBlbHNlIGhhcyBtYXJrZWQgaXQuCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGUgc21hbGwgc3Ry
aW5ncyBjYWNoZSB0byB1c2UgV2VhazxUPi4KLSAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3RyaW5n
cy5tYXJrQ2hpbGRyZW4oaGVhcFJvb3RNYXJrZXIpOwotICAgIG1hcmtTdGFjay5kcmFpbigpOwor
ICAgIG1fZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnZpc2l0Q2hpbGRyZW4oaGVhcFJvb3RNYXJr
ZXIpOworICAgIHZpc2l0b3IuZHJhaW4oKTsKICAgICAKICAgICAvLyBXZWFrIGhhbmRsZXMgbXVz
dCBiZSBtYXJrZWQgbGFzdCwgYmVjYXVzZSB0aGVpciBvd25lcnMgdXNlIHRoZSBzZXQgb2YKICAg
ICAvLyBvcGFxdWUgcm9vdHMgdG8gZGV0ZXJtaW5lIHJlYWNoYWJpbGl0eS4KICAgICBpbnQgbGFz
dE9wYXF1ZVJvb3RDb3VudDsKICAgICBkbyB7Ci0gICAgICAgIGxhc3RPcGFxdWVSb290Q291bnQg
PSBtYXJrU3RhY2sub3BhcXVlUm9vdENvdW50KCk7CisgICAgICAgIGxhc3RPcGFxdWVSb290Q291
bnQgPSB2aXNpdG9yLm9wYXF1ZVJvb3RDb3VudCgpOwogICAgICAgICBtX2hhbmRsZUhlYXAubWFy
a1dlYWtIYW5kbGVzKGhlYXBSb290TWFya2VyKTsKLSAgICAgICAgbWFya1N0YWNrLmRyYWluKCk7
CisgICAgICAgIHZpc2l0b3IuZHJhaW4oKTsKICAgICAvLyBJZiB0aGUgc2V0IG9mIG9wYXF1ZSBy
b290cyBoYXMgZ3Jvd24sIG1vcmUgd2VhayBoYW5kbGVzIG1heSBoYXZlIGJlY29tZSByZWFjaGFi
bGUuCi0gICAgfSB3aGlsZSAobGFzdE9wYXF1ZVJvb3RDb3VudCAhPSBtYXJrU3RhY2sub3BhcXVl
Um9vdENvdW50KCkpOworICAgIH0gd2hpbGUgKGxhc3RPcGFxdWVSb290Q291bnQgIT0gdmlzaXRv
ci5vcGFxdWVSb290Q291bnQoKSk7CiAKLSAgICBtYXJrU3RhY2sucmVzZXQoKTsKKyAgICB2aXNp
dG9yLnJlc2V0KCk7CiAKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjMmQzYmFjODJlMTMzM2IxNDk0OThl
MGNhYTVlNDc3NTQ3OTZhZjNkLi5iODVlYWEzNGIxYjk4NjQxY2ViZDljNDMwNTdhYTIyM2NhZDEw
YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEds
b2JhbENvZGVCbG9jazsKLSAgICBjbGFzcyBIZWFwUm9vdE1hcmtlcjsKKyAgICBjbGFzcyBIZWFw
Um9vdFZpc2l0b3I7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsK
ICAgICBjbGFzcyBKU1ZhbHVlOwpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKICAgICBjbGFzcyBXZWFr
R0NIYW5kbGVQb29sOworICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwogCiAgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8SlNWYWx1ZSwgVVN0cmluZz4gVmFsdWVTdHJpbmdQYWlyOwogICAg
IHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0OwpAQCAtMTE0
LDggKzExNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVt
b3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBtYXJrUm9vdHMoKTsKLSAg
ICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdE1hcmtlciYpOwotICAgICAg
ICB2b2lkIG1hcmtUZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RNYXJrZXImKTsKKyAgICAgICAgdm9p
ZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICAgICAgdm9pZCBt
YXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYpOwogCiAgICAgICAgIGVudW0gU3dl
ZXBUb2dnbGUgeyBEb05vdFN3ZWVwLCBEb1N3ZWVwIH07CiAgICAgICAgIHZvaWQgcmVzZXQoU3dl
ZXBUb2dnbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXgg
M2ZiMWE5OGRmYmFlYjU5Yjg1MTZlMDAxYTU5ZjBiMGViM2EyODljZi4uMzRmNmQxNGNiZGY2Yjdj
M2YxZTFhZGI0M2NhZWU4YTAzODMwYmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suY3BwCkBAIC01NCwzMiArNTQsMzIgQEAgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZChD
b25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMpCiAgICAgICAgIGludGVybmFsQXBw
ZW5kKHJvb3RzW2ldKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya1N0YWNrOjptYXJrQ2hpbGRyZW4o
SlNDZWxsKiBjZWxsKQoraW5saW5lIHZvaWQgTWFya1N0YWNrOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwogICAgIGlmIChj
ZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKLSAg
ICAgICAgY2VsbC0+SlNDZWxsOjptYXJrQ2hpbGRyZW4oKnRoaXMpOworICAgICAgICBjZWxsLT5K
U0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKCFjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNNYXJrQ2hpbGRy
ZW4oKSkgeworICAgIGlmICghY2VsbC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKSB7CiAgICAgICAgIEFTU0VSVChjZWxsLT5pc09iamVjdCgpKTsKICNp
ZmRlZiBOREVCVUcKLSAgICAgICAgYXNPYmplY3QoY2VsbCktPm1hcmtDaGlsZHJlbkRpcmVjdCgq
dGhpcyk7CisgICAgICAgIGFzT2JqZWN0KGNlbGwpLT52aXNpdENoaWxkcmVuRGlyZWN0KCp0aGlz
KTsKICNlbHNlCiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9s
YXRpb24pOwogICAgICAgICBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHRy
dWU7Ci0gICAgICAgIGNlbGwtPm1hcmtDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIGNlbGwtPnZp
c2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICBBU1NFUlQobV9pc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb24pOwogICAgICAgICBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xh
dGlvbiA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNl
bGwtPnZwdHIoKSA9PSBtX2pzQXJyYXlWUHRyKSB7Ci0gICAgICAgIGFzQXJyYXkoY2VsbCktPm1h
cmtDaGlsZHJlbkRpcmVjdCgqdGhpcyk7CisgICAgICAgIGFzQXJyYXkoY2VsbCktPnZpc2l0Q2hp
bGRyZW5EaXJlY3QoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNlbGwtPm1h
cmtDaGlsZHJlbigqdGhpcyk7CisgICAgY2VsbC0+dmlzaXRDaGlsZHJlbigqdGhpcyk7CiB9CiAK
IHZvaWQgTWFya1N0YWNrOjpkcmFpbigpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBNYXJrU3Rh
Y2s6OmRyYWluKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNlbGwtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA8IENvbXBvdW5kVHlwZSkgewotICAgICAgICAgICAg
ICAgIGNlbGwtPkpTQ2VsbDo6bWFya0NoaWxkcmVuKCp0aGlzKTsKKyAgICAgICAgICAgICAgICBj
ZWxsLT5KU0NlbGw6OnZpc2l0Q2hpbGRyZW4oKnRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChj
dXJyZW50Lm1fdmFsdWVzID09IGVuZCkgewogICAgICAgICAgICAgICAgICAgICBtX21hcmtTZXRz
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjIsMTAg
KzEyMiwxMCBAQCB2b2lkIE1hcmtTdGFjazo6ZHJhaW4oKQogICAgICAgICAgICAgaWYgKGN1cnJl
bnQubV92YWx1ZXMgPT0gZW5kKQogICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVtb3ZlTGFz
dCgpOwogCi0gICAgICAgICAgICBtYXJrQ2hpbGRyZW4oY2VsbCk7CisgICAgICAgICAgICB2aXNp
dENoaWxkcmVuKGNlbGwpOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlICghbV92YWx1ZXMuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbWFya0NoaWxkcmVuKG1fdmFsdWVzLnJlbW92ZUxhc3QoKSk7
CisgICAgICAgICAgICB2aXNpdENoaWxkcmVuKG1fdmFsdWVzLnJlbW92ZUxhc3QoKSk7CiAgICAg
fQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2lzRHJhaW5pbmcgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXggYWJhNzY0NzZlODUyNmE4MWRiMGQ0
ZDJkYmNhZTJlNGQyZTNjMWM2NC4uMTYzMzUxNjMwNzUyYmQ0MjQ1YzVkODBhOWMyOWQzOGQ3ZDg5
NDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTgwLDE0ICs4
MCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIEhlYXBSb290TWFya2VyOyAvLyBBbGxvd2VkIHRv
IG1hcmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3RseS4KKyAgICAgICAgZnJpZW5kIGNs
YXNzIEhlYXBSb290VmlzaXRvcjsgLy8gQWxsb3dlZCB0byBtYXJrIGEgSlNWYWx1ZSogb3IgSlND
ZWxsKiogZGlyZWN0bHkuCiAgICAgICAgIHZvaWQgYXBwZW5kKEpTVmFsdWUqKTsKICAgICAgICAg
dm9pZCBhcHBlbmQoSlNWYWx1ZSosIHNpemVfdCBjb3VudCk7CiAgICAgICAgIHZvaWQgYXBwZW5k
KEpTQ2VsbCoqKTsKIAogICAgICAgICB2b2lkIGludGVybmFsQXBwZW5kKEpTQ2VsbCopOwogICAg
ICAgICB2b2lkIGludGVybmFsQXBwZW5kKEpTVmFsdWUpOwotICAgICAgICB2b2lkIG1hcmtDaGls
ZHJlbihKU0NlbGwqKTsKKyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCopOwogCiAg
ICAgICAgIHN0cnVjdCBNYXJrU2V0IHsKICAgICAgICAgICAgIE1hcmtTZXQoSlNWYWx1ZSogdmFs
dWVzLCBKU1ZhbHVlKiBlbmQsIE1hcmtTZXRQcm9wZXJ0aWVzIHByb3BlcnRpZXMpCkBAIC0yMDIs
NiArMjAyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9OwogCisgICAgdHlwZWRl
ZiBNYXJrU3RhY2sgU2xvdFZpc2l0b3I7CisKICAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFw
cGVuZChKU1ZhbHVlKiBzbG90LCBzaXplX3QgY291bnQpCiAgICAgewogICAgICAgICBpZiAoIWNv
dW50KQpAQCAtMjQzLDEwICsyNDUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gdGhpcyBj
bGFzcyB0byBtYXJrIGRpcmVjdCBoZWFwIHJvb3RzIHRoYXQgYXJlIG1hcmtlZCBkdXJpbmcgZXZl
cnkgR0MgcGFzcy4KICAgICAvLyBBbGwgb3RoZXIgcmVmZXJlbmNlcyBzaG91bGQgYmUgd3JhcHBl
ZCBpbiBXcml0ZUJhcnJpZXJzIGFuZCBtYXJrZWQgdGhyb3VnaAogICAgIC8vIHRoZSBNYXJrU3Rh
Y2suCi0gICAgY2xhc3MgSGVhcFJvb3RNYXJrZXIgeworICAgIGNsYXNzIEhlYXBSb290VmlzaXRv
ciB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIEhlYXA7Ci0gICAgICAgIEhl
YXBSb290TWFya2VyKE1hcmtTdGFjayYpOworICAgICAgICBIZWFwUm9vdFZpc2l0b3IoU2xvdFZp
c2l0b3ImKTsKICAgICAgICAgCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIG1hcmsoSlNWYWx1
ZSopOwpAQCAtMjU0LDQwICsyNTYsNDAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
bWFyayhKU1N0cmluZyoqKTsKICAgICAgICAgdm9pZCBtYXJrKEpTQ2VsbCoqKTsKICAgICAgICAg
Ci0gICAgICAgIE1hcmtTdGFjayYgbWFya1N0YWNrKCk7CisgICAgICAgIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBNYXJrU3RhY2smIG1fbWFya1N0YWNr
OworICAgICAgICBTbG90VmlzaXRvciYgbV92aXNpdG9yOwogICAgIH07CiAKLSAgICBpbmxpbmUg
SGVhcFJvb3RNYXJrZXI6OkhlYXBSb290TWFya2VyKE1hcmtTdGFjayYgbWFya1N0YWNrKQotICAg
ICAgICA6IG1fbWFya1N0YWNrKG1hcmtTdGFjaykKKyAgICBpbmxpbmUgSGVhcFJvb3RWaXNpdG9y
OjpIZWFwUm9vdFZpc2l0b3IoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgICAgIDogbV92aXNp
dG9yKHZpc2l0b3IpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEhlYXBSb290TWFy
a2VyOjptYXJrKEpTVmFsdWUqIHNsb3QpCisgICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9y
OjptYXJrKEpTVmFsdWUqIHNsb3QpCiAgICAgewotICAgICAgICBtX21hcmtTdGFjay5hcHBlbmQo
c2xvdCk7CisgICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCk7CiAgICAgfQogCi0gICAgaW5s
aW5lIHZvaWQgSGVhcFJvb3RNYXJrZXI6Om1hcmsoSlNWYWx1ZSogc2xvdCwgc2l6ZV90IGNvdW50
KQorICAgIGlubGluZSB2b2lkIEhlYXBSb290VmlzaXRvcjo6bWFyayhKU1ZhbHVlKiBzbG90LCBz
aXplX3QgY291bnQpCiAgICAgewotICAgICAgICBtX21hcmtTdGFjay5hcHBlbmQoc2xvdCwgY291
bnQpOworICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kKHNsb3QsIGNvdW50KTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgdm9pZCBIZWFwUm9vdE1hcmtlcjo6bWFyayhKU1N0cmluZyoqIHNsb3QpCisgICAg
aW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjptYXJrKEpTU3RyaW5nKiogc2xvdCkKICAgICB7
Ci0gICAgICAgIG1fbWFya1N0YWNrLmFwcGVuZChyZWludGVycHJldF9jYXN0PEpTQ2VsbCoqPihz
bG90KSk7CisgICAgICAgIG1fdmlzaXRvci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
Kj4oc2xvdCkpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEhlYXBSb290TWFya2VyOjptYXJr
KEpTQ2VsbCoqIHNsb3QpCisgICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjptYXJrKEpT
Q2VsbCoqIHNsb3QpCiAgICAgewotICAgICAgICBtX21hcmtTdGFjay5hcHBlbmQoc2xvdCk7Cisg
ICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCk7CiAgICAgfQogCi0gICAgaW5saW5lIE1hcmtT
dGFjayYgSGVhcFJvb3RNYXJrZXI6Om1hcmtTdGFjaygpCisgICAgaW5saW5lIFNsb3RWaXNpdG9y
JiBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0b3IoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbWFy
a1N0YWNrOworICAgICAgICByZXR1cm4gbV92aXNpdG9yOwogICAgIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAppbmRleCAyOWE4
Y2QwZTc0YzI4NTRiN2E1MmM2Njc5ZDQxMDg0OTY2NjgzYzYxLi5kOGI1ZWE3YzZmMTRmYWE0Y2Q5
OWEzZGEyN2E4NjI3ZDRhMWMwZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTGl2
ZU9iamVjdEl0ZXJhdG9yOwogICAgIGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFzcyBXZWFrR0NI
YW5kbGU7CisgICAgdHlwZWRlZiBNYXJrU3RhY2sgU2xvdFZpc2l0b3I7CiAKICAgICBjbGFzcyBN
YXJrZWRTcGFjZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmtlZFNwYWNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKaW5kZXggZjQ2ZDEwODBl
YmZiYjkxN2I1ZTE0NDZkYWMwOWRjOTRmNjJjNjg3OC4uYzFhYTlkZDdhNjkzNWU2Yjk4MDU5YzA0
M2JiM2M0YzgwYjRmNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBBcmdMaXN0OjpnZXRTbGljZShpbnQgc3RhcnRJ
bmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdAogICAgIHJlc3VsdCA9IEFyZ0xpc3QobV9hcmdz
ICsgc3RhcnRJbmRleCwgbV9hcmdDb3VudCAtIHN0YXJ0SW5kZXgpOwogfQogCi12b2lkIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHMoSGVhcFJvb3RNYXJrZXImIGhlYXBSb290TWFya2Vy
LCBMaXN0U2V0JiBtYXJrU2V0KQordm9pZCBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3Rz
KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RNYXJrZXIsIExpc3RTZXQmIG1hcmtTZXQpCiB7CiAg
ICAgTGlzdFNldDo6aXRlcmF0b3IgZW5kID0gbWFya1NldC5lbmQoKTsKICAgICBmb3IgKExpc3RT
ZXQ6Oml0ZXJhdG9yIGl0ID0gbWFya1NldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCBhNzk0YTA0Y2FlMzFjNjQ2
NWJjZTQ4NzAyZjE5YWIwMWFiOWZlYjk5Li5iYjJkMjg0MjEyN2E5MDI4ZWIwNWUxZmM0NjQzMjE3
OTA1NGRiN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0z
MCw2ICszMCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE1hcmtTdGFjazsKKyAg
ICB0eXBlZGVmIE1hcmtTdGFjayBTbG90VmlzaXRvcjsKIAogICAgIGNsYXNzIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkQXJndW1lbnRC
dWZmZXIpOwpAQCAtMTQxLDcgKzE0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25z
dF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyICsgbV9zaXplOyB9CiAK
LSAgICAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290TWFya2VyJiwgTGlzdFNldCYp
OworICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoSGVhcFJvb3RWaXNpdG9yJiwgTGlzdFNl
dCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggZTIwMWI5
MWY1MzAxZTdjMDNlYmQ0NDQ0NjNlMDViNDA1MzRhMjlhNC4uODM4ZmQwOWQ0ZTNjNWY1ZWY0ZTkw
Y2RkYWFhYWJiNjNjZTdlNmU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuY3BwCkBAIC00MywyMiArNDMsMjIgQEAgQXJndW1lbnRzOjp+QXJndW1lbnRzKCkK
ICAgICAgICAgZGVsZXRlIFtdIGQtPmV4dHJhQXJndW1lbnRzOwogfQogCi12b2lkIEFyZ3VtZW50
czo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBBcmd1bWVudHM6OnZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNPYmplY3Q6Om1hcmtD
aGlsZHJlbihtYXJrU3RhY2spOworICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3Ip
OwogCiAgICAgaWYgKGQtPnJlZ2lzdGVyQXJyYXkpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmRW
YWx1ZXMoZC0+cmVnaXN0ZXJBcnJheS5nZXQoKSwgZC0+bnVtUGFyYW1ldGVycyk7CisgICAgICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKGQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCksIGQtPm51bVBhcmFt
ZXRlcnMpOwogCiAgICAgaWYgKGQtPmV4dHJhQXJndW1lbnRzKSB7CiAgICAgICAgIHVuc2lnbmVk
IG51bUV4dHJhQXJndW1lbnRzID0gZC0+bnVtQXJndW1lbnRzIC0gZC0+bnVtUGFyYW1ldGVyczsK
LSAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhkLT5leHRyYUFyZ3VtZW50cywgbnVtRXh0
cmFBcmd1bWVudHMpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhkLT5leHRyYUFyZ3Vt
ZW50cywgbnVtRXh0cmFBcmd1bWVudHMpOwogICAgIH0KIAotICAgIG1hcmtTdGFjay5hcHBlbmQo
JmQtPmNhbGxlZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJmQtPmNhbGxlZSk7CiAKICAgICBpZiAo
ZC0+YWN0aXZhdGlvbikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmZC0+YWN0aXZhdGlvbik7
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkLT5hY3RpdmF0aW9uKTsKIH0KIAogdm9pZCBBcmd1
bWVudHM6OmNvcHlUb1JlZ2lzdGVycyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyKiBidWZmZXIs
IHVpbnQzMl90IG1heFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oCmluZGV4IGI1YWE0NmJmMDcyNDBhMzg4NjVkNjc5MTUxNzYyYzFmNWQ3YTZkZjIuLjk2ODZk
OGI2Y2ZlYTIwNTRjMzdiYWM5NWIyMzExMjc4ZjIzNjNhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgdm9pZCBmaWxsQXJnTGlz
dChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwogCkBAIC05OCw3ICs5OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6
OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnZXRBcmd1bWVu
dHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRl
ckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGZhMTRhZDUwNjBlMGVhNzA1YWU5MjQ1
MjY0YTE0M2M4NTAwMjk1N2IuLmMxNzk0MzBiZWMzM2Y3YTlkNDQyNTBhZjc4MTliMTBkZWJiZDlh
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBA
IC0xMzUsMTEgKzEzNSwxMSBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRl
cm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZQogICAgIHJldHVybiAw
OwogfQogCi12b2lkIEV2YWxFeGVjdXRhYmxlOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCit2b2lkIEV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIFNjcmlwdEV4ZWN1dGFibGU6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2sp
OworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgaWYg
KG1fZXZhbENvZGVCbG9jaykKLSAgICAgICAgbV9ldmFsQ29kZUJsb2NrLT5tYXJrQWdncmVnYXRl
KG1hcmtTdGFjayk7CisgICAgICAgIG1fZXZhbENvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlz
aXRvcik7CiB9CiAKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhl
Y1N0YXRlKiBleGVjKQpAQCAtMjIxLDExICsyMjEsMTEgQEAgc3RhdGljIGJvb2wgdHJ5REZHQ29t
cGlsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRD
b2QKIH0KICNlbmRpZgogCi12b2lkIFByb2dyYW1FeGVjdXRhYmxlOjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFNjcmlwdEV4ZWN1dGFibGU6Om1hcmtDaGls
ZHJlbihtYXJrU3RhY2spOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7CiAgICAgaWYgKG1fcHJvZ3JhbUNvZGVCbG9jaykKLSAgICAgICAgbV9wcm9ncmFtQ29k
ZUJsb2NrLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1fcHJvZ3JhbUNvZGVC
bG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCkBAIC0zMjEsMTMgKzMyMSwxMyBAQCBKU09iamVjdCog
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRl
KiBleGVjLCBTY29wZQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBGdW5jdGlvbkV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgU2NyaXB0
RXhlY3V0YWJsZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgU2NyaXB0RXhlY3V0YWJs
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKICAgICBpZiAobV9jb2RlQmxvY2tGb3JDYWxsKQot
ICAgICAgICBtX2NvZGVCbG9ja0ZvckNhbGwtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2tGb3JDYWxsLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICBp
ZiAobV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCi0gICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAogdm9pZCBGdW5jdGlvbkV4ZWN1
dGFibGU6OmRpc2NhcmRDb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAppbmRleCBmYmUzM2NmOTgyODhmOWJhYzY1Y2FmMDQ5NzVmMWE3YTZmZTJiZmVjLi5l
OGI2OWQwOTU5MGNhZWExYTMwMGM1NjQ0MmQxMmMxNGRhZTJiNTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0yMzUsMTIgKzIzNSwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJr
Q2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biB8IFNjcmlwdEV4ZWN1dGFibGU6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIGJvb2wpOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50
ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9l
dmFsQ29kZUJsb2NrOwogICAgIH07CkBAIC0yODIsMTIgKzI4MiwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW4g
fCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFNjcmlw
dEV4ZWN1dGFibGU6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlSW50ZXJuYWwoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJl
bihNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKTsKIAogICAgICAgICBPd25QdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29k
ZUJsb2NrOwogICAgIH07CkBAIC0zNzAsNyArMzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3lt
Ym9sVGFibGU7IH0KIAogICAgICAgICB2b2lkIGRpc2NhcmRDb2RlKCk7Ci0gICAgICAgIHZvaWQg
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2Jh
bENvZGUoY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29uc3QgU291
cmNlQ29kZSYsIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZv
KENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsIDApOyB9
CiAKQEAgLTM4MSw3ICszODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3Qq
IGNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAg
ICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopOwogICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJs
ZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTY3JpcHRFeGVjdXRhYmxlOjpTdHJ1
Y3R1cmVGbGFnczsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAg
ICAgIHVuc2lnbmVkIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMgOiAzMTsKICAgICAgICAgYm9vbCBt
X2ZvcmNlVXNlc0FyZ3VtZW50cyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAyYjlmNDQ0MjMxZjhhNWQzZTI5ODk1NDhlZDk4NDBi
MGM3MzAxNTc3Li4zOTdlOTE4YzUzNjljMDc2NmNmNTI3ZTkxMjhjZTkyODg4MGE1MzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKQEAgLTI4
LDE0ICsyOCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBHZXR0ZXJTZXR0ZXI6Om1h
cmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgR2V0dGVyU2V0dGVyOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTQ2VsbDo6bWFya0NoaWxk
cmVuKG1hcmtTdGFjayk7CisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAg
ICAgaWYgKG1fZ2V0dGVyKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2dldHRlcik7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2dldHRlcik7CiAgICAgaWYgKG1fc2V0dGVyKQotICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3NldHRlcik7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZtX3NldHRlcik7CiB9CiAKIGJvb2wgR2V0dGVyU2V0dGVyOjppc0dldHRlclNldHRlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4
IGEyMjJjN2E0YmExZDQ4MDg4NDk2MGRiYmY4YWYyOWQ3Y2Q4Yjc4ZGYuLjBkNjVkMWQxM2U3NzJm
YTY0OWY1OWYwNzY0ZmUxODhhNzM3YmEzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVu
KE1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90Vmlz
aXRvciYpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dl
dHRlci5nZXQoKTsgfQogICAgICAgICB2b2lkIHNldEdldHRlcihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTT2JqZWN0KiBnZXR0ZXIpIHsgbV9nZXR0ZXIuc2V0KGdsb2JhbERhdGEsIHRoaXMs
IGdldHRlcik7IH0KQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgc2V0U2V0dGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIHNldHRlcikg
eyBtX3NldHRlci5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc2V0dGVyKTsgfQogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oR2V0dGVyU2V0dGVyVHlw
ZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSwgQW5vbnltb3VzU2xvdENvdW50LCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5
cGVJbmZvKEdldHRlclNldHRlclR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBBbm9ueW1v
dXNTbG90Q291bnQsIDApOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAppbmRleCAwMTY1NDg4NWJkN2JkMWU1OTMy
MjUwZjI2NGMzNWZjN2VmZjdlZWI1Li44OGU4ZTVlODY0YTA1YjgzZTRhNGI5ZGQ3MGViMGNlNjZi
YzI3NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFs
dWVXcmFwcGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlw
ZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyksIEFu
b255bW91c1Nsb3RDb3VudCwgMCk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAwKTsKICAgICAgICAgfQogCiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNGUzNjY0MWQwZTVjODA1ZWM5YmYw
YzhmZDZmZjEyZDFhNTc4MTY1ZS4uODFlMThjMTRjOWY3Njk1ZmYxMWRjOTc2ZjcxODBlZmMzNmE0
ZjY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCkBAIC01OCwxOSArNTgsMTkgQEAgSlNBY3RpdmF0aW9uOjp+SlNBY3RpdmF0aW9uKCkKICAg
ICBzdGF0aWNfY2FzdDxTaGFyZWRTeW1ib2xUYWJsZSo+KG1fc3ltYm9sVGFibGUpLT5kZXJlZigp
OwogfQogCi12b2lkIEpTQWN0aXZhdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0
YWNrKQordm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIC8vIE5vIG5lZWQgdG8gbWFyayBvdXIgcmVnaXN0
ZXJzIGlmIHRoZXkncmUgc3RpbGwgaW4gdGhlIFJlZ2lzdGVyRmlsZS4KICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHJlZ2lzdGVyQXJyYXkgPSBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCk7CiAgICAg
aWYgKCFyZWdpc3RlckFycmF5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtYXJrU3RhY2suYXBw
ZW5kVmFsdWVzKHJlZ2lzdGVyQXJyYXksIG1fbnVtUGFyYW1ldGVyc01pbnVzVGhpcyk7CisgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSwgbV9udW1QYXJhbWV0ZXJzTWludXNU
aGlzKTsKIAogICAgIC8vIFNraXAgdGhlIGNhbGwgZnJhbWUsIHdoaWNoIHNpdHMgYmV0d2VlbiB0
aGUgcGFyYW1ldGVycyBhbmQgdmFycy4KLSAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHJlZ2lz
dGVyQXJyYXkgKyBtX251bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemUsIG1fbnVtQ2FwdHVyZWRWYXJzLCBNYXlDb250YWluTnVsbFZhbHVlcyk7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMocmVnaXN0ZXJBcnJheSArIG1fbnVtUGFyYW1ldGVy
c01pbnVzVGhpcyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgbV9udW1DYXB0
dXJlZFZhcnMsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsKIH0KIAogaW5saW5lIGJvb2wgSlNBY3Rp
dmF0aW9uOjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmgKaW5kZXggNjU2NDJmMTEyNjJiMzVlNDhjNzdmZGZmOWJlMmYxYjFlNjVjNjRjZi4u
NWY0YzkzNTFjNWUzZGVlNDFlYTEwZGRiNmE4N2EzNGFhNGQyZGQ4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQWN0aXZhdGlvbihDYWxsRnJhbWUqLCBGdW5jdGlvbkV4
ZWN1dGFibGUqKTsKICAgICAgICAgdmlydHVhbCB+SlNBY3RpdmF0aW9uKCk7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKIApAQCAt
NjksNyArNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykg
eyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsg
fQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJz
aW9uIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBO
ZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAppbmRleCBiZjYxMDk3YWNmODg1OGQ3MjkyNzNmNmRiNjI2NDRkOTljNmMxMmIyLi5iMGFlODlh
OTg2MjViYzQyZjI4MzZhOTk2MzI5M2I3MDU5YzllZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtODU3LDkgKzg1Nyw5IEBAIHZvaWQgSlNBcnJheTo6
dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywgaW50IGNvdW50KQogICAgICAgICB2ZWN0b3Jb
aV0uY2xlYXIoKTsKIH0KIAotdm9pZCBKU0FycmF5OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBt
YXJrU3RhY2spCit2b2lkIEpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgbWFya0NoaWxkcmVuRGlyZWN0KG1hcmtTdGFjayk7CisgICAgdmlzaXRDaGls
ZHJlbkRpcmVjdCh2aXNpdG9yKTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlTnVtYmVyc0ZvclFT
b3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKaW5kZXggOGJlODUxMzZiNDlkMTA3ZjVmYjZlOTUyZGZhYzkwMjllNTZm
YWM2Yy4uM2NiOGFhZGVhZTM0Mjg3NGU3OTkwMjM1ZTUyYWJhMTdmM2Y1ZDQ0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTI4LDcgKzEyOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9u
eW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBp
bmxpbmUgdm9pZCBtYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spOworICAg
ICAgICBpbmxpbmUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdG9yYWdlT2Zmc2V0KCkKICAgICAgICAgewpAQCAtMTQx
LDEyICsxNDEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKICAg
ICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3ViY2xh
c3NEYXRhKHZvaWQqKTsKQEAgLTE4NSwxOSArMTg1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGlubGluZSBib29sIGlzSlNBcnJheShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTQ2VsbCog
Y2VsbCkgeyByZXR1cm4gY2VsbC0+dnB0cigpID09IGdsb2JhbERhdGEtPmpzQXJyYXlWUHRyOyB9
CiAgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNW
YWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIGlzSlNBcnJheShnbG9iYWxEYXRhLCB2LmFz
Q2VsbCgpKTsgfQogCi0gICAgaW5saW5lIHZvaWQgSlNBcnJheTo6bWFya0NoaWxkcmVuRGlyZWN0
KE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgIGlubGluZSB2b2lkIEpTQXJyYXk6OnZpc2l0Q2hp
bGRyZW5EaXJlY3QoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICBKU09iamVj
dDo6bWFya0NoaWxkcmVuRGlyZWN0KG1hcmtTdGFjayk7CisgICAgICAgIEpTT2JqZWN0Ojp2aXNp
dENoaWxkcmVuRGlyZWN0KHZpc2l0b3IpOwogICAgICAgICAKICAgICAgICAgQXJyYXlTdG9yYWdl
KiBzdG9yYWdlID0gbV9zdG9yYWdlOwogCiAgICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5n
dGggPSBzdGQ6Om1pbihzdG9yYWdlLT5tX2xlbmd0aCwgbV92ZWN0b3JMZW5ndGgpOwotICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHN0b3JhZ2UtPm1fdmVjdG9yLCB1c2VkVmVjdG9yTGVu
Z3RoLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHN0b3JhZ2UtPm1fdmVjdG9yLCB1c2VkVmVjdG9yTGVuZ3RoLCBNYXlDb250YWluTnVsbFZhbHVl
cyk7CiAKICAgICAgICAgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1f
c3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJh
dG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVN
YXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
ICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaXQtPnNlY29uZCk7CisgICAgICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmQoJml0LT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDdlZTg3MWMxYzY5MDI0YjdkNDgyYmEw
YzU0NTAyZjVhNTg1MTlmMjIuLjE4Yjc1NjZkY2Q3ZTQ4MWJiYTkzM2YxMzdmYWM1MDcyZjgyZWYy
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMTgsNyArMTE4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IEpTR2xvYmFsRGF0YSopOwogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRp
b247IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogI2lmIEVO
QUJMRShKU0NfWk9NQklFUykKICAgICAgICAgdmlydHVhbCBib29sIGlzWm9tYmllKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgpAQCAtMTc4LDkgKzE3OCw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCi0gICAgaW5s
aW5lIHZvaWQgSlNDZWxsOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCisgICAg
aW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHsKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOwogICAgIH0KIAogICAgIC8vIC0tLSBKU1ZhbHVl
IGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBhMThlOTczMDZiYmY3NDc4NDhiZDlm
YzJjYjU5YjUwMmNjYmE1MjNjLi40ZTljZDM3ZDViZTg0ZWRmMjU1ZTBjNWFjMzA2OWU0NDFlNTRh
ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApA
QCAtMTMzLDE2ICsxMzMsMTYgQEAgY29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVk
RGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBuYW1lKGV4ZWMpOwogfQog
Ci12b2lkIEpTRnVuY3Rpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3Zv
aWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwogCi0gICAgbWFya1N0YWNrLmFwcGVuZCgmbV9zY29wZUNoYWluKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmbV9zY29wZUNoYWluKTsKICAgICBpZiAobV9leGVjdXRhYmxlKSB7CiAg
ICAgICAgIC8vIERlbGlnaHRmdWwgcmFjZSBjb25kaXRpb246IG1fZXhlY3V0YWJsZSBtYXkgbm90
IGhhdmUgYmVlbiBpbml0aWFsaXNlZAogICAgICAgICAvLyBpZiB0aGlzIGlzIGEgaG9zdCBmdW5j
dGlvbiwgYXMgdGhlIGV4ZWN1dGFibGUgaXNuJ3QgbmVjZXNzYXJpbHkgY3JlYXRlZCAKICAgICAg
ICAgLy8gdW50aWwgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIGFsbG9jYXRlZC4KLSAgICAg
ICAgbWFya1N0YWNrLmFwcGVuZCgmbV9leGVjdXRhYmxlKTsKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZXhlY3V0YWJsZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMTc0Y2QzODRlNzE0NTQ4NDNiZTVkMjM5MDQzOTIyMTFj
Mzk0YWY2Yi4uYmEwYTc5MjhlMTc3Nzg4MTQ4MzMzODBjZWE0NTBhZjM5M2QyZGFkYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtODQsNyArODQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShD
YWxsRGF0YSYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBjb25zdCBzdGF0
aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUp
OwpAQCAtOTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHko
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVl
IGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7
CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjgyOTQ5YWJlZGI4YTRiOThjOGIwNjhmZGFmY2Zl
ZmVhZTgzNzg2Yi4uMmU4NGVkMTkzOTg0MzY0YzM0NWNlYzMyMzJmMjRhMzY2MzU4ODdiYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtNzgsMTAgKzc4LDEwIEBAIHN0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFRpY2tDb3VudFRocmVz
aG9sZCA9IDI1NTsKIC8vIFByZWZlcnJlZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4g
ZWFjaCB0aW1lb3V0IGNoZWNrCiBzdGF0aWMgY29uc3QgaW50IHByZWZlcnJlZFNjcmlwdENoZWNr
VGltZUludGVydmFsID0gMTAwMDsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxp
bmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIFdyaXRlQmFycmllcjxU
PiogdikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQgdmlzaXRJZk5l
ZWRlZChTbG90VmlzaXRvciYgdmlzaXRvciwgV3JpdGVCYXJyaWVyPFQ+KiB2KQogewogICAgIGlm
ICgqdikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCh2KTsKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQodik7CiB9CiAKIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQpAQCAtMzA3LDYw
ICszMDcsNjAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgb2xkTGFzdEluUHJv
dG90eXBlQ2hhaW4tPnNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmplY3RQcm90b3R5cGUpOwog
fQogCi12b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3Rh
Y2spCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEpTVmFyaWFibGVPYmplY3Q6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwot
Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZ2xvYmFsU2NvcGVDaGFpbik7Ci0gICAg
bWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fbWV0aG9kQ2FsbER1bW15KTsKLQotICAgIG1hcmtJ
Zk5lZWRlZChtYXJrU3RhY2ssICZtX3JlZ0V4cENvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVk
ZWQobWFya1N0YWNrLCAmbV9lcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJm1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgJm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7Ci0KLSAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCAmbV9ldmFsRnVuY3Rpb24pOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2Nh
bGxGdW5jdGlvbik7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fYXBwbHlGdW5jdGlv
bik7Ci0KLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9vYmplY3RQcm90b3R5cGUpOwot
ICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICBt
YXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcnJheVByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVl
ZGVkKG1hcmtTdGFjaywgJm1fYm9vbGVhblByb3RvdHlwZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJm1fc3RyaW5nUHJvdG90eXBlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNr
LCAmbV9udW1iZXJQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2Rh
dGVQcm90b3R5cGUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX3JlZ0V4cFByb3Rv
dHlwZSk7Ci0KLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9hcmd1bWVudHNTdHJ1Y3R1
cmUpOwotICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2FycmF5U3RydWN0dXJlKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlKTsKLSAg
ICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJl
KTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCAmbV9jYWxsYmFja09iamVjdFN0cnVj
dHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZGF0ZVN0cnVjdHVyZSk7Ci0g
ICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgJm1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUpOwotICAg
IG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssICZtX2Vycm9yU3RydWN0dXJlKTsKLSAgICBtYXJrSWZO
ZWVkZWQobWFya1N0YWNrLCAmbV9mdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVk
KG1hcmtTdGFjaywgJm1fbnVtYmVyT2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQo
bWFya1N0YWNrLCAmbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwotICAgIG1hcmtJZk5l
ZWRlZChtYXJrU3RhY2ssICZtX3JlZ0V4cFN0cnVjdHVyZSk7Ci0gICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgJm1fc3RyaW5nT2JqZWN0U3RydWN0dXJlKTsKLSAgICBtYXJrSWZOZWVkZWQobWFy
a1N0YWNrLCAmbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICBKU1ZhcmlhYmxlT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworCisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9nbG9iYWxTY29wZUNoYWluKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX21l
dGhvZENhbGxEdW1teSk7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZ0V4cENv
bnN0cnVjdG9yKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Vycm9yQ29uc3RydWN0
b3IpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZhbEVycm9yQ29uc3RydWN0b3Ip
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Ip
OworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7
CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7Cisg
ICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKworICAg
IHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fZXZhbEZ1bmN0aW9uKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX2NhbGxGdW5jdGlvbik7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9hcHBseUZ1bmN0aW9uKTsKKworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fb2Jq
ZWN0UHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Z1bmN0aW9uUHJv
dG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FycmF5UHJvdG90eXBlKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Jvb2xlYW5Qcm90b3R5cGUpOworICAgIHZp
c2l0SWZOZWVkZWQodmlzaXRvciwgJm1fc3RyaW5nUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVl
ZGVkKHZpc2l0b3IsICZtX251bWJlclByb3RvdHlwZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNp
dG9yLCAmbV9kYXRlUHJvdG90eXBlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX3Jl
Z0V4cFByb3RvdHlwZSk7CisKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2FyZ3VtZW50
c1N0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9hcnJheVN0cnVjdHVy
ZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9ib29sZWFuT2JqZWN0U3RydWN0dXJl
KTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1
Y3R1cmUpOworICAgIHZpc2l0SWZOZWVkZWQodmlzaXRvciwgJm1fY2FsbGJhY2tGdW5jdGlvblN0
cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9jYWxsYmFja09iamVjdFN0
cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9yLCAmbV9kYXRlU3RydWN0dXJlKTsK
KyAgICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2VtcHR5T2JqZWN0U3RydWN0dXJlKTsKKyAg
ICB2aXNpdElmTmVlZGVkKHZpc2l0b3IsICZtX2Vycm9yU3RydWN0dXJlKTsKKyAgICB2aXNpdElm
TmVlZGVkKHZpc2l0b3IsICZtX2Z1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVk
KHZpc2l0b3IsICZtX251bWJlck9iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2
aXNpdG9yLCAmbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOworICAgIHZpc2l0SWZOZWVk
ZWQodmlzaXRvciwgJm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdElmTmVlZGVkKHZpc2l0
b3IsICZtX3N0cmluZ09iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRJZk5lZWRlZCh2aXNpdG9y
LCAmbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKIAogICAgIGlmIChtX3JlZ2lzdGVyQXJy
YXkpIHsKICAgICAgICAgLy8gT3V0c2lkZSB0aGUgZXhlY3V0aW9uIG9mIGdsb2JhbCBjb2RlLCB3
aGVuIG91ciB2YXJpYWJsZXMgYXJlIHRvcm4gb2ZmLAogICAgICAgICAvLyB3ZSBjYW4gbWFyayB0
aGUgdG9ybi1vZmYgYXJyYXkuCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMobV9yZWdp
c3RlckFycmF5LmdldCgpLCBtX3JlZ2lzdGVyQXJyYXlTaXplKTsKKyAgICAgICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXMobV9yZWdpc3RlckFycmF5LmdldCgpLCBtX3JlZ2lzdGVyQXJyYXlTaXplKTsK
ICAgICB9IGVsc2UgaWYgKG1fcmVnaXN0ZXJzKSB7CiAgICAgICAgIC8vIER1cmluZyBleGVjdXRp
b24gb2YgZ2xvYmFsIGNvZGUsIHdoZW4gb3VyIHZhcmlhYmxlcyBhcmUgaW4gdGhlIHJlZ2lzdGVy
IGZpbGUsCiAgICAgICAgIC8vIHRoZSBzeW1ib2wgdGFibGUgdGVsbHMgdXMgaG93IG1hbnkgdmFy
aWFibGVzIHRoZXJlIGFyZSwgYW5kIHJlZ2lzdGVycwogICAgICAgICAvLyBwb2ludHMgdG8gd2hl
cmUgdGhleSBlbmQsIGFuZCB0aGUgcmVnaXN0ZXJzIHVzZWQgZm9yIGV4ZWN1dGlvbiBiZWdpbi4K
LSAgICAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhtX3JlZ2lzdGVycyAtIHN5bWJvbFRhYmxl
KCkuc2l6ZSgpLCBzeW1ib2xUYWJsZSgpLnNpemUoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VmFsdWVzKG1fcmVnaXN0ZXJzIC0gc3ltYm9sVGFibGUoKS5zaXplKCksIHN5bWJvbFRhYmxlKCku
c2l6ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDBlMzY5MjA4NjA5MWUzN2VhMjgyMGMwODM3ZjVhNGE5Mzgz
NjliZGUuLmQyYWQwYWQ0NDRiYTM5MmNkOWJkNDBiNGY3NWEyMWZjNzAzNmI4ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTUxLDcg
KzE1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+
SlNHbG9iYWxPYmplY3QoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1h
cmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKQEAgLTI1OCw3ICsyNTgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcm90ZWN0ZWQ6CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255
bW91c1Nsb3RDb3VudCA9IEpTVmFyaWFibGVPYmplY3Q6OkFub255bW91c1Nsb3RDb3VudCArIDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICBz
dHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKICAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byhjb25zdCBJZGVudGlmaWVyJiBpLCBKU1ZhbHVlIHYsIHVuc2lnbmVkIGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDI3ZmM1NjllYWFmOWIx
ZmU4Y2I2OGZiYjQwNDgzMmE0ZjU5NTI4NWUuLjg3NDJmZGNiMDRmMWE4Nzk5ZTZhMGMyZjJiZTk1
YmYyNjUxMjUzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmdpZmllcihFeGVjU3Rh
dGUqLCBjb25zdCBMb2NhbDxVbmtub3duPiYgcmVwbGFjZXIsIGNvbnN0IExvY2FsPFVua25vd24+
JiBzcGFjZSk7CiAgICAgTG9jYWw8VW5rbm93bj4gc3RyaW5naWZ5KEhhbmRsZTxVbmtub3duPik7
CiAKLSAgICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJik7CisgICAgdm9pZCB2aXNpdEFn
Z3JlZ2F0ZShTbG90VmlzaXRvciYpOwogCiBwcml2YXRlOgogICAgIGNsYXNzIEhvbGRlciB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggOTY3N2YyMzIx
ZTlmYmU5MTBkNjRiOTU1MWI5MWI5M2RlNDQxOWE0Ni4uYzcxMWIzNWFlMGQ0YjI0OTY5YmFlMzIy
MThlNjU5MzIwNmMzMGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtNjgsMTcgKzY4LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1By
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAg
fQogfQogCi12b2lkIEpTT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
Cit2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
I2lmbmRlZiBOREVCVUcKLSAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRp
b24gPSBtYXJrU3RhY2subV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247Ci0gICAg
bWFya1N0YWNrLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7Cisg
ICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lz
Q2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2aXNpdG9yLm1faXNDaGVja2lu
Z0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIG1hcmtDaGls
ZHJlbkRpcmVjdChtYXJrU3RhY2spOworICAgIHZpc2l0Q2hpbGRyZW5EaXJlY3QodmlzaXRvcik7
CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgbWFya1N0YWNrLm1faXNDaGVja2luZ0ZvckRlZmF1bHRN
YXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKKyAgICB2
aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA4MDczNWY4YzQyMTA4MWEwMDk3N2Q0ZDNkZjMwNWVk
MWU2YzQ4NTIwLi5iMDMzNDc1ODMzZWVhNGVlNzYyMmViOTE2NDBhY2ZkNDEzNTEzZTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTc5LDggKzc5LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRo
aXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJr
U3RhY2smKTsKLSAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcmtDaGlsZHJlbkRpcmVjdChN
YXJrU3RhY2smIG1hcmtTdGFjayk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJik7CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVu
RGlyZWN0KFNsb3RWaXNpdG9yJik7CiAKICAgICAgICAgLy8gVGhlIGlubGluZSB2aXJ0dWFsIGRl
c3RydWN0b3IgY2Fubm90IGJlIHRoZSBmaXJzdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCiAg
ICAgICAgIC8vIGluIHRoZSBjbGFzcyBhcyBpdCByZXN1bHRzIGluIHRoZSB2dGFibGUgYmVpbmcg
Z2VuZXJhdGVkIGFzIGEgd2VhayBzeW1ib2wKQEAgLTgyMCwxNSArODIwLDE1IEBAIGlubGluZSB2
b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICBhc0NlbGwoKS0+cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVj
dChNYXJrU3RhY2smIG1hcmtTdGFjaykKK0FMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6dmlz
aXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU0NlbGw6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKIAogICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7CiAg
ICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZVNpemUo
KTsKLSAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7CiAgICAgaWYgKG1f
aW5oZXJpdG9ySUQpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1faW5oZXJpdG9ySUQpOwor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9pbmhlcml0b3JJRCk7CiB9CiAKIC8vIC0tLSBKU1Zh
bHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApp
bmRleCBkNWFmMDQ0NjU2NzEzNDEyNGQ2YWY1ZWViZGEwOWJlY2E3MTE5Y2IxLi5lNjAxMGRlOWQ3
YTg4ZWQ2M2RiODJlNGI4MmNhNTYwZDA3ZTg3YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtOTUs
MTEgKzk1LDExIEBAIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogICAgIHJldHVybiBpZGVudGlmaWVy
OwogfQogCi12b2lkIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smIG1hcmtTdGFjaykKK3ZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBtYXJrU3RhY2suYXBwZW5kVmFsdWVzKG1f
anNTdHJpbmdzLmdldCgpLCBtX2pzU3RyaW5nc1NpemUsIE1heUNvbnRhaW5OdWxsVmFsdWVzKTsK
KyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NT
aXplLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CiAgICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4pCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9jYWNoZWRQcm90b3R5cGVDaGFpbik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IGI4NTdkYzA5ZDA2YjI4ODk5MTNhNTA4
NWIwYmYwMzFlODRjZjFjOGQuLjFhNTczNTAzMjM4NmEyZTM4OTc0NGIzZmEzNWJhN2Q3ZWM4N2Fj
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTQ3LDEyICs0NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc01hcmtDaGlsZHJlbiksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4pLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAog
ICAgICAgICBib29sIGdldE9mZnNldChzaXplX3QgaSwgaW50JiBvZmZzZXQpCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9i
amVjdC5jcHAKaW5kZXggM2Q0ZGM3YzZjZTVlYTcwMjA4YWVhNmVmMjM1MWI1ZGZjY2Q3ZWIzNy4u
ZDA0ZWU2MmY4ZGU5MDczZmUxMTI2ZTJlMTE3YzBlY2QxZGY2YTE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAKQEAg
LTMwLDEwICszMCwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTU3RhdGljU2NvcGVPYmplY3QpOwogCi12b2lkIEpTU3RhdGljU2NvcGVPYmplY3Q6Om1h
cmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNTdGF0aWNTY29wZU9iamVj
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1ZhcmlhYmxl
T2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKCZt
X3JlZ2lzdGVyU3RvcmUpOworICAgIEpTVmFyaWFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJm1fcmVnaXN0ZXJTdG9yZSk7CiB9CiAKIEpTT2Jq
ZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29w
ZU9iamVjdC5oCmluZGV4IDhjM2EyNDk1YzY4MDNjMDdkNTUxMDVmNGRmZmYzMzQyNzdkMGQ1ZGYu
LmIyMDFmZTA1Njc2YjJmMTcxNzFhNzRjYWVhNDE4YTk5YWYzMWM5MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgICAgIHN5bWJvbFRhYmxlKCkuYWRk
KGlkZW50LmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeSgtMSwgYXR0cmlidXRlcykpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICAgICAg
Ym9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0N7CiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTmVlZHNU
aGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxh
Z3M7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTeW1ib2xUYWJsZSBtX3N5bWJvbFRhYmxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4IGFjZGU4MWYx
NzhlZTMzMTkxYWUxZDE2MWI2NmUxMjVmM2JlOTIzNjguLmExOGM3NTc4YjE1MTRhNjcyZmI2MTZi
ZGU0MzVlMTFlMWVlNjMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSAxIDw8IDM7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE5lZWRzVGhpc0NvbnZlcnNpb24gPSAxIDw8IDQ7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEgPDwg
NTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzTWFya0NoaWxkcmVuID0gMSA8
PCA2OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNWaXNpdENoaWxkcmVuID0g
MSA8PCA2OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzID0gMSA8PCA3OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJc0pTRmluYWxPYmplY3Qg
PSAxIDw8IDg7CiAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChmbGFncyA8PSAweDFGRik7CiAgICAgICAgICAgICBBU1NFUlQo
dHlwZSA8PSAweEZGKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlID49IENvbXBvdW5kVHlwZSB8
fCAhKGZsYWdzICYgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKSk7CisgICAgICAgICAgICBBU1NFUlQo
dHlwZSA+PSBDb21wb3VuZFR5cGUgfHwgIShmbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4p
KTsKICAgICAgICAgICAgIC8vIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgbWVhbnMgKElt
cGxlbWVudHNIYXNJbnN0YW5jZSAmICFPdmVycmlkZXNIYXNJbnN0YW5jZSkKICAgICAgICAgICAg
IGlmICgobV9mbGFncyAmIChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNIYXNJbnN0
YW5jZSkpID09IEltcGxlbWVudHNIYXNJbnN0YW5jZSkKICAgICAgICAgICAgICAgICBtX2ZsYWdz
IHw9IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2U7CkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG92ZXJyaWRlc0hhc0luc3RhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc0hhc0luc3RhbmNlOyB9CiAgICAgICAgIGJvb2wgbmVl
ZHNUaGlzQ29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBOZWVkc1RoaXNDb252
ZXJzaW9uOyB9CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsgfQotICAg
ICAgICBib29sIG92ZXJyaWRlc01hcmtDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3Mg
JiBPdmVycmlkZXNNYXJrQ2hpbGRyZW47IH0KKyAgICAgICAgYm9vbCBvdmVycmlkZXNWaXNpdENo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47
IH0KICAgICAgICAgYm9vbCBvdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7IH0KICAgICAgICAgdW5zaWdu
ZWQgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgICAgIHVuc2lnbmVkIGlz
RmluYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzMiAmJiAoSXNKU0ZpbmFsT2JqZWN0ID4+IDgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmNwcAppbmRleCA2YzczYjJmMGRhOGE1ODBlMWUxMGQxYmNlOGUzMDhkNGZjMTg2YzQwLi4yYmY0
YTkwNDU4OWMyYWRhMGJmYzhmNjg2ZDdlZDU2YmJmNmM4MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKQEAgLTI2LDExICsyNiwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dyYXBw
ZXJPYmplY3QpOwogCi12b2lkIEpTV3JhcHBlck9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFj
ayYgbWFya1N0YWNrKSAKK3ZvaWQgSlNXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKSAKIHsKLSAgICBKU09iamVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFj
ayk7CisgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgaWYgKG1faW50
ZXJuYWxWYWx1ZSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9pbnRlcm5hbFZhbHVlKTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW50ZXJuYWxWYWx1ZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
cmFwcGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuaAppbmRleCBhN2RiZTBkOTAyZWZiOTA5ZWVhNmUxYjVkZDAwODVmZjEwZmIyN2QzLi44
OTcyNjQ4NjU4NGY0MDc1MzUyNWE1ZDlhODIwMTQ4MGM3M2QwMWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtNDIsMTAgKzQyLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtDaGls
ZHJlbiB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
SlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAgICAgICAKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+IG1faW50ZXJuYWxWYWx1ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKaW5kZXggMDU1OWI5Njk0Yjg5MzBjZDAxYTM3MTUw
MTdiZjk5MmEwOGFkNTkxOS4uNzk1MDM2ZWExYTMzMTg0ZWUwZGQ3ZmQyNDc5OWY5MTRmNTJkNGQx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBj
b25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMC4wOyB9CiAgICAgdmlydHVhbCBV
U3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAiIjsgfQogICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSop
IGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2
b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCA5Y2Q1ZGNiZjdmMzVkMmQ0YmE4
YjE0YTVmZTJjNmEwZGE0OWRlYWFkLi41YzRmMDA5MjA0MTllMjA1YjdiNzFiNTg1NmY4NmUxY2Uw
NjZlNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDYsMTEgKzQ2LDExIEBAIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCoKICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gT2JqZWN0VHlwZSk7CiB9CiAKLXZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEludGVybmFs
RnVuY3Rpb246Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEludGVybmFsRnVuY3Rpb246
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgaWYgKG1fZXJyb3JTdHJ1Y3R1cmUpCi0gICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZXJyb3JTdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9lcnJvclN0cnVjdHVyZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCBlOTZkYWY2NDRmYTRhMGE5ZDQzYWE5MTA5ZjViMDk5
MzUyODMwOGQ3Li40ZmIxNmYxYTM4MmU4YjRjNjYxMTk1MTYyODJmYjE2ODc3MzJmNWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCkBAIC00MywxMCArNDMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0
cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgp
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1
Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25z
dHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOwogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCBkODI0
ZWNkYjA4YmUzOGM5Y2IwZmY1Mzg1ZjY0NmMxMjE1NDViMmJmLi5mZmMwMTEyZjBhOTkzZTRhOTlk
NzNiZDkxYWUwODI3Yzg4ODBiZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCBSZWdFeHBPYmplY3Q6On5S
ZWdFeHBPYmplY3QoKQogewogfQogCi12b2lkIFJlZ0V4cE9iamVjdDo6bWFya0NoaWxkcmVuKE1h
cmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBSZWdFeHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKICAgICBpZiAoVU5MSUtFTFkoIWQt
Pmxhc3RJbmRleC5nZXQoKS5pc0ludDMyKCkpKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZk
LT5sYXN0SW5kZXgpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZC0+bGFzdEluZGV4KTsKIH0K
IAogYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCA0Mjc0ZmZm
NDE0OTFkMmU1NjY1OTU4MzFlNTRjNjY1ODBkYmZkY2E4Li5hMDgwM2ViZGFkMWYyNjZjYWI5MGRk
MTNhOTZlYWNlZDE2NzU2MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaApAQCAtNjQsMTAgKzY0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBib29sIG1hdGNoKEV4ZWNTdGF0
ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCmlu
ZGV4IDAyNmQ3MjkxOWUxZWY1YjFkOGViNmI4ZmE4NDc4OTZhZGYxNDgyYzYuLmVkNjBiYjE1OWFi
Zjg3MGU0OWQyNmE4ZmEyZmI0MWQ1MWRlODRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCkBAIC02NywxMyArNjcsMTMgQEAgaW50IFNjb3BlQ2hh
aW5Ob2RlOjpsb2NhbERlcHRoKCkKICAgICByZXR1cm4gc2NvcGVEZXB0aDsKIH0KIAotdm9pZCBT
Y29wZUNoYWluTm9kZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBT
Y29wZUNoYWluTm9kZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBpZiAobmV4dCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbmV4dCk7Ci0gICAgbWFya1N0
YWNrLmFwcGVuZCgmb2JqZWN0KTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKCZnbG9iYWxPYmplY3Qp
OwotICAgIG1hcmtTdGFjay5hcHBlbmQoJmdsb2JhbFRoaXMpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbmV4dCk7CisgICAgdmlzaXRvci5hcHBlbmQoJm9iamVjdCk7CisgICAgdmlzaXRvci5h
cHBlbmQoJmdsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQoJmdsb2JhbFRoaXMpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlQ2hhaW4uaAppbmRleCBkMGEyNjcyYjYxODBmMTliYjExZjdlZjJkOTVmOGViZjJlNTRkYjYw
Li44NDgxYmRjZGFlNjM0MzcyMTc2YTMxNDAyMWUxNWRhOTljZDM1YmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIE1hcmtTdGFjazsKICAg
ICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CisgICAgdHlwZWRlZiBNYXJrU3RhY2sgU2xvdFZp
c2l0b3I7CiAgICAgCiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGUgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBwdWJsaWM6CkBAIC02Niw5ICs2Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAg
ICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNNYXJrQ2hpbGRyZW47CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW47CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCmlu
ZGV4IGFjNjcwMjAwYWYxYjYxODhkMThkMWM0YTg1Y2RlNjJkZTA2NjdmZjUuLjg3NDFlOWJkMjlh
NTMyMjBkOTE2Zjk5NzFjMjAyNzhmYjA0ZGUxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApAQCAtNzQsNyArNzQsNyBAQCBTbWFsbFN0cmlu
Z3M6On5TbWFsbFN0cmluZ3MoKQogewogfQogCi12b2lkIFNtYWxsU3RyaW5nczo6bWFya0NoaWxk
cmVuKEhlYXBSb290TWFya2VyJiBoZWFwUm9vdE1hcmtlcikKK3ZvaWQgU21hbGxTdHJpbmdzOjp2
aXNpdENoaWxkcmVuKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RNYXJrZXIpCiB7CiAgICAgLyoK
ICAgICAgICBPdXIgaHlwb3RoZXNpcyBpcyB0aGF0IHNtYWxsIHN0cmluZ3MgYXJlIHZlcnkgY29t
bW9uLiBTbywgd2UgY2FjaGUgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bWFsbFN0cmluZ3MuaAppbmRleCBiNTRkMDIwY2UzOWIxYTIyODQ0NjU3NjJmMTRiODdjZGZmYTRh
NjcyLi4xNzYwN2JiYTExZDBiYjFjMDZhMzc0ZjI3ZGE2NTE3MzBjZTBmOGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAtMzMsMTEgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgSGVhcFJvb3RNYXJrZXI7CisgICAg
Y2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFz
cyBKU1N0cmluZzsKICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xhc3MgU21hbGxTdHJpbmdz
U3RvcmFnZTsKKyAgICB0eXBlZGVmIE1hcmtTdGFjayBTbG90VmlzaXRvcjsKIAogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgPSAweEZGOwogCkBAIC02
Myw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN0cmluZ0ltcGwqIHNpbmds
ZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CiAKLSAgICAgICAg
dm9pZCBtYXJrQ2hpbGRyZW4oSGVhcFJvb3RNYXJrZXImKTsKKyAgICAgICAgdm9pZCB2aXNpdENo
aWxkcmVuKEhlYXBSb290VmlzaXRvciYpOwogICAgICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAg
ICAgdW5zaWduZWQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGRjYzhlN2M5MGM0ZDk4MDgxZmMxNjJhMzkzNjhhM2NkNzVm
ZjFlNjQuLjdhYWJmMDBkOWYyZDk4YWQ0ZmIzMzVjODU5ZjFjOTdlY2NkNDgyYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTk4LDcgKzE5OCw3
IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJ1Y3R1cmU6OnNfaW5mbyA9IHsgIlN0cnVjdHVyZSIsIDAs
IDAsIDAgfTsKIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHRoaXMpCi0gICAgLCBtX3R5cGVJbmZvKENvbXBv
dW5kVHlwZSwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuKQorICAgICwgbV90eXBlSW5mbyhDb21wb3Vu
ZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxE
YXRhLCB0aGlzLCBqc051bGwoKSkKICAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCiAgICAgLCBt
X3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KDApCkBAIC03NjUsMjQgKzc2NSwyNCBAQCB2b2lkIFN0
cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcgogICAgIH0KIH0KIAotdm9pZCBTdHJ1Y3R1cmU6Om1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgU3RydWN0dXJlOjp2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFj
ayk7CisgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAgIGlmIChtX3Byb3Rv
dHlwZSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9wcm90b3R5cGUpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9wcm90b3R5cGUpOwogICAgIGlmIChtX2NhY2hlZFByb3RvdHlwZUNo
YWluKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogICAgIGlm
IChtX3ByZXZpb3VzKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3ByZXZpb3VzKTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fcHJldmlvdXMpOwogICAgIGlmIChtX3NwZWNpZmljVmFs
dWVJblByZXZpb3VzKQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX3NwZWNpZmljVmFsdWVJ
blByZXZpb3VzKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fc3BlY2lmaWNWYWx1ZUluUHJl
dmlvdXMpOwogICAgIGlmIChtX2VudW1lcmF0aW9uQ2FjaGUpCi0gICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJm1fZW51bWVyYXRpb25DYWNoZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Vu
dW1lcmF0aW9uQ2FjaGUpOwogICAgIGlmIChtX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgUHJv
cGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICAg
ICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5VGFibGUtPmJl
Z2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICBpZiAocHRyLT5zcGVjaWZp
Y1ZhbHVlKQotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnB0ci0+c3BlY2lmaWNW
YWx1ZSk7CisgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnB0ci0+c3BlY2lmaWNWYWx1
ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCmluZGV4IGZlOWNlNmI3NDMxMmM3YWNjNjNiNDA5NTdjZmI1ZGZiMWNhOGYwNTku
LjI3MDY1YThlYjNiMTgyYmIxNTk4ZTNlNWM2ZWRhMzQ2NGViMDViMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICB0eXBlZGVmIE1h
cmtTdGFjayBTbG90VmlzaXRvcjsKIAogICAgIHN0cnVjdCBDbGFzc0luZm87CiAKQEAgLTk5LDcg
KzEwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlRm9yTG9va3VwKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVD
aGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZvaWQgbWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IHJldHVy
biBtX3ByZXZpb3VzLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBhZDZhYmZmODE2MDM5NGQ2NDBjNDhiZTI1MTIz
MzFiNWJlZDM4OTIyLi4wNjI5NTFkYzlkYjNkNDY0Njc5ZDg3NTkzMzQwMDc0ZjZkM2FjZmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3Bw
CkBAIC01MywxMSArNTMsMTEgQEAgU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVDaGFpbigpCiB7
CiB9CiAKLXZvaWQgU3RydWN0dXJlQ2hhaW46Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKK3ZvaWQgU3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIHdoaWxlIChtX3ZlY3RvcltpXSkKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV92ZWN0b3JbaSsrXSk7CisgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX3ZlY3RvcltpKytdKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCBiOTg0YmU2
YTZkYzhhNjdiYjgwMTdhNjE0MTBmYjk1NDg1ZGU0NzdjLi41MDMyM2ZkNDVhZjNlMWQyOGQ4ZDNi
OGRlYWM1NWVhNmRjMjQ3YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xvYmFsRGF0
YSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0
cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0KICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4q
IGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQotICAgICAgICB2b2lkIG1hcmtDaGls
ZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CiAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVy
cmlkZXNNYXJrQ2hpbGRyZW4pLCAwLCAmc19pbmZvKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHBy
b3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCAwLCAmc19p
bmZvKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBoZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
CmluZGV4IDNiOGFiZGQ1MjNhMzYxMjZjNjExNzZiZDRiMzk3MTE3MDBlYmIxMGYuLmU5NTU4MjU4
YWI0MzkwMDBhZjg2Yzk1YTg2NzZkNzFmZDJmZGRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTA0LTIxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RhcnQgbW92aW5nIHRvIGEgZ2VuZXJhbCB2aXNpdG9yIHBhdHRlcm4gZm9yIEdDIHRyYXZlcnNh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDEK
KworICAgICAgICBUaGlzIGlzIGp1c3QgYSByZW5hbWU6CisgICAgICAgICAgICBtYXJrQ2hpbGRy
ZW4gLT4gdmlzaXRDaGlsZHJlbgorICAgICAgICAgICAgbWFya0FnZ3JlZ2F0ZSAtPiB2aXNpdEFn
Z3JlZ2F0ZQorICAgICAgICAgICAgbWFya1N0YWNrIC0+IHZpc2l0b3IKKyAgICAgICAgICAgIE1h
cmtTdGFjayAtPiB0eXBlZGVmJ2QgdG8gU2xvdFZpc2l0b3IKKworICAgICAgICAqIFVzZXJPYmpl
Y3RJbXAuY3BwOgorICAgICAgICAoVXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlbik6CisKIDIw
MTEtMDQtMTkgIFJlbmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVl
L1VzZXJPYmplY3RJbXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAu
Y3BwCmluZGV4IGM5Mzc0OGYwMDEwYTdmYzZlZWZiMDMzNjUxMmIzYTNjNTc0YThhNjIuLmFkMzY5
M2IzYWQxMzA1ZTBhOWMyNDZlYjZjOTk4MTMzNjFlMGY0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEds
dWUvVXNlck9iamVjdEltcC5jcHAKQEAgLTQwNCw5ICs0MDQsOSBAQCBVU3RyaW5nIFVzZXJPYmpl
Y3RJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIFVzZXJPYmplY3RJbXA6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKK3ZvaWQgVXNlck9iamVjdEltcDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU09iamVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgSlNP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgaWYgKGZKU1VzZXJPYmplY3QpCiAg
ICAgICAgIGZKU1VzZXJPYmplY3QtPk1hcmsoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmggYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5oCmluZGV4IDliZDZmMGZlMDY0ZjE2MjQ2OGIwMjMxODdlODkxZDU2Y2VlZjZlZjMu
LjVlMGY4ZWQ5MjA3Njc2ZTZhNTM5YmUyYjdkODZmODJjY2M2MDhmMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL1VzZXJPYmplY3RJbXAuaApAQCAtNTQsMTMgKzU0LDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1
YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYpOwogCiAgICAgSlNVc2VyT2JqZWN0ICpHZXRKU1VzZXJPYmpl
Y3QoKSBjb25zdDsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzTWFya0No
aWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKSwg
QW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNzllYTEyYzY4ZmIzMzZkODlkODhjNTU4NzVmYmE5MjZjMzkyZjNhMi4uNDQzMTA3NTlm
Njg2NzY2MjQ1NmVhOTQyNjM5MDhjZWM3M2NmNmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx
OCBAQAorMjAxMS0wNC0yMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IG1vdmluZyB0
byBhIGdlbmVyYWwgdmlzaXRvciBwYXR0ZXJuIGZvciBHQyB0cmF2ZXJzYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQxCisKKyAgICAgICAgVGhp
cyBpcyBqdXN0IGEgcmVuYW1lOgorICAgICAgICAgICAgbWFya0NoaWxkcmVuIC0+IHZpc2l0Q2hp
bGRyZW4KKyAgICAgICAgICAgIG1hcmtBZ2dyZWdhdGUgLT4gdmlzaXRBZ2dyZWdhdGUKKyAgICAg
ICAgICAgIG1hcmtTdGFjayAtPiB2aXNpdG9yCisgICAgICAgICAgICBNYXJrU3RhY2sgLT4gdHlw
ZWRlZidkIHRvIFNsb3RWaXNpdG9yCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdHRyOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3RydWN0QXVkaW8pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2
aXNpdEFjdGl2ZU9iamVjdHNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtET01P
YmplY3RXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUlt
cGxlbWVudGF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NSW1wbGVtZW50
YXRpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlz
dGVuZXI6Om1hcmtKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTExpbmtFbGVtZW50Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MU3R5bGVFbGVtZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0SW1hZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlv
Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3JpcHRBdWRpb05vZGU6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU05hbWVkTm9kZU1hcE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
YXZpZ2F0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09ic2VydmFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNSZWFjaGFibGVGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGVGaWx0ZXJDb25kaXRpb246OldlYWtPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRp
dGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZUl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUxpc3RPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0Vs
ZW1lbnRJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
aGFyZWRXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTaGFyZWRXb3JrZXI6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXZWJLaXRBbmltYXRpb25MaXN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNX
b3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVl
c3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVl
c3RVcGxvYWRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlF0UnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAg
KiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuaDoKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcGl4bWFw
cnVudGltZS5jcHA6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6UXRSdW50aW1lTWV0YU1ldGhvZDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0
ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjo6dmlzaXRKU0Z1bmN0aW9u
KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6Cisg
ICAgICAgICogZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVGaWx0ZXJDb25kaXRpb246OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorCiAyMDExLTA0LTIx
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
YW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXR0ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20u
Y3BwCmluZGV4IDMwNWRjODFiNDQzYWViZWQxMzhkZTgyYTg3NGQxODcxNTAyMzUyMGEuLjFjZDMz
NTkwOTMzMzZhYzE0ZWFlNWE0NGZjNWE0YzI1MGM3ZWJhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcApAQCAtMzksMTQgKzM5LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotdm9pZCBKU0F0dHI6
Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNBdHRyOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbiht
YXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gaW1wbCgpLT5vd25lckVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKLSAgICBtYXJrU3RhY2suYWRkT3BhcXVlUm9vdChyb290KGVsZW1l
bnQpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29uc3RydWN0b3IuY3BwCmluZGV4IDlhYzc5N2IxZGU4OTgwODU5MTFjZTllMjk4NTRl
ZDFmZjI1MDdkOGYuLjM5ODhmZGQ3MWU3MGU5MDg0ZWUzZGQ0M2E2MGZhNWE4MWYwM2Q3NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RBdWRpbyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkF1ZGlvIGNvbnN0cnVjdG9yIGFz
c29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7CiAKICAgICAvLyBDYWxsaW5nIHRv
SlMgb24gdGhlIGRvY3VtZW50IGNhdXNlcyB0aGUgSlMgZG9jdW1lbnQgd3JhcHBlciB0byBiZQot
ICAgIC8vIGFkZGVkIHRvIHRoZSB3aW5kb3cgb2JqZWN0LiBUaGlzIGlzIGRvbmUgdG8gZW5zdXJl
IHRoYXQgSlNEb2N1bWVudDo6bWFya0NoaWxkcmVuCisgICAgLy8gYWRkZWQgdG8gdGhlIHdpbmRv
dyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCBKU0RvY3VtZW50Ojp2aXNpdENo
aWxkcmVuCiAgICAgLy8gd2lsbCBiZSBjYWxsZWQsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGF1ZGlv
IGVsZW1lbnQgdG8gYmUgbWFya2VkIGlmIG5lY2Vzc2FyeS4KICAgICB0b0pTKGV4ZWMsIGpzQ29u
c3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBkb2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCmluZGV4IDAzZDI5NjA3YmRiYmY4ZTY3
ZGU4ZGY1YmU0YThlOTMzMzVjMjU5MmQuLjdkNDE3MTIxMmU2YmRlMjNjMTk0ZDNmOGU3M2Q2Yjcz
MTY3YjljNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVs
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3Vz
dG9tLmNwcApAQCAtNzksMTAgKzc5LDEwIEBAIGlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBDU1NSdWxlKikKICAgICByZXR1cm4gd29ybGQ7CiB9CiAK
LXZvaWQgSlNDU1NSdWxlOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lk
IEpTQ1NTUnVsZTo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBC
YXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYWRkT3BhcXVlUm9v
dChyb290KGltcGwoKSkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1J1bGUq
IHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCBlNDZhNDkyMjcwOTJjOTU5OTMxNGE2NDJj
ZDQ1NzIzMjQ4OTQ4OTAzLi4zYmIzNTcxYjdhOGI1YzM4MTQxOTJkMWZlOTVhODZjOGQzODZlMDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5
bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTczLDEwICs3MywxMCBAQCBpbmxpbmUgdm9pZCog
d3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgQ1NTU3R5bGVEZWNsYXJhdGlv
biopCiAgICAgcmV0dXJuIHdvcmxkOwogfQogCi12b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6
bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3Qocm9v
dChpbXBsKCkpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChyb290KGltcGwoKSkpOwogfQogCiAvLyBDaGVjayBmb3IgYSBDU1Mg
cHJlZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5k
ZXggNWFjMDdhNzU4MjQxMjM0YjU1OGRjYmQ4NmI2MTczN2RmMzhlNjE3OC4uZTQwY2FlZDFlY2Iy
ZmNhOWMyNzA1YjViMTIzOWQ4YTYwZDk3MDc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgY29uc3QgSlNDOjpIYXNo
VGFibGUqIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdAogICAgIHJldHVybiBET01PYmplY3RIYXNoVGFibGVNYXA6Om1hcEZvcihnbG9iYWxE
YXRhKS5nZXQoc3RhdGljVGFibGUpOwogfQogCi12b2lkIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29u
dGV4dChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQordm9pZCB2aXNpdEFj
dGl2ZU9iamVjdHNGb3JDb250ZXh0KFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCiB7CiAgICAgLy8gSWYgYW4gZWxlbWVudCBoYXMgcGVuZGluZyBhY3Rpdml0eSB0aGF0IG1h
eSByZXN1bHQgaW4gZXZlbnQgbGlzdGVuZXJzIGJlaW5nIGNhbGxlZAogICAgIC8vIChlLmcuIGFu
IFhNTEh0dHBSZXF1ZXN0KSwgd2UgbmVlZCB0byBrZWVwIEpTIHdyYXBwZXJzIGFsaXZlLgpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KE1hcmtTdGFj
ayYgbWFya1N0YWNrLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAgICAgICAgIGlmIChpdGVy
LT5maXJzdC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpIHsKICAgICAgICAgICAgIC8vIEdlbmVyYWxs
eSwgYW4gYWN0aXZlIG9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZpdHkgbXVzdCBoYXZlIGEgd3Jh
cHBlciB0byBtYXJrIGl0cyBsaXN0ZW5lcnMuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCBzb21l
IEFjdGl2ZURPTU9iamVjdHMgZG9uJ3QgaGF2ZSBKUyB3cmFwcGVycy4KLSAgICAgICAgICAgIG1h
cmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaXRlci0+c2Vjb25kKTsK
KyAgICAgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGl0
ZXItPnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NCwxMSArMTU0LDExIEBAIHZv
aWQgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KE1hcmtTdGFjayYgbWFya1N0YWNrLCBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsCiAgICAgZm9yIChIYXNoU2V0PE1lc3NhZ2VQb3J0Kj46OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtZXNzYWdlUG9ydHMuYmVnaW4oKTsgaXRlciAhPSBwb3J0c0Vu
ZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIElmIHRoZSBtZXNzYWdlIHBvcnQgaXMgcmVtb3RlbHkg
ZW50YW5nbGVkLCB0aGVuIGFsd2F5cyBtYXJrIGl0IGFzIGluLXVzZSBiZWNhdXNlIHdlIGNhbid0
IGRldGVybWluZSByZWFjaGFiaWxpdHkgYWNyb3NzIHRocmVhZHMuCiAgICAgICAgIGlmICghKCpp
dGVyKS0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKSB8fCAoKml0ZXIpLT5oYXNQZW5kaW5nQWN0aXZp
dHkoKSkKLSAgICAgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFs
RGF0YSwgKml0ZXIpOworICAgICAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwg
Z2xvYmFsRGF0YSwgKml0ZXIpOwogICAgIH0KIH0KIAotdm9pZCBtYXJrRE9NT2JqZWN0V3JhcHBl
cihNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBv
YmplY3QpCit2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG9iamVjdCkKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHRvIG9ubHkgbWFyayB3cmFwcGVycyB0aGF0IGFyZSAib2Jz
ZXJ2YWJsZSIKICAgICAvLyBhcyBtYXJrRE9NTm9kZXNGb3JEb2N1bWVudCBkb2VzLCBhbGxvd2lu
ZyB1cyB0byBjb2xsZWN0IG1vcmUgd3JhcHBlcnMsCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBt
YXJrRE9NT2JqZWN0V3JhcHBlcihNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCB2b2lkKgogCiAgICAgZm9yIChKU0dsb2JhbERhdGFXb3JsZEl0ZXJhdG9yIHdv
cmxkSXRlcigmZ2xvYmFsRGF0YSk7IHdvcmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKICAgICAgICAg
aWYgKEpTRE9NV3JhcHBlciogd3JhcHBlciA9IHdvcmxkSXRlci0+bV93cmFwcGVycy5nZXQob2Jq
ZWN0KS5nZXQoKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+KCZ3cmFwcGVyKSk7CisgICAgICAgICAgICB2aXNpdG9yLmRl
cHJlY2F0ZWRBcHBlbmQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJndyYXBwZXIpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXgg
ODAzNDI5ZmVjOGE0YTRjNTIwZTM3YjE0MzdjMWNkMmQ2YmU4N2RiMS4uZTU0MDVkZmNmYjAzMjc0
YzRmODAxYzZkZGVlZDY0NzI0MmNlNTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpPdmVycmlk
ZXNNYXJrQ2hpbGRyZW4gfCBKU0RPTVdyYXBwZXJXaXRoR2xvYmFsUG9pbnRlcjo6U3RydWN0dXJl
RmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Qzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
SlNET01XcmFwcGVyV2l0aEdsb2JhbFBvaW50ZXI6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBE
T01Db25zdHJ1Y3Rvck9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgOiBKU0RPTVdyYXBwZXJXaXRoR2xv
YmFsUG9pbnRlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAgICAgICAgewpAQCAtMTEzLDgg
KzExMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgIH07CiAgICAgCi0g
ICAgdm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoSlNDOjpNYXJrU3RhY2smLCBKU0M6
OkpTR2xvYmFsRGF0YSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2b2lkIG1hcmtE
T01PYmplY3RXcmFwcGVyKEpTQzo6TWFya1N0YWNrJiwgSlNDOjpKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIHZvaWQqIG9iamVjdCk7CisgICAgdm9pZCB2aXNpdEFjdGl2ZU9iamVjdHNGb3JDb250
ZXh0KEpTQzo6U2xvdFZpc2l0b3ImLCBKU0M6OkpTR2xvYmFsRGF0YSYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKyAgICB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpTQzo6U2xvdFZpc2l0
b3ImLCBKU0M6OkpTR2xvYmFsRGF0YSYsIHZvaWQqKTsKIAogICAgIEpTQzo6U3RydWN0dXJlKiBn
ZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OkNsYXNz
SW5mbyopOwogICAgIEpTQzo6U3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2Jh
bE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCAz
ZTNkMDM3NzJiODhhMWQxMDViMDIzODI4ZWE0OGE2Y2QxNjUyZGYzLi4zMjgwYTYyZWMwYmJmM2M3
YTM3N2Y1ZmRkYjY0YzlmYzhkMjY5ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC01MCwyMCArNTAsMjAgQEAgSlNET01HbG9i
YWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3QKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogfQogCi12b2lk
IEpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2
b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgZW5k
ID0gc3RydWN0dXJlcygpLmVuZCgpOwogICAgIGZvciAoSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJh
dG9yIGl0ID0gc3RydWN0dXJlcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmaXQtPnNlY29uZCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZp
dC0+c2Vjb25kKTsKIAogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVuZDIgPSBj
b25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJh
dG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBlbmQyOyArK2l0MikKLSAg
ICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaXQyLT5zZWNvbmQpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmaXQyLT5zZWNvbmQpOwogCiAgICAgaWYgKG1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJm1faW5qZWN0ZWRTY3JpcHQpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9pbmplY3RlZFNjcmlwdCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNl
dEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggOTE5MGUwMWIzNjRkM2M1MzkyMjNi
NDQxMjMyMDhjYWZjNmZkZGM3OC4uMWExYWQ0ZTNhNTdhZTUxYmY0MjJmMjczMzhiOWFlN2FmNDEz
ZTQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCopOwogICAgICAgICBKU09iamVjdCogaW5qZWN0ZWRT
Y3JpcHQoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKEpTQzo6
TWFya1N0YWNrJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKEpTQzo6U2xv
dFZpc2l0b3ImKTsKIAogICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4g
bV93b3JsZC5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUltcGxlbWVudGF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwCmluZGV4IGFhM2E2MDdkZjgxMTFhZTRk
NjAyMjZjZGEwZTBjNjQ2ODAyM2Q1YTAuLjQ0OTc5YWViNTZlYjE0NzgxMjRkYzZjMGNhZDkzY2Yx
ZmQzOTQ3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSW1w
bGVtZW50YXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwCkBAIC0yOSwxNCArMjksMTQgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTRE9NSW1wbGVtZW50
YXRpb246Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNET01JbXBs
ZW1lbnRhdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBC
YXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOwogCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBpbXBsKCktPm93bmVyRG9j
dW1lbnQoKTsKICAgICBpZiAoIW93bmVyRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBt
YXJrU3RhY2suYWRkT3BhcXVlUm9vdChvd25lckRvY3VtZW50KTsKKyAgICB2aXNpdG9yLmFkZE9w
YXF1ZVJvb3Qob3duZXJEb2N1bWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA0YmRlOWU1YjFlNTBmZTkzMjMw
MjM3NDNjZTJjNWZiZWRmMjRhMzU2Li4xNjNmYTljMmUyMjU3NTQxNjE4ZTQyYTgwMTc4NmZmMTIx
NDY3OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCkBAIC03MiwzMyArNzIsMzMgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTRE9NV2luZG93OjptYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKLSAgICBpbXBsKCktPm1hcmtKU0V2ZW50
TGlzdGVuZXJzKG1hcmtTdGFjayk7CisgICAgaW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnMo
dmlzaXRvcik7CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVhcCh0
aGlzKS0+Z2xvYmFsRGF0YSgpOwogCi0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNr
LCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsQ29uc29sZSgpKTsKLSAgICBtYXJrRE9NT2Jq
ZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxIaXN0b3J5
KCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1w
bCgpLT5vcHRpb25hbExvY2F0aW9uYmFyKCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1h
cmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbE1lbnViYXIoKSk7Ci0gICAgbWFy
a0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFs
TmF2aWdhdG9yKCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFs
RGF0YSwgaW1wbCgpLT5vcHRpb25hbFBlcnNvbmFsYmFyKCkpOwotICAgIG1hcmtET01PYmplY3RX
cmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbFNjcmVlbigpKTsK
LSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+
b3B0aW9uYWxTY3JvbGxiYXJzKCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFj
aywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbFNlbGVjdGlvbigpKTsKLSAgICBtYXJrRE9N
T2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxTdGF0
dXNiYXIoKSk7Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRh
LCBpbXBsKCktPm9wdGlvbmFsVG9vbGJhcigpKTsKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBlciht
YXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxMb2NhdGlvbigpKTsKLSAgICBt
YXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9u
YWxNZWRpYSgpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRh
LCBpbXBsKCktPm9wdGlvbmFsQ29uc29sZSgpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2
aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsSGlzdG9yeSgpKTsKKyAgICBtYXJr
RE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTG9j
YXRpb25iYXIoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0
YSwgaW1wbCgpLT5vcHRpb25hbE1lbnViYXIoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIo
dmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbE5hdmlnYXRvcigpKTsKKyAgICBt
YXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFs
UGVyc29uYWxiYXIoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xvYmFs
RGF0YSwgaW1wbCgpLT5vcHRpb25hbFNjcmVlbigpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsU2Nyb2xsYmFycygpKTsKKyAg
ICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlv
bmFsU2VsZWN0aW9uKCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2Jh
bERhdGEsIGltcGwoKS0+b3B0aW9uYWxTdGF0dXNiYXIoKSk7CisgICAgbWFya0RPTU9iamVjdFdy
YXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbFRvb2xiYXIoKSk7Cisg
ICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRp
b25hbExvY2F0aW9uKCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2Jh
bERhdGEsIGltcGwoKS0+b3B0aW9uYWxNZWRpYSgpKTsKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCkt
Pm9wdGlvbmFsU2Vzc2lvblN0b3JhZ2UoKSk7Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFy
a1N0YWNrLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCkpOworICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9u
YWxTZXNzaW9uU3RvcmFnZSgpKTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBn
bG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCkpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxBcHBsaWNhdGlvbkNhY2hl
KCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGltcGwo
KS0+b3B0aW9uYWxBcHBsaWNhdGlvbkNhY2hlKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggNGMxNTdjOWZk
NWIyN2YyN2VlZGEzOTU1NjkyZmJjYWY3YWMxOWY2Ny4uYTk4NjE0NDFlODM2NTNjNzhmNGRhMzA0
MWUzMTE3OGE5NDNkY2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTcyLDExICs3MywxMSBAQCB2b2lkIEpTRE9NV2luZG93
U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93KQogLy8gSlNP
YmplY3QgbWV0aG9kcwogLy8gLS0tLQogCi12b2lkIEpTRE9NV2luZG93U2hlbGw6Om1hcmtDaGls
ZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4o
bWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAgIGlmICht
X3dpbmRvdykKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV93aW5kb3cpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbV93aW5kb3cpOwogfQogCiBVU3RyaW5nIEpTRE9NV2luZG93U2hlbGw6
OmNsYXNzTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmgKaW5kZXggYzJjNTMzNmFlZGE2YTZiZTE3ZTVhMWYxN2MwMmI0Yjc3NDViZDNi
YS4uNTY3NDc3NjQ2NjVlOTk2N2MxM2RkYzk3OTc5MDlmZmYyYjczNGVjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNjYsOSArNjYsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSB7
IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzTWFya0NoaWxkcmVuIHwgSlNDOjpPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IG1hcmtDaGlsZHJlbihKU0M6Ok1hcmtTdGFjayYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgSlNDOjpVU3Ry
aW5nIGNsYXNzTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggODQwNGE2N2JlMjIzYjVk
NTNhZjI0YmQxNGFmMjA0ZTk2ODE4YzYwZi4uMDhkNWMyY2Q2NGIyMDk3M2U4MmIzYTMzZGQ0MjQz
NDBhOTI5MzlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1
bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU1RvdWNoLmgiCiAjaW5j
bHVkZSAiSlNUb3VjaExpc3QuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgorI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUb3VjaExpc3QuaCIKIAogI2lmIEVOQUJMRShT
VkcpCkBAIC00NywxNSArNDgsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIEpTRG9jdW1lbnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1h
cmtTdGFjaykKK3ZvaWQgSlNEb2N1bWVudDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBKU05vZGU6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEpTTm9k
ZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGlt
cGwoKTsKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVhcCh0aGlzKS0+
Z2xvYmFsRGF0YSgpOwogCi0gICAgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KG1hcmtTdGFj
aywgZ2xvYmFsRGF0YSwgZG9jdW1lbnQpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtT
dGFjaywgZ2xvYmFsRGF0YSwgZG9jdW1lbnQtPmltcGxlbWVudGF0aW9uKCkpOworICAgIHZpc2l0
QWN0aXZlT2JqZWN0c0ZvckNvbnRleHQodmlzaXRvciwgZ2xvYmFsRGF0YSwgZG9jdW1lbnQpOwor
ICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERhdGEsIGRvY3VtZW50LT5p
bXBsZW1lbnRhdGlvbigpKTsKIH0KIAogSlNWYWx1ZSBKU0RvY3VtZW50Ojpsb2NhdGlvbihFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVt
ZW50Q3VzdG9tLmNwcAppbmRleCA0YmVkZjNhOTE0NGU4MmZlMGYzNWUzZjJhNDkwMDI2MjM0Yzc1
NzE3Li5lMDlkODA2NmM3NTQyNDYwMzY1YjE2NjJhYzY0Yjg5MTI2NzkzYmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUxLDE5ICs1
MSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKLXZvaWQgSlNFbGVtZW50OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2
b2lkIEpTRWxlbWVudDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGltcGwoKTsKICAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpOwogCi0g
ICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBlbGVtZW50LT5h
dHRyaWJ1dGVNYXAoKSk7Ci0gICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9i
YWxEYXRhLCBlbGVtZW50LT5vcHRpb25hbENsYXNzTGlzdCgpKTsKLSAgICBtYXJrRE9NT2JqZWN0
V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGVsZW1lbnQtPm9wdGlvbmFsRGF0YXNldCgp
KTsKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBlbGVtZW50
LT5hdHRyaWJ1dGVNYXAoKSk7CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xv
YmFsRGF0YSwgZWxlbWVudC0+b3B0aW9uYWxDbGFzc0xpc3QoKSk7CisgICAgbWFya0RPTU9iamVj
dFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0YSwgZWxlbWVudC0+b3B0aW9uYWxEYXRhc2V0KCkp
OwogCiAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQotICAgICAgICBtYXJrRE9N
T2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIHN0YXRpY19jYXN0PFN0eWxlZEVs
ZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpOworICAgICAgICBtYXJrRE9NT2Jq
ZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4oZWxlbWVudCktPmlubGluZVN0eWxlRGVjbCgpKTsKIH0KIAogSlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCmluZGV4IDQzNjI1MWU2MzZmZjMxMGE2NGRkNzE0OGQyOWMzYWJmYjE5YzQ3
YWUuLjE4MzU1ZjhiMmY1OTYyYzE2OTFiMGM5OTNkYmE0MjVkNTczZmY1YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtNTYsMTAgKzU2
LDEwIEBAIEpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEpT
RXZlbnRMaXN0ZW5lcjo6bWFya0pTRnVuY3Rpb24oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lk
IEpTRXZlbnRMaXN0ZW5lcjo6bWFya0pTRnVuY3Rpb24oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
CiAgICAgaWYgKG1fanNGdW5jdGlvbikKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9qc0Z1
bmN0aW9uKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fanNGdW5jdGlvbik7CiB9CiAKIHZv
aWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IGE1OTliZTc1NjhjZmQyNjc4Zjc5NzZm
ZDc5MzFjOWE1NDU2NzU3YjQuLjE3ZjI0YzQ5MWUxZWU3OTg2NzE0OWUxNzM5NzFhMzA4MGVmZDQy
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBA
IC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogaW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0pTRnVuY3Rp
b24oSlNDOjpNYXJrU3RhY2smKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtKU0Z1bmN0aW9u
KEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJp
YnV0ZSgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmFl
YzRiYmFiZGU1YTdmZjdlOGJiNjg5OTA3ZWZmNjk2YjMwZmZmLi4xNTQxZDZhMDM5Yjg1NTQ3YTI2
YzQ0YmRlZDZmYjY1NTJlMzE5ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDAsMTQgKzQwLDE0
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBK
U0hUTUxDYW52YXNFbGVtZW50OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2
b2lkIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBz
dGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KGltcGwoKSk7CiAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKTsKIAotICAgIG1h
cmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgY2FudmFzLT5yZW5kZXJp
bmdDb250ZXh0KCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsIGdsb2JhbERh
dGEsIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKTsKIH0KIAogSlNWYWx1ZSBKU0hUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTExpbmtFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA4
Y2M4ZDVmMTdmOGE4MTQxZTYzOTc3MTIxOGM2MDc5Nzk3NmFkOTg0Li4yODU4ODNiODY2MTQ5OTM0
Y2Y0YzhhNTdmOTZiYzMxOTY1ZjYwYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxMaW5rRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MTGlua0VsZW1lbnRDdXN0b20uY3BwCkBAIC0zMiwxMiArMzIsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpT
SFRNTExpbmtFbGVtZW50OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lk
IEpTSFRNTExpbmtFbGVtZW50Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odmlzaXRvcik7CiAKICAgICBpZiAoU3R5bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2Fz
dDxIVE1MTGlua0VsZW1lbnQqPihpbXBsKCkpLT5zaGVldCgpKQotICAgICAgICBtYXJrRE9NT2Jq
ZWN0V3JhcHBlcihtYXJrU3RhY2ssICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHNo
ZWV0KTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgKkhlYXA6OmhlYXAo
dGhpcyktPmdsb2JhbERhdGEoKSwgc2hlZXQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU3R5bGVFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA5
YjBkMWE3NDk1OGEzYjcwOTM1YTM3ODNjZTAyZGI5M2M4YzI2ZDYyLi44ZjRlOTMzYjY1YmJiMmQ1
OGI0YzYwZmRlYzE3NmQ0ZDJkNTFkYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3RvbS5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
SlNIVE1MU3R5bGVFbGVtZW50OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2
b2lkIEpTSFRNTFN0eWxlRWxlbWVudDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKFN0eWxlU2hlZXQqIHNoZWV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTFN0eWxlRWxlbWVudCo+KGltcGwoKSktPnNoZWV0KCkpCi0gICAgICAgIG1hcmtE
T01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEo
KSwgc2hlZXQpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCAqSGVhcDo6
aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBzaGVldCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IGJlNzVhZjBi
ZTdjYWU5MTQ2NjFjMmRlZWQ0ZjRiMjVkZDBkN2NmZGQuLjU0NzYxODNlN2ZkZTc1NjdiZjYxN2Jk
MjA5OWFmNmExOTRhYWFjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbWFnZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
IkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7
CiAKICAgICAvLyBDYWxsaW5nIHRvSlMgb24gdGhlIGRvY3VtZW50IGNhdXNlcyB0aGUgSlMgZG9j
dW1lbnQgd3JhcHBlciB0byBiZQotICAgIC8vIGFkZGVkIHRvIHRoZSB3aW5kb3cgb2JqZWN0LiBU
aGlzIGlzIGRvbmUgdG8gZW5zdXJlIHRoYXQgSlNEb2N1bWVudDo6bWFya0NoaWxkcmVuCisgICAg
Ly8gYWRkZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhh
dCBKU0RvY3VtZW50Ojp2aXNpdAogICAgIC8vIHdpbGwgYmUgY2FsbGVkLCB3aGljaCB3aWxsIGNh
dXNlIHRoZSBpbWFnZSBlbGVtZW50IHRvIGJlIG1hcmtlZCBpZiBuZWNlc3NhcnkuCiAgICAgdG9K
UyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgZG9jdW1lbnQpOwogICAgIGlu
dCB3aWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCmluZGV4IDlhY2FiZjM4NTcwNmEyNjQwZjJhMGI0
MDMzYzJmZjM0NGNjMjU2OTcuLmM3YWFiOGZmYjc5Y2U5ZTM4Y2FiZjU1ZjM5MDE1MGRjY2NiYWIy
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1
ZGlvTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU0phdmFTY3JpcHRBdWRp
b05vZGU6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNKYXZhU2Ny
aXB0QXVkaW9Ob2RlOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIHN0YXRpY19jYXN0PEphdmFTY3Jp
cHRBdWRpb05vZGUqPihpbXBsKCkpLT5tYXJrSlNFdmVudExpc3RlbmVycyhtYXJrU3RhY2spOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgc3RhdGljX2Nhc3Q8SmF2YVNj
cmlwdEF1ZGlvTm9kZSo+KGltcGwoKSktPm1hcmtKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCmluZGV4IGMyZjU3Nzk4OTQ1YmNl
YjNkYTViZmQ1YzRmMTQ3YmY4ZDZmZWU2NWIuLjBhMGVmYmU2ZGUyMjY1MGYxNGNjMDRhOWE5MjZm
YWVmMDYxOTBmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC0zMywxNSArMzMsMTUgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotdm9pZCBKU01lc3NhZ2VDaGFu
bmVsOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTTWVzc2FnZUNo
YW5uZWw6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6
bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9y
KTsKIAogICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IG1faW1wbC0+cG9ydDEoKSkKLSAgICAg
ICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xv
YmFsRGF0YSgpLCBwb3J0KTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwg
KkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7CiAKICAgICBpZiAoTWVzc2Fn
ZVBvcnQqIHBvcnQgPSBtX2ltcGwtPnBvcnQyKCkpCi0gICAgICAgIG1hcmtET01PYmplY3RXcmFw
cGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7Cisg
ICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5n
bG9iYWxEYXRhKCksIHBvcnQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNNZXNzYWdlQ2hhbm5lbChFeGVj
U3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZVBvcnRDdXN0b20uY3BwCmluZGV4IDA2YjQxNzg2YTljZjlhMzIxNDU1NGY0MmEyMGM5ZWQwYjU2
NDI2MzIuLmE4NDk4NzY2NmIzZTk5YWMwMmYxNjdjN2UyNzQwMDljMmExM2M3YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBA
IC00MSwxNSArNDEsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEpTTWVzc2FnZVBvcnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtT
dGFjaykKK3ZvaWQgSlNNZXNzYWdlUG9ydDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvY2FsbHkgZW50
YW5nbGVkIHBvcnQsIHdlIGNhbiBkaXJlY3RseSBtYXJrIGl0IGFzIHJlYWNoYWJsZS4gUG9ydHMg
dGhhdCBhcmUgcmVtb3RlbHkgZW50YW5nbGVkIGFyZSBtYXJrZWQgaW4tdXNlIGJ5IG1hcmtBY3Rp
dmVPYmplY3RzRm9yQ29udGV4dCgpLgogICAgIGlmIChNZXNzYWdlUG9ydCogZW50YW5nbGVkUG9y
dCA9IG1faW1wbC0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKSkKLSAgICAgICAgbWFya0RPTU9iamVj
dFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBlbnRh
bmdsZWRQb3J0KTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgKkhlYXA6
OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgZW50YW5nbGVkUG9ydCk7CiAKLSAgICBtX2ltcGwt
Pm1hcmtKU0V2ZW50TGlzdGVuZXJzKG1hcmtTdGFjayk7CisgICAgbV9pbXBsLT52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpw
b3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAppbmRleCA5YjA2NzY3OWQ0ZGYz
NWJjYmI4NzUzZGFjNGQ0ZjhjZDUwYzAyY2RiLi4zOTM5MDVkMDIzOTMzOGYyNjljMWY0MjFlNWQ0
MDRkMGFhMzM2ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05h
bWVkTm9kZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNOYW1l
ZE5vZGVNYXAuaCIKIAogI2luY2x1ZGUgIkpTTm9kZS5oIgorCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogCkBAIC0zNSwxMSArMzYsMTEgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNOYW1lZE5vZGVN
YXBPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmlydHVhbCBib29s
IGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQsIEpTQzo6TWFya1N0YWNrJik7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7CiB9OwogCi1ib29sIEpTTmFtZWRO
b2RlTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCitib29sIEpTTmFt
ZWROb2RlTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
SlNOYW1lZE5vZGVNYXAqIGpzTmFtZWROb2RlTWFwID0gc3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVN
YXAqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwogICAgIGlmICghanNOYW1lZE5vZGVNYXAtPmhh
c0N1c3RvbVByb3BlcnRpZXMoKSkKQEAgLTQ3LDcgKzQ4LDcgQEAgYm9vbCBKU05hbWVkTm9kZU1h
cE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGgKICAgICBFbGVtZW50KiBlbGVtZW50ID0ganNOYW1lZE5vZGVNYXAtPmltcGwoKS0+ZWxl
bWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOworICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGVsZW1lbnQpKTsKIH0KIAogdm9p
ZCBKU05hbWVkTm9kZU1hcE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKQEAgLTc5LDkgKzgwLDkgQEAgSlNWYWx1ZSBKU05hbWVk
Tm9kZU1hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW4KICAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldE5hbWVk
SXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCi12b2lkIEpTTmFt
ZWROb2RlTWFwOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTTmFt
ZWROb2RlTWFwOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJh
c2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7CiAKICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgdGhlIHdyYXBwZXIgZm9yIG91ciB1bmRl
cmx5aW5nIE5hbWVkTm9kZU1hcCdzIGVsZW1lbnQKICAgICAvLyBhbGl2ZSBiZWNhdXNlIE5hbWVk
Tm9kZU1hcCBhbmQgQXR0ciByZWx5IG9uIHRoZSBlbGVtZW50IGZvciBkYXRhLCBhbmQKQEAgLTkw
LDcgKzkxLDcgQEAgdm9pZCBKU05hbWVkTm9kZU1hcDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYg
bWFya1N0YWNrKQogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBpbXBsKCktPmVsZW1lbnQoKTsKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtYXJrU3RhY2suYWRkT3BhcXVl
Um9vdChyb290KGVsZW1lbnQpKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVt
ZW50KSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOYW1lZE5vZGVNYXAqIGltcGwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggNTBm
YjRkYTZjMzVjNGIyZWU3YTAxNjY1ZmY4NTQ2MGFlYTA4MzVkMS4uMWU3YzVkMzcyM2IwM2YwYTdi
ZWNiNjNkNTY3NjJjM2Q3Yjc1YzI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotdm9pZCBKU05hdmlnYXRvcjo6bWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU05hdmlnYXRvcjo6dmlzaXRD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4o
bWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKTsK
IAotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgp
LT5vcHRpb25hbEdlb2xvY2F0aW9uKCkpOworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0
b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxHZW9sb2NhdGlvbigpKTsKIH0KIAogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcAppbmRleCA4YmE5NjcxZjAwZmY2MmViMmM0ZDk0YmU2ZTQyZDg2Y2NjODMxNzM2
Li5mMGQ2MDkzN2E3ZDZiY2UzMzc2MWJhOWE1MDgyY2EzMDkzMGY2NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBz
dGF0aWMgYm9vbCBpc09ic2VydmFibGUoSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIERPTVdy
YXBwZXJXb3JsZCogd29ybGQpCiAgICAgLy8gdGhlIHdyYXBwZXIgbXVzdCBiZSB0cmVhdGVkIGFz
IG9ic2VydmFibGUsIGJlY2F1c2UgZnV0dXJlIGFjY2VzcyB0bwogICAgIC8vIHRob3NlIG9iamVj
dHMgdGhyb3VnaCB0aGUgRE9NIG11c3QgcmVmbGVjdCB0aG9zZSBwcm9wZXJ0aWVzLgogICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhpcyBsb2dpYyBjb3VsZCBiZSBpbiB0aGUg
bm9kZSBuZXh0IHRvCi0gICAgLy8gdGhlIGN1c3RvbSBtYXJrQ2hpbGRyZW4gZnVuY3Rpb25zIHJh
dGhlciB0aGFuIGhlcmUuCisgICAgLy8gdGhlIGN1c3RvbSB2aXNpdCBmdW5jdGlvbnMgcmF0aGVy
IHRoYW4gaGVyZS4KICAgICAvLyBOb3RlIHRoYXQgZm9yIHNvbWUgY29tcG91bmQgb2JqZWN0cyBs
aWtlIHN0eWxlc2hlZXRzIGFuZCBDU1NTdHlsZURlY2xhcmF0aW9ucywKICAgICAvLyB3ZSBkb24n
dCBkZXNjZW5kIHRvIGNoZWNrIGNoaWxkcmVuIGZvciBjdXN0b20gcHJvcGVydGllcywgYW5kIGp1
c3QgY29uc2VydmF0aXZlbHkKICAgICAvLyBrZWVwIHRoZSBub2RlIHdyYXBwZXJzIHByb3RlY3Rp
bmcgdGhlbSBhbGl2ZS4KQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgYm9vbCBpc09ic2VydmFi
bGUoSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9t
RE9NKEpTTm9kZSoganNOb2RlLCBOb2RlKiBub2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkLCBN
YXJrU3RhY2smIG1hcmtTdGFjaykKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21E
T00oSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGlmICghbm9kZS0+aW5Eb2N1bWVudCgpKSB7CiAg
ICAgICAgIC8vIElmIGEgd3JhcHBlciBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYW4gaW1hZ2Ug
b3Igc2NyaXB0IGVsZW1lbnQKQEAgLTE3MCwxNCArMTcwLDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1JlYWNoYWJsZUZyb21ET00oSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIERPTVdyYXBw
ZXJXb3JsCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gaXNP
YnNlcnZhYmxlKGpzTm9kZSwgbm9kZSwgd29ybGQpICYmIG1hcmtTdGFjay5jb250YWluc09wYXF1
ZVJvb3Qocm9vdChub2RlKSk7CisgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShqc05vZGUsIG5vZGUs
IHdvcmxkKSAmJiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KG5vZGUpKTsKIH0KIAot
Ym9vbCBKU05vZGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQsIE1hcmtTdGFjayYgbWFya1N0YWNr
KQorYm9vbCBKU05vZGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIEpTTm9kZSoganNOb2RlID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oaGFuZGxl
LmdldCgpLmFzQ2VsbCgpKTsKICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nh
c3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJv
bURPTShqc05vZGUsIGpzTm9kZS0+aW1wbCgpLCB3b3JsZCwgbWFya1N0YWNrKTsKKyAgICByZXR1
cm4gaXNSZWFjaGFibGVGcm9tRE9NKGpzTm9kZSwganNOb2RlLT5pbXBsKCksIHdvcmxkLCB2aXNp
dG9yKTsKIH0KIAogdm9pZCBKU05vZGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBTY29w
ZUNoYWluTm9kZSogSlNOb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLXZvaWQgSlNOb2RlOjpt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTTm9kZTo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFy
a1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgTm9kZSog
bm9kZSA9IG1faW1wbC5nZXQoKTsKLSAgICBub2RlLT5tYXJrSlNFdmVudExpc3RlbmVycyhtYXJr
U3RhY2spOworICAgIG5vZGUtPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIAotICAg
IG1hcmtTdGFjay5hZGRPcGFxdWVSb290KHJvb3Qobm9kZSkpOworICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KG5vZGUpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBj
cmVhdGVXcmFwcGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmgKaW5kZXggNjdmZmRlMDcxZTExNmU1NDc4ZWIwN2FlMzg3ZDE3NDhlOTE2MDE3Yi4u
NTFlNzk1ZTc0YzY1MDZkZDI1Njk4ZjljM2YxMGMxZTI4YmQyYjlmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ1NTVmFsdWU7CiAKIGNsYXNzIEpTTm9kZU93bmVyIDogcHVibGlj
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlND
OjpNYXJrU3RhY2smKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmluZGV4IDkyN2IxYTMzZTk2ODUxYTY2
NWVhOTNmNTljZmY4NDJhYWM4MjQ1Y2MuLjlkNWRmMDQyMWU3YjRiYWQ3MmIyMGRjNjcyZDg5ZGVi
N2Y5NjkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtODMsOSArODMsOSBAQCBzaG9ydCBKU05vZGVGaWx0ZXJD
b25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIE5vZGUqIGZpbHRlck5v
ZGUpCiAgICAgcmV0dXJuIGludFJlc3VsdDsKIH0KIAotYm9vbCBKU05vZGVGaWx0ZXJDb25kaXRp
b246OldlYWtPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgTWFya1N0YWNrJiBtYXJrU3RhY2spCitib29sIEpT
Tm9kZUZpbHRlckNvbmRpdGlvbjo6V2Vha093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICByZXR1cm4gbWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChjb250
ZXh0KTsKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3QoY29udGV4dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgKaW5kZXggODAxNDhmMWI2N2Q1NzU2ODhkMTQ3
ZDBiOWNmMTdkZmUxZTRjYmUyYi4uOWIwNTZhMGMwNzFkNTI5YjM2MTM3Y2YwY2U3YTM4NTMxNGQ1
YzQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoU2NyaXB0U3RhdGUqLCBOb2RlKikgY29uc3Q7CiAK
ICAgICAgICAgY2xhc3MgV2Vha093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
LSAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOwor
ICAgICAgICAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsK
ICAgICAgICAgfTsKICAgICAgICAgV2Vha093bmVyIG1fd2Vha093bmVyOwogICAgICAgICBtdXRh
YmxlIEpTQzo6V2VhazxKU0M6OlVua25vd24+IG1fZmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggYWQ0YWE3ZTVhMzEz
YTVmOTk1YmUzMTQxYWUyZWQ4YWQ4ZTE1ZWY5ZC4uMWZjZjQ4NzBjZGUwMzJjYzE2NjE1MDc4ODdm
ZjAyMTExY2NkM2M2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTTm9kZUZpbHRlcjo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU05vZGVGaWx0ZXI6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtT
dGFjayk7Ci0gICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3QoaW1wbCgpKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChpbXBsKCkp
OwogfQogCiBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKaW5kZXggNzdmMmRjMzhhOWNlMWI2MDlh
OGRlNzczMDdlNmEzYWI5NmEwZWVhMC4uNjgyZTkxMzMxNTI3YzFkZjBiNDA2NDNjYzU1ZjZhZjg3
NTdjOWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRl
cmF0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0
ZXJhdG9yQ3VzdG9tLmNwcApAQCAtMjksMTIgKzI5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU05vZGVJdGVyYXRvcjo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU05vZGVJdGVyYXRvcjo6dmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFy
a1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKE5v
ZGVGaWx0ZXIqIGZpbHRlciA9IG1faW1wbC0+ZmlsdGVyKCkpCi0gICAgICAgIG1hcmtTdGFjay5h
ZGRPcGFxdWVSb290KGZpbHRlcik7CisgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChmaWx0
ZXIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwCmluZGV4IGE1MmFjNjQ3Njg0N2Y1NWVlYTgxYWNlZDIzMGI2YWFjNmY5ZTExNTIu
LjUzM2I0MzQ1YmZjZWQ5MWIzOWNmMzhiYTAwMTAzNWJlZjI0ODBlOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCkBAIC0zNywxOCArMzcs
MTggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SlNOb2RlTGlzdE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpNYXJrU3RhY2smKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKLWJvb2wg
SlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYgbWFya1N0YWNrKQorYm9vbCBK
U05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
SlNOb2RlTGlzdCoganNOb2RlTGlzdCA9IHN0YXRpY19jYXN0PEpTTm9kZUxpc3QqPihoYW5kbGUu
Z2V0KCkuYXNDZWxsKCkpOwogICAgIGlmICghanNOb2RlTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGll
cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFqc05vZGVMaXN0LT5pbXBsKCkt
PmlzRHluYW1pY05vZGVMaXN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
bWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PER5bmFtaWNOb2Rl
TGlzdCo+KGpzTm9kZUxpc3QtPmltcGwoKSktPnJvb3ROb2RlKCkpKTsKKyAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxEeW5hbWljTm9kZUxpc3Qq
Pihqc05vZGVMaXN0LT5pbXBsKCkpLT5yb290Tm9kZSgpKSk7CiB9CiAKIHZvaWQgSlNOb2RlTGlz
dE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUHJvY2Vz
c2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcAppbmRleCA4NjhlMzE5MDAyMDU4Yzg4NzFj
NzcwZTlhMzNjNzcxZWUwMGQyYzZiLi5jZjM0NzdjNDY2NjU2NDkzYTMxY2VlZDQyZTk3ZjI3ZTRm
NzE5NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lk
IEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBpZiAoU3R5bGVTaGVldCogc2hlZXQgPSBzdGF0
aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihpbXBsKCkpLT5zaGVldCgpKQotICAgICAg
ICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9i
YWxEYXRhKCksIHNoZWV0KTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwg
KkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgc2hlZXQpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1
c3RvbS5jcHAKaW5kZXggZGVmYmQ1ZjNjNTI4MWNkNWY5NDIzNTNmMDgwNWFlN2JkZGFkOTVhYi4u
YjNiZWViNWE3YTA3N2NiZjUxYmMzZjM5Njc2YjZhNDBjNTM1NTIxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9t
LmNwcApAQCAtMzMsMTAgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBK
U1NWR0VsZW1lbnRJbnN0YW5jZTo6bWFya0NoaWxkcmVuKEpTQzo6TWFya1N0YWNrJiBtYXJrU3Rh
Y2spCit2b2lkIEpTU1ZHRWxlbWVudEluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQzo6U2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0g
ICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3Qocm9vdChpbXBsKCktPmNvcnJlc3BvbmRpbmdFbGVt
ZW50KCkpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOworICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyb290KGltcGwoKS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKaW5kZXggMGQ1NzZlMDY0MDY4NGRlOGY5NjEz
ZGU2MjJiZjZiYWFjYmRhNjYwZi4uMzRiOWMzY2FkMzRlNmQwNTQ5MmU3YTQ1NjdkNTlkZDBmZWIw
ZjJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3Jr
ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29y
a2VyQ3VzdG9tLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1NoYXJlZFdvcmtlcjo6bWFya0NoaWxkcmVu
KE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0
YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKE1lc3Nh
Z2VQb3J0KiBwb3J0ID0gaW1wbCgpLT5wb3J0KCkpCi0gICAgICAgIG1hcmtET01PYmplY3RXcmFw
cGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9ydCk7Cisg
ICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5n
bG9iYWxEYXRhKCksIHBvcnQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTU2hhcmVkV29ya2VyKEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVT
aGVldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRD
dXN0b20uY3BwCmluZGV4IGY4MzZkOGUzMWEyOTc2N2UxMzM0NDFkNTFiODJiNWJlYWNhZWY3OGYu
LmZiMDI1MzA1ZDI2N2ZlOGViODVjNDEwZmZhYmQ0NmM2OTc2Nzk0ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcApAQCAtNjYsMTAg
KzY2LDEwIEBAIGlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdv
cmxkLCBTdHlsZVNoZWV0KikKICAgICByZXR1cm4gd29ybGQ7CiB9CiAKLXZvaWQgSlNTdHlsZVNo
ZWV0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTU3R5bGVTaGVl
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJr
Q2hpbGRyZW4obWFya1N0YWNrKTsKLSAgICBtYXJrU3RhY2suYWRkT3BhcXVlUm9vdChyb290KGlt
cGwoKSkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXQqIHN0eWxl
U2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxr
ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3Vz
dG9tLmNwcAppbmRleCBmYzY0OTAwN2FlODEwNGU5MzRhZDUwNDI4NTdlMjNhYTk2NTM0MjFmLi42
OWY2YzNiZDYzZjk5MDM3MDM1ZjZhYTJhNDdiODk0YzQ3MzkxZWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKQEAgLTI5LDEyICsy
OSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ci12b2lkIEpTVHJlZVdhbGtlcjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQor
dm9pZCBKU1RyZWVXYWxrZXI6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih2aXNpdG9yKTsKIAogICAgIGlmIChOb2RlRmlsdGVyKiBmaWx0ZXIgPSBtX2ltcGwtPmZp
bHRlcigpKQotICAgICAgICBtYXJrU3RhY2suYWRkT3BhcXVlUm9vdChmaWx0ZXIpOworICAgICAg
ICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoZmlsdGVyKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCmluZGV4IDBmNTIzMDE3ODhhYjhlZDQ3NjIwMThhZGUyYzJmNmNkNzZhZDZmZTEuLjU0
ZGM0MDViMWIyNTMyNzM4ZDZkNzk5Nzc3YTcxOWJlN2VmNTdkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKQEAgLTE5MiwxMyArMTkyLDEzIEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJHTEV4dGVuCiAg
ICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCi12b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6
Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRv
cik7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Y29udGV4dC0+Z2V0TnVtYmVyT2ZFeHRlbnNpb25zKCk7ICsraSkKLSAgICAgICAgbWFya0RPTU9i
amVjdFdyYXBwZXIobWFya1N0YWNrLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBj
b250ZXh0LT5nZXRFeHRlbnNpb25OdW1iZXIoaSkpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3Jh
cHBlcih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBjb250ZXh0LT5n
ZXRFeHRlbnNpb25OdW1iZXIoaSkpOwogfQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5j
cHAKaW5kZXggZWFmNzdjZjY0MDUxMjM2MmE3NzQwNzhjZWRlZmEzZTRhMjhiMzBlNC4uYjRlZjM4
MTQ4NzAxMTQzYjNjYjYxZjIwZGIyY2NkMzdmZmY4YjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3Bw
CkBAIC0zMiwxNiArMzIsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEpTV2ViS2l0QW5pbWF0aW9uTGlzdDo6bWFya0NoaWxkcmVuKE1hcmtT
dGFjayYgbWFya1N0YWNrKQordm9pZCBKU1dlYktpdEFuaW1hdGlvbkxpc3Q6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtT
dGFjayk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIAogICAgIFdlYktpdEFu
aW1hdGlvbkxpc3QqIGxpc3QgPSBpbXBsKCk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGxpc3QtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkKLSAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRh
LCBsaXN0LT5pdGVtKGkpKTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwg
Z2xvYmFsRGF0YSwgbGlzdC0+aXRlbShpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDExMDNkMGI5
NjkzYjcyZjNjOTIzZTI5YTU5MDgyMDhkZjBmMjFmZTcuLjUzYzZiOTg4YTNmZWUyMDQ4NDZlMjRk
YmU3OGFhOTcyMzc0NGI3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBKU1dvcmtlckNvbnRl
eHQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNXb3JrZXJDb250
ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEJhc2U6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSB0aGlzLT5nbG9iYWxEYXRhKCk7CiAK
LSAgICBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHZpc2l0QWN0aXZlT2JqZWN0c0ZvckNvbnRl
eHQodmlzaXRvciwgZ2xvYmFsRGF0YSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAotICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRp
b25hbExvY2F0aW9uKCkpOwotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xv
YmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbE5hdmlnYXRvcigpKTsKKyAgICBtYXJrRE9NT2JqZWN0
V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTG9jYXRpb24oKSk7
CisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgZ2xvYmFsRGF0YSwgaW1wbCgpLT5v
cHRpb25hbE5hdmlnYXRvcigpKTsKIAotICAgIGltcGwoKS0+bWFya0pTRXZlbnRMaXN0ZW5lcnMo
bWFya1N0YWNrKTsKKyAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsK
IH0KIAogYm9vbCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGViYTVkYjdkZWYxN2E1OTllNmEyNDhhNDNmM2Q3NTgw
YzI4MDgyNDUuLjhkZDE3NjE0NmFkM2Y0MzY2Y2Y3M2Q5YjBjYTdiZmU4NjhmNWM4OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwCkBAIC01NCwyNSArNTQsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIEpTWE1MSHR0cFJlcXVlc3Q6Om1hcmtDaGlsZHJlbihNYXJr
U3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbihT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNr
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSBtX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkpCi0gICAgICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2Jh
bERhdGEoKSwgdXBsb2FkKTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwg
KkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgdXBsb2FkKTsKIAogICAgIGlmIChEb2N1
bWVudCogcmVzcG9uc2VEb2N1bWVudCA9IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZVhNTCgpKQot
ICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihtYXJrU3RhY2ssICpIZWFwOjpoZWFwKHRoaXMp
LT5nbG9iYWxEYXRhKCksIHJlc3BvbnNlRG9jdW1lbnQpOworICAgICAgICBtYXJrRE9NT2JqZWN0
V3JhcHBlcih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCByZXNwb25z
ZURvY3VtZW50KTsKIAogICAgIGlmIChBcnJheUJ1ZmZlciogcmVzcG9uc2VBcnJheUJ1ZmZlciA9
IG1faW1wbC0+b3B0aW9uYWxSZXNwb25zZUFycmF5QnVmZmVyKCkpCi0gICAgICAgIG1hcmtET01P
YmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwg
cmVzcG9uc2VBcnJheUJ1ZmZlcik7CisgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0
b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHJlc3BvbnNlQXJyYXlCdWZmZXIp
OwogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQogICAgIGlmIChCbG9iKiByZXNwb25z
ZUJsb2IgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VCbG9iKCkpCi0gICAgICAgIG1hcmtET01P
YmplY3RXcmFwcGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwg
cmVzcG9uc2VCbG9iKTsKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRvciwgKkhl
YXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcmVzcG9uc2VCbG9iKTsKICNlbmRpZgogCi0g
ICAgbV9pbXBsLT5tYXJrSlNFdmVudExpc3RlbmVycyhtYXJrU3RhY2spOworICAgIG1faW1wbC0+
dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwogfQogCiAvLyBDdXN0b20gZnVuY3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
VXBsb2FkQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RVcGxvYWRDdXN0b20uY3BwCmluZGV4IDA5MWMzODBlY2Y2ODk5ZDlmMWYxNmE3NTJjMjNl
ZjIzYTZmZjk0MWIuLjZiODBiYjQ3MjkxNzYwMGQ2NWNlOWVlMDkwMjE3ZDkwZjIwZGU4MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxv
YWRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RVcGxvYWRDdXN0b20uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEpTWE1MSHR0cFJlcXVlc3RVcGxv
YWQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKK3ZvaWQgSlNYTUxIdHRwUmVx
dWVzdFVwbG9hZDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBC
YXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOwogCiAgICAgaWYgKFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IG1faW1w
bC0+YXNzb2NpYXRlZFhNTEh0dHBSZXF1ZXN0KCkpCi0gICAgICAgIG1hcmtET01PYmplY3RXcmFw
cGVyKG1hcmtTdGFjaywgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgeG1sSHR0cFJl
cXVlc3QpOworICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCAqSGVhcDo6aGVh
cCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCB4bWxIdHRwUmVxdWVzdCk7CiAKLSAgICBtX2ltcGwtPm1h
cmtKU0V2ZW50TGlzdGVuZXJzKG1hcmtTdGFjayk7CisgICAgbV9pbXBsLT52aXNpdEpTRXZlbnRM
aXN0ZW5lcnModmlzaXRvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
MTgxZmQyNDVlY2U5ODEwZDg0ODU4Y2MwNThhYzk3NTA1YjQ4OWRiMC4uMDE2MjE2YmU4ZTg3ZGUy
Zjk2OGY2NTFiODEyODEwNjYxYWU2NDZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTc1MSwxMCArNzUxLDEwIEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7XG4iIC4K
ICAgICAgICAgIiAgICB9XG5cbiIpOwogCi0gICAgIyBtYXJrQ2hpbGRyZW4gZnVuY3Rpb24KKyAg
ICAjIHZpc2l0IGZ1bmN0aW9uCiAgICAgaWYgKCRuZWVkc01hcmtDaGlsZHJlbikgewotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oSlND
OjpNYXJrU3RhY2smKTtcblxuIik7Ci0gICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVy
cmlkZXNNYXJrQ2hpbGRyZW4ifSA9IDE7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYpO1xuXG4iKTsK
KyAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4ifSA9
IDE7CiAgICAgfQogCiAgICAgIyBDdXN0b20gcHVzaEV2ZW50SGFuZGxlclNjb3BlIGZ1bmN0aW9u
CkBAIC05NTUsNyArOTU1LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1Y3R1
cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7CiAgICAgfQog
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21NYXJrRnVuY3Rp
b24ifSBvciAkbmVlZHNNYXJrQ2hpbGRyZW4pIHsKLSAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6Ok92ZXJyaWRlc01hcmtDaGlsZHJlbiJ9ID0gMTsKKyAgICAgICAgJHN0cnVjdHVyZUZsYWdz
eyJKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4ifSA9IDE7CiAgICAgfQogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsCiAgICAgICAgICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpXG4iIC4KQEAgLTE0MzEsMTAgKzE0MzEsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAgICBpZiAoJG5lZWRz
TWFya0NoaWxkcmVuICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21N
YXJrRnVuY3Rpb24ifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFz
c05hbWV9OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spXG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYgdmlzaXRvcilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFy
a1N0YWNrKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsKCktPm1h
cmtKU0V2ZW50TGlzdGVuZXJzKG1hcmtTdGFjayk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsKCktPnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNp
dG9yKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCAyZDI5ZTAxMThl
NDgwYTdiYzNlZjUzZTcyNThhYjY5MzFkOWI5YWM5Li42OGUyOTU0YmQ1NTQ3YTAyYmExZWIzN2Ni
ZDZhYjcxOTEzMGMwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
aW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5j
cHAKQEAgLTUxLDEyICs1MSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBt
YXJrU3RhY2spCisgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgewotICAgICAgICBSdW50aW1lT2JqZWN0OjptYXJrQ2hpbGRyZW4obWFya1N0
YWNrKTsKKyAgICAgICAgUnVudGltZU9iamVjdDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKICAg
ICAgICAgUXRJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oZ2V0
SW50ZXJuYWxJbnN0YW5jZSgpKTsKICAgICAgICAgaWYgKGluc3RhbmNlKQotICAgICAgICAgICAg
aW5zdGFuY2UtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgICAgIGluc3RhbmNl
LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFJ1bnRpbWVPYmplY3Q6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzTWFya0NoaWxkcmVuOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFJ1bnRpbWVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVP
YmplY3Q6OnNfaW5mbyA9IHsgIlF0UnVudGltZU9iamVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2lu
Zm8sIDAsIDAgfTsKQEAgLTE4NSwxMiArMTg1LDEyIEBAIFJ1bnRpbWVPYmplY3QqIFF0SW5zdGFu
Y2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBuZXcgKGV4
ZWMpIFF0UnVudGltZU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRo
aXMpOwogfQogCi12b2lkIFF0SW5zdGFuY2U6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJr
U3RhY2spCit2b2lkIFF0SW5zdGFuY2U6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIGlmIChtX2RlZmF1bHRNZXRob2QpCi0gICAgICAgIG1hcmtTdGFjay5hcHBl
bmQoJm1fZGVmYXVsdE1ldGhvZCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2RlZmF1bHRN
ZXRob2QpOwogICAgIGZvciAoUUhhc2g8UUJ5dGVBcnJheSwgV3JpdGVCYXJyaWVyPEpTT2JqZWN0
PiA+OjpJdGVyYXRvciBpdCA9IG1fbWV0aG9kcy5iZWdpbigpLCBlbmQgPSBtX21ldGhvZHMuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaXQudmFsdWUo
KSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdC52YWx1ZSgpKTsKIH0KIAogdm9pZCBRdElu
c3RhbmNlOjpiZWdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
aW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCmluZGV4
IGI4MDI1MDBiMGNkOTk2YTJjZWU1YTM3Zjg3OGUxMzc2YTJhZTgxZTUuLjFkNTFjYTI2NTY3YzAw
ZTI1NDA3NDhhZjk3YWE4NmU2ZmFkNjc1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9p
bnN0YW5jZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUg
dmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZh
bHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogCi0gICAgdm9p
ZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xv
dFZpc2l0b3ImKTsKIAogICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRob2QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgIHZpcnR1YWwgSlNWYWx1
ZSBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCmluZGV4IGM0OTg2Mzc5MzAxOWIw
Mjc1MmY3ZmIwM2Q1M2U2YzZkNTBkNGRmMDguLjJkZGFhZDYzZmIyODNkY2M0MThhNjliZTdhMjg0
NDNjYmNkYWNiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXht
YXBydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVu
dGltZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVudGltZU9iamVj
dDo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNNYXJrQ2hpbGRyZW47CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVudGltZU9iamVjdDo6U3RydWN0dXJlRmxh
Z3MgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogfTsKIAogUXRQaXhtYXBSdW50aW1lT2JqZWN0
OjpRdFBpeG1hcFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA4N2VlNTIyNGJlYzFkNzFkOGI5M2NmNTYw
MDFjZWIzZjFkNzI5ZWMzLi5hYzc2ZWYzYjYyMmRmYjkzMjNhYmQxOTg4YjQ2NGUxODliYmQ1OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0xNDAwLDE0ICsx
NDAwLDE0IEBAIFF0UnVudGltZU1ldGFNZXRob2Q6OlF0UnVudGltZU1ldGFNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVuCiAgICAgZC0+bV9hbGxvd1ByaXZhdGUg
PSBhbGxvd1ByaXZhdGU7CiB9CiAKLXZvaWQgUXRSdW50aW1lTWV0YU1ldGhvZDo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQordm9pZCBRdFJ1bnRpbWVNZXRhTWV0aG9kOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFF0UnVudGltZU1ldGhvZDo6
bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CisgICAgUXRSdW50aW1lTWV0aG9kOjp2aXNpdENoaWxk
cmVuKHZpc2l0b3IpOwogICAgIFFXX0QoUXRSdW50aW1lTWV0YU1ldGhvZCk7CiAgICAgaWYgKGQt
Pm1fY29ubmVjdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmZC0+bV9jb25uZWN0KTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJmQtPm1fY29ubmVjdCk7CiAgICAgaWYgKGQtPm1fZGlzY29u
bmVjdCkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmZC0+bV9kaXNjb25uZWN0KTsKKyAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJmQtPm1fZGlzY29ubmVjdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IFF0UnVudGltZU1ldGFNZXRob2Q6OmNhbGwoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9ydW50aW1lLmgKaW5kZXggZmE1Y2U2MmRjZDEwN2FjMjgwZTlkNWY0NTlmNTJi
YzcwYzk2ZjFhZS4uYmRiMWFlZDVmN2VjMDQ2YzJiYTY5YWI5M2RlMWE0ZmYyZjgyNWE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBAIC0xNTksNyArMTU5LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c01hcmtDaGlsZHJlbjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuOwogCiAgICAgUXRSdW50aW1lTWV0aG9kRGF0YSAqZF9mdW5jKCkgY29uc3Qge3JldHVybiBk
X3B0cjt9CiAgICAgUXRSdW50aW1lTWV0aG9kKFF0UnVudGltZU1ldGhvZERhdGEgKmRkLCBFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJm4sIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4g
aW5zdCk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4o
TWFya1N0YWNrJiBtYXJrU3RhY2spOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CiAKIHByb3RlY3RlZDoKICAgICBRdFJ1bnRpbWVNZXRhTWV0aG9kRGF0YSog
ZF9mdW5jKCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PFF0UnVudGltZU1ldGFNZXRo
b2REYXRhKj4oZF9wdHIpO30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCmluZGV4IDM0ODcw
NGZjYzg1MmYyZTA0YWNkNDkwNjQxZGQ1NzJkM2ZhMGQ0NjguLjMwODYxMzUzMzJlMDMyMmVhNjdm
ZjFmMTk2ZTQzMTU0NTYxMDYzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApAQCAt
MjYsNiArMjYsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAg
Y2xhc3MgTWFya1N0YWNrOworICAgIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogI2lmIFVTRShKU0MpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJr
SlNGdW5jdGlvbihKU0M6Ok1hcmtTdGFjayYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXRKU0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0b3ImKSB7IH0KICNlbmRpZgogCiAgICAgICAgIGJv
b2wgaXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsaXNBdHRyaWJ1dGUoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCAzNTQ0Y2U2NmVmMmExYWRhN2E3NjI0NjE5OWU4
NWIwZmZiNDAyOGJkLi44MTkwMmQwOGJkMmVkMGE3NzM2YjE4YWJkZmYzMzUwMGY0ZmRlNmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTcwLDcgKzE3MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCk7CiAKICNpZiBV
U0UoSlNDKQotICAgICAgICB2b2lkIG1hcmtKU0V2ZW50TGlzdGVuZXJzKEpTQzo6TWFya1N0YWNr
Jik7CisgICAgICAgIHZvaWQgdmlzaXRKU0V2ZW50TGlzdGVuZXJzKEpTQzo6U2xvdFZpc2l0b3Im
KTsKICAgICAgICAgdm9pZCBpbnZhbGlkYXRlSlNFdmVudExpc3RlbmVycyhKU0M6OkpTT2JqZWN0
Kik7CiAjZW5kaWYKIApAQCAtMjIzLDcgKzIyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNl
bmRpZgogCiAjaWYgVVNFKEpTQykKLSAgICBpbmxpbmUgdm9pZCBFdmVudFRhcmdldDo6bWFya0pT
RXZlbnRMaXN0ZW5lcnMoSlNDOjpNYXJrU3RhY2smIG1hcmtTdGFjaykKKyAgICBpbmxpbmUgdm9p
ZCBFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgewogICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRhcmdldERh
dGEoKTsKICAgICAgICAgaWYgKCFkKQpAQCAtMjMzLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgZm9yIChFdmVudExpc3RlbmVyTWFwOjppdGVyYXRvciBpdCA9IGQtPmV2
ZW50TGlzdGVuZXJNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBF
dmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSA9ICppdC0+c2Vjb25kOwogICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBl
bnRyeVtpXS5saXN0ZW5lci0+bWFya0pTRnVuY3Rpb24obWFya1N0YWNrKTsKKyAgICAgICAgICAg
ICAgICBlbnRyeVtpXS5saXN0ZW5lci0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwogICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzYWNhZWZjZTRhNGMwZjIxMTgzZjI4
ODdhOGQxYTQzOWU4MmUwZDlmLi4zMDFjNGRlMGFmZjUzMDdmMjY1OWJlZWRlNDhmNTg2Zjg3M2Ey
NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBNYXJrU3RhY2s7CisgICAgdHlwZWRlZiBN
YXJrU3RhY2sgU2xvdFZpc2l0b3I7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
RmlsdGVyQ29uZGl0aW9uLmgKaW5kZXggMGQ2MzEzZjAyYjMyMGIyNjdhOWM5ZGM4OWNjMTNlMDJm
MzRjN2NmOS4uNDY2MDc2NGEzNDI5M2Q0ODg0YWNlZWJjYWI3ZjlmMzVlMzA4YzM1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE1hcmtTdGFjazsKKyAgICB0eXBlZGVmIE1hcmtT
dGFjayBTbG90VmlzaXRvcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5O
b2RlRmlsdGVyQ29uZGl0aW9uKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9k
ZShTY3JpcHRTdGF0ZSosIE5vZGUqKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBt
YXJrQWdncmVnYXRlKEpTQzo6TWFya1N0YWNrJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdEFnZ3JlZ2F0ZShKU0M6OlNsb3RWaXNpdG9yJikgeyB9CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggNmM5NjQwZWVhMzYyZWI3
OTAyZGJlOWUzYzA5YzUyYjBjNjgyMTdmOC4uOTljOWFiN2YyZmRjNDdkNDZjZjA0ZTllNDg2MmU0
NzIzYmUyZTljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0zNDAsNyArMzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKCk7CiAK
LSAgICAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUg
SlNET01XaW5kb3c6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smKSBpbiBKU0RPTVdpbmRvd0N1c3Rv
bS5jcHAuCisgICAgICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3IgR0MgbWFya2lu
Zy4gU2VlIEpTRE9NV2luZG93Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJikgaW4gSlNET01X
aW5kb3dDdXN0b20uY3BwLgogICAgICAgICBTY3JlZW4qIG9wdGlvbmFsU2NyZWVuKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JlZW4uZ2V0KCk7IH0KICAgICAgICAgRE9NU2VsZWN0aW9uKiBvcHRpb25h
bFNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uLmdldCgpOyB9CiAgICAgICAg
IEhpc3RvcnkqIG9wdGlvbmFsSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faGlzdG9yeS5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCA4MjM3ZGExZGI1
ODM0Y2MwZWFhMzVkZmIyNzg2YmVlMGFiNjI5YTgzLi4wNzM3Njc5MjkzZjExMzFkODZkYWUxOTIy
ZjMxYmVhMjMzNTQwNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApA
QCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKiB3b3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyKCkgeyByZXR1cm4gbV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmdldCgpOyB9
CiAjZW5kaWYKLSAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2lu
Zy4gU2VlIEpTV29ya2VyQ29udGV4dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpIGluCisgICAg
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtl
ckNvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKSBpbgogICAgICAgICAvLyBKU1dv
cmtlckNvbnRleHRDdXN0b20uY3BwLgogICAgICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFs
TmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KICAgICAgICAg
V29ya2VyTG9jYXRpb24qIG9wdGlvbmFsTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvY2F0
aW9uLmdldCgpOyB9Cg==
</data>
<flag name="review"
          id="83368"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>