<?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>204307</bug_id>
          
          <creation_ts>2019-11-18 11:52:45 -0800</creation_ts>
          <short_desc>Move RuleSet to Style namespace</short_desc>
          <delta_ts>2019-11-18 15:22:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591155</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 11:52:45 -0800</bug_when>
    <thetext>and style directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591159</commentid>
    <comment_count>1</comment_count>
      <attachid>383772</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 12:04:29 -0800</bug_when>
    <thetext>Created attachment 383772
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591164</commentid>
    <comment_count>2</comment_count>
      <attachid>383774</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 12:08:57 -0800</bug_when>
    <thetext>Created attachment 383774
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591166</commentid>
    <comment_count>3</comment_count>
      <attachid>383775</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 12:14:47 -0800</bug_when>
    <thetext>Created attachment 383775
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591273</commentid>
    <comment_count>4</comment_count>
      <attachid>383775</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-18 15:21:23 -0800</bug_when>
    <thetext>Comment on attachment 383775
patch

Clearing flags on attachment: 383775

Committed r252599: &lt;https://trac.webkit.org/changeset/252599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591274</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-18 15:21:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591275</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-18 15:22:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/57300972&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383772</attachid>
            <date>2019-11-18 12:04:29 -0800</date>
            <delta_ts>2019-11-18 12:08:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ruleset-namespace.patch</filename>
            <type>text/plain</type>
            <size>33422</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZTI5ZjIxZDcxMi4uMDVmNTc4ZDY3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxOS0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBSdWxlU2V0IHRvIFN0eWxlIG5hbWVzcGFjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBtb3ZlIFJ1bGVGZWF0dXJl
LgorICAgICAgICBNb3ZlIHRvIHN0eWxlLyBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6Cisg
ICAgICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3Rv
clRleHQpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXRjaFJlcXVlc3Q6Ok1hdGNoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6RWxlbWVudFJ1bGVDb2xsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlc0ZvclNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6aGFzQW55TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgICogY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyk6CisgICAg
ICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
ckFwcGVuZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjp3cmFw
cGVySW5zZXJ0UnVsZSk6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcC4KKyAgICAgICAgKiBzdHls
ZS9SdWxlRmVhdHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0
dXJlLmguCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0
ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZURhdGE6OlJ1bGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxl
U2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0Ojph
ZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmg6CisKIDIwMTktMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBEb2N1bWVudFJ1bGVTZXRzIHRvIFN0eWxlOjpTY29wZVJ1
bGVTZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZiMWNlMDk1Y2VjLi44OWI4MjA1YjgyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTc3MCw4ICs3NzAsNiBAQCBjc3MvTWVkaWFRdWVyeVBhcnNlckNvbnRleHQu
Y3BwCiBjc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAogY3NzL1JHQkNvbG9yLmNwcAotY3NzL1J1bGVGZWF0dXJlLmNwcAotY3Nz
L1J1bGVTZXQuY3BwCiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAogY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKIGNzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTIzNDYsNiAr
MjM0NCw4IEBAIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcAogc3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmNwcAogc3R5bGUv
UHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUnVsZUZlYXR1cmUuY3BwCitzdHlsZS9SdWxlU2V0
LmNwcAogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKIHN0eWxlL1N0eWxlQnVpbGRlci5jcHAKIHN0
eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxYTU1NDU0NGNmLi4yYWRiZTQzMmY3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDg0MSw2ICs0ODQxLDggQEAKIAkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIEV4
dGVuc2lvblN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVl
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDgxMzdCOTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJG
IC8qIFN0eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4
NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNDg2M0NGMTIzODMyQ0JB
MDA5NzIxNTggLyogUnVsZUZlYXR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc5QkFEOUQxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVGZWF0dXJl
LmNwcCAqLzsgfTsKKwkJRTQ4NjNDRjIyMzgzMkNCQTAwOTcyMTU4IC8qIFJ1bGVTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5QkFEOUYxNjFF
N0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuY3BwICovOyB9OwogCQlFNDg5NDRBMzE4MEI1N0Q4MDBG
MTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ4OTQ0QTExODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDkxNkZGNzE5NURGNkEwMDA1QUIzNDkgLyogTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTE2RkY2MTk1
REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OTQ2RUFGMTU2RTY0REQwMEQz
Mjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBv
cnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjcwMjcsNiArMjcwMjksMTAgQEAKIAkJCQlFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0
Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0MjAwRkE0MzQ1
IC8qIFByb3BlcnR5Q2FzY2FkZS5jcHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1
IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovLAorCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMyRTY1MiAv
KiBSdWxlRmVhdHVyZS5jcHAgKi8sCisJCQkJQTc5QkFEOUUxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1
bGVGZWF0dXJlLmggKi8sCisJCQkJQTc5QkFEOUYxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQu
Y3BwICovLAorCQkJCUE3OUJBREEwMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggKi8sCiAJ
CQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICovLAogCQkJ
CUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8sCiAJCQkJRTRB
QkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBAIC0yNzQzOCwx
MCArMjc0NDQsNiBAQAogCQkJCUJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi8s
CiAJCQkJQkM3NERBMzYxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCAqLywKIAkJCQlC
Qzc0REEzNTEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCAqLywKLQkJCQlBNzlCQUQ5RDE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuY3BwICovLAotCQkJCUE3OUJBRDlFMTYxRTdG
M0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5oICovLAotCQkJCUE3OUJBRDlGMTYxRTdGM0YwMEMy
RTY1MiAvKiBSdWxlU2V0LmNwcCAqLywKLQkJCQlBNzlCQURBMDE2MUU3RjNGMDBDMkU2NTIgLyog
UnVsZVNldC5oICovLAogCQkJCUU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNo
ZWNrZXIuY3BwICovLAogCQkJCUU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNo
ZWNrZXIuaCAqLywKIAkJCQk0MzJEM0ZFNzE4QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0b3JDaGVj
a2VyVGVzdEZ1bmN0aW9ucy5oICovLApAQCAtMzM2ODksNiArMzM2OTEsNyBAQAogCQkJCTUzOEVD
OTE4MUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDOTE5MUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI1LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDOTFBMUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMTI2LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0ODYzQ0YyMjM4MzJDQkEwMDk3MjE1OCAv
KiBSdWxlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOTFCMUY5OUI2OTgwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMTI3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOTFDMUY5
OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDOTFEMUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI5LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzM3NjUsNiArMzM3NjgsNyBAQAogCQkJCURFQ0E3RTE4MUY5RUIzNjQwMEUz
QjY2MSAvKiBVbmlmaWVkU291cmNlMjAwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQ0E3RTE5
MUY5RUIzNjQwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjAxLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURFQ0E3RTFBMUY5RUIzNjQwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjAyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU0ODYzQ0YxMjM4MzJDQkEwMDk3MjE1OCAvKiBSdWxlRmVhdHVyZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0UxQjFGOUVCMzY0MDBFM0I2NjEgLyogVW5pZmll
ZFNvdXJjZTIwMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0UxQzFGOUVCMzY0MDBFM0I2
NjEgLyogVW5pZmllZFNvdXJjZTIwNC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0UxRDFG
OUVCMzY0MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTIwNS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKaW5kZXggMjk2OTA5
ZjAwN2MuLmMzMDgzYWExZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0
eWxlU2hlZXRzLmNwcApAQCAtNTksOSArNTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0
czo6ZGVmYXVsdFN0eWxlOwotUnVsZVNldCogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0
UXVpcmtzU3R5bGU7Ci1SdWxlU2V0KiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRQcmlu
dFN0eWxlOworU3R5bGU6OlJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFN0
eWxlOworU3R5bGU6OlJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFF1aXJr
c1N0eWxlOworU3R5bGU6OlJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFBy
aW50U3R5bGU7CiB1bnNpZ25lZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZVZl
cnNpb247CiAKIFN0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpzaW1w
bGVEZWZhdWx0U3R5bGVTaGVldDsKQEAgLTE3NSwxMSArMTc1LDExIEBAIHZvaWQgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNpbXBsZURlZmF1
bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRl
ZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVs
ZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlx
dWU8U3R5bGU6OlJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIH0KIAotICAgIGRlZmF1bHRTdHls
ZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Ci0gICAgZGVmYXVsdFByaW50U3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9
IG1ha2VVbmlxdWU8U3R5bGU6OlJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmlu
dFN0eWxlID0gbWFrZVVuaXF1ZTxTdHlsZTo6UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgbWVk
aWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NTUGFyc2Vy
Q29udGV4dChVQVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1
bGVzLgpAQCAtMTk4LDEwICsxOTgsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6Omxv
YWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKICAgICBB
U1NFUlQoIXNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHlsZSA9IG1h
a2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVu
aXF1ZTxTdHlsZTo6UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgLy8gVGhlcmUgYXJlIG5vIG1l
ZGlhLXNwZWNpZmljIHJ1bGVzIGluIHRoZSBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KICAgICBkZWZh
dWx0UHJpbnRTdHlsZSA9IGRlZmF1bHRTdHlsZTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBt
YWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9
IG1ha2VVbmlxdWU8U3R5bGU6OlJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVm
YXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwg
c3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaAppbmRleCA0ZTJjMzk4
NWE4NS4uMjE3ZjRmN2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxl
U2hlZXRzLmgKQEAgLTI1LDE0ICsyNSwxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBFbGVtZW50OwotY2xhc3MgUnVsZVNldDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAor
bmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJ1bGVTZXQ7Cit9CisKIGNsYXNzIENTU0RlZmF1bHRT
dHlsZVNoZWV0cyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRTdHlsZTsK
LSAgICBzdGF0aWMgUnVsZVNldCogZGVmYXVsdFF1aXJrc1N0eWxlOwotICAgIHN0YXRpYyBSdWxl
U2V0KiBkZWZhdWx0UHJpbnRTdHlsZTsKKyAgICBzdGF0aWMgU3R5bGU6OlJ1bGVTZXQqIGRlZmF1
bHRTdHlsZTsKKyAgICBzdGF0aWMgU3R5bGU6OlJ1bGVTZXQqIGRlZmF1bHRRdWlya3NTdHlsZTsK
KyAgICBzdGF0aWMgU3R5bGU6OlJ1bGVTZXQqIGRlZmF1bHRQcmludFN0eWxlOwogICAgIHN0YXRp
YyB1bnNpZ25lZCBkZWZhdWx0U3R5bGVWZXJzaW9uOwogCiAgICAgc3RhdGljIFN0eWxlU2hlZXRD
b250ZW50cyogc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1
bGUuY3BwCmluZGV4IDU3MjRhOTRhODNlLi40MDdmOThiNWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDU1NTdHlsZVJ1bGU6OnNldFNl
bGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gTk9URTogVGhlIHNlbGVjdG9yIGxpc3QgaGFzIHRvIGZpdCBpbnRvIFJ1bGVEYXRh
LiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTgzNjk+Ci0gICAgaWYgKHNlbGVjdG9yTGlzdC5jb21w
b25lbnRDb3VudCgpID4gUnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KQor
ICAgIGlmIChzZWxlY3Rvckxpc3QuY29tcG9uZW50Q291bnQoKSA+IFN0eWxlOjpSdWxlRGF0YTo6
bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIENT
U1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCBmOGU1NmMyMzI0
Yi4uYmYyMTBhMWQyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcApAQCAtNzAsMTIgKzcwLDEyIEBAIHN0YXRpYyBjb25zdCBTdHlsZVByb3BlcnRpZXMm
IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKQogCiBjbGFzcyBNYXRjaFJlcXVlc3QgewogcHVibGlj
OgotICAgIE1hdGNoUmVxdWVzdChjb25zdCBSdWxlU2V0KiBydWxlU2V0LCBTdHlsZTo6U2NvcGVP
cmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsID0gU3R5bGU6OlNjb3BlT3JkaW5hbDo6RWxlbWVudCkK
KyAgICBNYXRjaFJlcXVlc3QoY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQsIFN0eWxlOjpT
Y29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgPSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpFbGVt
ZW50KQogICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKICAgICAgICAgLCBzdHlsZVNjb3BlT3Jk
aW5hbChzdHlsZVNjb3BlT3JkaW5hbCkKICAgICB7CiAgICAgfQotICAgIGNvbnN0IFJ1bGVTZXQq
IHJ1bGVTZXQ7CisgICAgY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQ7CiAgICAgU3R5bGU6
OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbDsKIH07CiAKQEAgLTg5LDcgKzg5LDcgQEAg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFN0eWxlOjoKICAgICBBU1NFUlQoIW1fc2VsZWN0b3JGaWx0ZXIgfHwg
bV9zZWxlY3RvckZpbHRlci0+cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQoZWxlbWVudC5wYXJlbnRO
b2RlKCkpKTsKIH0KIAotRWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJ1bGVTZXQmIGF1dGhvclN0eWxlLCBjb25z
dCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
RWxlbWVudFJ1bGVDb2xsZWN0b3IoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6
OlJ1bGVTZXQmIGF1dGhvclN0eWxlLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0
ZXIpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fYXV0aG9yU3R5bGUoYXV0aG9y
U3R5bGUpCiAgICAgLCBtX3NlbGVjdG9yRmlsdGVyKHNlbGVjdG9yRmlsdGVyKQpAQCAtMTA5LDcg
KzEwOSw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaGVkUnVsZUxpc3QoKSBjb25zdAogICAgIHJldHVybiBtX21hdGNoZWRSdWxl
TGlzdDsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRS
dWxlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFN0eWxl
OjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwpCitpbmxpbmUgdm9pZCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6YWRkTWF0Y2hlZFJ1bGUoY29uc3QgU3R5bGU6OlJ1bGVEYXRhJiBydWxlRGF0
YSwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFN0eWxlOjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9y
ZGluYWwpCiB7CiAgICAgbV9tYXRjaGVkUnVsZXMuYXBwZW5kKHsgJnJ1bGVEYXRhLCBzcGVjaWZp
Y2l0eSwgc3R5bGVTY29wZU9yZGluYWwgfSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nU2hhZG93UHNldWRvRWxlbWVudFJ1
bGVzKGNvbnN0IE1hdGNoUmUKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZCksIG1hdGNoUmVxdWVzdCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdCgpCitzdGQ6
OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KCkKIHsKICAg
ICBBU1NFUlQoaXM8SFRNTFNsb3RFbGVtZW50PihlbGVtZW50KCkpKTsKIApAQCAtMzU5LDcgKzM1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1
bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0b3Ig
PSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1dG8gcnVsZURh
dGFWZWN0b3IgPSBtYWtlVW5pcXVlPFN0eWxlOjpSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsK
ICAgICBydWxlRGF0YVZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX21hdGNoZWRSdWxl
cy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21hdGNoZWRSdWxlcykK
ICAgICAgICAgcnVsZURhdGFWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgqbWF0Y2hlZFJ1bGUucnVs
ZURhdGEpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoVUFSdWxlcygpCiAgICAgLy8gRmlyc3Qgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdXNlciBh
Z2VudCBzaGVldC4KICAgICBpZiAoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCkKICAgICAgICAgbV9yZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKLSAgICBS
dWxlU2V0KiB1c2VyQWdlbnRTdHlsZVNoZWV0ID0gbV9pc1ByaW50U3R5bGUKKyAgICBhdXRvKiB1
c2VyQWdlbnRTdHlsZVNoZWV0ID0gbV9pc1ByaW50U3R5bGUKICAgICAgICAgPyBDU1NEZWZhdWx0
U3R5bGVTaGVldHM6OmRlZmF1bHRQcmludFN0eWxlIDogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpk
ZWZhdWx0U3R5bGU7CiAgICAgbWF0Y2hVQVJ1bGVzKCp1c2VyQWdlbnRTdHlsZVNoZWV0KTsKIApA
QCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxl
cygpCiAgICAgICAgIG1hdGNoVUFSdWxlcygqbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUpOwog
fQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMoY29uc3QgUnVsZVNl
dCYgcnVsZXMpCit2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMoY29uc3Qg
U3R5bGU6OlJ1bGVTZXQmIHJ1bGVzKQogewogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAgICAg
CkBAIC00MTgsMjggKzQxOCwyOCBAQCBzdGF0aWMgY29uc3QgQ1NTU2VsZWN0b3IqIGZpbmRTbG90
dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1pbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1h
dGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpCitp
bmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgU3R5bGU6
OlJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQmIHNwZWNpZmljaXR5KQogewogICAgIC8vIFdl
IGtub3cgYSBzdWZmaWNpZW50bHkgc2ltcGxlIHNpbmdsZSBwYXJ0IHNlbGVjdG9yIG1hdGNoZXMg
c2ltcGx5IGJlY2F1c2Ugd2UgZm91bmQgaXQgZnJvbSB0aGUgcnVsZSBoYXNoIHdoZW4gZmlsdGVy
aW5nIHRoZSBSdWxlU2V0LgogICAgIC8vIFRoaXMgaXMgbGltaXRlZCB0byBIVE1MIG9ubHkgc28g
d2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgbmFtZXNwYWNlIChiZWNhdXNlIG9mIHRhZyBuYW1l
IG1hdGNoKS4KLSAgICBNYXRjaEJhc2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCA9
IHJ1bGVEYXRhLm1hdGNoQmFzZWRPblJ1bGVIYXNoKCk7Ci0gICAgaWYgKG1hdGNoQmFzZWRPblJ1
bGVIYXNoICE9IE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lICYmIGVsZW1lbnQoKS5pc0hUTUxF
bGVtZW50KCkpIHsKKyAgICBhdXRvIG1hdGNoQmFzZWRPblJ1bGVIYXNoID0gcnVsZURhdGEubWF0
Y2hCYXNlZE9uUnVsZUhhc2goKTsKKyAgICBpZiAobWF0Y2hCYXNlZE9uUnVsZUhhc2ggIT0gU3R5
bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lICYmIGVsZW1lbnQoKS5pc0hUTUxFbGVtZW50
KCkpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BzZXVkb1N0eWxlUmVxdWVzdC5w
c2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSwgIklmIHdlIG1hdGNoIGJhc2VkIG9uIHRoZSBydWxl
IGhhc2ggd2hpbGUgY29sbGVjdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHBzZXVkbyBlbGVtZW50IElE
LCB3ZSB3b3VsZCBhZGQgaW5jb3JyZWN0IHJ1bGVzIGZvciB0aGF0IHBzZXVkbyBlbGVtZW50IElE
LiBXZSBzaG91bGQgbmV2ZXIgZW5kIGluIHJ1bGVNYXRjaGVzKCkgd2l0aCBhIHBzZXVkbyBlbGVt
ZW50IGlmIHRoZSBydWxlRGF0YSBjYW5ub3QgbWF0Y2ggYW55IHBzZXVkbyBlbGVtZW50LiIpOwog
CiAgICAgICAgIHN3aXRjaCAobWF0Y2hCYXNlZE9uUnVsZUhhc2gpIHsKLSAgICAgICAgY2FzZSBN
YXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZToKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hCYXNl
ZE9uUnVsZUhhc2g6Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpVbml2
ZXJzYWw6CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNoOjpVbml2ZXJz
YWw6CiAgICAgICAgICAgICBzcGVjaWZpY2l0eSA9IDA7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NBOgorICAgICAgICBjYXNlIFN0
eWxlOjpNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NBOgogICAgICAgICAgICAgc3BlY2lmaWNp
dHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU2VsZWN0b3JTcGVjaWZpY2l0eUluY3JlbWVudDo6
Q2xhc3NBKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1
bGVIYXNoOjpDbGFzc0I6CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNo
OjpDbGFzc0I6CiAgICAgICAgICAgICBzcGVjaWZpY2l0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihTZWxlY3RvclNwZWNpZmljaXR5SW5jcmVtZW50OjpDbGFzc0IpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQzoKKyAgICAgICAg
Y2FzZSBTdHlsZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQzoKICAgICAgICAgICAgIHNw
ZWNpZmljaXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNlbGVjdG9yU3BlY2lmaWNpdHlJbmNy
ZW1lbnQ6OkNsYXNzQyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTE0LDEz
ICs1MTQsMTMgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVz
KGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQKICAgICByZXR1cm4gc2VsZWN0b3JN
YXRjaGVzOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIHJ1bGVzLCBjb25zdCBN
YXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCkKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBTdHlsZTo6UnVsZVNldDo6UnVsZURhdGFW
ZWN0b3IqIHJ1bGVzLCBjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCkKIHsKICAgICBp
ZiAoIXJ1bGVzKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBz
aXplID0gcnVsZXMtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEgPSBydWxlcy0+ZGF0YSgpW2ldOworICAgICAgICBjb25zdCBhdXRvJiBy
dWxlRGF0YSA9IHJ1bGVzLT5kYXRhKClbaV07CiAKICAgICAgICAgaWYgKCFydWxlRGF0YS5jYW5N
YXRjaFBzZXVkb0VsZW1lbnQoKSAmJiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCAhPSBQ
c2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjE4LDcgKzYxOCw3IEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZEVsZW1lbnRJbmxpbmVTdHlsZVByb3BlcnRp
ZXMoYm9vbCBpbmNsdWRlU01JTFByb3BlCiAgICAgICAgIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRp
ZXMoZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCgpKS5hbmltYXRlZFNNSUxTdHlsZVByb3Bl
cnRpZXMoKSwgZmFsc2UgLyogaXNDYWNoZWFibGUgKi8pOwogfQogCi1ib29sIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQpCiti
b29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFN0eWxl
OjpSdWxlU2V0KiBydWxlU2V0KQogewogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKaW5kZXggYjYyYWQzNjVhYTAuLjgw
OWJiMzNmMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiB9OwogCiBzdHJ1Y3QgTWF0Y2hlZFJ1bGUgewotICAg
IGNvbnN0IFJ1bGVEYXRhKiBydWxlRGF0YTsKKyAgICBjb25zdCBTdHlsZTo6UnVsZURhdGEqIHJ1
bGVEYXRhOwogICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5OwogICAgIFN0eWxlOjpTY29wZU9yZGlu
YWwgc3R5bGVTY29wZU9yZGluYWw7CiB9OwpAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgTWF0Y2hl
ZFJ1bGUgewogc3RydWN0IE1hdGNoZWRQcm9wZXJ0aWVzIHsKICAgICBSZWZQdHI8Y29uc3QgU3R5
bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwogICAgIHVpbnQxNl90IGxpbmtNYXRjaFR5cGUgeyBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsIH07Ci0gICAgdWludDE2X3Qgd2hpdGVsaXN0VHlwZSB7
IFByb3BlcnR5V2hpdGVsaXN0Tm9uZSB9OworICAgIHVpbnQxNl90IHdoaXRlbGlzdFR5cGUgeyBT
dHlsZTo6UHJvcGVydHlXaGl0ZWxpc3ROb25lIH07CiAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBz
dHlsZVNjb3BlT3JkaW5hbCB7IFN0eWxlOjpTY29wZU9yZGluYWw6OkVsZW1lbnQgfTsKIH07CiAK
QEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IE1hdGNoUmVzdWx0IHsKIGNsYXNzIEVsZW1lbnRSdWxl
Q29sbGVjdG9yIHsKIHB1YmxpYzoKICAgICBFbGVtZW50UnVsZUNvbGxlY3Rvcihjb25zdCBFbGVt
ZW50JiwgY29uc3QgU3R5bGU6OlNjb3BlUnVsZVNldHMmLCBjb25zdCBTZWxlY3RvckZpbHRlciop
OwotICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSdWxlU2V0
JiBhdXRob3JTdHlsZSwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqKTsKKyAgICBFbGVtZW50UnVsZUNv
bGxlY3Rvcihjb25zdCBFbGVtZW50JiwgY29uc3QgU3R5bGU6OlJ1bGVTZXQmIGF1dGhvclN0eWxl
LCBjb25zdCBTZWxlY3RvckZpbHRlciopOwogCiAgICAgdm9pZCBzZXRJbmNsdWRlRW1wdHlSdWxl
cyhib29sIHZhbHVlKSB7IG1fc2hvdWxkSW5jbHVkZUVtcHR5UnVsZXMgPSB2YWx1ZTsgfQogCkBA
IC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBzZXVkb1N0eWxlUmVxdWVzdChj
b25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHJlcXVlc3QpIHsgbV9wc2V1ZG9TdHlsZVJlcXVlc3Qg
PSByZXF1ZXN0OyB9CiAgICAgdm9pZCBzZXRNZWRpdW0oY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciogbWVkaXVtKSB7IG1faXNQcmludFN0eWxlID0gbWVkaXVtLT5tZWRpYVR5cGVNYXRjaFNwZWNp
ZmljKCJwcmludCIpOyB9CiAKLSAgICBib29sIGhhc0FueU1hdGNoaW5nUnVsZXMoY29uc3QgUnVs
ZVNldCopOworICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBTdHlsZTo6UnVsZVNl
dCopOwogCiAgICAgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KCkgY29uc3Q7CiAgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVMaXN0KCkgY29uc3Q7
CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGFkZEVsZW1l
bnRTdHlsZVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiwgYm9vbCBpc0NhY2hlYWJs
ZSA9IHRydWUpOwogCi0gICAgdm9pZCBtYXRjaFVBUnVsZXMoY29uc3QgUnVsZVNldCYpOworICAg
IHZvaWQgbWF0Y2hVQVJ1bGVzKGNvbnN0IFN0eWxlOjpSdWxlU2V0Jik7CiAKICAgICB2b2lkIGNv
bGxlY3RNYXRjaGluZ0F1dGhvclJ1bGVzKCk7CiAgICAgdm9pZCBhZGRFbGVtZW50SW5saW5lU3R5
bGVQcm9wZXJ0aWVzKGJvb2wgaW5jbHVkZVNNSUxQcm9wZXJ0aWVzKTsKQEAgLTEyNSwxMSArMTI1
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXNGb3JT
Y29wZShjb25zdCBTaGFkb3dSb290JiBzY29wZVNoYWRvd1Jvb3QpOwogCiAgICAgdm9pZCBjb2xs
ZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0Jik7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5
bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNsb3QoKTsKIAogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0
Y2hSZXF1ZXN0Jik7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
UnVsZVNldDo6UnVsZURhdGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmKTsKLSAgICBib29s
IHJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNpZmljaXR5KTsKKyAg
ICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBTdHlsZTo6UnVsZVNldDo6
UnVsZURhdGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmKTsKKyAgICBib29sIHJ1bGVNYXRj
aGVzKGNvbnN0IFN0eWxlOjpSdWxlRGF0YSYsIHVuc2lnbmVkICZzcGVjaWZpY2l0eSk7CiAKICAg
ICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKIApAQCAtMTM4LDE1ICsxMzgsMTUgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdp
bik7CiAgICAgdm9pZCB0cmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbiwgT3B0
aW9uYWw8U3R5bGU6OlNjb3BlT3JkaW5hbD4gZm9yU2NvcGUgPSB7IH0pOwogCi0gICAgdm9pZCBh
ZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSYsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTdHls
ZTo6U2NvcGVPcmRpbmFsKTsKKyAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFN0eWxlOjpS
dWxlRGF0YSYsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTdHlsZTo6U2NvcGVPcmRpbmFsKTsKICAg
ICB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoZWRQcm9wZXJ0aWVzJiYsIERlY2xhcmF0
aW9uT3JpZ2luKTsKIAogICAgIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnQuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFJlZjxjb25zdCBFbGVtZW50PiBtX2Vs
ZW1lbnQ7Ci0gICAgY29uc3QgUnVsZVNldCYgbV9hdXRob3JTdHlsZTsKLSAgICBjb25zdCBSdWxl
U2V0KiBtX3VzZXJTdHlsZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBSdWxlU2V0KiBtX3VzZXJB
Z2VudE1lZGlhUXVlcnlTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBTdHlsZTo6UnVsZVNl
dCYgbV9hdXRob3JTdHlsZTsKKyAgICBjb25zdCBTdHlsZTo6UnVsZVNldCogbV91c2VyU3R5bGUg
eyBudWxscHRyIH07CisgICAgY29uc3QgU3R5bGU6OlJ1bGVTZXQqIG1fdXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVj
dG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1
bGVzIHsgZmFsc2UgfTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNN
YXRjaGluZ0hvc3RQc2V1ZG9DbGFzcyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPGNvbnN0IEVsZW1l
bnQ+IG1fc2hhZG93SG9zdEluUGFydFJ1bGVTY29wZTsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPj4gbV9rZWVwQWxpdmVTbG90dGVkUHNldWRvRWxl
bWVudFJ1bGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1
bGVEYXRhVmVjdG9yPj4gbV9rZWVwQWxpdmVTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOwogCiAg
ICAgVmVjdG9yPE1hdGNoZWRSdWxlLCA2ND4gbV9tYXRjaGVkUnVsZXM7CiAgICAgc2l6ZV90IG1f
bWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVs
ZUNvbGxlY3Rvci5jcHAKaW5kZXggMDc0ODNkZjZjZjIuLjlmNjVmZTA2MzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBQ
YWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hBbGxQYWdlUnVsZXMoaW50IHBhZ2VJbmRleCkKICAgICAg
ICAgbWF0Y2hQYWdlUnVsZXMoJm1fcnVsZVNldHMuYXV0aG9yU3R5bGUoKSwgaXNMZWZ0LCBpc0Zp
cnN0LCBwYWdlKTsKIH0KIAotdm9pZCBQYWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMo
UnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3Qg
U3RyaW5nJiBwYWdlTmFtZSkKK3ZvaWQgUGFnZVJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFnZVJ1bGVz
KFN0eWxlOjpSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdl
LCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQogewogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmgKaW5kZXggMTVkY2I1NGY4
MTcuLjhhZWZiMDIwZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVD
b2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuaApA
QCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGaXJzdFBhZ2UoaW50IHBhZ2VJ
bmRleCkgY29uc3Q7CiAgICAgU3RyaW5nIHBhZ2VOYW1lKGludCBwYWdlSW5kZXgpIGNvbnN0Owog
Ci0gICAgdm9pZCBtYXRjaFBhZ2VSdWxlcyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdl
LCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKKyAgICB2b2lkIG1h
dGNoUGFnZVJ1bGVzKFN0eWxlOjpSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29s
IGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKICAgICB2b2lkIG1hdGNoUGFn
ZVJ1bGVzRm9yTGlzdChWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0
IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNG
aXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwogCiAgICAgY29uc3QgU3R5bGU6OlJl
c29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKaW5kZXggZThlMzk1MDM1ZTUuLmU1M2FjOGMxMGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMTU2LDggKzE1Niw4IEBAIHZvaWQgU3R5
bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxlKFJlZjxTdHlsZVJ1bGVCYXNlPiYmIHJ1
bGUpCiAKICAgICAvLyBOT1RFOiBUaGUgc2VsZWN0b3IgbGlzdCBoYXMgdG8gZml0IGludG8gUnVs
ZURhdGEuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExODM2OT4KICAgICAvLyBJZiB3ZSdyZSBhZGRp
bmcgYSBydWxlIHdpdGggYSBodWdlIG51bWJlciBvZiBzZWxlY3RvcnMsIHNwbGl0IGl0IHVwIGlu
dG8gbXVsdGlwbGUgcnVsZXMKLSAgICBpZiAoaXM8U3R5bGVSdWxlPihydWxlKSAmJiBkb3duY2Fz
dDxTdHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNlbGVjdG9yTGlzdCgpLmNvbXBvbmVudENvdW50KCkg
PiBSdWxlRGF0YTo6bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpIHsKLSAgICAgICAgbV9j
aGlsZFJ1bGVzLmFwcGVuZFZlY3Rvcihkb3duY2FzdDxTdHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNw
bGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQoUnVs
ZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KSk7CisgICAgaWYgKGlzPFN0eWxl
UnVsZT4ocnVsZSkgJiYgZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKS5zZWxlY3Rvckxp
c3QoKS5jb21wb25lbnRDb3VudCgpID4gU3R5bGU6OlJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0b3JD
b21wb25lbnRDb3VudCkgeworICAgICAgICBtX2NoaWxkUnVsZXMuYXBwZW5kVmVjdG9yKGRvd25j
YXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQoKSkuc3BsaXRJbnRvTXVsdGlwbGVSdWxlc1dpdGhNYXhp
bXVtU2VsZWN0b3JDb21wb25lbnRDb3VudChTdHlsZTo6UnVsZURhdGE6Om1heGltdW1TZWxlY3Rv
ckNvbXBvbmVudENvdW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2NCw3ICsy
NjQsNyBAQCBib29sIFN0eWxlU2hlZXRDb250ZW50czo6d3JhcHBlckluc2VydFJ1bGUoUmVmPFN0
eWxlUnVsZUJhc2U+JiYgcnVsZSwgdW5zaWduZWQgaQogICAgIGNoaWxkVmVjdG9ySW5kZXggLT0g
bV9uYW1lc3BhY2VSdWxlcy5zaXplKCk7CiAKICAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIHNlbGVj
dG9ycyB3b3VsZCBvdmVyZmxvdyBSdWxlRGF0YSwgd2UgZHJvcCB0aGUgb3BlcmF0aW9uLgotICAg
IGlmIChpczxTdHlsZVJ1bGU+KHJ1bGUpICYmIGRvd25jYXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQo
KSkuc2VsZWN0b3JMaXN0KCkuY29tcG9uZW50Q291bnQoKSA+IFJ1bGVEYXRhOjptYXhpbXVtU2Vs
ZWN0b3JDb21wb25lbnRDb3VudCkKKyAgICBpZiAoaXM8U3R5bGVSdWxlPihydWxlKSAmJiBkb3du
Y2FzdDxTdHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNlbGVjdG9yTGlzdCgpLmNvbXBvbmVudENvdW50
KCkgPiBTdHlsZTo6UnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2NoaWxkUnVsZXMuaW5zZXJ0KGNoaWxkVmVjdG9y
SW5kZXgsIFdURk1vdmUocnVsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApzaW1p
bGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5k
ZXggY2ExYjk0Zjc3YmIuLjExNTM4YjliMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJ1bGVTZXQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKIAogc3RhdGljIGJvb2wgaXNTaWJsaW5nT3JT
dWJqZWN0KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQpCiB7CkBAIC0yNTEsNCArMjUyLDUgQEAg
dm9pZCBSdWxlRmVhdHVyZVNldDo6c2hyaW5rVG9GaXQoKQogICAgICAgICBydWxlcy0+c2hyaW5r
VG9GaXQoKTsKIH0KIAorfSAvLyBuYW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaApzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCAyNWVhNGVjZDhhYS4uNzY0NTk5OTE0Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTMwLDkgKzMwLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBTdHlsZVJ1bGU7CiAKK25h
bWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIFJ1bGVEYXRhOworCiBlbnVtIGNsYXNzIE1hdGNoRWxl
bWVudCB7IFN1YmplY3QsIFBhcmVudCwgQW5jZXN0b3IsIERpcmVjdFNpYmxpbmcsIEluZGlyZWN0
U2libGluZywgQW55U2libGluZywgUGFyZW50U2libGluZywgQW5jZXN0b3JTaWJsaW5nLCBIb3N0
IH07CiBjb25zdGV4cHIgdW5zaWduZWQgbWF0Y2hFbGVtZW50Q291bnQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTWF0Y2hFbGVtZW50OjpIb3N0KSArIDE7CiAKQEAgLTg4LDQgKzkxLDUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNl
bGVjdG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIE1hdGNoRWxlbWVudCA9IE1hdGNo
RWxlbWVudDo6U3ViamVjdCk7CiB9OwogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKc2ltaWxhcml0eSBpbmRleCA5NiUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA4ZWMxYzRkNGY1NC4uMTk4MGY5NTI1
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcApAQCAtNDksNiArNDksNyBAQAogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKQEAgLTEwMyw3ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b21tb25BdHRyaWJ1dGVTZWxlY3RvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aQogICAgIHJldHVybiBhdHRyaWJ1dGUgPT0gdHlwZUF0dHIgfHwgYXR0cmlidXRlID09IHJlYWRv
bmx5QXR0cjsKIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9yKGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IsIGJvb2wgbWF0Y2hlc1JpZ2h0bW9z
dEVsZW1lbnQpCitzdGF0aWMgYm9vbCBjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNl
bGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IsIGJvb2wgbWF0Y2hlc1JpZ2h0
bW9zdEVsZW1lbnQgPSB0cnVlKQogewogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9
ICZyb290U2VsZWN0b3I7CiAgICAgZG8gewpAQCAtMTE3LDcgKzExOCw3IEBAIHN0YXRpYyBib29s
IGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciYgcm9v
dFNlbGVjdG9yLCBiCiAKICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0
b3JMaXN0ID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpKSB7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IENTU1NlbGVjdG9yKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsgc3Vi
U2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNlbGVjdG9y
KSkgewotICAgICAgICAgICAgICAgIGlmIChjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0
b3IoKnN1YlNlbGVjdG9yLCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCkpCisgICAgICAgICAgICAg
ICAgaWYgKGNvbXB1dGVDb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKnN1YlNlbGVj
dG9yLCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzAsMTEgKzEzMSw2IEBAIHN0
YXRpYyBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3RvciYgcm9vdFNlbGVjdG9yLCBiCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVj
dG9yJiByb290U2VsZWN0b3IpCi17Ci0gICAgcmV0dXJuIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1
dGVTZWxlY3Rvcihyb290U2VsZWN0b3IsIHRydWUpOwotfQotCiBzdGF0aWMgaW5saW5lIFByb3Bl
cnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBv
bmVudCA9IHNlbGVjdG9yOyBjb21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlz
dG9yeSgpKSB7CkBAIC0xNjMsNyArMTU5LDcgQEAgUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVs
ZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXMKICAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgLCBtX21hdGNoQmFzZWRPblJ1bGVIYXNoKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb21wdXRlTWF0Y2hCYXNlZE9uUnVsZUhhc2goKnNlbGVjdG9y
KCkpKSkKICAgICAsIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1
ZG9FbGVtZW50KCpzZWxlY3RvcigpKSkKLSAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9yKFdlYkNvcmU6OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2Vs
ZWN0b3IoKSkpCisgICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb21w
dXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpzZWxlY3RvcigpKSkKICAgICAs
IG1fbGlua01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUo
c2VsZWN0b3IoKSkpCiAgICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3IoKSkpCiAgICAgLCBtX2Rlc2NlbmRhbnRTZWxlY3Rv
cklkZW50aWZpZXJIYXNoZXMoU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RIYXNoZXMoKnNlbGVjdG9y
KCkpKQpAQCAtMzg0LDcgKzM4MCw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUoU3R5bGVS
dWxlUGFnZSogcnVsZSkKICAgICBtX3BhZ2VSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLXZvaWQg
UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29s
dmVyKiByZXNvbHZlciwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKQordm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBS
ZXNvbHZlciogcmVzb2x2ZXIsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSkKIHsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewogICAgICAgICBpZiAo
aXM8U3R5bGVSdWxlPigqcnVsZSkpCkBAIC00MDQsMTQgKzQwMCwxMyBAQCB2b2lkIFJ1bGVTZXQ6
OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVz
LCBjb25zdCBNZQogICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1bGUp
ICYmIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY29uZGl0aW9uSXNTdXBwb3J0
ZWQoKSkKICAgICAgICAgICAgIGFkZENoaWxkUnVsZXMoZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9y
dHM+KCpydWxlKS5jaGlsZFJ1bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGlzSW5pdGlhdGluZ0Vs
ZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBU
QVRJT04pCi0gICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVZpZXdwb3J0PigqcnVsZSkgJiYg
cmVzb2x2ZXIpIHsKKyAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlVmlld3BvcnQ+KCpydWxl
KSAmJiByZXNvbHZlcikKICAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2
ZXIoKS0+YWRkVmlld3BvcnRSdWxlKGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0PihydWxlLmdl
dCgpKSk7Ci0gICAgICAgIH0KICNlbmRpZgogICAgIH0KIH0KIAotdm9pZCBSdWxlU2V0OjphZGRS
dWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlOjpSZXNvbHZlciogcmVzb2x2ZXIpCit2b2lkIFJ1bGVT
ZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIGNvbnN0IE1l
ZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgUmVzb2x2ZXIqIHJlc29sdmVyKQogewogICAgIGZv
ciAoYXV0byYgcnVsZSA6IHNoZWV0LmltcG9ydFJ1bGVzKCkpIHsKICAgICAgICAgaWYgKHJ1bGUt
PnN0eWxlU2hlZXQoKSAmJiAoIXJ1bGUtPm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsdWF0
ZSgqcnVsZS0+bWVkaWFRdWVyaWVzKCksIHJlc29sdmVyKSkpCkBAIC00NzAsNCArNDY1LDUgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgp
OwogfQogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuaApzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0
LmgKaW5kZXggNjE4MGM0OWJjYmIuLjdmYWRmYTY1YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApA
QCAtMzIsMTQgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFByb3BlcnR5
V2hpdGVsaXN0VHlwZSB7Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3ROb25lICAgPSAwLAotICAgIFBy
b3BlcnR5V2hpdGVsaXN0TWFya2VyLAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBQcm9w
ZXJ0eVdoaXRlbGlzdEN1ZQotI2VuZGlmCi19OwotCiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNz
IENvbnRhaW5lck5vZGU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpAQCAtNDcsOCArMzks
MTYgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAogbmFtZXNwYWNl
IFN0eWxlIHsKKwogY2xhc3MgUmVzb2x2ZXI7Ci19CisKK2VudW0gUHJvcGVydHlXaGl0ZWxpc3RU
eXBlIHsKKyAgICBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUgICA9IDAsCisgICAgUHJvcGVydHlXaGl0
ZWxpc3RNYXJrZXIsCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIFByb3BlcnR5V2hpdGVs
aXN0Q3VlCisjZW5kaWYKK307CiAKIGVudW0gY2xhc3MgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggOiB1
bnNpZ25lZCB7CiAgICAgTm9uZSwKQEAgLTEwNyw4ICsxMDcsMTIgQEAgY2xhc3MgUnVsZVNldCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVsZVNldCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSdWxlU2V0U2VsZWN0b3JQYWlyIHsKLSAgICAgICAg
UnVsZVNldFNlbGVjdG9yUGFpcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHN0ZDo6dW5p
cXVlX3B0cjxSdWxlU2V0PiBydWxlU2V0KSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgcnVsZVNldChX
VEZNb3ZlKHJ1bGVTZXQpKSB7IH0KLSAgICAgICAgUnVsZVNldFNlbGVjdG9yUGFpcihjb25zdCBS
dWxlU2V0U2VsZWN0b3JQYWlyJiBwYWlyKSA6IHNlbGVjdG9yKHBhaXIuc2VsZWN0b3IpLCBydWxl
U2V0KGNvbnN0X2Nhc3Q8UnVsZVNldFNlbGVjdG9yUGFpcio+KCZwYWlyKS0+cnVsZVNldC5yZWxl
YXNlKCkpIHsgfQorICAgICAgICBSdWxlU2V0U2VsZWN0b3JQYWlyKGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3Rvciwgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IHJ1bGVTZXQpCisgICAgICAgICAg
ICA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgcnVsZVNldChXVEZNb3ZlKHJ1bGVTZXQpKQorICAgICAg
ICB7IH0KKyAgICAgICAgUnVsZVNldFNlbGVjdG9yUGFpcihjb25zdCBSdWxlU2V0U2VsZWN0b3JQ
YWlyJiBwYWlyKQorICAgICAgICAgICAgOiBzZWxlY3RvcihwYWlyLnNlbGVjdG9yKSwgcnVsZVNl
dChjb25zdF9jYXN0PFJ1bGVTZXRTZWxlY3RvclBhaXIqPigmcGFpciktPnJ1bGVTZXQucmVsZWFz
ZSgpKQorICAgICAgICB7IH0KIAogICAgICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3I7
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBydWxlU2V0OwpAQCAtMTg2LDExICsx
OTAsMTIgQEAgaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBSdWxlU2V0Ojp0
YWdSdWxlcyhjb25zdCBBdG9tU3RyaW5nJiBrZXksIGIKICAgICByZXR1cm4gdGFnUnVsZXMtPmdl
dChrZXkpOwogfQogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gUnVsZURhdGEgaXMgc2ltcGxlIGVub3VnaCB0aGF0
IGluaXRpYWxpemluZyB0byAwIGFuZCBtb3Zpbmcgd2l0aCBtZW1jcHkgd2lsbCB0b3RhbGx5IHdv
cmsuCi10ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6UnVsZURhdGE+IDog
U2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YT4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVJbnZhbGlkYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlk
YXRvci5oCmluZGV4IDNmZDYzYmMzNDk5Li4yZWZmNDRhODA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlSW52YWxpZGF0b3IuaApAQCAtMzMsMTMgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIE1lZGlhUXVlcnlF
dmFsdWF0b3I7Ci1jbGFzcyBSdWxlU2V0OwogY2xhc3MgU2VsZWN0b3JGaWx0ZXI7CiBjbGFzcyBT
aGFkb3dSb290OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogCiBuYW1lc3BhY2UgU3R5bGUg
ewogCitjbGFzcyBSdWxlU2V0OworCiBjbGFzcyBJbnZhbGlkYXRvciB7CiBwdWJsaWM6CiAgICAg
SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiwgY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383774</attachid>
            <date>2019-11-18 12:08:57 -0800</date>
            <delta_ts>2019-11-18 12:14:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ruleset-namespace-2.patch</filename>
            <type>text/plain</type>
            <size>33750</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZTI5ZjIxZDcxMi4uMDVmNTc4ZDY3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxOS0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBSdWxlU2V0IHRvIFN0eWxlIG5hbWVzcGFjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBtb3ZlIFJ1bGVGZWF0dXJl
LgorICAgICAgICBNb3ZlIHRvIHN0eWxlLyBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6Cisg
ICAgICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3Rv
clRleHQpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXRjaFJlcXVlc3Q6Ok1hdGNoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6RWxlbWVudFJ1bGVDb2xsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlc0ZvclNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6aGFzQW55TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgICogY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyk6CisgICAg
ICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
ckFwcGVuZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjp3cmFw
cGVySW5zZXJ0UnVsZSk6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcC4KKyAgICAgICAgKiBzdHls
ZS9SdWxlRmVhdHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0
dXJlLmguCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0
ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZURhdGE6OlJ1bGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxl
U2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0Ojph
ZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmg6CisKIDIwMTktMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBEb2N1bWVudFJ1bGVTZXRzIHRvIFN0eWxlOjpTY29wZVJ1
bGVTZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZiMWNlMDk1Y2VjLi44OWI4MjA1YjgyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTc3MCw4ICs3NzAsNiBAQCBjc3MvTWVkaWFRdWVyeVBhcnNlckNvbnRleHQu
Y3BwCiBjc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAogY3NzL1JHQkNvbG9yLmNwcAotY3NzL1J1bGVGZWF0dXJlLmNwcAotY3Nz
L1J1bGVTZXQuY3BwCiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAogY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKIGNzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTIzNDYsNiAr
MjM0NCw4IEBAIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcAogc3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmNwcAogc3R5bGUv
UHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUnVsZUZlYXR1cmUuY3BwCitzdHlsZS9SdWxlU2V0
LmNwcAogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKIHN0eWxlL1N0eWxlQnVpbGRlci5jcHAKIHN0
eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxYTU1NDU0NGNmLi4yYWRiZTQzMmY3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDg0MSw2ICs0ODQxLDggQEAKIAkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIEV4
dGVuc2lvblN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVl
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDgxMzdCOTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJG
IC8qIFN0eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4
NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNDg2M0NGMTIzODMyQ0JB
MDA5NzIxNTggLyogUnVsZUZlYXR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc5QkFEOUQxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVGZWF0dXJl
LmNwcCAqLzsgfTsKKwkJRTQ4NjNDRjIyMzgzMkNCQTAwOTcyMTU4IC8qIFJ1bGVTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5QkFEOUYxNjFF
N0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuY3BwICovOyB9OwogCQlFNDg5NDRBMzE4MEI1N0Q4MDBG
MTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ4OTQ0QTExODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDkxNkZGNzE5NURGNkEwMDA1QUIzNDkgLyogTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTE2RkY2MTk1
REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OTQ2RUFGMTU2RTY0REQwMEQz
Mjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBv
cnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjcwMjcsNiArMjcwMjksMTAgQEAKIAkJCQlFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcgLyogTWF0
Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0MjAwRkE0MzQ1
IC8qIFByb3BlcnR5Q2FzY2FkZS5jcHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1
IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovLAorCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMyRTY1MiAv
KiBSdWxlRmVhdHVyZS5jcHAgKi8sCisJCQkJQTc5QkFEOUUxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1
bGVGZWF0dXJlLmggKi8sCisJCQkJQTc5QkFEOUYxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQu
Y3BwICovLAorCQkJCUE3OUJBREEwMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggKi8sCiAJ
CQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICovLAogCQkJ
CUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8sCiAJCQkJRTRB
QkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBAIC0yNzQzOCwx
MCArMjc0NDQsNiBAQAogCQkJCUJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi8s
CiAJCQkJQkM3NERBMzYxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCAqLywKIAkJCQlC
Qzc0REEzNTEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCAqLywKLQkJCQlBNzlCQUQ5RDE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuY3BwICovLAotCQkJCUE3OUJBRDlFMTYxRTdG
M0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5oICovLAotCQkJCUE3OUJBRDlGMTYxRTdGM0YwMEMy
RTY1MiAvKiBSdWxlU2V0LmNwcCAqLywKLQkJCQlBNzlCQURBMDE2MUU3RjNGMDBDMkU2NTIgLyog
UnVsZVNldC5oICovLAogCQkJCUU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNo
ZWNrZXIuY3BwICovLAogCQkJCUU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNo
ZWNrZXIuaCAqLywKIAkJCQk0MzJEM0ZFNzE4QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0b3JDaGVj
a2VyVGVzdEZ1bmN0aW9ucy5oICovLApAQCAtMzM2ODksNiArMzM2OTEsNyBAQAogCQkJCTUzOEVD
OTE4MUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzOEVDOTE5MUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI1LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzOEVDOTFBMUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291
cmNlMTI2LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0ODYzQ0YyMjM4MzJDQkEwMDk3MjE1OCAv
KiBSdWxlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOTFCMUY5OUI2OTgwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMTI3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOTFDMUY5
OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzOEVDOTFEMUY5OUI2OTgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMTI5LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzM3NjUsNiArMzM3NjgsNyBAQAogCQkJCURFQ0E3RTE4MUY5RUIzNjQwMEUz
QjY2MSAvKiBVbmlmaWVkU291cmNlMjAwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQ0E3RTE5
MUY5RUIzNjQwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjAxLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURFQ0E3RTFBMUY5RUIzNjQwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMjAyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUU0ODYzQ0YxMjM4MzJDQkEwMDk3MjE1OCAvKiBSdWxlRmVhdHVyZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0UxQjFGOUVCMzY0MDBFM0I2NjEgLyogVW5pZmll
ZFNvdXJjZTIwMy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0UxQzFGOUVCMzY0MDBFM0I2
NjEgLyogVW5pZmllZFNvdXJjZTIwNC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0UxRDFG
OUVCMzY0MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTIwNS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKaW5kZXggMjk2OTA5
ZjAwN2MuLmMzMDgzYWExZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0
eWxlU2hlZXRzLmNwcApAQCAtNTksOSArNTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0
czo6ZGVmYXVsdFN0eWxlOwotUnVsZVNldCogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0
UXVpcmtzU3R5bGU7Ci1SdWxlU2V0KiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRQcmlu
dFN0eWxlOworU3R5bGU6OlJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFN0
eWxlOworU3R5bGU6OlJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFF1aXJr
c1N0eWxlOworU3R5bGU6OlJ1bGVTZXQqIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFBy
aW50U3R5bGU7CiB1bnNpZ25lZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZVZl
cnNpb247CiAKIFN0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpzaW1w
bGVEZWZhdWx0U3R5bGVTaGVldDsKQEAgLTE3NSwxMSArMTc1LDExIEBAIHZvaWQgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNpbXBsZURlZmF1
bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRl
ZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVs
ZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlx
dWU8U3R5bGU6OlJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIH0KIAotICAgIGRlZmF1bHRTdHls
ZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Ci0gICAgZGVmYXVsdFByaW50U3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9
IG1ha2VVbmlxdWU8U3R5bGU6OlJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmlu
dFN0eWxlID0gbWFrZVVuaXF1ZTxTdHlsZTo6UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgbWVk
aWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NTUGFyc2Vy
Q29udGV4dChVQVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1
bGVzLgpAQCAtMTk4LDEwICsxOTgsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6Omxv
YWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKICAgICBB
U1NFUlQoIXNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHlsZSA9IG1h
a2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVu
aXF1ZTxTdHlsZTo6UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgLy8gVGhlcmUgYXJlIG5vIG1l
ZGlhLXNwZWNpZmljIHJ1bGVzIGluIHRoZSBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KICAgICBkZWZh
dWx0UHJpbnRTdHlsZSA9IGRlZmF1bHRTdHlsZTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBt
YWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9
IG1ha2VVbmlxdWU8U3R5bGU6OlJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVm
YXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwg
c3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaAppbmRleCA0ZTJjMzk4
NWE4NS4uMjE3ZjRmN2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxl
U2hlZXRzLmgKQEAgLTI1LDE0ICsyNSwxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBFbGVtZW50OwotY2xhc3MgUnVsZVNldDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAor
bmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIFJ1bGVTZXQ7Cit9CisKIGNsYXNzIENTU0RlZmF1bHRT
dHlsZVNoZWV0cyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRTdHlsZTsK
LSAgICBzdGF0aWMgUnVsZVNldCogZGVmYXVsdFF1aXJrc1N0eWxlOwotICAgIHN0YXRpYyBSdWxl
U2V0KiBkZWZhdWx0UHJpbnRTdHlsZTsKKyAgICBzdGF0aWMgU3R5bGU6OlJ1bGVTZXQqIGRlZmF1
bHRTdHlsZTsKKyAgICBzdGF0aWMgU3R5bGU6OlJ1bGVTZXQqIGRlZmF1bHRRdWlya3NTdHlsZTsK
KyAgICBzdGF0aWMgU3R5bGU6OlJ1bGVTZXQqIGRlZmF1bHRQcmludFN0eWxlOwogICAgIHN0YXRp
YyB1bnNpZ25lZCBkZWZhdWx0U3R5bGVWZXJzaW9uOwogCiAgICAgc3RhdGljIFN0eWxlU2hlZXRD
b250ZW50cyogc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1
bGUuY3BwCmluZGV4IDU3MjRhOTRhODNlLi40MDdmOThiNWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDU1NTdHlsZVJ1bGU6OnNldFNl
bGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gTk9URTogVGhlIHNlbGVjdG9yIGxpc3QgaGFzIHRvIGZpdCBpbnRvIFJ1bGVEYXRh
LiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTgzNjk+Ci0gICAgaWYgKHNlbGVjdG9yTGlzdC5jb21w
b25lbnRDb3VudCgpID4gUnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KQor
ICAgIGlmIChzZWxlY3Rvckxpc3QuY29tcG9uZW50Q291bnQoKSA+IFN0eWxlOjpSdWxlRGF0YTo6
bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIENT
U1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCBmOGU1NmMyMzI0
Yi4uYmYyMTBhMWQyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcApAQCAtNzAsMTIgKzcwLDEyIEBAIHN0YXRpYyBjb25zdCBTdHlsZVByb3BlcnRpZXMm
IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKQogCiBjbGFzcyBNYXRjaFJlcXVlc3QgewogcHVibGlj
OgotICAgIE1hdGNoUmVxdWVzdChjb25zdCBSdWxlU2V0KiBydWxlU2V0LCBTdHlsZTo6U2NvcGVP
cmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsID0gU3R5bGU6OlNjb3BlT3JkaW5hbDo6RWxlbWVudCkK
KyAgICBNYXRjaFJlcXVlc3QoY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQsIFN0eWxlOjpT
Y29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgPSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpFbGVt
ZW50KQogICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKICAgICAgICAgLCBzdHlsZVNjb3BlT3Jk
aW5hbChzdHlsZVNjb3BlT3JkaW5hbCkKICAgICB7CiAgICAgfQotICAgIGNvbnN0IFJ1bGVTZXQq
IHJ1bGVTZXQ7CisgICAgY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQ7CiAgICAgU3R5bGU6
OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbDsKIH07CiAKQEAgLTg5LDcgKzg5LDcgQEAg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFN0eWxlOjoKICAgICBBU1NFUlQoIW1fc2VsZWN0b3JGaWx0ZXIgfHwg
bV9zZWxlY3RvckZpbHRlci0+cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQoZWxlbWVudC5wYXJlbnRO
b2RlKCkpKTsKIH0KIAotRWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJ1bGVTZXQmIGF1dGhvclN0eWxlLCBjb25z
dCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
RWxlbWVudFJ1bGVDb2xsZWN0b3IoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6
OlJ1bGVTZXQmIGF1dGhvclN0eWxlLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0
ZXIpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fYXV0aG9yU3R5bGUoYXV0aG9y
U3R5bGUpCiAgICAgLCBtX3NlbGVjdG9yRmlsdGVyKHNlbGVjdG9yRmlsdGVyKQpAQCAtMTA5LDcg
KzEwOSw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaGVkUnVsZUxpc3QoKSBjb25zdAogICAgIHJldHVybiBtX21hdGNoZWRSdWxl
TGlzdDsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRS
dWxlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFN0eWxl
OjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwpCitpbmxpbmUgdm9pZCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6YWRkTWF0Y2hlZFJ1bGUoY29uc3QgU3R5bGU6OlJ1bGVEYXRhJiBydWxlRGF0
YSwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFN0eWxlOjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9y
ZGluYWwpCiB7CiAgICAgbV9tYXRjaGVkUnVsZXMuYXBwZW5kKHsgJnJ1bGVEYXRhLCBzcGVjaWZp
Y2l0eSwgc3R5bGVTY29wZU9yZGluYWwgfSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nU2hhZG93UHNldWRvRWxlbWVudFJ1
bGVzKGNvbnN0IE1hdGNoUmUKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1
bGVzLnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZCksIG1hdGNoUmVxdWVzdCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdCgpCitzdGQ6
OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KCkKIHsKICAg
ICBBU1NFUlQoaXM8SFRNTFNsb3RFbGVtZW50PihlbGVtZW50KCkpKTsKIApAQCAtMzU5LDcgKzM1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1
bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0b3Ig
PSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1dG8gcnVsZURh
dGFWZWN0b3IgPSBtYWtlVW5pcXVlPFN0eWxlOjpSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsK
ICAgICBydWxlRGF0YVZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX21hdGNoZWRSdWxl
cy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21hdGNoZWRSdWxlcykK
ICAgICAgICAgcnVsZURhdGFWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgqbWF0Y2hlZFJ1bGUucnVs
ZURhdGEpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoVUFSdWxlcygpCiAgICAgLy8gRmlyc3Qgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdXNlciBh
Z2VudCBzaGVldC4KICAgICBpZiAoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCkKICAgICAgICAgbV9yZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKLSAgICBS
dWxlU2V0KiB1c2VyQWdlbnRTdHlsZVNoZWV0ID0gbV9pc1ByaW50U3R5bGUKKyAgICBhdXRvKiB1
c2VyQWdlbnRTdHlsZVNoZWV0ID0gbV9pc1ByaW50U3R5bGUKICAgICAgICAgPyBDU1NEZWZhdWx0
U3R5bGVTaGVldHM6OmRlZmF1bHRQcmludFN0eWxlIDogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpk
ZWZhdWx0U3R5bGU7CiAgICAgbWF0Y2hVQVJ1bGVzKCp1c2VyQWdlbnRTdHlsZVNoZWV0KTsKIApA
QCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxl
cygpCiAgICAgICAgIG1hdGNoVUFSdWxlcygqbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUpOwog
fQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMoY29uc3QgUnVsZVNl
dCYgcnVsZXMpCit2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMoY29uc3Qg
U3R5bGU6OlJ1bGVTZXQmIHJ1bGVzKQogewogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAgICAg
CkBAIC00MTgsMjggKzQxOCwyOCBAQCBzdGF0aWMgY29uc3QgQ1NTU2VsZWN0b3IqIGZpbmRTbG90
dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1pbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1h
dGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpCitp
bmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgU3R5bGU6
OlJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQmIHNwZWNpZmljaXR5KQogewogICAgIC8vIFdl
IGtub3cgYSBzdWZmaWNpZW50bHkgc2ltcGxlIHNpbmdsZSBwYXJ0IHNlbGVjdG9yIG1hdGNoZXMg
c2ltcGx5IGJlY2F1c2Ugd2UgZm91bmQgaXQgZnJvbSB0aGUgcnVsZSBoYXNoIHdoZW4gZmlsdGVy
aW5nIHRoZSBSdWxlU2V0LgogICAgIC8vIFRoaXMgaXMgbGltaXRlZCB0byBIVE1MIG9ubHkgc28g
d2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgbmFtZXNwYWNlIChiZWNhdXNlIG9mIHRhZyBuYW1l
IG1hdGNoKS4KLSAgICBNYXRjaEJhc2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCA9
IHJ1bGVEYXRhLm1hdGNoQmFzZWRPblJ1bGVIYXNoKCk7Ci0gICAgaWYgKG1hdGNoQmFzZWRPblJ1
bGVIYXNoICE9IE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lICYmIGVsZW1lbnQoKS5pc0hUTUxF
bGVtZW50KCkpIHsKKyAgICBhdXRvIG1hdGNoQmFzZWRPblJ1bGVIYXNoID0gcnVsZURhdGEubWF0
Y2hCYXNlZE9uUnVsZUhhc2goKTsKKyAgICBpZiAobWF0Y2hCYXNlZE9uUnVsZUhhc2ggIT0gU3R5
bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lICYmIGVsZW1lbnQoKS5pc0hUTUxFbGVtZW50
KCkpIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BzZXVkb1N0eWxlUmVxdWVzdC5w
c2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSwgIklmIHdlIG1hdGNoIGJhc2VkIG9uIHRoZSBydWxl
IGhhc2ggd2hpbGUgY29sbGVjdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHBzZXVkbyBlbGVtZW50IElE
LCB3ZSB3b3VsZCBhZGQgaW5jb3JyZWN0IHJ1bGVzIGZvciB0aGF0IHBzZXVkbyBlbGVtZW50IElE
LiBXZSBzaG91bGQgbmV2ZXIgZW5kIGluIHJ1bGVNYXRjaGVzKCkgd2l0aCBhIHBzZXVkbyBlbGVt
ZW50IGlmIHRoZSBydWxlRGF0YSBjYW5ub3QgbWF0Y2ggYW55IHBzZXVkbyBlbGVtZW50LiIpOwog
CiAgICAgICAgIHN3aXRjaCAobWF0Y2hCYXNlZE9uUnVsZUhhc2gpIHsKLSAgICAgICAgY2FzZSBN
YXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZToKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hCYXNl
ZE9uUnVsZUhhc2g6Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpVbml2
ZXJzYWw6CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNoOjpVbml2ZXJz
YWw6CiAgICAgICAgICAgICBzcGVjaWZpY2l0eSA9IDA7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NBOgorICAgICAgICBjYXNlIFN0
eWxlOjpNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NBOgogICAgICAgICAgICAgc3BlY2lmaWNp
dHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU2VsZWN0b3JTcGVjaWZpY2l0eUluY3JlbWVudDo6
Q2xhc3NBKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1
bGVIYXNoOjpDbGFzc0I6CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNo
OjpDbGFzc0I6CiAgICAgICAgICAgICBzcGVjaWZpY2l0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihTZWxlY3RvclNwZWNpZmljaXR5SW5jcmVtZW50OjpDbGFzc0IpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQzoKKyAgICAgICAg
Y2FzZSBTdHlsZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQzoKICAgICAgICAgICAgIHNw
ZWNpZmljaXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNlbGVjdG9yU3BlY2lmaWNpdHlJbmNy
ZW1lbnQ6OkNsYXNzQyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTE0LDEz
ICs1MTQsMTMgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVz
KGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQKICAgICByZXR1cm4gc2VsZWN0b3JN
YXRjaGVzOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIHJ1bGVzLCBjb25zdCBN
YXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCkKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBTdHlsZTo6UnVsZVNldDo6UnVsZURhdGFW
ZWN0b3IqIHJ1bGVzLCBjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCkKIHsKICAgICBp
ZiAoIXJ1bGVzKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBz
aXplID0gcnVsZXMtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEgPSBydWxlcy0+ZGF0YSgpW2ldOworICAgICAgICBjb25zdCBhdXRvJiBy
dWxlRGF0YSA9IHJ1bGVzLT5kYXRhKClbaV07CiAKICAgICAgICAgaWYgKCFydWxlRGF0YS5jYW5N
YXRjaFBzZXVkb0VsZW1lbnQoKSAmJiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCAhPSBQ
c2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjE4LDcgKzYxOCw3IEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZEVsZW1lbnRJbmxpbmVTdHlsZVByb3BlcnRp
ZXMoYm9vbCBpbmNsdWRlU01JTFByb3BlCiAgICAgICAgIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRp
ZXMoZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCgpKS5hbmltYXRlZFNNSUxTdHlsZVByb3Bl
cnRpZXMoKSwgZmFsc2UgLyogaXNDYWNoZWFibGUgKi8pOwogfQogCi1ib29sIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFJ1bGVTZXQqIHJ1bGVTZXQpCiti
b29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFN0eWxl
OjpSdWxlU2V0KiBydWxlU2V0KQogewogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKaW5kZXggYjYyYWQzNjVhYTAuLjgw
OWJiMzNmMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiB9OwogCiBzdHJ1Y3QgTWF0Y2hlZFJ1bGUgewotICAg
IGNvbnN0IFJ1bGVEYXRhKiBydWxlRGF0YTsKKyAgICBjb25zdCBTdHlsZTo6UnVsZURhdGEqIHJ1
bGVEYXRhOwogICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5OwogICAgIFN0eWxlOjpTY29wZU9yZGlu
YWwgc3R5bGVTY29wZU9yZGluYWw7CiB9OwpAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgTWF0Y2hl
ZFJ1bGUgewogc3RydWN0IE1hdGNoZWRQcm9wZXJ0aWVzIHsKICAgICBSZWZQdHI8Y29uc3QgU3R5
bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwogICAgIHVpbnQxNl90IGxpbmtNYXRjaFR5cGUgeyBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsIH07Ci0gICAgdWludDE2X3Qgd2hpdGVsaXN0VHlwZSB7
IFByb3BlcnR5V2hpdGVsaXN0Tm9uZSB9OworICAgIHVpbnQxNl90IHdoaXRlbGlzdFR5cGUgeyBT
dHlsZTo6UHJvcGVydHlXaGl0ZWxpc3ROb25lIH07CiAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBz
dHlsZVNjb3BlT3JkaW5hbCB7IFN0eWxlOjpTY29wZU9yZGluYWw6OkVsZW1lbnQgfTsKIH07CiAK
QEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IE1hdGNoUmVzdWx0IHsKIGNsYXNzIEVsZW1lbnRSdWxl
Q29sbGVjdG9yIHsKIHB1YmxpYzoKICAgICBFbGVtZW50UnVsZUNvbGxlY3Rvcihjb25zdCBFbGVt
ZW50JiwgY29uc3QgU3R5bGU6OlNjb3BlUnVsZVNldHMmLCBjb25zdCBTZWxlY3RvckZpbHRlciop
OwotICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSdWxlU2V0
JiBhdXRob3JTdHlsZSwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqKTsKKyAgICBFbGVtZW50UnVsZUNv
bGxlY3Rvcihjb25zdCBFbGVtZW50JiwgY29uc3QgU3R5bGU6OlJ1bGVTZXQmIGF1dGhvclN0eWxl
LCBjb25zdCBTZWxlY3RvckZpbHRlciopOwogCiAgICAgdm9pZCBzZXRJbmNsdWRlRW1wdHlSdWxl
cyhib29sIHZhbHVlKSB7IG1fc2hvdWxkSW5jbHVkZUVtcHR5UnVsZXMgPSB2YWx1ZTsgfQogCkBA
IC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBzZXVkb1N0eWxlUmVxdWVzdChj
b25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHJlcXVlc3QpIHsgbV9wc2V1ZG9TdHlsZVJlcXVlc3Qg
PSByZXF1ZXN0OyB9CiAgICAgdm9pZCBzZXRNZWRpdW0oY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciogbWVkaXVtKSB7IG1faXNQcmludFN0eWxlID0gbWVkaXVtLT5tZWRpYVR5cGVNYXRjaFNwZWNp
ZmljKCJwcmludCIpOyB9CiAKLSAgICBib29sIGhhc0FueU1hdGNoaW5nUnVsZXMoY29uc3QgUnVs
ZVNldCopOworICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBTdHlsZTo6UnVsZVNl
dCopOwogCiAgICAgY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KCkgY29uc3Q7CiAgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVMaXN0KCkgY29uc3Q7
CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGFkZEVsZW1l
bnRTdHlsZVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiwgYm9vbCBpc0NhY2hlYWJs
ZSA9IHRydWUpOwogCi0gICAgdm9pZCBtYXRjaFVBUnVsZXMoY29uc3QgUnVsZVNldCYpOworICAg
IHZvaWQgbWF0Y2hVQVJ1bGVzKGNvbnN0IFN0eWxlOjpSdWxlU2V0Jik7CiAKICAgICB2b2lkIGNv
bGxlY3RNYXRjaGluZ0F1dGhvclJ1bGVzKCk7CiAgICAgdm9pZCBhZGRFbGVtZW50SW5saW5lU3R5
bGVQcm9wZXJ0aWVzKGJvb2wgaW5jbHVkZVNNSUxQcm9wZXJ0aWVzKTsKQEAgLTEyNSwxMSArMTI1
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXNGb3JT
Y29wZShjb25zdCBTaGFkb3dSb290JiBzY29wZVNoYWRvd1Jvb3QpOwogCiAgICAgdm9pZCBjb2xs
ZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0Jik7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3R5
bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNsb3QoKTsKIAogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0
Y2hSZXF1ZXN0Jik7Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3Qg
UnVsZVNldDo6UnVsZURhdGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmKTsKLSAgICBib29s
IHJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNpZmljaXR5KTsKKyAg
ICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBTdHlsZTo6UnVsZVNldDo6
UnVsZURhdGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmKTsKKyAgICBib29sIHJ1bGVNYXRj
aGVzKGNvbnN0IFN0eWxlOjpSdWxlRGF0YSYsIHVuc2lnbmVkICZzcGVjaWZpY2l0eSk7CiAKICAg
ICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKIApAQCAtMTM4LDE1ICsxMzgsMTUgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdp
bik7CiAgICAgdm9pZCB0cmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbiwgT3B0
aW9uYWw8U3R5bGU6OlNjb3BlT3JkaW5hbD4gZm9yU2NvcGUgPSB7IH0pOwogCi0gICAgdm9pZCBh
ZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSYsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTdHls
ZTo6U2NvcGVPcmRpbmFsKTsKKyAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFN0eWxlOjpS
dWxlRGF0YSYsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTdHlsZTo6U2NvcGVPcmRpbmFsKTsKICAg
ICB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoZWRQcm9wZXJ0aWVzJiYsIERlY2xhcmF0
aW9uT3JpZ2luKTsKIAogICAgIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnQuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFJlZjxjb25zdCBFbGVtZW50PiBtX2Vs
ZW1lbnQ7Ci0gICAgY29uc3QgUnVsZVNldCYgbV9hdXRob3JTdHlsZTsKLSAgICBjb25zdCBSdWxl
U2V0KiBtX3VzZXJTdHlsZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBSdWxlU2V0KiBtX3VzZXJB
Z2VudE1lZGlhUXVlcnlTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBTdHlsZTo6UnVsZVNl
dCYgbV9hdXRob3JTdHlsZTsKKyAgICBjb25zdCBTdHlsZTo6UnVsZVNldCogbV91c2VyU3R5bGUg
eyBudWxscHRyIH07CisgICAgY29uc3QgU3R5bGU6OlJ1bGVTZXQqIG1fdXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVj
dG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1
bGVzIHsgZmFsc2UgfTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNN
YXRjaGluZ0hvc3RQc2V1ZG9DbGFzcyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPGNvbnN0IEVsZW1l
bnQ+IG1fc2hhZG93SG9zdEluUGFydFJ1bGVTY29wZTsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPj4gbV9rZWVwQWxpdmVTbG90dGVkUHNldWRvRWxl
bWVudFJ1bGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1
bGVEYXRhVmVjdG9yPj4gbV9rZWVwQWxpdmVTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOwogCiAg
ICAgVmVjdG9yPE1hdGNoZWRSdWxlLCA2ND4gbV9tYXRjaGVkUnVsZXM7CiAgICAgc2l6ZV90IG1f
bWF0Y2hlZFJ1bGVUcmFuc2ZlckluZGV4IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVs
ZUNvbGxlY3Rvci5jcHAKaW5kZXggMDc0ODNkZjZjZjIuLjlmNjVmZTA2MzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBQ
YWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hBbGxQYWdlUnVsZXMoaW50IHBhZ2VJbmRleCkKICAgICAg
ICAgbWF0Y2hQYWdlUnVsZXMoJm1fcnVsZVNldHMuYXV0aG9yU3R5bGUoKSwgaXNMZWZ0LCBpc0Zp
cnN0LCBwYWdlKTsKIH0KIAotdm9pZCBQYWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMo
UnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3Qg
U3RyaW5nJiBwYWdlTmFtZSkKK3ZvaWQgUGFnZVJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFnZVJ1bGVz
KFN0eWxlOjpSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdl
LCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQogewogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmgKaW5kZXggMTVkY2I1NGY4
MTcuLjhhZWZiMDIwZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVD
b2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuaApA
QCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGaXJzdFBhZ2UoaW50IHBhZ2VJ
bmRleCkgY29uc3Q7CiAgICAgU3RyaW5nIHBhZ2VOYW1lKGludCBwYWdlSW5kZXgpIGNvbnN0Owog
Ci0gICAgdm9pZCBtYXRjaFBhZ2VSdWxlcyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdl
LCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKKyAgICB2b2lkIG1h
dGNoUGFnZVJ1bGVzKFN0eWxlOjpSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29s
IGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKICAgICB2b2lkIG1hdGNoUGFn
ZVJ1bGVzRm9yTGlzdChWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0
IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNG
aXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwogCiAgICAgY29uc3QgU3R5bGU6OlJl
c29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKaW5kZXggZThlMzk1MDM1ZTUuLmU1M2FjOGMxMGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMTU2LDggKzE1Niw4IEBAIHZvaWQgU3R5
bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBcHBlbmRSdWxlKFJlZjxTdHlsZVJ1bGVCYXNlPiYmIHJ1
bGUpCiAKICAgICAvLyBOT1RFOiBUaGUgc2VsZWN0b3IgbGlzdCBoYXMgdG8gZml0IGludG8gUnVs
ZURhdGEuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExODM2OT4KICAgICAvLyBJZiB3ZSdyZSBhZGRp
bmcgYSBydWxlIHdpdGggYSBodWdlIG51bWJlciBvZiBzZWxlY3RvcnMsIHNwbGl0IGl0IHVwIGlu
dG8gbXVsdGlwbGUgcnVsZXMKLSAgICBpZiAoaXM8U3R5bGVSdWxlPihydWxlKSAmJiBkb3duY2Fz
dDxTdHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNlbGVjdG9yTGlzdCgpLmNvbXBvbmVudENvdW50KCkg
PiBSdWxlRGF0YTo6bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpIHsKLSAgICAgICAgbV9j
aGlsZFJ1bGVzLmFwcGVuZFZlY3Rvcihkb3duY2FzdDxTdHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNw
bGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQoUnVs
ZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KSk7CisgICAgaWYgKGlzPFN0eWxl
UnVsZT4ocnVsZSkgJiYgZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKS5zZWxlY3Rvckxp
c3QoKS5jb21wb25lbnRDb3VudCgpID4gU3R5bGU6OlJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0b3JD
b21wb25lbnRDb3VudCkgeworICAgICAgICBtX2NoaWxkUnVsZXMuYXBwZW5kVmVjdG9yKGRvd25j
YXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQoKSkuc3BsaXRJbnRvTXVsdGlwbGVSdWxlc1dpdGhNYXhp
bXVtU2VsZWN0b3JDb21wb25lbnRDb3VudChTdHlsZTo6UnVsZURhdGE6Om1heGltdW1TZWxlY3Rv
ckNvbXBvbmVudENvdW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2NCw3ICsy
NjQsNyBAQCBib29sIFN0eWxlU2hlZXRDb250ZW50czo6d3JhcHBlckluc2VydFJ1bGUoUmVmPFN0
eWxlUnVsZUJhc2U+JiYgcnVsZSwgdW5zaWduZWQgaQogICAgIGNoaWxkVmVjdG9ySW5kZXggLT0g
bV9uYW1lc3BhY2VSdWxlcy5zaXplKCk7CiAKICAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIHNlbGVj
dG9ycyB3b3VsZCBvdmVyZmxvdyBSdWxlRGF0YSwgd2UgZHJvcCB0aGUgb3BlcmF0aW9uLgotICAg
IGlmIChpczxTdHlsZVJ1bGU+KHJ1bGUpICYmIGRvd25jYXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQo
KSkuc2VsZWN0b3JMaXN0KCkuY29tcG9uZW50Q291bnQoKSA+IFJ1bGVEYXRhOjptYXhpbXVtU2Vs
ZWN0b3JDb21wb25lbnRDb3VudCkKKyAgICBpZiAoaXM8U3R5bGVSdWxlPihydWxlKSAmJiBkb3du
Y2FzdDxTdHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNlbGVjdG9yTGlzdCgpLmNvbXBvbmVudENvdW50
KCkgPiBTdHlsZTo6UnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2NoaWxkUnVsZXMuaW5zZXJ0KGNoaWxkVmVjdG9y
SW5kZXgsIFdURk1vdmUocnVsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApzaW1p
bGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5k
ZXggY2ExYjk0Zjc3YmIuLjExNTM4YjliMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJ1bGVTZXQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKIAogc3RhdGljIGJvb2wgaXNTaWJsaW5nT3JT
dWJqZWN0KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQpCiB7CkBAIC0yNTEsNCArMjUyLDUgQEAg
dm9pZCBSdWxlRmVhdHVyZVNldDo6c2hyaW5rVG9GaXQoKQogICAgICAgICBydWxlcy0+c2hyaW5r
VG9GaXQoKTsKIH0KIAorfSAvLyBuYW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaApzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCAyNWVhNGVjZDhhYS4uNzY0NTk5OTE0Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTMwLDkgKzMwLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBTdHlsZVJ1bGU7CiAKK25h
bWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIFJ1bGVEYXRhOworCiBlbnVtIGNsYXNzIE1hdGNoRWxl
bWVudCB7IFN1YmplY3QsIFBhcmVudCwgQW5jZXN0b3IsIERpcmVjdFNpYmxpbmcsIEluZGlyZWN0
U2libGluZywgQW55U2libGluZywgUGFyZW50U2libGluZywgQW5jZXN0b3JTaWJsaW5nLCBIb3N0
IH07CiBjb25zdGV4cHIgdW5zaWduZWQgbWF0Y2hFbGVtZW50Q291bnQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTWF0Y2hFbGVtZW50OjpIb3N0KSArIDE7CiAKQEAgLTg4LDQgKzkxLDUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNl
bGVjdG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIE1hdGNoRWxlbWVudCA9IE1hdGNo
RWxlbWVudDo6U3ViamVjdCk7CiB9OwogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKc2ltaWxhcml0eSBpbmRleCA5NiUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCA4ZWMxYzRkNGY1NC4uMTk4MGY5NTI1
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcApAQCAtNDksNiArNDksNyBAQAogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKQEAgLTEwMyw3ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b21tb25BdHRyaWJ1dGVTZWxlY3RvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aQogICAgIHJldHVybiBhdHRyaWJ1dGUgPT0gdHlwZUF0dHIgfHwgYXR0cmlidXRlID09IHJlYWRv
bmx5QXR0cjsKIH0KIAotc3RhdGljIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9yKGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IsIGJvb2wgbWF0Y2hlc1JpZ2h0bW9z
dEVsZW1lbnQpCitzdGF0aWMgYm9vbCBjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNl
bGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IsIGJvb2wgbWF0Y2hlc1JpZ2h0
bW9zdEVsZW1lbnQgPSB0cnVlKQogewogICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9
ICZyb290U2VsZWN0b3I7CiAgICAgZG8gewpAQCAtMTE3LDcgKzExOCw3IEBAIHN0YXRpYyBib29s
IGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciYgcm9v
dFNlbGVjdG9yLCBiCiAKICAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0
b3JMaXN0ID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpKSB7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IENTU1NlbGVjdG9yKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsgc3Vi
U2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNlbGVjdG9y
KSkgewotICAgICAgICAgICAgICAgIGlmIChjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0
b3IoKnN1YlNlbGVjdG9yLCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCkpCisgICAgICAgICAgICAg
ICAgaWYgKGNvbXB1dGVDb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKnN1YlNlbGVj
dG9yLCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzAsMTEgKzEzMSw2IEBAIHN0
YXRpYyBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3RvciYgcm9vdFNlbGVjdG9yLCBiCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVj
dG9yJiByb290U2VsZWN0b3IpCi17Ci0gICAgcmV0dXJuIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1
dGVTZWxlY3Rvcihyb290U2VsZWN0b3IsIHRydWUpOwotfQotCiBzdGF0aWMgaW5saW5lIFByb3Bl
cnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBv
bmVudCA9IHNlbGVjdG9yOyBjb21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlz
dG9yeSgpKSB7CkBAIC0xNjMsNyArMTU5LDcgQEAgUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVs
ZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXMKICAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgLCBtX21hdGNoQmFzZWRPblJ1bGVIYXNoKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb21wdXRlTWF0Y2hCYXNlZE9uUnVsZUhhc2goKnNlbGVjdG9y
KCkpKSkKICAgICAsIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1
ZG9FbGVtZW50KCpzZWxlY3RvcigpKSkKLSAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9yKFdlYkNvcmU6OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2Vs
ZWN0b3IoKSkpCisgICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb21w
dXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpzZWxlY3RvcigpKSkKICAgICAs
IG1fbGlua01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUo
c2VsZWN0b3IoKSkpCiAgICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3IoKSkpCiAgICAgLCBtX2Rlc2NlbmRhbnRTZWxlY3Rv
cklkZW50aWZpZXJIYXNoZXMoU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RIYXNoZXMoKnNlbGVjdG9y
KCkpKQpAQCAtMzg0LDcgKzM4MCw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUoU3R5bGVS
dWxlUGFnZSogcnVsZSkKICAgICBtX3BhZ2VSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLXZvaWQg
UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGU6OlJlc29s
dmVyKiByZXNvbHZlciwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKQordm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBS
ZXNvbHZlciogcmVzb2x2ZXIsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSkKIHsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewogICAgICAgICBpZiAo
aXM8U3R5bGVSdWxlPigqcnVsZSkpCkBAIC00MDQsMTQgKzQwMCwxMyBAQCB2b2lkIFJ1bGVTZXQ6
OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVz
LCBjb25zdCBNZQogICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1bGUp
ICYmIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY29uZGl0aW9uSXNTdXBwb3J0
ZWQoKSkKICAgICAgICAgICAgIGFkZENoaWxkUnVsZXMoZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9y
dHM+KCpydWxlKS5jaGlsZFJ1bGVzKCksIG1lZGl1bSwgcmVzb2x2ZXIsIGlzSW5pdGlhdGluZ0Vs
ZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBU
QVRJT04pCi0gICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVZpZXdwb3J0PigqcnVsZSkgJiYg
cmVzb2x2ZXIpIHsKKyAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlVmlld3BvcnQ+KCpydWxl
KSAmJiByZXNvbHZlcikKICAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2
ZXIoKS0+YWRkVmlld3BvcnRSdWxlKGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0PihydWxlLmdl
dCgpKSk7Ci0gICAgICAgIH0KICNlbmRpZgogICAgIH0KIH0KIAotdm9pZCBSdWxlU2V0OjphZGRS
dWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlOjpSZXNvbHZlciogcmVzb2x2ZXIpCit2b2lkIFJ1bGVT
ZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQsIGNvbnN0IE1l
ZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgUmVzb2x2ZXIqIHJlc29sdmVyKQogewogICAgIGZv
ciAoYXV0byYgcnVsZSA6IHNoZWV0LmltcG9ydFJ1bGVzKCkpIHsKICAgICAgICAgaWYgKHJ1bGUt
PnN0eWxlU2hlZXQoKSAmJiAoIXJ1bGUtPm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsdWF0
ZSgqcnVsZS0+bWVkaWFRdWVyaWVzKCksIHJlc29sdmVyKSkpCkBAIC00NzAsNCArNDY1LDUgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgp
OwogfQogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuaApzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0
LmgKaW5kZXggNjE4MGM0OWJjYmIuLjdmYWRmYTY1YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApA
QCAtMzIsMTQgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFByb3BlcnR5
V2hpdGVsaXN0VHlwZSB7Ci0gICAgUHJvcGVydHlXaGl0ZWxpc3ROb25lICAgPSAwLAotICAgIFBy
b3BlcnR5V2hpdGVsaXN0TWFya2VyLAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBQcm9w
ZXJ0eVdoaXRlbGlzdEN1ZQotI2VuZGlmCi19OwotCiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNz
IENvbnRhaW5lck5vZGU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpAQCAtNDcsOCArMzks
MTYgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAogbmFtZXNwYWNl
IFN0eWxlIHsKKwogY2xhc3MgUmVzb2x2ZXI7Ci19CisKK2VudW0gUHJvcGVydHlXaGl0ZWxpc3RU
eXBlIHsKKyAgICBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUgICA9IDAsCisgICAgUHJvcGVydHlXaGl0
ZWxpc3RNYXJrZXIsCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIFByb3BlcnR5V2hpdGVs
aXN0Q3VlCisjZW5kaWYKK307CiAKIGVudW0gY2xhc3MgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggOiB1
bnNpZ25lZCB7CiAgICAgTm9uZSwKQEAgLTEwNyw4ICsxMDcsMTIgQEAgY2xhc3MgUnVsZVNldCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVsZVNldCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSdWxlU2V0U2VsZWN0b3JQYWlyIHsKLSAgICAgICAg
UnVsZVNldFNlbGVjdG9yUGFpcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHN0ZDo6dW5p
cXVlX3B0cjxSdWxlU2V0PiBydWxlU2V0KSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgcnVsZVNldChX
VEZNb3ZlKHJ1bGVTZXQpKSB7IH0KLSAgICAgICAgUnVsZVNldFNlbGVjdG9yUGFpcihjb25zdCBS
dWxlU2V0U2VsZWN0b3JQYWlyJiBwYWlyKSA6IHNlbGVjdG9yKHBhaXIuc2VsZWN0b3IpLCBydWxl
U2V0KGNvbnN0X2Nhc3Q8UnVsZVNldFNlbGVjdG9yUGFpcio+KCZwYWlyKS0+cnVsZVNldC5yZWxl
YXNlKCkpIHsgfQorICAgICAgICBSdWxlU2V0U2VsZWN0b3JQYWlyKGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3Rvciwgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IHJ1bGVTZXQpCisgICAgICAgICAg
ICA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgcnVsZVNldChXVEZNb3ZlKHJ1bGVTZXQpKQorICAgICAg
ICB7IH0KKyAgICAgICAgUnVsZVNldFNlbGVjdG9yUGFpcihjb25zdCBSdWxlU2V0U2VsZWN0b3JQ
YWlyJiBwYWlyKQorICAgICAgICAgICAgOiBzZWxlY3RvcihwYWlyLnNlbGVjdG9yKSwgcnVsZVNl
dChjb25zdF9jYXN0PFJ1bGVTZXRTZWxlY3RvclBhaXIqPigmcGFpciktPnJ1bGVTZXQucmVsZWFz
ZSgpKQorICAgICAgICB7IH0KIAogICAgICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3I7
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBydWxlU2V0OwpAQCAtMTg2LDExICsx
OTAsMTIgQEAgaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBSdWxlU2V0Ojp0
YWdSdWxlcyhjb25zdCBBdG9tU3RyaW5nJiBrZXksIGIKICAgICByZXR1cm4gdGFnUnVsZXMtPmdl
dChrZXkpOwogfQogCit9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gUnVsZURhdGEgaXMgc2ltcGxlIGVub3VnaCB0aGF0
IGluaXRpYWxpemluZyB0byAwIGFuZCBtb3Zpbmcgd2l0aCBtZW1jcHkgd2lsbCB0b3RhbGx5IHdv
cmsuCi10ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6UnVsZURhdGE+IDog
U2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJh
aXRzPFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YT4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVBZGp1c3Rlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5o
CmluZGV4IDgwNWIwNWQ2ZWJkLi5kMzdlMmQ2NjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QWRqdXN0ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
U1ZHRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxp
ZGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaAppbmRleCAz
ZmQ2M2JjMzQ5OS4uMmVmZjQ0YTgwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlSW52YWxpZGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFs
aWRhdG9yLmgKQEAgLTMzLDEzICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwotY2xh
c3MgUnVsZVNldDsKIGNsYXNzIFNlbGVjdG9yRmlsdGVyOwogY2xhc3MgU2hhZG93Um9vdDsKIGNs
YXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAorY2xhc3MgUnVs
ZVNldDsKKwogY2xhc3MgSW52YWxpZGF0b3IgewogcHVibGljOgogICAgIEludmFsaWRhdG9yKGNv
bnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383775</attachid>
            <date>2019-11-18 12:14:47 -0800</date>
            <delta_ts>2019-11-18 15:21:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ruleset-namespace-4.patch</filename>
            <type>text/plain</type>
            <size>32292</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZTI5ZjIxZDcxMi4uMDVmNTc4ZDY3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxOS0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBSdWxlU2V0IHRvIFN0eWxlIG5hbWVzcGFjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyBtb3ZlIFJ1bGVGZWF0dXJl
LgorICAgICAgICBNb3ZlIHRvIHN0eWxlLyBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6Cisg
ICAgICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3Rv
clRleHQpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXRjaFJlcXVlc3Q6Ok1hdGNoUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6RWxlbWVudFJ1bGVDb2xsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlc0ZvclNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6
Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6aGFzQW55TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgICogY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyk6CisgICAg
ICAgICogY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNl
ckFwcGVuZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjp3cmFw
cGVySW5zZXJ0UnVsZSk6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcC4KKyAgICAgICAgKiBzdHls
ZS9SdWxlRmVhdHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0
dXJlLmguCisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0
ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZURhdGE6OlJ1bGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxl
U2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0Ojph
ZGRSdWxlc0Zyb21TaGVldCk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmg6CisKIDIwMTktMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBEb2N1bWVudFJ1bGVTZXRzIHRvIFN0eWxlOjpTY29wZVJ1
bGVTZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZiMWNlMDk1Y2VjLi44OWI4MjA1YjgyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTc3MCw4ICs3NzAsNiBAQCBjc3MvTWVkaWFRdWVyeVBhcnNlckNvbnRleHQu
Y3BwCiBjc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAogY3NzL1JHQkNvbG9yLmNwcAotY3NzL1J1bGVGZWF0dXJlLmNwcAotY3Nz
L1J1bGVTZXQuY3BwCiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAogY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKIGNzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTIzNDYsNiAr
MjM0NCw4IEBAIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcAogc3R5bGUvTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmNwcAogc3R5bGUv
UHJvcGVydHlDYXNjYWRlLmNwcAorc3R5bGUvUnVsZUZlYXR1cmUuY3BwCitzdHlsZS9SdWxlU2V0
LmNwcAogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKIHN0eWxlL1N0eWxlQnVpbGRlci5jcHAKIHN0
eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxYTU1NDU0NGNmLi42ZmM0ODgwMGVhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjcwMjcsNiArMjcwMjcsMTAgQEAKIAkJCQlFNDVCQTZBODIzNzQ5MjZCMDA0REZDMDcg
LyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0MjAw
RkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5jcHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMyOTAw
RkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovLAorCQkJCUE3OUJBRDlEMTYxRTdGM0YwMEMy
RTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCisJCQkJQTc5QkFEOUUxNjFFN0YzRjAwQzJFNjUy
IC8qIFJ1bGVGZWF0dXJlLmggKi8sCisJCQkJQTc5QkFEOUYxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1
bGVTZXQuY3BwICovLAorCQkJCUE3OUJBREEwMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlU2V0Lmgg
Ki8sCiAJCQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICov
LAogCQkJCUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8sCiAJ
CQkJRTRBQkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBAIC0y
NzQzOCwxMCArMjc0NDIsNiBAQAogCQkJCUJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0
LmggKi8sCiAJCQkJQkM3NERBMzYxMDEzRjNGNzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCAqLywK
IAkJCQlCQzc0REEzNTEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCAqLywKLQkJCQlBNzlC
QUQ5RDE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuY3BwICovLAotCQkJCUE3OUJBRDlF
MTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5oICovLAotCQkJCUE3OUJBRDlGMTYxRTdG
M0YwMEMyRTY1MiAvKiBSdWxlU2V0LmNwcCAqLywKLQkJCQlBNzlCQURBMDE2MUU3RjNGMDBDMkU2
NTIgLyogUnVsZVNldC5oICovLAogCQkJCUU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxl
Y3RvckNoZWNrZXIuY3BwICovLAogCQkJCUU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxl
Y3RvckNoZWNrZXIuaCAqLywKIAkJCQk0MzJEM0ZFNzE4QTg2NTg0MDBEN0RDMDMgLyogU2VsZWN0
b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCAyOTY5MDlmMDA3Yy4uYzMwODNhYTFkMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC01OSw5ICs1
OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotUnVsZVNldCogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0U3R5bGU7Ci1SdWxlU2V0
KiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRRdWlya3NTdHlsZTsKLVJ1bGVTZXQqIENT
U0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFByaW50U3R5bGU7CitTdHlsZTo6UnVsZVNldCog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0U3R5bGU7CitTdHlsZTo6UnVsZVNldCogQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0UXVpcmtzU3R5bGU7CitTdHlsZTo6UnVsZVNldCog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0UHJpbnRTdHlsZTsKIHVuc2lnbmVkIENTU0Rl
ZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFN0eWxlVmVyc2lvbjsKIAogU3R5bGVTaGVldENvbnRl
bnRzKiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0OwpAQCAt
MTc1LDExICsxNzUsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVm
YXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxscHRyOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAgICAgZGVm
YXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICAg
ICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxTdHlsZTo6UnVsZVNldD4oKS5yZWxl
YXNlKCk7CiAgICAgfQogCi0gICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKLSAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4o
KS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxTdHlsZTo6UnVsZVNl
dD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFByaW50U3R5bGUgPSBtYWtlVW5pcXVlPFN0eWxl
OjpSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZTdHls
ZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSkubGVh
a1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0xOTgsMTAgKzE5OCwxMCBA
QCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiAg
ICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0eWxl
U2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVh
c2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpSdWxlU2V0PigpLnJl
bGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUgbm8gbWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhl
IHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAgIGRlZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0
eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxl
YXNlKCk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxTdHlsZTo6UnVsZVNl
dD4oKS5yZWxlYXNlKCk7CiAKICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IHBhcnNlVUFT
aGVldChzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0LCBzdHJsZW4oc2ltcGxlVXNlckFnZW50U3R5
bGVTaGVldCkpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKnNpbXBsZURl
ZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Rl
ZmF1bHRTdHlsZVNoZWV0cy5oCmluZGV4IDRlMmMzOTg1YTg1Li4yMTdmNGY3ZWUyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaApAQCAtMjUsMTQgKzI1LDE3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBSdWxlU2V0
OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogCituYW1lc3BhY2UgU3R5bGUgeworY2xhc3Mg
UnVsZVNldDsKK30KKwogY2xhc3MgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUnVsZVNldCogZGVmYXVsdFN0eWxlOwotICAgIHN0YXRpYyBSdWxlU2V0KiBkZWZh
dWx0UXVpcmtzU3R5bGU7Ci0gICAgc3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRQcmludFN0eWxlOwor
ICAgIHN0YXRpYyBTdHlsZTo6UnVsZVNldCogZGVmYXVsdFN0eWxlOworICAgIHN0YXRpYyBTdHls
ZTo6UnVsZVNldCogZGVmYXVsdFF1aXJrc1N0eWxlOworICAgIHN0YXRpYyBTdHlsZTo6UnVsZVNl
dCogZGVmYXVsdFByaW50U3R5bGU7CiAgICAgc3RhdGljIHVuc2lnbmVkIGRlZmF1bHRTdHlsZVZl
cnNpb247CiAKICAgICBzdGF0aWMgU3R5bGVTaGVldENvbnRlbnRzKiBzaW1wbGVEZWZhdWx0U3R5
bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKaW5kZXggNTcyNGE5NGE4M2Uu
LjQwN2Y5OGI1ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApAQCAtOTcsNyAr
OTcsNyBAQCB2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBOT1RFOiBUaGUgc2VsZWN0
b3IgbGlzdCBoYXMgdG8gZml0IGludG8gUnVsZURhdGEuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEx
ODM2OT4KLSAgICBpZiAoc2VsZWN0b3JMaXN0LmNvbXBvbmVudENvdW50KCkgPiBSdWxlRGF0YTo6
bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpCisgICAgaWYgKHNlbGVjdG9yTGlzdC5jb21w
b25lbnRDb3VudCgpID4gU3R5bGU6OlJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0b3JDb21wb25lbnRD
b3VudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9u
U2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwCmluZGV4IGY4ZTU2YzIzMjRiLi5iZjIxMGExZDI1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC03MCwxMiArNzAsMTIg
QEAgc3RhdGljIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcmlnaHRUb0xlZnREZWNsYXJhdGlvbigp
CiAKIGNsYXNzIE1hdGNoUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgTWF0Y2hSZXF1ZXN0KGNvbnN0
IFJ1bGVTZXQqIHJ1bGVTZXQsIFN0eWxlOjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwg
PSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpFbGVtZW50KQorICAgIE1hdGNoUmVxdWVzdChjb25zdCBT
dHlsZTo6UnVsZVNldCogcnVsZVNldCwgU3R5bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3Jk
aW5hbCA9IFN0eWxlOjpTY29wZU9yZGluYWw6OkVsZW1lbnQpCiAgICAgICAgIDogcnVsZVNldChy
dWxlU2V0KQogICAgICAgICAsIHN0eWxlU2NvcGVPcmRpbmFsKHN0eWxlU2NvcGVPcmRpbmFsKQog
ICAgIHsKICAgICB9Ci0gICAgY29uc3QgUnVsZVNldCogcnVsZVNldDsKKyAgICBjb25zdCBTdHls
ZTo6UnVsZVNldCogcnVsZVNldDsKICAgICBTdHlsZTo6U2NvcGVPcmRpbmFsIHN0eWxlU2NvcGVP
cmRpbmFsOwogfTsKIApAQCAtODksNyArODksNyBAQCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6RWxl
bWVudFJ1bGVDb2xsZWN0b3IoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6Ogog
ICAgIEFTU0VSVCghbV9zZWxlY3RvckZpbHRlciB8fCBtX3NlbGVjdG9yRmlsdGVyLT5wYXJlbnRT
dGFja0lzQ29uc2lzdGVudChlbGVtZW50LnBhcmVudE5vZGUoKSkpOwogfQogCi1FbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6RWxlbWVudFJ1bGVDb2xsZWN0b3IoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUnVsZVNldCYgYXV0aG9yU3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3Rv
ckZpbHRlcikKK0VsZW1lbnRSdWxlQ29sbGVjdG9yOjpFbGVtZW50UnVsZUNvbGxlY3Rvcihjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6UnVsZVNldCYgYXV0aG9yU3R5bGUsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKICAgICA6IG1fZWxlbWVudChlbGVt
ZW50KQogICAgICwgbV9hdXRob3JTdHlsZShhdXRob3JTdHlsZSkKICAgICAsIG1fc2VsZWN0b3JG
aWx0ZXIoc2VsZWN0b3JGaWx0ZXIpCkBAIC0xMDksNyArMTA5LDcgQEAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGU+PiYgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoZWRSdWxlTGlzdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbWF0Y2hlZFJ1bGVMaXN0OwogfQogCi1pbmxpbmUgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6YWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhLCB1bnNpZ25lZCBzcGVjaWZpY2l0eSwgU3R5bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3Bl
T3JkaW5hbCkKK2lubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUnVs
ZShjb25zdCBTdHlsZTo6UnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZCBzcGVjaWZpY2l0eSwg
U3R5bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbCkKIHsKICAgICBtX21hdGNoZWRS
dWxlcy5hcHBlbmQoeyAmcnVsZURhdGEsIHNwZWNpZmljaXR5LCBzdHlsZVNjb3BlT3JkaW5hbCB9
KTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xs
ZWN0TWF0Y2hpbmdTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZQogICAgICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMuc2hhZG93UHNldWRvRWxlbWVudFJ1
bGVzKHBzZXVkb0lkKSwgbWF0Y2hSZXF1ZXN0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJ1bGVT
ZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQ
c2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KCkKK3N0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6UnVsZVNl
dDo6UnVsZURhdGFWZWN0b3I+IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBz
ZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoKQogewogICAgIEFTU0VSVChpczxIVE1MU2xvdEVsZW1l
bnQ+KGVsZW1lbnQoKSkpOwogCkBAIC0zNTksNyArMzU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1
bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0
ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlxdWU8UnVsZVNldDo6UnVs
ZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlxdWU8U3R5
bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRv
JiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQogICAgICAgICBydWxlRGF0YVZlY3Rvci0+
dW5jaGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5ydWxlRGF0YSk7CkBAIC0zODUsNyArMzg1LDcg
QEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKCkKICAgICAvLyBGaXJz
dCB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSB1c2VyIGFnZW50IHNoZWV0LgogICAgIGlmIChDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KQogICAgICAgICBtX3Jl
c3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOwotICAgIFJ1bGVTZXQqIHVzZXJBZ2VudFN0eWxlU2hl
ZXQgPSBtX2lzUHJpbnRTdHlsZQorICAgIGF1dG8qIHVzZXJBZ2VudFN0eWxlU2hlZXQgPSBtX2lz
UHJpbnRTdHlsZQogICAgICAgICA/IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFByaW50
U3R5bGUgOiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZTsKICAgICBtYXRjaFVB
UnVsZXMoKnVzZXJBZ2VudFN0eWxlU2hlZXQpOwogCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKCkKICAgICAgICAgbWF0Y2hVQVJ1bGVz
KCptX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSk7CiB9CiAKLXZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6Om1hdGNoVUFSdWxlcyhjb25zdCBSdWxlU2V0JiBydWxlcykKK3ZvaWQgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcyhjb25zdCBTdHlsZTo6UnVsZVNldCYgcnVsZXMpCiB7
CiAgICAgY2xlYXJNYXRjaGVkUnVsZXMoKTsKICAgICAKQEAgLTQxOCwyOCArNDE4LDI4IEBAIHN0
YXRpYyBjb25zdCBDU1NTZWxlY3RvciogZmluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3Io
Y29uc3QgQ1NTU2VsZWN0b3IqIHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWlubGluZSBi
b29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVs
ZURhdGEsIHVuc2lnbmVkJiBzcGVjaWZpY2l0eSkKK2lubGluZSBib29sIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBTdHlsZTo6UnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNp
Z25lZCYgc3BlY2lmaWNpdHkpCiB7CiAgICAgLy8gV2Uga25vdyBhIHN1ZmZpY2llbnRseSBzaW1w
bGUgc2luZ2xlIHBhcnQgc2VsZWN0b3IgbWF0Y2hlcyBzaW1wbHkgYmVjYXVzZSB3ZSBmb3VuZCBp
dCBmcm9tIHRoZSBydWxlIGhhc2ggd2hlbiBmaWx0ZXJpbmcgdGhlIFJ1bGVTZXQuCiAgICAgLy8g
VGhpcyBpcyBsaW1pdGVkIHRvIEhUTUwgb25seSBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRo
ZSBuYW1lc3BhY2UgKGJlY2F1c2Ugb2YgdGFnIG5hbWUgbWF0Y2gpLgotICAgIE1hdGNoQmFzZWRP
blJ1bGVIYXNoIG1hdGNoQmFzZWRPblJ1bGVIYXNoID0gcnVsZURhdGEubWF0Y2hCYXNlZE9uUnVs
ZUhhc2goKTsKLSAgICBpZiAobWF0Y2hCYXNlZE9uUnVsZUhhc2ggIT0gTWF0Y2hCYXNlZE9uUnVs
ZUhhc2g6Ok5vbmUgJiYgZWxlbWVudCgpLmlzSFRNTEVsZW1lbnQoKSkgeworICAgIGF1dG8gbWF0
Y2hCYXNlZE9uUnVsZUhhc2ggPSBydWxlRGF0YS5tYXRjaEJhc2VkT25SdWxlSGFzaCgpOworICAg
IGlmIChtYXRjaEJhc2VkT25SdWxlSGFzaCAhPSBTdHlsZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6
Ok5vbmUgJiYgZWxlbWVudCgpLmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25l
LCAiSWYgd2UgbWF0Y2ggYmFzZWQgb24gdGhlIHJ1bGUgaGFzaCB3aGlsZSBjb2xsZWN0aW5nIGZv
ciBhIHBhcnRpY3VsYXIgcHNldWRvIGVsZW1lbnQgSUQsIHdlIHdvdWxkIGFkZCBpbmNvcnJlY3Qg
cnVsZXMgZm9yIHRoYXQgcHNldWRvIGVsZW1lbnQgSUQuIFdlIHNob3VsZCBuZXZlciBlbmQgaW4g
cnVsZU1hdGNoZXMoKSB3aXRoIGEgcHNldWRvIGVsZW1lbnQgaWYgdGhlIHJ1bGVEYXRhIGNhbm5v
dCBtYXRjaCBhbnkgcHNldWRvIGVsZW1lbnQuIik7CiAKICAgICAgICAgc3dpdGNoIChtYXRjaEJh
c2VkT25SdWxlSGFzaCkgewotICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25l
OgorICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZToKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OlVuaXZlcnNhbDoKKyAgICAgICAgY2FzZSBTdHls
ZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6OlVuaXZlcnNhbDoKICAgICAgICAgICAgIHNwZWNpZmlj
aXR5ID0gMDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1
bGVIYXNoOjpDbGFzc0E6CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoQmFzZWRPblJ1bGVIYXNo
OjpDbGFzc0E6CiAgICAgICAgICAgICBzcGVjaWZpY2l0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihTZWxlY3RvclNwZWNpZmljaXR5SW5jcmVtZW50OjpDbGFzc0EpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQjoKKyAgICAgICAg
Y2FzZSBTdHlsZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQjoKICAgICAgICAgICAgIHNw
ZWNpZmljaXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNlbGVjdG9yU3BlY2lmaWNpdHlJbmNy
ZW1lbnQ6OkNsYXNzQik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNYXRjaEJh
c2VkT25SdWxlSGFzaDo6Q2xhc3NDOgorICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEJhc2VkT25S
dWxlSGFzaDo6Q2xhc3NDOgogICAgICAgICAgICAgc3BlY2lmaWNpdHkgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oU2VsZWN0b3JTcGVjaWZpY2l0eUluY3JlbWVudDo6Q2xhc3NDKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01MTQsMTMgKzUxNCwxMyBAQCBpbmxpbmUgYm9vbCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
LCB1bnNpZ25lZAogICAgIHJldHVybiBzZWxlY3Rvck1hdGNoZXM7CiB9CiAKLXZvaWQgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBSdWxlU2V0
OjpSdWxlRGF0YVZlY3RvciogcnVsZXMsIGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0
KQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0
KGNvbnN0IFN0eWxlOjpSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciogcnVsZXMsIGNvbnN0IE1hdGNo
UmVxdWVzdCYgbWF0Y2hSZXF1ZXN0KQogewogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlcy0+c2l6ZSgpOyBpIDwg
c2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSA9IHJ1bGVzLT5k
YXRhKClbaV07CisgICAgICAgIGNvbnN0IGF1dG8mIHJ1bGVEYXRhID0gcnVsZXMtPmRhdGEoKVtp
XTsKIAogICAgICAgICBpZiAoIXJ1bGVEYXRhLmNhbk1hdGNoUHNldWRvRWxlbWVudCgpICYmIG1f
cHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC02MTgsNyArNjE4LDcgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rv
cjo6YWRkRWxlbWVudElubGluZVN0eWxlUHJvcGVydGllcyhib29sIGluY2x1ZGVTTUlMUHJvcGUK
ICAgICAgICAgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhkb3duY2FzdDxTVkdFbGVtZW50Pihl
bGVtZW50KCkpLmFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpLCBmYWxzZSAvKiBpc0NhY2hl
YWJsZSAqLyk7CiB9CiAKLWJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Omhhc0FueU1hdGNoaW5n
UnVsZXMoY29uc3QgUnVsZVNldCogcnVsZVNldCkKK2Jvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6
Omhhc0FueU1hdGNoaW5nUnVsZXMoY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQpCiB7CiAg
ICAgY2xlYXJNYXRjaGVkUnVsZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaAppbmRleCBiNjJhZDM2NWFhMC4uODA5YmIzM2YyMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
IH07CiAKIHN0cnVjdCBNYXRjaGVkUnVsZSB7Ci0gICAgY29uc3QgUnVsZURhdGEqIHJ1bGVEYXRh
OworICAgIGNvbnN0IFN0eWxlOjpSdWxlRGF0YSogcnVsZURhdGE7CiAgICAgdW5zaWduZWQgc3Bl
Y2lmaWNpdHk7CiAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbDsKIH07
CkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBNYXRjaGVkUnVsZSB7CiBzdHJ1Y3QgTWF0Y2hlZFBy
b3BlcnRpZXMgewogICAgIFJlZlB0cjxjb25zdCBTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXM7
CiAgICAgdWludDE2X3QgbGlua01hdGNoVHlwZSB7IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwg
fTsKLSAgICB1aW50MTZfdCB3aGl0ZWxpc3RUeXBlIHsgUHJvcGVydHlXaGl0ZWxpc3ROb25lIH07
CisgICAgdWludDE2X3Qgd2hpdGVsaXN0VHlwZSB7IFN0eWxlOjpQcm9wZXJ0eVdoaXRlbGlzdE5v
bmUgfTsKICAgICBTdHlsZTo6U2NvcGVPcmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsIHsgU3R5bGU6
OlNjb3BlT3JkaW5hbDo6RWxlbWVudCB9OwogfTsKIApAQCAtODQsNyArODQsNyBAQCBzdHJ1Y3Qg
TWF0Y2hSZXN1bHQgewogY2xhc3MgRWxlbWVudFJ1bGVDb2xsZWN0b3IgewogcHVibGljOgogICAg
IEVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6U2NvcGVS
dWxlU2V0cyYsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKik7Ci0gICAgRWxlbWVudFJ1bGVDb2xsZWN0
b3IoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJ1bGVTZXQmIGF1dGhvclN0eWxlLCBjb25zdCBTZWxl
Y3RvckZpbHRlciopOworICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBj
b25zdCBTdHlsZTo6UnVsZVNldCYgYXV0aG9yU3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKik7
CiAKICAgICB2b2lkIHNldEluY2x1ZGVFbXB0eVJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRJ
bmNsdWRlRW1wdHlSdWxlcyA9IHZhbHVlOyB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHNldWRvU3R5bGVSZXF1ZXN0KGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYg
cmVxdWVzdCkgeyBtX3BzZXVkb1N0eWxlUmVxdWVzdCA9IHJlcXVlc3Q7IH0KICAgICB2b2lkIHNl
dE1lZGl1bShjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0pIHsgbV9pc1ByaW50U3R5
bGUgPSBtZWRpdW0tPm1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoInByaW50Iik7IH0KIAotICAgIGJv
b2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CisgICAgYm9vbCBoYXNBbnlN
YXRjaGluZ1J1bGVzKGNvbnN0IFN0eWxlOjpSdWxlU2V0Kik7CiAKICAgICBjb25zdCBNYXRjaFJl
c3VsdCYgbWF0Y2hSZXN1bHQoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxl
UnVsZT4+JiBtYXRjaGVkUnVsZUxpc3QoKSBjb25zdDsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZvaWQgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnRpZXMqLCBib29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7CiAKLSAgICB2b2lkIG1h
dGNoVUFSdWxlcyhjb25zdCBSdWxlU2V0Jik7CisgICAgdm9pZCBtYXRjaFVBUnVsZXMoY29uc3Qg
U3R5bGU6OlJ1bGVTZXQmKTsKIAogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nQXV0aG9yUnVsZXMo
KTsKICAgICB2b2lkIGFkZEVsZW1lbnRJbmxpbmVTdHlsZVByb3BlcnRpZXMoYm9vbCBpbmNsdWRl
U01JTFByb3BlcnRpZXMpOwpAQCAtMTI1LDExICsxMjUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNjb3BlKGNvbnN0IFNoYWRvd1Jvb3QmIHNj
b3BlU2hhZG93Um9vdCk7CiAKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1NoYWRvd1BzZXVkb0Vs
ZW1lbnRSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVs
ZVNldDo6UnVsZURhdGFWZWN0b3I+IGNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9y
U2xvdCgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6UnVsZVNldDo6UnVsZURhdGFWZWN0
b3I+IGNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdCgpOwogCiAgICAgdm9p
ZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmKTsKLSAgICB2b2lkIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcios
IGNvbnN0IE1hdGNoUmVxdWVzdCYpOwotICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURh
dGEmLCB1bnNpZ25lZCAmc3BlY2lmaWNpdHkpOworICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KGNvbnN0IFN0eWxlOjpSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciosIGNvbnN0IE1h
dGNoUmVxdWVzdCYpOworICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgU3R5bGU6OlJ1bGVEYXRh
JiwgdW5zaWduZWQgJnNwZWNpZmljaXR5KTsKIAogICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcygp
OwogCkBAIC0xMzgsMTUgKzEzOCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgc29ydEFuZFRyYW5z
ZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3JpZ2luKTsKICAgICB2b2lkIHRyYW5zZmVyTWF0
Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3JpZ2luLCBPcHRpb25hbDxTdHlsZTo6U2NvcGVPcmRpbmFs
PiBmb3JTY29wZSA9IHsgfSk7CiAKLSAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1bGVE
YXRhJiwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFN0eWxlOjpTY29wZU9yZGluYWwpOworICAgIHZv
aWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgU3R5bGU6OlJ1bGVEYXRhJiwgdW5zaWduZWQgc3BlY2lm
aWNpdHksIFN0eWxlOjpTY29wZU9yZGluYWwpOwogICAgIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRp
ZXMoTWF0Y2hlZFByb3BlcnRpZXMmJiwgRGVjbGFyYXRpb25PcmlnaW4pOwogCiAgICAgY29uc3Qg
RWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQogCiAg
ICAgY29uc3QgUmVmPGNvbnN0IEVsZW1lbnQ+IG1fZWxlbWVudDsKLSAgICBjb25zdCBSdWxlU2V0
JiBtX2F1dGhvclN0eWxlOwotICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlclN0eWxlIHsgbnVsbHB0
ciB9OwotICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlIHsgbnVs
bHB0ciB9OworICAgIGNvbnN0IFN0eWxlOjpSdWxlU2V0JiBtX2F1dGhvclN0eWxlOworICAgIGNv
bnN0IFN0eWxlOjpSdWxlU2V0KiBtX3VzZXJTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBT
dHlsZTo6UnVsZVNldCogbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgeyBudWxscHRyIH07CiAg
ICAgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIG1fc2VsZWN0b3JGaWx0ZXIgeyBudWxscHRyIH07CiAK
ICAgICBib29sIG1fc2hvdWxkSW5jbHVkZUVtcHR5UnVsZXMgeyBmYWxzZSB9OwpAQCAtMTU2LDcg
KzE1Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdTbG90dGVkUHNldWRvRWxl
bWVudHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hdGNoaW5nSG9zdFBzZXVkb0NsYXNzIHsg
ZmFsc2UgfTsKICAgICBSZWZQdHI8Y29uc3QgRWxlbWVudD4gbV9zaGFkb3dIb3N0SW5QYXJ0UnVs
ZVNjb3BlOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldDo6UnVsZURhdGFWZWN0
b3I+PiBtX2tlZXBBbGl2ZVNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXM7CisgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxTdHlsZTo6UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+PiBtX2tlZXBBbGl2
ZVNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXM7CiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0
PiBtX21hdGNoZWRSdWxlczsKICAgICBzaXplX3QgbV9tYXRjaGVkUnVsZVRyYW5zZmVySW5kZXgg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcAppbmRleCAwNzQ4
M2RmNmNmMi4uOWY2NWZlMDYzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdl
UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVj
dG9yLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaEFs
bFBhZ2VSdWxlcyhpbnQgcGFnZUluZGV4KQogICAgICAgICBtYXRjaFBhZ2VSdWxlcygmbV9ydWxl
U2V0cy5hdXRob3JTdHlsZSgpLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOwogfQogCi12b2lkIFBh
Z2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xl
ZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQordm9pZCBQ
YWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoU3R5bGU6OlJ1bGVTZXQqIHJ1bGVzLCBi
b29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUp
CiB7CiAgICAgaWYgKCFydWxlcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFn
ZVJ1bGVDb2xsZWN0b3IuaAppbmRleCAxNWRjYjU0ZjgxNy4uOGFlZmIwMjBmYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdDsKICAgICBTdHJpbmcg
cGFnZU5hbWUoaW50IHBhZ2VJbmRleCkgY29uc3Q7CiAKLSAgICB2b2lkIG1hdGNoUGFnZVJ1bGVz
KFJ1bGVTZXQqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0
IFN0cmluZyYgcGFnZU5hbWUpOworICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoU3R5bGU6OlJ1bGVT
ZXQqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmlu
ZyYgcGFnZU5hbWUpOwogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KFZlY3RvcjxTdHls
ZVJ1bGVQYWdlKj4mIG1hdGNoZWRSdWxlcywgY29uc3QgVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYg
cnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBw
YWdlTmFtZSk7CiAKICAgICBjb25zdCBTdHlsZTo6UmVzb2x2ZXI6OlN0YXRlJiBtX3N0YXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCBlOGUzOTUwMzVl
NS4uZTUzYWM4YzEwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlckFw
cGVuZFJ1bGUoUmVmPFN0eWxlUnVsZUJhc2U+JiYgcnVsZSkKIAogICAgIC8vIE5PVEU6IFRoZSBz
ZWxlY3RvciBsaXN0IGhhcyB0byBmaXQgaW50byBSdWxlRGF0YS4gPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTE4MzY5PgogICAgIC8vIElmIHdlJ3JlIGFkZGluZyBhIHJ1bGUgd2l0aCBhIGh1Z2UgbnVt
YmVyIG9mIHNlbGVjdG9ycywgc3BsaXQgaXQgdXAgaW50byBtdWx0aXBsZSBydWxlcwotICAgIGlm
IChpczxTdHlsZVJ1bGU+KHJ1bGUpICYmIGRvd25jYXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQoKSku
c2VsZWN0b3JMaXN0KCkuY29tcG9uZW50Q291bnQoKSA+IFJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0
b3JDb21wb25lbnRDb3VudCkgewotICAgICAgICBtX2NoaWxkUnVsZXMuYXBwZW5kVmVjdG9yKGRv
d25jYXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQoKSkuc3BsaXRJbnRvTXVsdGlwbGVSdWxlc1dpdGhN
YXhpbXVtU2VsZWN0b3JDb21wb25lbnRDb3VudChSdWxlRGF0YTo6bWF4aW11bVNlbGVjdG9yQ29t
cG9uZW50Q291bnQpKTsKKyAgICBpZiAoaXM8U3R5bGVSdWxlPihydWxlKSAmJiBkb3duY2FzdDxT
dHlsZVJ1bGU+KHJ1bGUuZ2V0KCkpLnNlbGVjdG9yTGlzdCgpLmNvbXBvbmVudENvdW50KCkgPiBT
dHlsZTo6UnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KSB7CisgICAgICAg
IG1fY2hpbGRSdWxlcy5hcHBlbmRWZWN0b3IoZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgp
KS5zcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50
KFN0eWxlOjpSdWxlRGF0YTo6bWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgU3R5bGVTaGVldENv
bnRlbnRzOjp3cmFwcGVySW5zZXJ0UnVsZShSZWY8U3R5bGVSdWxlQmFzZT4mJiBydWxlLCB1bnNp
Z25lZCBpCiAgICAgY2hpbGRWZWN0b3JJbmRleCAtPSBtX25hbWVzcGFjZVJ1bGVzLnNpemUoKTsK
IAogICAgIC8vIElmIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3JzIHdvdWxkIG92ZXJmbG93IFJ1bGVE
YXRhLCB3ZSBkcm9wIHRoZSBvcGVyYXRpb24uCi0gICAgaWYgKGlzPFN0eWxlUnVsZT4ocnVsZSkg
JiYgZG93bmNhc3Q8U3R5bGVSdWxlPihydWxlLmdldCgpKS5zZWxlY3Rvckxpc3QoKS5jb21wb25l
bnRDb3VudCgpID4gUnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KQorICAg
IGlmIChpczxTdHlsZVJ1bGU+KHJ1bGUpICYmIGRvd25jYXN0PFN0eWxlUnVsZT4ocnVsZS5nZXQo
KSkuc2VsZWN0b3JMaXN0KCkuY29tcG9uZW50Q291bnQoKSA+IFN0eWxlOjpSdWxlRGF0YTo6bWF4
aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IG1fY2hpbGRSdWxlcy5pbnNlcnQoY2hpbGRWZWN0b3JJbmRleCwgV1RGTW92ZShydWxlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKcmVuYW1lIHRvIFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcAppbmRleCBjYTFiOTRmNzdiYi4uMTE1MzhiOWIy
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiUnVsZVNldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5
bGUgewogCiBzdGF0aWMgYm9vbCBpc1NpYmxpbmdPclN1YmplY3QoTWF0Y2hFbGVtZW50IG1hdGNo
RWxlbWVudCkKIHsKQEAgLTI1MSw0ICsyNTIsNSBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpzaHJp
bmtUb0ZpdCgpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwogfQogCit9IC8vIG5hbWVz
cGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVGZWF0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVy
ZS5oCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlRmVhdHVyZS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5o
CmluZGV4IDI1ZWE0ZWNkOGFhLi43NjQ1OTk5MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVGZWF0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1
cmUuaApAQCAtMzAsOSArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBS
dWxlRGF0YTsKIGNsYXNzIFN0eWxlUnVsZTsKIAorbmFtZXNwYWNlIFN0eWxlIHsKKworY2xhc3Mg
UnVsZURhdGE7CisKIGVudW0gY2xhc3MgTWF0Y2hFbGVtZW50IHsgU3ViamVjdCwgUGFyZW50LCBB
bmNlc3RvciwgRGlyZWN0U2libGluZywgSW5kaXJlY3RTaWJsaW5nLCBBbnlTaWJsaW5nLCBQYXJl
bnRTaWJsaW5nLCBBbmNlc3RvclNpYmxpbmcsIEhvc3QgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXRjaEVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNYXRjaEVsZW1lbnQ6Okhv
c3QpICsgMTsKIApAQCAtODgsNCArOTEsNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjdXJzaXZl
bHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYsIGNvbnN0IENT
U1NlbGVjdG9yJiwgTWF0Y2hFbGVtZW50ID0gTWF0Y2hFbGVtZW50OjpTdWJqZWN0KTsKIH07CiAK
K30gLy8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlU2V0LmNwcApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQu
Y3BwCmluZGV4IDhlYzFjNGQ0ZjU0Li4xOTgwZjk1MjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQu
Y3BwCkBAIC00OSw2ICs0OSw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIFN0eWxlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIApAQCAtMTAzLDcg
KzEwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpCiAgICAgcmV0dXJuIGF0dHJpYnV0ZSA9
PSB0eXBlQXR0ciB8fCBhdHRyaWJ1dGUgPT0gcmVhZG9ubHlBdHRyOwogfQogCi1zdGF0aWMgYm9v
bCBjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHJv
b3RTZWxlY3RvciwgYm9vbCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCkKK3N0YXRpYyBib29sIGNv
bXB1dGVDb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Im
IHJvb3RTZWxlY3RvciwgYm9vbCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCA9IHRydWUpCiB7CiAg
ICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gJnJvb3RTZWxlY3RvcjsKICAgICBkbyB7
CkBAIC0xMTcsNyArMTE4LDcgQEAgc3RhdGljIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IsIGIKIAogICAgICAgICBp
ZiAoY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci0+c2VsZWN0
b3JMaXN0KCkpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHN1YlNlbGVj
dG9yID0gc2VsZWN0b3JMaXN0LT5maXJzdCgpOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0b3IgPSBD
U1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViU2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc3ViU2VsZWN0b3IsIG1hdGNoZXNS
aWdodG1vc3RFbGVtZW50KSkKKyAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZUNvbnRhaW5zVW5j
b21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc3ViU2VsZWN0b3IsIG1hdGNoZXNSaWdodG1vc3RFbGVt
ZW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTEzMCwxMSArMTMxLDYgQEAgc3RhdGljIGJvb2wgY29udGFpbnNVbmNvbW1v
bkF0dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IsIGIKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjb250YWluc1VuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHJvb3RTZWxlY3RvcikKLXsKLSAg
ICByZXR1cm4gY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHJvb3RTZWxlY3Rvciwg
dHJ1ZSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIGRldGVybWlu
ZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiB7CiAg
ICAgZm9yIChjb25zdCBDU1NTZWxlY3RvciogY29tcG9uZW50ID0gc2VsZWN0b3I7IGNvbXBvbmVu
dDsgY29tcG9uZW50ID0gY29tcG9uZW50LT50YWdIaXN0b3J5KCkpIHsKQEAgLTE2Myw3ICsxNTks
NyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3Rv
ckluZGV4LCB1bnNpZ25lZCBzZWxlY3RvckxpcwogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikK
ICAgICAsIG1fbWF0Y2hCYXNlZE9uUnVsZUhhc2goc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbXB1
dGVNYXRjaEJhc2VkT25SdWxlSGFzaCgqc2VsZWN0b3IoKSkpKQogICAgICwgbV9jYW5NYXRjaFBz
ZXVkb0VsZW1lbnQoc2VsZWN0b3JDYW5NYXRjaFBzZXVkb0VsZW1lbnQoKnNlbGVjdG9yKCkpKQot
ICAgICwgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoV2ViQ29yZTo6Y29udGFp
bnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpzZWxlY3RvcigpKSkKKyAgICAsIG1fY29udGFp
bnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbXB1dGVDb250YWluc1VuY29tbW9uQXR0cmli
dXRlU2VsZWN0b3IoKnNlbGVjdG9yKCkpKQogICAgICwgbV9saW5rTWF0Y2hUeXBlKFNlbGVjdG9y
Q2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShzZWxlY3RvcigpKSkKICAgICAsIG1fcHJv
cGVydHlXaGl0ZWxpc3RUeXBlKGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShzZWxlY3Rv
cigpKSkKICAgICAsIG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcyhTZWxlY3Rv
ckZpbHRlcjo6Y29sbGVjdEhhc2hlcygqc2VsZWN0b3IoKSkpCkBAIC0zODQsNyArMzgwLDcgQEAg
dm9pZCBSdWxlU2V0OjphZGRQYWdlUnVsZShTdHlsZVJ1bGVQYWdlKiBydWxlKQogICAgIG1fcGFn
ZVJ1bGVzLmFwcGVuZChydWxlKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyLCBib29sIGlzSW5p
dGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpCit2b2lkIFJ1bGVTZXQ6OmFkZENo
aWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25z
dCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFJlc29sdmVyKiByZXNvbHZlciwgYm9vbCBp
c0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewogICAgIGZvciAoYXV0
byYgcnVsZSA6IHJ1bGVzKSB7CiAgICAgICAgIGlmIChpczxTdHlsZVJ1bGU+KCpydWxlKSkKQEAg
LTQwNCwxNCArNDAwLDEzIEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNvbnN0IE1lCiAgICAgICAgIGVsc2Ug
aWYgKGlzPFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkgJiYgZG93bmNhc3Q8U3R5bGVSdWxlU3Vw
cG9ydHM+KCpydWxlKS5jb25kaXRpb25Jc1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgYWRkQ2hp
bGRSdWxlcyhkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1bGUpLmNoaWxkUnVsZXMoKSwg
bWVkaXVtLCByZXNvbHZlciwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJl
ZSk7CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKLSAgICAgICAgZWxzZSBpZiAo
aXM8U3R5bGVSdWxlVmlld3BvcnQ+KCpydWxlKSAmJiByZXNvbHZlcikgeworICAgICAgICBlbHNl
IGlmIChpczxTdHlsZVJ1bGVWaWV3cG9ydD4oKnJ1bGUpICYmIHJlc29sdmVyKQogICAgICAgICAg
ICAgcmVzb2x2ZXItPnZpZXdwb3J0U3R5bGVSZXNvbHZlcigpLT5hZGRWaWV3cG9ydFJ1bGUoZG93
bmNhc3Q8U3R5bGVSdWxlVmlld3BvcnQ+KHJ1bGUuZ2V0KCkpKTsKLSAgICAgICAgfQogI2VuZGlm
CiAgICAgfQogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRD
b250ZW50cyYgc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGU6
OlJlc29sdmVyKiByZXNvbHZlcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoU3R5
bGVTaGVldENvbnRlbnRzJiBzaGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVt
LCBSZXNvbHZlciogcmVzb2x2ZXIpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogc2hlZXQuaW1w
b3J0UnVsZXMoKSkgewogICAgICAgICBpZiAocnVsZS0+c3R5bGVTaGVldCgpICYmICghcnVsZS0+
bWVkaWFRdWVyaWVzKCkgfHwgbWVkaXVtLmV2YWx1YXRlKCpydWxlLT5tZWRpYVF1ZXJpZXMoKSwg
cmVzb2x2ZXIpKSkKQEAgLTQ3MCw0ICs0NjUsNSBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0
KCkKICAgICBtX2ZlYXR1cmVzLnNocmlua1RvRml0KCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFN0
eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCnNpbWlsYXJpdHkg
aW5kZXggOTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKcmVuYW1l
IHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCA2MTgwYzQ5YmNiYi4uN2Zh
ZGZhNjVhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCkBAIC0zMiwxNCArMzIsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHsKLSAgICBQcm9w
ZXJ0eVdoaXRlbGlzdE5vbmUgICA9IDAsCi0gICAgUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXIsCi0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFByb3BlcnR5V2hpdGVsaXN0Q3VlCi0jZW5kaWYK
LX07Ci0KIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIE1l
ZGlhUXVlcnlFdmFsdWF0b3I7CkBAIC00Nyw4ICszOSwxNiBAQCBjbGFzcyBOb2RlOwogY2xhc3Mg
U3R5bGVTaGVldENvbnRlbnRzOwogCiBuYW1lc3BhY2UgU3R5bGUgeworCiBjbGFzcyBSZXNvbHZl
cjsKLX0KKworZW51bSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgeworICAgIFByb3BlcnR5V2hpdGVs
aXN0Tm9uZSAgID0gMCwKKyAgICBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciwKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUKKyNlbmRpZgorfTsKIAogZW51
bSBjbGFzcyBNYXRjaEJhc2VkT25SdWxlSGFzaCA6IHVuc2lnbmVkIHsKICAgICBOb25lLApAQCAt
MTA3LDggKzEwNywxMiBAQCBjbGFzcyBSdWxlU2V0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSdWxlU2V0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0
IFJ1bGVTZXRTZWxlY3RvclBhaXIgewotICAgICAgICBSdWxlU2V0U2VsZWN0b3JQYWlyKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3Rvciwgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IHJ1bGVTZXQp
IDogc2VsZWN0b3Ioc2VsZWN0b3IpLCBydWxlU2V0KFdURk1vdmUocnVsZVNldCkpIHsgfQotICAg
ICAgICBSdWxlU2V0U2VsZWN0b3JQYWlyKGNvbnN0IFJ1bGVTZXRTZWxlY3RvclBhaXImIHBhaXIp
IDogc2VsZWN0b3IocGFpci5zZWxlY3RvciksIHJ1bGVTZXQoY29uc3RfY2FzdDxSdWxlU2V0U2Vs
ZWN0b3JQYWlyKj4oJnBhaXIpLT5ydWxlU2V0LnJlbGVhc2UoKSkgeyB9CisgICAgICAgIFJ1bGVT
ZXRTZWxlY3RvclBhaXIoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNldD4gcnVsZVNldCkKKyAgICAgICAgICAgIDogc2VsZWN0b3Ioc2VsZWN0b3IpLCBy
dWxlU2V0KFdURk1vdmUocnVsZVNldCkpCisgICAgICAgIHsgfQorICAgICAgICBSdWxlU2V0U2Vs
ZWN0b3JQYWlyKGNvbnN0IFJ1bGVTZXRTZWxlY3RvclBhaXImIHBhaXIpCisgICAgICAgICAgICA6
IHNlbGVjdG9yKHBhaXIuc2VsZWN0b3IpLCBydWxlU2V0KGNvbnN0X2Nhc3Q8UnVsZVNldFNlbGVj
dG9yUGFpcio+KCZwYWlyKS0+cnVsZVNldC5yZWxlYXNlKCkpCisgICAgICAgIHsgfQogCiAgICAg
ICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bGVTZXQ+IHJ1bGVTZXQ7CkBAIC0xODYsMTEgKzE5MCwxMiBAQCBpbmxpbmUgY29uc3QgUnVs
ZVNldDo6UnVsZURhdGFWZWN0b3IqIFJ1bGVTZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcm
IGtleSwgYgogICAgIHJldHVybiB0YWdSdWxlcy0+Z2V0KGtleSk7CiB9CiAKK30gLy8gbmFtZXNw
YWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewogCiAv
LyBSdWxlRGF0YSBpcyBzaW1wbGUgZW5vdWdoIHRoYXQgaW5pdGlhbGl6aW5nIHRvIDAgYW5kIG1v
dmluZyB3aXRoIG1lbWNweSB3aWxsIHRvdGFsbHkgd29yay4KLXRlbXBsYXRlPD4gc3RydWN0IFZl
Y3RvclRyYWl0czxXZWJDb3JlOjpSdWxlRGF0YT4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6U3R5bGU6OlJ1bGVE
YXRhPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCmluZGV4IGZkZDQ3ZjMzM2E1Li45
OTNiNTEyM2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1hcnF1ZWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJNYXRoTUxFbGVtZW50
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlF1aXJrcy5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQWRqdXN0ZXIuaAppbmRleCA4MDViMDVkNmViZC4uZDM3ZTJkNjY3YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJT
dHlsZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNw
cAppbmRleCBkNGM2MDBlODRkZC4uNzRmNWIwYThjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVCdWlsZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgiCiAjaW5jbHVkZSAiU3R5bGVGb250U2l6
ZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFN0eWxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlSW52YWxpZGF0b3IuaAppbmRleCAzZmQ2M2JjMzQ5OS4uMmVmZjQ0YTgwOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmgKQEAgLTMzLDEzICszMywxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOwotY2xhc3MgUnVsZVNldDsKIGNsYXNzIFNlbGVjdG9yRmlsdGVy
OwogY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAogbmFtZXNw
YWNlIFN0eWxlIHsKIAorY2xhc3MgUnVsZVNldDsKKwogY2xhc3MgSW52YWxpZGF0b3IgewogcHVi
bGljOgogICAgIEludmFsaWRhdG9yKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>