<?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>177125</bug_id>
          
          <creation_ts>2017-09-19 00:28:15 -0700</creation_ts>
          <short_desc>Make a playground where people can try WSL</short_desc>
          <delta_ts>2018-10-13 19:35:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          <dependson>177253</dependson>
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350263</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-19 00:28:15 -0700</bug_when>
    <thetext>Make a playground where people can try WSL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350264</commentid>
    <comment_count>1</comment_count>
      <attachid>321186</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-19 00:30:20 -0700</bug_when>
    <thetext>Created attachment 321186
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350460</commentid>
    <comment_count>2</comment_count>
      <attachid>321234</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-19 13:02:32 -0700</bug_when>
    <thetext>Created attachment 321234
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350586</commentid>
    <comment_count>3</comment_count>
      <attachid>321267</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-19 17:20:27 -0700</bug_when>
    <thetext>Created attachment 321267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350587</commentid>
    <comment_count>4</comment_count>
      <attachid>321268</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-19 17:25:25 -0700</bug_when>
    <thetext>Created attachment 321268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350903</commentid>
    <comment_count>5</comment_count>
      <attachid>321344</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-20 12:32:05 -0700</bug_when>
    <thetext>Created attachment 321344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350914</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-20 13:07:22 -0700</bug_when>
    <thetext>Committed r222280: &lt;http://trac.webkit.org/changeset/222280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353410</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:28:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468984</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 19:35:30 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/180</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321186</attachid>
            <date>2017-09-19 00:30:20 -0700</date>
            <delta_ts>2017-09-19 13:02:31 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-177125-20170919003019.patch</filename>
            <type>text/plain</type>
            <size>20325</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjAxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzgzZWNjNjRhYjQ5NWU0MDY1MjIzNGU3Mzg0ZDkwNzY2
ZmQwODQ4Ni4uZjkwYWIxMTY2ZmI2MjdhNWVjMDBhY2U2NThlZmRiMjYxOTU5Yjg0MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE3LTA5LTE5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBhIHBsYXlncm91bmQgd2hlcmUgcGVvcGxlIGNhbiB0cnkgV1NMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qczoKKyAgICAgICAgKGNhbGxGdW5jdGlvbik6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAgICAgKEZ1
bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW5saW5lLmpzOgorICAgICAgICAocmVzb2x2ZUlubGluZWRGdW5jdGlvbik6CisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanM6CisgICAgICAgIChO
YW1lQ29udGV4dC5wcm90b3R5cGUuZ2V0IGxldCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qczoKKyAgICAgICAgKHJlc29sdmVPdmVybG9h
ZEltcGwpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFy
eS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAgKFRFU1RfaW5z
dGFudGlhdGVTdHJ1Y3RJblN0cnVjdCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvaW5kZXguaHRtbDogQWRkZWQuCisKIDIwMTctMDktMTggIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV1NMXSBDYW5ub3QgcHV0IHRlbXBsYXRlZCBzdHJ1Y3Rz
IGluc2lkZSBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DYWxsRnVuY3Rpb24uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRnVu
Y3Rpb24uanMKaW5kZXggNDMzMGM5YmJkOThlOTg3Mzk4Y2VkY2IxZDdjZjNlMWI3OGE4ODU1Ny4u
ZjBmMDM5ZjU0NjJkMDc4MWQ4MmIzNDY0Yzg3NDc4NzE0YzBhMTczNyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcwpAQCAtMjgsNyArMjgsNyBAQAog
ZnVuY3Rpb24gY2FsbEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3Vt
ZW50TGlzdCkKIHsKICAgICBsZXQgYXJndW1lbnRUeXBlcyA9IGFyZ3VtZW50TGlzdC5tYXAoYXJn
dW1lbnQgPT4gYXJndW1lbnQudHlwZSk7Ci0gICAgbGV0IGZ1bmNPckZhaWx1cmVzID0gcmVzb2x2
ZUlubGluZWRGdW5jdGlvbihwcm9ncmFtLCBuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5
cGVzKTsKKyAgICBsZXQgZnVuY09yRmFpbHVyZXMgPSByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHBy
b2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHRydWUpOwogICAgIGlm
ICghKGZ1bmNPckZhaWx1cmVzIGluc3RhbmNlb2YgRnVuYykpIHsKICAgICAgICAgbGV0IGZhaWx1
cmVzID0gZnVuY09yRmFpbHVyZXM7CiAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCI8Y2Fs
bEZ1bmN0aW9uPiIsICJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlvbiBjYWxsICIgKyBuYW1lICsgIjwi
ICsgdHlwZUFyZ3VtZW50cyArICI+KCIgKyBhcmd1bWVudExpc3QgKyAiKSIgKyAoZmFpbHVyZXMu
bGVuZ3RoID8gIjsgdHJpZWQ6XG4iICsgZmFpbHVyZXMuam9pbigiXG4iKSA6ICIiKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwppbmRleCA1MjczZGUwM2Q5MmNlODUyODhiMGVl
NjYzZWI5YzQ0MGFjMDhjNmIzLi40ZGUyMTE3YjA1YmFkYjExYzhkNzM3ZWNlYWU5NTA4Y2Y0ZTU5
MGYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKQEAgLTYwLDcgKzYwLDEz
IEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAKICAgICB0b0RlY2xTdHJpbmcoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLmlzQ2FzdCA/ICJvcGVyYXRvciAiICsgdGhpcy5y
ZXR1cm5UeXBlIDogdGhpcy5yZXR1cm5UeXBlICsgIiAiICsgdGhpcy5uYW1lKSArICI8IiArIHRo
aXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAg
ICBsZXQgdHlwZSA9ICIiOworICAgICAgICBpZiAodGhpcy5zaGFkZXJUeXBlKQorICAgICAgICAg
ICAgdHlwZSA9IHRoaXMuc2hhZGVyVHlwZSArICIgIjsKKyAgICAgICAgbGV0IHJldHVybkFuZE5h
bWUgPSB0aGlzLnJldHVyblR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgIGlmICh0aGlz
LmlzQ2FzdCkKKyAgICAgICAgICAgIHJldHVybkFuZE5hbWUgPSAib3BlcmF0b3IgIiArIHRoaXMu
cmV0dXJuVHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUgKyByZXR1cm5BbmROYW1lICsgIjwiICsg
dGhpcy50eXBlUGFyYW1ldGVycyArICI+KCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CiAgICAg
fQogICAgIAogICAgIHRvU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0lubGluZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGlu
ZS5qcwppbmRleCAxN2UwMGU3YjczYWViMjc5Nzc5OWM3ZTVmNmFlYTRjYTM0ZDc4ZGQ0Li45ZGJi
MzBkZWVhOTMwNzc4Y2Q0NzRiODJiOTA1YWM1ZmRkZmY4MGQwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5saW5lLmpzCkBAIC01Myw5ICs1Myw5IEBAIGZ1bmN0aW9uIF9pbmxpbmVG
dW5jdGlvbihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykKICAgICBmdW5jLmlubGluZWQgPSB0cnVl
OwogfQogCi1mdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5
cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCitmdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0
aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGFsbG93RW50
cnlQb2ludCA9IGZhbHNlKQogewotICAgIGxldCBvdmVybG9hZCA9IHByb2dyYW0uZ2xvYmFsTmFt
ZUNvbnRleHQucmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVu
dFR5cGVzKTsKKyAgICBsZXQgb3ZlcmxvYWQgPSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnJl
c29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgdW5k
ZWZpbmVkLCBhbGxvd0VudHJ5UG9pbnQpOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYykKICAgICAg
ICAgcmV0dXJuIG92ZXJsb2FkLmZhaWx1cmVzOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYy50eXBl
UGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05h
bWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQu
anMKaW5kZXggZWRjMjhiMThkYWIzOWMzZTgzNzcyZDI1NmUyYTg1NmQ3ZTUwOWRhNC4uZTYzOTEz
ODQ2ZmRjOGQ5YWExYjE4OTNiMTM5OTQ1ZmZiMmE3YWYzYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTk2LDEzICs5NiwxMyBAQCBjbGFzcyBO
YW1lQ29udGV4dCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHJl
c29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0
dXJuVHlwZSkKKyAgICByZXNvbHZlRnVuY092ZXJsb2FkKG5hbWUsIHR5cGVBcmd1bWVudHMsIGFy
Z3VtZW50VHlwZXMsIHJldHVyblR5cGUsIGFsbG93RW50cnlQb2ludCA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgbGV0IGZ1bmN0aW9ucyA9IHRoaXMuZ2V0KEZ1bmMsIG5hbWUpOwogICAgICAgICBp
ZiAoIWZ1bmN0aW9ucykKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtdfTsKICAgICAg
ICAgCi0gICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFy
Z3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSk7CisgICAgICAgIHJldHVybiByZXNv
bHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywg
cmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50KTsKICAgICB9CiAgICAgCiAgICAgZ2V0IGN1cnJl
bnRTdGF0ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jl
c29sdmVPdmVybG9hZEltcGwuanMKaW5kZXggOTdmZmEzOGJhNzIwZWE4YjBiODVhMWQ5YjQyNDZj
NjczZDdjYzc5NC4uN2UyMjE1NmRlMWFjNWUyYTZjNzI0YWQzNDY5ZGM5MWU3NDZmMjU2NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJ
bXBsLmpzCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotZnVuY3Rpb24g
cmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlw
ZXMsIHJldHVyblR5cGUpCitmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywg
dHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50
ID0gZmFsc2UpCiB7CiAgICAgaWYgKCFmdW5jdGlvbnMpCiAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiTnVsbCBmdW5jdGlvbnM7IHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgdGhlIGNh
bGxlci4iKTsKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChm
dW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUKICAgICBs
ZXQgZmFpbHVyZXMgPSBbXTsKICAgICBsZXQgc3VjY2Vzc2VzID0gW107CiAgICAgZm9yIChsZXQg
ZnVuYyBvZiBmdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSkgeworICAg
ICAgICBpZiAoIWFsbG93RW50cnlQb2ludCAmJiBmdW5jLnNoYWRlclR5cGUpIHsKICAgICAgICAg
ICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkZ1
bmN0aW9uIGlzIGEgIiArIGZ1bmMuc2hhZGVyVHlwZSArICIgc2hhZGVyLCBzbyBpdCBjYW5ub3Qg
YmUgY2FsbGVkIGZyb20gd2l0aGluIGFuIGV4aXN0aW5nIHNoYWRlci4iKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXggZDU3NDIyNDFjOGU2MmU0ZTE4NWI5MDZjYTY5MmQ0
ZDlkNGUxYTc1MS4uNDQ2MGE4ODY2NjBlYjBlMDlkN2M2MmY2NjdmMDkwODdkMjVmYmJmNSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpA
QCAtMTA3LDYgKzEwNyw3IEBAIGJvb2wgb3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKQogICAgICAg
ICByZXR1cm4gYjsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKIGJvb2wgb3BlcmF0b3J8KGJvb2wg
YSwgYm9vbCBiKQogewogICAgIGlmIChhKQpAQCAtMTE1LDEyICsxMTYsMTQgQEAgYm9vbCBvcGVy
YXRvcnwoYm9vbCBhLCBib29sIGIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBm
YWxzZTsKIH0KKwogYm9vbCBvcGVyYXRvcl4oYm9vbCBhLCBib29sIGIpCiB7CiAgICAgaWYgKGEp
CiAgICAgICAgIHJldHVybiAhYjsKICAgICByZXR1cm4gYjsKIH0KKwogYm9vbCBvcGVyYXRvcn4o
Ym9vbCB2YWx1ZSkKIHsKICAgICByZXR1cm4gIXZhbHVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5odG1sCmluZGV4IDYyZGEyMzAxYTljMTczMjlmOTJhNzlmY2FkYWUwNmZhOTRh
ZDA5MzguLmI2M2QzM2IwN2NlZjI5MTZmMjA1MzFmYWNlOTc2Y2JiYTk3YTFjOTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTc1LDcgKzc1LDYgQEAKIDxzY3Jp
cHQgc3JjPSJJbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnRMaXRlcmFs
VHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iTGV0RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
TGV4ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGIyNmU0YTAxZjI5
OWMzZjg2ZWM0MTU1YmExYmE1ODMxNmU0ODVjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMCwwICsxLDM1NSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ik5vZGUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlZmVyZW5j
ZVR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhbHVlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXdyaXRl
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmlzaXRvci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ3JlYXRl
TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbi5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJBZGRyZXNzU3BhY2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IkFub255bW91c1ZhcmlhYmxlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJBcnJheVJlZlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkFycmF5
VHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQXV0b1dyYXBwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJs
b2NrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhbGxFeHBy
ZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDYWxsRnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVj
a0xpdGVyYWxUeXBlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tMb29wcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tV
bnJlYWNoYWJsZUNvZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQ2xvbmVQcm9ncmFtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDb21tYUV4cHJl
c3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnN0ZXhwckZvbGRlci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQ29udGludWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnZl
cnRQdHJUb0FycmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG9X
aGlsZUxvb3AuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IkRvdWJsZUxpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IkRvdWJsZUxpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJEZXJl
ZmVyZW5jZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVBcnJheVJlZi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iRUJ1ZmZlckJ1aWxkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVQdHIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVudW1MaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJFbnVtTWVtYmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFbnVtVHlwZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRXZhbHVhdGlvbkNvbW1vbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iRXZhbHVhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFeHBy
ZXNzaW9uRmluZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGaWVsZC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRmluZEhpZ2hab21iaWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJGbGF0dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJG
bG9hdExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZsb2F0TGl0ZXJhbFR5cGUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZvbGRDb25zdGV4cHJzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJGb3JMb29wLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jRGVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJGdW5jSW5zdGFudGlhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jUGFy
YW1ldGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jdGlvbkxpa2VCbG9jay5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSGlnaFpvbWJpZUZpbmRlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iSWRlbnRpdHlFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJJZlN0YXRlbWVudC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5kZXhFeHByZXNzaW9u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbmZlclR5cGVzRm9yQ2FsbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iSW5saW5lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbmxp
bmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbnN0YW50aWF0ZUltbWVkaWF0ZXMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkludExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IkludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbnRyaW5z
aWNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMZXhlci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iTGV4ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGl0ZXJhbFR5
cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMb2dpY2FsRXhwcmVzc2lvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iTG9vcENoZWNrZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik1ha2VBcnJh
eVJlZkV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik1ha2VQdHJFeHByZXNz
aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYW1lQ29udGV4dC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iTmFtZVJlc29sdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJO
YXRpdmVGdW5jLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVGdW5jSW5zdGFuY2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik5hdGl2ZVR5cGUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ik5hdGl2ZVR5cGVJbnN0YW5jZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Tm9ybWFsVXNlUHJvcGVydHlSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTnVs
bExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik51bGxUeXBlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJQYXJzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJlcGFyZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvcGVydHlSZXNvbHZlci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvdG9j
b2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3RvY29sRGVjbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iUHJvdG9jb2xGdW5jRGVjbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iUHJvdG9jb2xSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlB0clR5cGUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlJlc29sdmVOYW1lcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb2x2ZU92
ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXR1cm5D
aGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iU3RhdGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdHJ1
Y3RMYXlvdXRCdWlsZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdHJ1Y3RUeXBlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdWJzdGl0dXRpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IlN5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJTeW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5cGVPclZhcmlhYmxlUmVmLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJUeXBlUGFyYW1ldGVyUmV3cml0ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlR5cGVSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5cGVWYXJpYWJsZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZVZhcmlhYmxlVHJhY2tlci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iVHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
VWludExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVW5pZmljYXRpb25Db250ZXh0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJWYXJpYWJsZURlY2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhcmlh
YmxlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iV1N5bnRheEVycm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJXVHJhcEVycm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXaGlsZUxvb3AuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IldyYXBDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNTaGFkZXJTb3VyY2Ugewor
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgd2lkdGg6IDcwMHB4OworICAgIGhlaWdo
dDogNDAwcHg7Cit9CisKK3RkIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwv
c3R5bGU+Cis8c2NyaXB0PgorbGV0IGRlZmF1bHRTaGFkZXJTb3VyY2UgPSBgc3RydWN0IFZlcnRl
eElucHV0IHsKKyAgICB2ZWMyPGZsb2F0PiBwb3NpdGlvbjsKKyAgICB2ZWMzPGZsb2F0PiBjb2xv
cjsKK30KKworc3RydWN0IFZlcnRleE91dHB1dCB7CisgICAgdmVjNDxmbG9hdD4gd3NsX1Bvc2l0
aW9uOworICAgIHZlYzM8ZmxvYXQ+IGNvbG9yOworfQorCitzdHJ1Y3QgRnJhZ21lbnRPdXRwdXQg
eworICAgIHZlYzQ8ZmxvYXQ+IHdzbF9Db2xvcjsKK30KKwordmVydGV4IFZlcnRleE91dHB1dCB2
ZXJ0ZXhTaGFkZXIoVmVydGV4SW5wdXQgdmVydGV4SW5wdXQpIHsKKyAgICBWZXJ0ZXhPdXRwdXQg
cmVzdWx0OworICAgIHJlc3VsdC53c2xfUG9zaXRpb24gPSBmbG9hdDQodmVydGV4SW5wdXQucG9z
aXRpb24sIDAuLCAxLik7CisgICAgcmVzdWx0LmNvbG9yID0gdmVydGV4SW5wdXQuY29sb3I7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnJhZ21lbnQgRnJhZ21lbnRPdXRwdXQgZnJhZ21lbnRT
aGFkZXIoVmVydGV4T3V0cHV0IHN0YWdlSW4pIHsKKyAgICBGcmFnbWVudE91dHB1dCByZXN1bHQ7
CisgICAgcmVzdWx0LndzbF9Db2xvciA9IGZsb2F0NChzdGFnZUluLmNvbG9yLCAxLik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK31gOworCitsZXQgc2hhZGVyU291cmNlVGV4dGFyZWE7CitsZXQgbG9j
YWxTdG9yYWdlOworbGV0IGNvbXBpbGVMb2dFbGVtZW50OworbGV0IHZlcnRleFNoYWRlclNlbGVj
dDsKK2xldCBmcmFnbWVudFNoYWRlclNlbGVjdDsKK2xldCBkYXRhVGFibGU7CisKK2xldCBwcm9n
cmFtOworbGV0IGF2YWlsYWJsZVZlcnRleFNoYWRlcnM7CitsZXQgYXZhaWxhYmxlRnJhZ21lbnRT
aGFkZXJzOworbGV0IGN1cnJlbnRWZXJ0ZXhTaGFkZXI7CitsZXQgY3VycmVudEZyYWdtZW50U2hh
ZGVyOworbGV0IGlubGluZWRWZXJ0ZXhTaGFkZXI7CitsZXQgaW5saW5lZEZyYWdtZW50U2hhZGVy
OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgIHNo
YWRlclNvdXJjZVRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlNoYWRlclNvdXJj
ZSIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJDb21waWxlQnV0dG9uIikuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBjb21waWxlUHJlc2VudFNoYWRlclNvdXJjZSk7CisgICAgY29t
cGlsZUxvZ0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQ29tcGlsZUxvZyIpOwor
ICAgIHZlcnRleFNoYWRlclNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJWZXJ0ZXhT
aGFkZXJTZWxlY3QiKTsKKyAgICBmcmFnbWVudFNoYWRlclNlbGVjdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJGcmFnbWVudFNoYWRlclNlbGVjdCIpOworICAgIHZlcnRleFNoYWRlclNlbGVj
dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBzZWxlY3RlZFNoYWRlcnNDaGFuZ2VkKTsKKyAg
ICBmcmFnbWVudFNoYWRlclNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBzZWxlY3Rl
ZFNoYWRlcnNDaGFuZ2VkKTsKKyAgICBkYXRhVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiRGF0YVRhYmxlIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlJ1bkJ1dHRvbiIp
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcnVuU2hhZGVycyk7CisKKyAgICBsZXQgc2hhZGVy
U291cmNlOworICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZSA9IHdpbmRvdy5sb2NhbFN0
b3JhZ2U7CisgICAgICAgIHNoYWRlclNvdXJjZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJTaGFk
ZXJTb3VyY2UiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorCisgICAgaWYgKCFzaGFkZXJT
b3VyY2UpCisgICAgICAgIHNoYWRlclNvdXJjZSA9IGRlZmF1bHRTaGFkZXJTb3VyY2U7CisgICAg
c2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUgPSBzaGFkZXJTb3VyY2U7CisgICAgY29tcGlsZVBy
ZXNlbnRTaGFkZXJTb3VyY2UoKTsKK30pOworCitmdW5jdGlvbiBjb21waWxlUHJlc2VudFNoYWRl
clNvdXJjZSgpIHsKKyAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOworICAg
IGxldCByZXN1bHQgPSBjb21waWxlKHNoYWRlclNvdXJjZVRleHRhcmVhLnZhbHVlKTsKKyAgICBp
ZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBQcm9ncmFtKSkgeworICAgICAgICBjb21waWxlTG9nRWxl
bWVudC50ZXh0Q29udGVudCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgc2hhZGVyU291cmNlID0gbG9jYWxTdG9yYWdlLnNl
dEl0ZW0oIlNoYWRlclNvdXJjZSIsIHNoYWRlclNvdXJjZVRleHRhcmVhLnZhbHVlKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgfQorCisgICAgcHJvZ3JhbSA9IHJlc3VsdDsKKyAgICBhdmFpbGFi
bGVWZXJ0ZXhTaGFkZXJzID0gW107CisgICAgYXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzID0gW107
CisgICAgZm9yIChmdW5jdGlvbk5hbWVzIG9mIHByb2dyYW0uZnVuY3Rpb25zLnZhbHVlcygpKSB7
CisgICAgICAgIGZvciAoZnVuYyBvZiBmdW5jdGlvbk5hbWVzKSB7CisgICAgICAgICAgICBpZiAo
ZnVuYy5zaGFkZXJUeXBlID09ICJ2ZXJ0ZXgiKQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZVZl
cnRleFNoYWRlcnMucHVzaChmdW5jKTsKKyAgICAgICAgICAgIGlmIChmdW5jLnNoYWRlclR5cGUg
PT0gImZyYWdtZW50IikKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnMu
cHVzaChmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3aGlsZSAodmVydGV4U2hhZGVyU2Vs
ZWN0LmZpcnN0Q2hpbGQpCisgICAgICAgIHZlcnRleFNoYWRlclNlbGVjdC5yZW1vdmVDaGlsZCh2
ZXJ0ZXhTaGFkZXJTZWxlY3QuZmlyc3RDaGlsZCk7CisgICAgd2hpbGUgKGZyYWdtZW50U2hhZGVy
U2VsZWN0LmZpcnN0Q2hpbGQpCisgICAgICAgIGZyYWdtZW50U2hhZGVyU2VsZWN0LnJlbW92ZUNo
aWxkKGZyYWdtZW50U2hhZGVyU2VsZWN0LmZpcnN0Q2hpbGQpOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYXZhaWxhYmxlVmVydGV4U2hhZGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICBsZXQg
ZnVuYyA9IGF2YWlsYWJsZVZlcnRleFNoYWRlcnNbaV07CisgICAgICAgIGxldCBvcHRpb24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLnZhbHVlID0g
aTsKKyAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0gZnVuYy5uYW1lOworICAgICAgICB2ZXJ0
ZXhTaGFkZXJTZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgbGV0IGZ1bmMgPSBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnNbaV07CisgICAgICAgIGxldCBv
cHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9u
LnZhbHVlID0gaTsKKyAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0gZnVuYy5uYW1lOworICAg
ICAgICBmcmFnbWVudFNoYWRlclNlbGVjdC5hcHBlbmRDaGlsZChvcHRpb24pOworICAgIH0KKyAg
ICBzZWxlY3RlZFNoYWRlcnNDaGFuZ2VkKCk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGVkU2hhZGVy
c0NoYW5nZWQoKSB7CisgICAgY3VycmVudFZlcnRleFNoYWRlciA9IGF2YWlsYWJsZVZlcnRleFNo
YWRlcnNbdmVydGV4U2hhZGVyU2VsZWN0LnNlbGVjdGVkSW5kZXhdOworICAgIGN1cnJlbnRGcmFn
bWVudFNoYWRlciA9IGF2YWlsYWJsZUZyYWdtZW50U2hhZGVyc1tmcmFnbWVudFNoYWRlclNlbGVj
dC5zZWxlY3RlZEluZGV4XTsKKworICAgIGlubGluZWRWZXJ0ZXhTaGFkZXIgPSBwcm9ncmFtLmZ1
bmNJbnN0YW50aWF0b3IuZ2V0VW5pcXVlKGN1cnJlbnRWZXJ0ZXhTaGFkZXIsIFtdKTsKKyAgICBf
aW5saW5lRnVuY3Rpb24ocHJvZ3JhbSwgaW5saW5lZFZlcnRleFNoYWRlciwgbmV3IFZpc2l0aW5n
U2V0KGN1cnJlbnRWZXJ0ZXhTaGFkZXIpKTsKKworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhl
IG91dHB1dCBvZiB0aGUgdmVydGV4IHNoYWRlciBtYXRjaGVzIHRoZSBpbnB1dCBvZiB0aGUgZnJh
Z21lbnQgc2hhZGVyCisKKyAgICBsZXQgYXJndW1lbnRJbmZvID0gW107CisgICAgZnVuY3Rpb24g
YnVpbGRBcmd1bWVudEluZm8ocHJlZml4LCB0eXBlKSB7CisgICAgICAgIGlmICh0eXBlIGluc3Rh
bmNlb2YgTmF0aXZlVHlwZSkgeworICAgICAgICAgICAgYXJndW1lbnRJbmZvLnB1c2goe25hbWU6
IHByZWZpeH0pOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBl
KSB7CisgICAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiB0eXBlLmZpZWxkcykgeworICAgICAg
ICAgICAgICAgIGJ1aWxkQXJndW1lbnRJbmZvKHByZWZpeCArICIuIiArIGZpZWxkLm5hbWUsIGZp
ZWxkLnR5cGUudHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZm9y
IChsZXQgcGFyYW1ldGVyIG9mIGlubGluZWRWZXJ0ZXhTaGFkZXIucGFyYW1ldGVycykgeworICAg
ICAgICBidWlsZEFyZ3VtZW50SW5mbyhwYXJhbWV0ZXIubmFtZSwgcGFyYW1ldGVyLnR5cGUudHlw
ZSk7CisgICAgfQorICAgIHdoaWxlIChkYXRhVGFibGUubGFzdENoaWxkLm5vZGVOYW1lID09ICJU
UiIpCisgICAgICAgIGRhdGFUYWJsZS5yZW1vdmVDaGlsZChkYXRhVGFibGUubGFzdENoaWxkKTsK
KyAgICBmb3IgKGxldCBpbmZvIG9mIGFyZ3VtZW50SW5mbykgeworICAgICAgICBsZXQgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgbGV0IHZhcmlhYmxlQ2VsbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGxldCB2YWx1ZUNlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXJpYWJsZUNlbGwudGV4dENv
bnRlbnQgPSBpbmZvLm5hbWU7CisgICAgICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0Iik7CisgICAgICAgIGlucHV0LnR5cGUgPSAidGV4dCI7CisgICAgICAgIHZh
bHVlQ2VsbC5hcHBlbmRDaGlsZChpbnB1dCk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh2YXJp
YWJsZUNlbGwpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodmFsdWVDZWxsKTsKKyAgICAgICAg
ZGF0YVRhYmxlLmFwcGVuZENoaWxkKHJvdyk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5TaGFk
ZXJzKCkgeworICAgIGxldCBmdW5jID0gaW5saW5lZFZlcnRleFNoYWRlcjsKKyAgICAvLyBGSVhN
RTogQ3JlYXRlIHN0cnVjdHVyZXMgYW5kIGNvcHkgdGhlbSBpbnRvIHRoZSBmdW5jdGlvbidzIGFy
Z3VtZW50cworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGxldCB0eXBlID0gYXJndW1lbnRUeXBlc1tpXS5pbnN0YW50aWF0ZWRU
eXBlOworICAgICAgICB0eXBlLnZpc2l0KG5ldyBTdHJ1Y3RMYXlvdXRCdWlsZGVyKCkpOworICAg
ICAgICBmdW5jLnBhcmFtZXRlcnNbaV0uZVB0ci5jb3B5RnJvbShhcmd1bWVudExpc3RbaV0uZVB0
ciwgdHlwZS5zaXplKTsKKyAgICB9CisgICAgbGV0IHJlc3VsdCA9IG5ldyBFdmFsdWF0b3IocHJv
Z3JhbSkucnVuRnVuYyhmdW5jKTsKKyAgICAvL3JldHVybiBuZXcgVHlwZWRWYWx1ZShmdW5jLnVu
aW5zdGFudGlhdGVkUmV0dXJuVHlwZSwgcmVzdWx0KTsKKyAgICAvLyBGSVhNRTogUnVuIHRoZSBm
cmFnbWVudCBzaGFkZXIgd2l0aCB0aGUgaW5wdXQgb2YgdGhlIHZlcnRleCBzaGFkZXIKKyAgICAv
LyBGSVhNRTogSXRlcmF0ZSB0aHJvdWdoIHRoZSByZXN1bHQgYW5kIGRpc3BsYXkgdGhlIHZhbHVl
cworfQorCitmdW5jdGlvbiBjb21waWxlKGNvZGUpIHsKKyAgICB0cnkgeworICAgICAgICByZXR1
cm4gcHJlcGFyZSgiL2ludGVybmFsL3Rlc3QiLCAwLCBjb2RlKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIHJldHVybiBlOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8aDE+V2ViR1BVIFNoYWRpbmcgTGFuZ3VhZ2U8L2gxPgorPG9sPgorPGxpPgorICAgIFdyaXRl
IGEgc2hhZGVyIQorICAgIDxkaXY+PHRleHRhcmVhIGlkPSJTaGFkZXJTb3VyY2UiPjwvdGV4dGFy
ZWE+PC9kaXY+CisgICAgPGRpdiBpZD0iQ29tcGlsZUxvZyI+PC9kaXY+CisgICAgPGRpdj48aW5w
dXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQ29tcGlsZSIgaWQ9IkNvbXBpbGVCdXR0b24iPjwvZGl2
PgorPC9saT4KKzxsaT4KKyAgICBTZWxlY3QgeW91ciBzaGFkZXJzCisgICAgPGRpdj48bGFiZWw+
VmVydGV4IFNoYWRlciA8c2VsZWN0IGlkPSJWZXJ0ZXhTaGFkZXJTZWxlY3QiPjwvc2VsZWN0Pjwv
bGFiZWw+PC9kaXY+CisgICAgPGRpdj48bGFiZWw+RnJhZ21lbnQgU2hhZGVyIDxzZWxlY3QgaWQ9
IkZyYWdtZW50U2hhZGVyU2VsZWN0Ij48L3NlbGVjdD48L2xhYmVsPjwvZGl2PgorPC9saT4KKzxs
aT4KKyAgICBTcGVjaWZ5IGlucHV0IGRhdGEKKyAgICA8dGFibGUgaWQ9IkRhdGFUYWJsZSI+Cisg
ICAgICAgIDx0aGVhZD4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQ+VmFy
aWFibGU8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD5WYWx1ZTwvdGQ+CisgICAgICAgICAgICA8
L3RyPgorICAgICAgICA8L3RoZWFkPgorICAgIDwvdGFibGU+Cis8L2xpPgorPGxpPgorICAgIDxk
aXY+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlJ1biIgaWQ9IlJ1bkJ1dHRvbiI+PC9kaXY+
Cis8L2xpPgorPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321234</attachid>
            <date>2017-09-19 13:02:32 -0700</date>
            <delta_ts>2017-09-19 17:20:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-177125-20170919130231.patch</filename>
            <type>text/plain</type>
            <size>23732</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODk1NmU0MjQwN2NjYTZhMTk4ZTNhZTI3OTc1MDE4NzBj
YmJkZjc1OS4uNmEwZWZmMDVlZjI2YTg0MTE2NTBmNzU1OGRiMmQzOGFiNTgxOGQ2ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE3LTA5LTE5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBhIHBsYXlncm91bmQgd2hlcmUgcGVvcGxlIGNhbiB0cnkgV1NMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qczoKKyAgICAgICAgKGNhbGxGdW5jdGlvbik6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAgICAgKEZ1
bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW5saW5lLmpzOgorICAgICAgICAocmVzb2x2ZUlubGluZWRGdW5jdGlvbik6CisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanM6CisgICAgICAgIChO
YW1lQ29udGV4dC5wcm90b3R5cGUuZ2V0IGxldCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qczoKKyAgICAgICAgKHJlc29sdmVPdmVybG9h
ZEltcGwpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFy
eS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAgKFRFU1RfaW5z
dGFudGlhdGVTdHJ1Y3RJblN0cnVjdCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvaW5kZXguaHRtbDogQWRkZWQuCisKIDIwMTctMDktMTkgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmltaXRpdmUgcHJvdG9jb2wgc2hvdWxkIGhhdmUgY2Fw
aXRhbCBuYW1lCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxs
RnVuY3Rpb24uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRnVuY3Rpb24u
anMKaW5kZXggNDMzMGM5YmJkOThlOTg3Mzk4Y2VkY2IxZDdjZjNlMWI3OGE4ODU1Ny4uZjBmMDM5
ZjU0NjJkMDc4MWQ4MmIzNDY0Yzg3NDc4NzE0YzBhMTczNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcwpAQCAtMjgsNyArMjgsNyBAQAogZnVuY3Rp
b24gY2FsbEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50TGlz
dCkKIHsKICAgICBsZXQgYXJndW1lbnRUeXBlcyA9IGFyZ3VtZW50TGlzdC5tYXAoYXJndW1lbnQg
PT4gYXJndW1lbnQudHlwZSk7Ci0gICAgbGV0IGZ1bmNPckZhaWx1cmVzID0gcmVzb2x2ZUlubGlu
ZWRGdW5jdGlvbihwcm9ncmFtLCBuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsK
KyAgICBsZXQgZnVuY09yRmFpbHVyZXMgPSByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0s
IG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHRydWUpOwogICAgIGlmICghKGZ1
bmNPckZhaWx1cmVzIGluc3RhbmNlb2YgRnVuYykpIHsKICAgICAgICAgbGV0IGZhaWx1cmVzID0g
ZnVuY09yRmFpbHVyZXM7CiAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCI8Y2FsbEZ1bmN0
aW9uPiIsICJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlvbiBjYWxsICIgKyBuYW1lICsgIjwiICsgdHlw
ZUFyZ3VtZW50cyArICI+KCIgKyBhcmd1bWVudExpc3QgKyAiKSIgKyAoZmFpbHVyZXMubGVuZ3Ro
ID8gIjsgdHJpZWQ6XG4iICsgZmFpbHVyZXMuam9pbigiXG4iKSA6ICIiKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwppbmRleCA1MjczZGUwM2Q5MmNlODUyODhiMGVlNjYzZWI5
YzQ0MGFjMDhjNmIzLi40ZGUyMTE3YjA1YmFkYjExYzhkNzM3ZWNlYWU5NTA4Y2Y0ZTU5MGYyIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKQEAgLTYwLDcgKzYwLDEzIEBAIGNs
YXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAKICAgICB0b0RlY2xTdHJpbmcoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICh0aGlzLmlzQ2FzdCA/ICJvcGVyYXRvciAiICsgdGhpcy5yZXR1cm5U
eXBlIDogdGhpcy5yZXR1cm5UeXBlICsgIiAiICsgdGhpcy5uYW1lKSArICI8IiArIHRoaXMudHlw
ZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAgICBsZXQg
dHlwZSA9ICIiOworICAgICAgICBpZiAodGhpcy5zaGFkZXJUeXBlKQorICAgICAgICAgICAgdHlw
ZSA9IHRoaXMuc2hhZGVyVHlwZSArICIgIjsKKyAgICAgICAgbGV0IHJldHVybkFuZE5hbWUgPSB0
aGlzLnJldHVyblR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgIGlmICh0aGlzLmlzQ2Fz
dCkKKyAgICAgICAgICAgIHJldHVybkFuZE5hbWUgPSAib3BlcmF0b3IgIiArIHRoaXMucmV0dXJu
VHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUgKyByZXR1cm5BbmROYW1lICsgIjwiICsgdGhpcy50
eXBlUGFyYW1ldGVycyArICI+KCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CiAgICAgfQogICAg
IAogICAgIHRvU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0lubGluZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZS5qcwpp
bmRleCAxN2UwMGU3YjczYWViMjc5Nzc5OWM3ZTVmNmFlYTRjYTM0ZDc4ZGQ0Li45ZGJiMzBkZWVh
OTMwNzc4Y2Q0NzRiODJiOTA1YWM1ZmRkZmY4MGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW5saW5lLmpzCkBAIC01Myw5ICs1Myw5IEBAIGZ1bmN0aW9uIF9pbmxpbmVGdW5jdGlv
bihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykKICAgICBmdW5jLmlubGluZWQgPSB0cnVlOwogfQog
Ci1mdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1
bWVudHMsIGFyZ3VtZW50VHlwZXMpCitmdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHBy
b2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGFsbG93RW50cnlQb2lu
dCA9IGZhbHNlKQogewotICAgIGxldCBvdmVybG9hZCA9IHByb2dyYW0uZ2xvYmFsTmFtZUNvbnRl
eHQucmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVz
KTsKKyAgICBsZXQgb3ZlcmxvYWQgPSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnJlc29sdmVG
dW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgdW5kZWZpbmVk
LCBhbGxvd0VudHJ5UG9pbnQpOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYykKICAgICAgICAgcmV0
dXJuIG92ZXJsb2FkLmZhaWx1cmVzOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYy50eXBlUGFyYW1l
dGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250
ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKaW5k
ZXggZWRjMjhiMThkYWIzOWMzZTgzNzcyZDI1NmUyYTg1NmQ3ZTUwOWRhNC4uZTYzOTEzODQ2ZmRj
OGQ5YWExYjE4OTNiMTM5OTQ1ZmZiMmE3YWYzYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTk2LDEzICs5NiwxMyBAQCBjbGFzcyBOYW1lQ29u
dGV4dCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHJlc29sdmVG
dW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlw
ZSkKKyAgICByZXNvbHZlRnVuY092ZXJsb2FkKG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIHJldHVyblR5cGUsIGFsbG93RW50cnlQb2ludCA9IGZhbHNlKQogICAgIHsKICAgICAg
ICAgbGV0IGZ1bmN0aW9ucyA9IHRoaXMuZ2V0KEZ1bmMsIG5hbWUpOwogICAgICAgICBpZiAoIWZ1
bmN0aW9ucykKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtdfTsKICAgICAgICAgCi0g
ICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50
cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlT3Zl
cmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJu
VHlwZSwgYWxsb3dFbnRyeVBvaW50KTsKICAgICB9CiAgICAgCiAgICAgZ2V0IGN1cnJlbnRTdGF0
ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2
ZU92ZXJsb2FkSW1wbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVP
dmVybG9hZEltcGwuanMKaW5kZXggOTdmZmEzOGJhNzIwZWE4YjBiODVhMWQ5YjQyNDZjNjczZDdj
Yzc5NC4uN2UyMjE1NmRlMWFjNWUyYTZjNzI0YWQzNDY5ZGM5MWU3NDZmMjU2NiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpz
CkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotZnVuY3Rpb24gcmVzb2x2
ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJl
dHVyblR5cGUpCitmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFy
Z3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50ID0gZmFs
c2UpCiB7CiAgICAgaWYgKCFmdW5jdGlvbnMpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTnVs
bCBmdW5jdGlvbnM7IHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgdGhlIGNhbGxlci4i
KTsKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlv
bnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUKICAgICBsZXQgZmFp
bHVyZXMgPSBbXTsKICAgICBsZXQgc3VjY2Vzc2VzID0gW107CiAgICAgZm9yIChsZXQgZnVuYyBv
ZiBmdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSkgeworICAgICAgICBp
ZiAoIWFsbG93RW50cnlQb2ludCAmJiBmdW5jLnNoYWRlclR5cGUpIHsKICAgICAgICAgICAgIGZh
aWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkZ1bmN0aW9u
IGlzIGEgIiArIGZ1bmMuc2hhZGVyVHlwZSArICIgc2hhZGVyLCBzbyBpdCBjYW5ub3QgYmUgY2Fs
bGVkIGZyb20gd2l0aGluIGFuIGV4aXN0aW5nIHNoYWRlci4iKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKaW5kZXggMDhhNTQ0MzcyZjhiMjMwNTI0NGNiYmFhYzNhNDY0ZmFhYzQ3
MTIxNy4uNTZmNTY2MWQ5MjdhYzZjZTE3ZWU0NjMwMjk3YjQyNjZjNWNmZjU1YiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtMTA3
LDYgKzEwNyw3IEBAIGJvb2wgb3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKQogICAgICAgICByZXR1
cm4gYjsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKIGJvb2wgb3BlcmF0b3J8KGJvb2wgYSwgYm9v
bCBiKQogewogICAgIGlmIChhKQpAQCAtMTE1LDEyICsxMTYsMTQgQEAgYm9vbCBvcGVyYXRvcnwo
Ym9vbCBhLCBib29sIGIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsK
IH0KKwogYm9vbCBvcGVyYXRvcl4oYm9vbCBhLCBib29sIGIpCiB7CiAgICAgaWYgKGEpCiAgICAg
ICAgIHJldHVybiAhYjsKICAgICByZXR1cm4gYjsKIH0KKwogYm9vbCBvcGVyYXRvcn4oYm9vbCB2
YWx1ZSkKIHsKICAgICByZXR1cm4gIXZhbHVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VGVzdC5odG1sCmluZGV4IDYyZGEyMzAxYTljMTczMjlmOTJhNzlmY2FkYWUwNmZhOTRhZDA5Mzgu
LmI2M2QzM2IwN2NlZjI5MTZmMjA1MzFmYWNlOTc2Y2JiYTk3YTFjOTEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTc1LDcgKzc1LDYgQEAKIDxzY3JpcHQgc3Jj
PSJJbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnRMaXRlcmFsVHlwZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iTGV0RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGV4ZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDM5NmY3YjZmMzMyZmQ4NDhh
M2Y1OWE1YjdlODkxM2ZiY2NjN2MyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMCwwICsxLDQ0NiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ik5vZGUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlZmVyZW5jZVR5cGUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhbHVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXdyaXRlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmlzaXRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iQ3JlYXRlTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJh
bFR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJBZGRyZXNzU3BhY2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkFub255bW91c1ZhcmlhYmxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJBcnJheVJlZlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkFycmF5VHlwZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iQXV0b1dyYXBwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJsb2NrLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhbGxFeHByZXNzaW9u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDYWxsRnVuY3Rpb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkNoZWNrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja0xpdGVy
YWxUeXBlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tMb29wcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNo
YWJsZUNvZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Q2xvbmVQcm9ncmFtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDb21tYUV4cHJlc3Npb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnN0ZXhwckZvbGRlci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iQ29udGludWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnZlcnRQdHJU
b0FycmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG9XaGlsZUxv
b3AuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkRvdWJsZUxpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkRvdWJsZUxpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJEZXJlZmVyZW5j
ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVBcnJheVJlZi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
RUJ1ZmZlckJ1aWxkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVQdHIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IkVudW1MaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJFbnVtTWVtYmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFbnVtVHlwZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iRXZhbHVhdGlvbkNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iRXZhbHVhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFeHByZXNzaW9u
RmluZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGaWVsZC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iRmluZEhpZ2hab21iaWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJG
bGF0dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbG9hdExp
dGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZsb2F0TGl0ZXJhbFR5cGUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IkZvbGRDb25zdGV4cHJzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJGb3JMb29wLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jRGVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJG
dW5jSW5zdGFudGlhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jUGFyYW1ldGVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jdGlvbkxpa2VCbG9jay5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iSGlnaFpvbWJpZUZpbmRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iSWRlbnRpdHlFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJZlN0
YXRlbWVudC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5kZXhFeHByZXNzaW9uLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbmZlclR5cGVzRm9yQ2FsbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iSW5saW5lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbmxpbmVyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbnN0YW50aWF0ZUltbWVkaWF0ZXMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IkludExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbnRyaW5zaWNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMZXhlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iTGV4ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGl0ZXJhbFR5cGVDaGVj
a2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMb2dpY2FsRXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iTG9vcENoZWNrZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik1ha2VBcnJheVJlZkV4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik1ha2VQdHJFeHByZXNzaW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYW1lQ29udGV4dC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iTmFtZVJlc29sdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVG
dW5jLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVGdW5jSW5zdGFuY2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ik5hdGl2ZVR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ik5hdGl2ZVR5cGVJbnN0YW5jZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTm9ybWFs
VXNlUHJvcGVydHlSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTnVsbExpdGVy
YWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik51bGxUeXBlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJQYXJzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJlcGFyZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvcGVydHlSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvdG9jb2wuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3RvY29sRGVjbC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iUHJvdG9jb2xGdW5jRGVjbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJv
dG9jb2xSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlB0clR5cGUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IlJlc29sdmVOYW1lcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2Fk
SW1wbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXR1cm5DaGVja2Vy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iU3RhdGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdHJ1Y3RMYXlv
dXRCdWlsZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdHJ1Y3RUeXBlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJTdWJzdGl0dXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IlN5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJT
eW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBl
RGVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlR5cGVPclZhcmlhYmxlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJUeXBlUGFyYW1ldGVyUmV3cml0ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IlR5cGVSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5cGVWYXJpYWJsZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZVZhcmlhYmxlVHJhY2tlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iVHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVWludExp
dGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iVW5pZmljYXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJWYXJpYWJsZURlY2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhcmlhYmxlUmVm
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iV1N5bnRheEVycm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXVHJh
cEVycm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJXaGlsZUxvb3AuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ildy
YXBDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNTaGFkZXJTb3VyY2UgeworICAgIGZv
bnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgd2lkdGg6IDcwMHB4OworICAgIGhlaWdodDogNDAw
cHg7Cit9CisKK3RkIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+
Cis8c2NyaXB0PgorbGV0IGRlZmF1bHRTaGFkZXJTb3VyY2UgPSBgc3RydWN0IFZlcnRleElucHV0
IHsKKyAgICB2ZWMyPGZsb2F0PiBwb3NpdGlvbjsKKyAgICB2ZWMzPGZsb2F0PiBjb2xvcjsKK30K
Kworc3RydWN0IFZlcnRleE91dHB1dCB7CisgICAgdmVjNDxmbG9hdD4gd3NsX1Bvc2l0aW9uOwor
ICAgIHZlYzM8ZmxvYXQ+IGNvbG9yOworfQorCitzdHJ1Y3QgRnJhZ21lbnRPdXRwdXQgeworICAg
IHZlYzQ8ZmxvYXQ+IHdzbF9Db2xvcjsKK30KKwordmVydGV4IFZlcnRleE91dHB1dCB2ZXJ0ZXhT
aGFkZXIoVmVydGV4SW5wdXQgdmVydGV4SW5wdXQpIHsKKyAgICBWZXJ0ZXhPdXRwdXQgcmVzdWx0
OworICAgIHJlc3VsdC53c2xfUG9zaXRpb24gPSBmbG9hdDQodmVydGV4SW5wdXQucG9zaXRpb24s
IDAuLCAxLik7CisgICAgcmVzdWx0LmNvbG9yID0gdmVydGV4SW5wdXQuY29sb3I7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworZnJhZ21lbnQgRnJhZ21lbnRPdXRwdXQgZnJhZ21lbnRTaGFkZXIo
VmVydGV4T3V0cHV0IHN0YWdlSW4pIHsKKyAgICBGcmFnbWVudE91dHB1dCByZXN1bHQ7CisgICAg
cmVzdWx0LndzbF9Db2xvciA9IGZsb2F0NChzdGFnZUluLmNvbG9yLCAxLik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK31gOworCitsZXQgc2hhZGVyU291cmNlVGV4dGFyZWE7CitsZXQgbG9jYWxTdG9y
YWdlOworbGV0IGNvbXBpbGVMb2dFbGVtZW50OworbGV0IHZlcnRleFNoYWRlclNlbGVjdDsKK2xl
dCBmcmFnbWVudFNoYWRlclNlbGVjdDsKK2xldCBkYXRhVGFibGU7CitsZXQgcmVzdWx0VGFibGU7
CisKK2xldCBwcm9ncmFtOworbGV0IGF2YWlsYWJsZVZlcnRleFNoYWRlcnM7CitsZXQgYXZhaWxh
YmxlRnJhZ21lbnRTaGFkZXJzOworbGV0IGN1cnJlbnRWZXJ0ZXhTaGFkZXI7CitsZXQgY3VycmVu
dEZyYWdtZW50U2hhZGVyOworbGV0IGlubGluZWRWZXJ0ZXhTaGFkZXI7CitsZXQgaW5saW5lZEZy
YWdtZW50U2hhZGVyOworbGV0IGFsbEFyZ3VtZW50SW5mb3M7CitsZXQgYXJndW1lbnRFUHRyczsK
Kword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICBzaGFk
ZXJTb3VyY2VUZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTaGFkZXJTb3VyY2Ui
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQ29tcGlsZUJ1dHRvbiIpLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UpOworICAgIGNvbXBp
bGVMb2dFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNvbXBpbGVMb2ciKTsKKyAg
ICB2ZXJ0ZXhTaGFkZXJTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVmVydGV4U2hh
ZGVyU2VsZWN0Iik7CisgICAgZnJhZ21lbnRTaGFkZXJTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiRnJhZ21lbnRTaGFkZXJTZWxlY3QiKTsKKyAgICB2ZXJ0ZXhTaGFkZXJTZWxlY3Qu
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZCk7CisgICAg
ZnJhZ21lbnRTaGFkZXJTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0ZWRT
aGFkZXJzQ2hhbmdlZCk7CisgICAgZGF0YVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IkRhdGFUYWJsZSIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJSdW5CdXR0b24iKS5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHJ1blNoYWRlcnMpOworICAgIHJlc3VsdFRhYmxlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlJlc3VsdFRhYmxlIik7CisKKyAgICBsZXQgc2hhZGVy
U291cmNlOworICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZSA9IHdpbmRvdy5sb2NhbFN0
b3JhZ2U7CisgICAgICAgIHNoYWRlclNvdXJjZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJTaGFk
ZXJTb3VyY2UiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorCisgICAgaWYgKCFzaGFkZXJT
b3VyY2UpCisgICAgICAgIHNoYWRlclNvdXJjZSA9IGRlZmF1bHRTaGFkZXJTb3VyY2U7CisgICAg
c2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUgPSBzaGFkZXJTb3VyY2U7CisgICAgY29tcGlsZVBy
ZXNlbnRTaGFkZXJTb3VyY2UoKTsKK30pOworCitmdW5jdGlvbiBjb21waWxlUHJlc2VudFNoYWRl
clNvdXJjZSgpIHsKKyAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOworICAg
IGxldCByZXN1bHQgPSBjb21waWxlKHNoYWRlclNvdXJjZVRleHRhcmVhLnZhbHVlKTsKKyAgICBp
ZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBQcm9ncmFtKSkgeworICAgICAgICBjb21waWxlTG9nRWxl
bWVudC50ZXh0Q29udGVudCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgc2hhZGVyU291cmNlID0gbG9jYWxTdG9yYWdlLnNl
dEl0ZW0oIlNoYWRlclNvdXJjZSIsIHNoYWRlclNvdXJjZVRleHRhcmVhLnZhbHVlKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgfQorCisgICAgcHJvZ3JhbSA9IHJlc3VsdDsKKyAgICBhdmFpbGFi
bGVWZXJ0ZXhTaGFkZXJzID0gW107CisgICAgYXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzID0gW107
CisgICAgZm9yIChmdW5jdGlvbk5hbWVzIG9mIHByb2dyYW0uZnVuY3Rpb25zLnZhbHVlcygpKSB7
CisgICAgICAgIGZvciAoZnVuYyBvZiBmdW5jdGlvbk5hbWVzKSB7CisgICAgICAgICAgICBpZiAo
ZnVuYy5zaGFkZXJUeXBlID09ICJ2ZXJ0ZXgiKQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZVZl
cnRleFNoYWRlcnMucHVzaChmdW5jKTsKKyAgICAgICAgICAgIGlmIChmdW5jLnNoYWRlclR5cGUg
PT0gImZyYWdtZW50IikKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnMu
cHVzaChmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3aGlsZSAodmVydGV4U2hhZGVyU2Vs
ZWN0LmZpcnN0Q2hpbGQpCisgICAgICAgIHZlcnRleFNoYWRlclNlbGVjdC5yZW1vdmVDaGlsZCh2
ZXJ0ZXhTaGFkZXJTZWxlY3QuZmlyc3RDaGlsZCk7CisgICAgd2hpbGUgKGZyYWdtZW50U2hhZGVy
U2VsZWN0LmZpcnN0Q2hpbGQpCisgICAgICAgIGZyYWdtZW50U2hhZGVyU2VsZWN0LnJlbW92ZUNo
aWxkKGZyYWdtZW50U2hhZGVyU2VsZWN0LmZpcnN0Q2hpbGQpOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYXZhaWxhYmxlVmVydGV4U2hhZGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICBsZXQg
ZnVuYyA9IGF2YWlsYWJsZVZlcnRleFNoYWRlcnNbaV07CisgICAgICAgIGxldCBvcHRpb24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLnZhbHVlID0g
aTsKKyAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0gZnVuYy5uYW1lOworICAgICAgICB2ZXJ0
ZXhTaGFkZXJTZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgbGV0IGZ1bmMgPSBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnNbaV07CisgICAgICAgIGxldCBv
cHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9u
LnZhbHVlID0gaTsKKyAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0gZnVuYy5uYW1lOworICAg
ICAgICBmcmFnbWVudFNoYWRlclNlbGVjdC5hcHBlbmRDaGlsZChvcHRpb24pOworICAgIH0KKyAg
ICBzZWxlY3RlZFNoYWRlcnNDaGFuZ2VkKCk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGVkU2hhZGVy
c0NoYW5nZWQoKSB7CisgICAgY3VycmVudFZlcnRleFNoYWRlciA9IGF2YWlsYWJsZVZlcnRleFNo
YWRlcnNbdmVydGV4U2hhZGVyU2VsZWN0LnNlbGVjdGVkSW5kZXhdOworICAgIGN1cnJlbnRGcmFn
bWVudFNoYWRlciA9IGF2YWlsYWJsZUZyYWdtZW50U2hhZGVyc1tmcmFnbWVudFNoYWRlclNlbGVj
dC5zZWxlY3RlZEluZGV4XTsKKworICAgIGlubGluZWRWZXJ0ZXhTaGFkZXIgPSBwcm9ncmFtLmZ1
bmNJbnN0YW50aWF0b3IuZ2V0VW5pcXVlKGN1cnJlbnRWZXJ0ZXhTaGFkZXIsIFtdKTsKKyAgICBf
aW5saW5lRnVuY3Rpb24ocHJvZ3JhbSwgaW5saW5lZFZlcnRleFNoYWRlciwgbmV3IFZpc2l0aW5n
U2V0KGN1cnJlbnRWZXJ0ZXhTaGFkZXIpKTsKKworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhl
IG91dHB1dCBvZiB0aGUgdmVydGV4IHNoYWRlciBtYXRjaGVzIHRoZSBpbnB1dCBvZiB0aGUgZnJh
Z21lbnQgc2hhZGVyCisKKyAgICBhbGxBcmd1bWVudEluZm9zID0gW107CisgICAgZnVuY3Rpb24g
YnVpbGRBcmd1bWVudEluZm8ocHJlZml4LCB0eXBlKSB7CisgICAgICAgIGlmICh0eXBlIGluc3Rh
bmNlb2YgTmF0aXZlVHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIFt7bmFtZTogcHJlZml4LCBv
ZmZzZXQ6IDAsIHR5cGU6IHR5cGUubmFtZX1dOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgaW5z
dGFuY2VvZiBTdHJ1Y3RUeXBlKSB7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW10KKyAgICAg
ICAgICAgIGZvciAobGV0IGZpZWxkIG9mIHR5cGUuZmllbGRzKSB7CisgICAgICAgICAgICAgICAg
Zm9yIChsZXQgaXRlbSBvZiBidWlsZEFyZ3VtZW50SW5mbyhwcmVmaXggKyAiLiIgKyBmaWVsZC5u
YW1lLCBmaWVsZC50eXBlLnR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0ub2Zmc2V0
ICs9IGZpZWxkLm9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRvbid0IGtub3cgaG93
IHRvIHNwZWNpZnkgdmFsdWUgZm9yICIgKyB0eXBlLmNvbnN0cnVjdG9yLm5hbWUpOworICAgIH0K
KyAgICBhcmd1bWVudEVQdHJzID0gW107CisgICAgZm9yIChsZXQgcGFyYW1ldGVyIG9mIGlubGlu
ZWRWZXJ0ZXhTaGFkZXIucGFyYW1ldGVycykgeworICAgICAgICBsZXQgZVB0ciA9IG5ldyBFUHRy
KG5ldyBFQnVmZmVyKHBhcmFtZXRlci50eXBlLnNpemUpLCAwKTsKKyAgICAgICAgYXJndW1lbnRF
UHRycy5wdXNoKHtlUHRyOiBlUHRyLCBzaXplOiBwYXJhbWV0ZXIudHlwZS5zaXplfSk7CisgICAg
ICAgIGxldCBhcmd1bWVudEluZm9zID0gYnVpbGRBcmd1bWVudEluZm8ocGFyYW1ldGVyLm5hbWUs
IHBhcmFtZXRlci50eXBlLnR5cGUpOworICAgICAgICBmb3IgKGFyZ3VtZW50SW5mbyBvZiBhcmd1
bWVudEluZm9zKSB7CisgICAgICAgICAgICBhcmd1bWVudEluZm8uZVB0ciA9IGVQdHI7CisgICAg
ICAgICAgICBhbGxBcmd1bWVudEluZm9zLnB1c2goYXJndW1lbnRJbmZvKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICB3aGlsZSAoZGF0YVRhYmxlLmxhc3RDaGlsZCBpbnN0YW5jZW9mIEhUTUxUYWJs
ZVJvd0VsZW1lbnQpCisgICAgICAgIGRhdGFUYWJsZS5yZW1vdmVDaGlsZChkYXRhVGFibGUubGFz
dENoaWxkKTsKKyAgICBmb3IgKGxldCBpbmZvIG9mIGFsbEFyZ3VtZW50SW5mb3MpIHsKKyAgICAg
ICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIGxldCB2
YXJpYWJsZUNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICBsZXQg
dmFsdWVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdmFyaWFi
bGVDZWxsLnRleHRDb250ZW50ID0gaW5mby5uYW1lOworICAgICAgICBsZXQgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICBpbnB1dC50eXBlID0gInRleHQi
OworICAgICAgICB2YWx1ZUNlbGwuYXBwZW5kQ2hpbGQoaW5wdXQpOworICAgICAgICByb3cuYXBw
ZW5kQ2hpbGQodmFyaWFibGVDZWxsKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHZhbHVlQ2Vs
bCk7CisgICAgICAgIGRhdGFUYWJsZS5hcHBlbmRDaGlsZChyb3cpOworICAgIH0KK30KKworZnVu
Y3Rpb24gcnVuU2hhZGVycygpIHsKKyAgICBsZXQgZnVuYyA9IGlubGluZWRWZXJ0ZXhTaGFkZXI7
CisKKyAgICBsZXQgaW5kZXggPSAwOworICAgIGZvciAobGV0IGNoaWxkRWxlbWVudCBvZiBkYXRh
VGFibGUuY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKCEoY2hpbGRFbGVtZW50IGluc3RhbmNlb2Yg
SFRNTFRhYmxlUm93RWxlbWVudCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbGV0
IHZhbHVlID0gY2hpbGRFbGVtZW50LmNoaWxkcmVuWzFdLmZpcnN0Q2hpbGQudmFsdWU7CisgICAg
ICAgIGxldCBhcmd1bWVudEluZm8gPSBhbGxBcmd1bWVudEluZm9zW2luZGV4XTsKKyAgICAgICAg
bGV0IHR5cGUgPSBhcmd1bWVudEluZm8udHlwZTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgICAgIGNhc2UgImZsb2F0IjoKKyAgICAgICAgICAgIHZhbHVlID0gTWF0aC5mcm91bmQocGFy
c2VGbG9hdCh2YWx1ZSkpOworICAgICAgICAgICAgYXJndW1lbnRJbmZvLmVQdHIuc2V0KGFyZ3Vt
ZW50SW5mby5vZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
ICJkb3VibGUiOgorICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJJIGRvbid0IGtub3cgaG93IHRvIHBhcnNlIHZhbHVlcyBvZiB0eXBlICIgKyB0eXBlKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaXNOYU4odmFsdWUpKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJDb3VsZCBub3QgcGFyc2UgaW5wdXQgZGF0YSAiICsgaW5kZXgpOworICAgICAg
ICBhcmd1bWVudEluZm8uZVB0ci5zZXQoYXJndW1lbnRJbmZvLm9mZnNldCwgdmFsdWUpOworICAg
ICAgICArK2luZGV4OworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnVuYy5wYXJh
bWV0ZXJzLmxlbmd0aDsgKytpKQorICAgICAgICBmdW5jLnBhcmFtZXRlcnNbaV0uZVB0ci5jb3B5
RnJvbShhcmd1bWVudEVQdHJzW2ldLmVQdHIsIGFyZ3VtZW50RVB0cnNbaV0uc2l6ZSk7CisgICAg
bGV0IHJlc3VsdCA9IG5ldyBFdmFsdWF0b3IocHJvZ3JhbSkucnVuRnVuYyhmdW5jKTsKKworICAg
IGlubGluZWRGcmFnbWVudFNoYWRlciA9IHByb2dyYW0uZnVuY0luc3RhbnRpYXRvci5nZXRVbmlx
dWUoY3VycmVudEZyYWdtZW50U2hhZGVyLCBbXSk7CisgICAgX2lubGluZUZ1bmN0aW9uKHByb2dy
YW0sIGlubGluZWRGcmFnbWVudFNoYWRlciwgbmV3IFZpc2l0aW5nU2V0KGN1cnJlbnRGcmFnbWVu
dFNoYWRlcikpOworICAgIGZ1bmMgPSBpbmxpbmVkRnJhZ21lbnRTaGFkZXI7CisKKyAgICBsZXQg
Zm91bmQgPSBmYWxzZTsKKyAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2YgZnVuYy5wYXJhbWV0ZXJz
KSB7CisgICAgICAgIGlmIChwYXJhbWV0ZXIubmFtZSA9PSAic3RhZ2VJbiIpIHsKKyAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhlIHR5
cGUgaXMgY29ycmVjdC4KKyAgICAgICAgICAgIHBhcmFtZXRlci5lUHRyLmNvcHlGcm9tKHJlc3Vs
dCwgcGFyYW1ldGVyLnR5cGUuc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGQg
bm90IGZpbmQgdGhlIHN0YWdlSW4gYXJndW1lbnQgaW4gdGhlIGZyYWdtZW50IHNoYWRlciEiKTsK
KyAgICB9CisKKyAgICByZXN1bHQgPSBuZXcgRXZhbHVhdG9yKHByb2dyYW0pLnJ1bkZ1bmMoZnVu
Yyk7CisKKyAgICBmdW5jdGlvbiBidWlsZEFyZ3VtZW50SW5mbyhwcmVmaXgsIHR5cGUpIHsKKyAg
ICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBOYXRpdmVUeXBlKSB7CisgICAgICAgICAgICByZXR1
cm4gW3tuYW1lOiBwcmVmaXgsIG9mZnNldDogMCwgdHlwZTogdHlwZS5uYW1lfV07CisgICAgICAg
IH0gZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpIHsKKyAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBbXQorICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgdHlwZS5maWVsZHMp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGJ1aWxkQXJndW1lbnRJbmZvKHBy
ZWZpeCArICIuIiArIGZpZWxkLm5hbWUsIGZpZWxkLnR5cGUudHlwZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaXRlbS5vZmZzZXQgKz0gZmllbGQub2Zmc2V0OworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQucHVzaChpdGVtKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRG9uJ3Qga25vdyBob3cgdG8gc3BlY2lmeSB2YWx1ZSBmb3IgIiArIHR5cGUuY29uc3Ry
dWN0b3IubmFtZSk7CisgICAgfQorICAgIHZhciByZXN1bHRJbmZvcyA9IGJ1aWxkQXJndW1lbnRJ
bmZvKGZ1bmMucmV0dXJuVHlwZS50eXBlLm5hbWUsIGZ1bmMucmV0dXJuVHlwZS50eXBlKTsKKyAg
ICB3aGlsZSAocmVzdWx0VGFibGUubGFzdENoaWxkIGluc3RhbmNlb2YgSFRNTFRhYmxlUm93RWxl
bWVudCkKKyAgICAgICAgcmVzdWx0VGFibGUucmVtb3ZlQ2hpbGQocmVzdWx0VGFibGUubGFzdENo
aWxkKTsKKyAgICBmb3IgKGxldCBpbmZvIG9mIHJlc3VsdEluZm9zKSB7CisgICAgICAgIGxldCBy
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICBsZXQgdmFyaWFibGVD
ZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgbGV0IHZhbHVlQ2Vs
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHZhcmlhYmxlQ2VsbC50
ZXh0Q29udGVudCA9IGluZm8ubmFtZTsKKyAgICAgICAgdmFsdWVDZWxsLnRleHRDb250ZW50ID0g
cmVzdWx0LmdldChpbmZvLm9mZnNldCk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh2YXJpYWJs
ZUNlbGwpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodmFsdWVDZWxsKTsKKyAgICAgICAgcmVz
dWx0VGFibGUuYXBwZW5kQ2hpbGQocm93KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbXBpbGUo
Y29kZSkgeworICAgIHRyeSB7CisgICAgICAgIHJldHVybiBwcmVwYXJlKCIvaW50ZXJuYWwvdGVz
dCIsIDAsIGNvZGUpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGU7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5XZWJHUFUgU2hhZGluZyBMYW5n
dWFnZTwvaDE+Cis8b2w+Cis8bGk+CisgICAgV3JpdGUgYSBzaGFkZXIhCisgICAgPGRpdj48dGV4
dGFyZWEgaWQ9IlNoYWRlclNvdXJjZSI+PC90ZXh0YXJlYT48L2Rpdj4KKyAgICA8ZGl2IGlkPSJD
b21waWxlTG9nIj48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJD
b21waWxlIiBpZD0iQ29tcGlsZUJ1dHRvbiI+PC9kaXY+Cis8L2xpPgorPGxpPgorICAgIFNlbGVj
dCB5b3VyIHNoYWRlcnMKKyAgICA8ZGl2PjxsYWJlbD5WZXJ0ZXggU2hhZGVyIDxzZWxlY3QgaWQ9
IlZlcnRleFNoYWRlclNlbGVjdCI+PC9zZWxlY3Q+PC9sYWJlbD48L2Rpdj4KKyAgICA8ZGl2Pjxs
YWJlbD5GcmFnbWVudCBTaGFkZXIgPHNlbGVjdCBpZD0iRnJhZ21lbnRTaGFkZXJTZWxlY3QiPjwv
c2VsZWN0PjwvbGFiZWw+PC9kaXY+Cis8L2xpPgorPGxpPgorICAgIFNwZWNpZnkgaW5wdXQgZGF0
YQorICAgIDx0YWJsZSBpZD0iRGF0YVRhYmxlIj4KKyAgICAgICAgPHRoZWFkPgorICAgICAgICAg
ICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD5WYXJpYWJsZTwvdGQ+CisgICAgICAgICAgICAg
ICAgPHRkPlZhbHVlPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgIDwvdGhlYWQ+Cisg
ICAgPC90YWJsZT4KKzwvbGk+Cis8bGk+CisgICAgPGRpdj48aW5wdXQgdHlwZT0iYnV0dG9uIiB2
YWx1ZT0iUnVuIiBpZD0iUnVuQnV0dG9uIj48L2Rpdj4KKyAgICA8dGFibGUgaWQ9IlJlc3VsdFRh
YmxlIj4KKyAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAg
IDx0ZD5WYXJpYWJsZTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPlZhbHVlPC90ZD4KKyAgICAg
ICAgICAgIDwvdHI+CisgICAgICAgIDwvdGhlYWQ+CisgICAgPC90YWJsZT4KKzwvbGk+Cis8L29s
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321267</attachid>
            <date>2017-09-19 17:20:27 -0700</date>
            <delta_ts>2017-09-19 17:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177125-20170919172027.patch</filename>
            <type>text/plain</type>
            <size>35999</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODk1NmU0MjQwN2NjYTZhMTk4ZTNhZTI3OTc1MDE4NzBj
YmJkZjc1OS4uYTNlNWVjYzMyOGMzMDZmMzM2NmIyMTI3NjU2NjM0YWFhYjNlMzRiMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDE3LTA5LTE5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBhIHBsYXlncm91bmQgd2hlcmUgcGVvcGxlIGNhbiB0cnkgV1NMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGNyZWF0ZXMgYSB3ZWJwYWdlLCBpbmRleC5odG1sLCB3aGljaCBsZXRzIHVzZXJzIHR5cGUgaW4g
YSBXU0wgcHJvZ3JhbSBhbmQKKyAgICAgICAgcnVuIGl0LCBhbmQgc2VlIHRoZSByZXN1bHRzLgor
CisgICAgICAgIEl0IGFsc28gYWRkcyBzb21lIHJlc3RyaWN0aW9ucyB0byBlbnRyeSBwb2ludHMs
IGFzIGRldGFpbGVkIGluIHRoZSBXU0wubWQgZmlsZS4KKworICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
YWxsRnVuY3Rpb24uanM6CisgICAgICAgIChjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanM6CisgICAgICAgIChDaGVja2VyKToKKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUuTm9uTnVtZXJpY1NlYXJjaGVy
KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUuTm9uTnVtZXJp
Y1NlYXJjaGVyLnByb3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS5fY2hlY2tTaGFkZXJUeXBlLk5vbk51bWVyaWNTZWFyY2hlci5wcm90b3R5cGUu
dmlzaXRQdHJUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5
cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLl9yZXF1aXJlQm9vbCk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanM6IENvcGllZCBmcm9t
IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcy4KKyAgICAgICAg
KEZsYXR0ZW5lZFN0cnVjdE9mZnNldEdhdGhlcmVyKToKKyAgICAgICAgKEZsYXR0ZW5lZFN0cnVj
dE9mZnNldEdhdGhlcmVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToKKyAgICAgICAgKEZsYXR0ZW5l
ZFN0cnVjdE9mZnNldEdhdGhlcmVyLnByb3RvdHlwZS52aXNpdFJlZmVyZW5jZVR5cGUpOgorICAg
ICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0RmllbGQp
OgorICAgICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0
TmF0aXZlVHlwZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoK
KyAgICAgICAgKEZ1bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lLmpzOgorICAgICAgICAocmVzb2x2ZUlubGluZWRGdW5j
dGlvbik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanM6
CisgICAgICAgIChOYW1lQ29udGV4dC5wcm90b3R5cGUuZ2V0IGxldCk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qczoKKyAgICAgICAgKHJl
c29sdmVPdmVybG9hZEltcGwpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAg
ICAgKFRFU1Rfc2hhZGVyVHlwZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L2luZGV4Lmh0bWw6IEFkZGVkLgorCiAyMDE3LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUHJpbWl0aXZlIHByb3RvY29sIHNob3VsZCBoYXZlIGNhcGl0
YWwgbmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IGU4MTE3NjVkZDE4
OTkzOTA4NjEyYmI0MjViODg5NWQ2ZGY4OTdhNDMuLjhjYjUzNDVkOWY4MzdkMWMzNzk5NGZmZTI2
MzZjZjk4MjMwNWZkNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTc4
LDYgKzc4LDcgQEAgbG9hZCgiRXhwcmVzc2lvbkZpbmRlci5qcyIpOwogbG9hZCgiRmllbGQuanMi
KTsKIGxvYWQoIkZpbmRIaWdoWm9tYmllcy5qcyIpOwogbG9hZCgiRmxhdHRlblByb3RvY29sRXh0
ZW5kcy5qcyIpOworbG9hZCgiRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanMiKTsKIGxv
YWQoIkZsb2F0TGl0ZXJhbC5qcyIpOwogbG9hZCgiRmxvYXRMaXRlcmFsVHlwZS5qcyIpOwogbG9h
ZCgiRm9sZENvbnN0ZXhwcnMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxGdW5jdGlvbi5qcwppbmRleCA0MzMwYzliYmQ5OGU5ODczOThjZWRjYjFkN2NmM2UxYjc4
YTg4NTU3Li5mMGYwMzlmNTQ2MmQwNzgxZDgyYjM0NjRjODc0Nzg3MTRjMGExNzM3IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRnVuY3Rpb24uanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzCkBAIC0yOCw3ICsy
OCw3IEBACiBmdW5jdGlvbiBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgbmFtZSwgdHlwZUFyZ3VtZW50
cywgYXJndW1lbnRMaXN0KQogewogICAgIGxldCBhcmd1bWVudFR5cGVzID0gYXJndW1lbnRMaXN0
Lm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC50eXBlKTsKLSAgICBsZXQgZnVuY09yRmFpbHVyZXMg
PSByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFy
Z3VtZW50VHlwZXMpOworICAgIGxldCBmdW5jT3JGYWlsdXJlcyA9IHJlc29sdmVJbmxpbmVkRnVu
Y3Rpb24ocHJvZ3JhbSwgbmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgdHJ1ZSk7
CiAgICAgaWYgKCEoZnVuY09yRmFpbHVyZXMgaW5zdGFuY2VvZiBGdW5jKSkgewogICAgICAgICBs
ZXQgZmFpbHVyZXMgPSBmdW5jT3JGYWlsdXJlczsKICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3IoIjxjYWxsRnVuY3Rpb24+IiwgIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGNhbGwgIiArIG5h
bWUgKyAiPCIgKyB0eXBlQXJndW1lbnRzICsgIj4oIiArIGFyZ3VtZW50TGlzdCArICIpIiArIChm
YWlsdXJlcy5sZW5ndGggPyAiOyB0cmllZDpcbiIgKyBmYWlsdXJlcy5qb2luKCJcbiIpIDogIiIp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IGYyM2U2MTIw
MWI5N2I2OTJlOTUzMzQxMTFkMDBiNGZhYTk0NzcwOWEuLjk3Nzk0YWZlY2Q1YmJmMDk2ZTU4ZDg2
MjU0ZmVhODI0ZmZhMmEzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tl
ci5qcwpAQCAtMzAsNiArMzAsOCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX3Byb2dyYW0gPSBwcm9ncmFtOwogICAgICAg
ICB0aGlzLl9jdXJyZW50U3RhdGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdmVydGV4RW50
cnlQb2ludHMgPSBuZXcgU2V0KCk7CisgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMg
PSBuZXcgU2V0KCk7CiAgICAgfQogICAgIAogICAgIHZpc2l0UHJvZ3JhbShub2RlKQpAQCAtNTMs
OSArNTUsNjcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
ICAgIGRvU3RhdGVtZW50KGZ1bmMpOwogICAgICAgICB9CiAgICAgfQorCisgICAgX2NoZWNrU2hh
ZGVyVHlwZShub2RlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFJlbGF4IHRoZXNlIGNoZWNr
cyBvbmNlIHdlIGhhdmUgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgdGV4dHVyZXMgYW5kIHNhbXBs
ZXJzLgorICAgICAgICBpZiAobm9kZS50eXBlUGFyYW1ldGVycy5sZW5ndGggIT0gMCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCJFbnRyeSBwb2ludCAiICsgbm9kZS5uYW1lICsg
IiBtdXN0IG5vdCBoYXZlIHR5cGUgYXJndW1lbnRzLiIpOworICAgICAgICBjbGFzcyBOb25OdW1l
cmljU2VhcmNoZXIgZXh0ZW5kcyBWaXNpdG9yIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5h
bWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZpc2l0
QXJyYXlSZWZUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3IodGhpcy5fbmFtZSArICIgbXVzdCB0cmFuc2l0aXZlbHkgb25seSBoYXZl
IG51bWVyaWMgdHlwZXMuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2aXNpdFB0clR5
cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcih0aGlzLl9uYW1lICsgIiBtdXN0IHRyYW5zaXRpdmVseSBvbmx5IGhhdmUgbnVtZXJpYyB0
eXBlcy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUu
c2hhZGVyVHlwZSkgeworICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgorICAgICAgICAgICAgaWYgKHRo
aXMuX3ZlcnRleEVudHJ5UG9pbnRzLmhhcyhub2RlLm5hbWUpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKCJEdXBsaWNhdGUgdmVydGV4IGVudHJ5IHBvaW50IG5hbWUgIiAr
IG5vZGUubmFtZSk7CisgICAgICAgICAgICB0aGlzLl92ZXJ0ZXhFbnRyeVBvaW50cy5hZGQobm9k
ZS5uYW1lKTsKKyAgICAgICAgICAgIGlmICghKG5vZGUucmV0dXJuVHlwZS50eXBlIGluc3RhbmNl
b2YgU3RydWN0VHlwZSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoIlZl
cnRleCBzaGFkZXIgIiArIG5vZGUubmFtZSArICIgbXVzdCByZXR1cm4gYSBzdHJ1Y3QuIik7Cisg
ICAgICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHBhcmFtZXRlci50eXBlLnR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBl
KQorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudHlwZS52aXNpdChuZXcgTm9uTnVtZXJp
Y1NlYXJjaGVyKG5vZGUubmFtZSkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEocGFyYW1l
dGVyLnR5cGUudHlwZSBpbnN0YW5jZW9mIEFycmF5UmVmVHlwZSkpCisgICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUubmFtZSArICIgYWNjZXB0cyBhIHBhcmFtZXRl
ciAiICsgcGFyYW1ldGVyLm5hbWUgKyAiIHdoaWNoIGlzbid0IGEgc3RydWN0IGFuZCBpc24ndCBh
biBBcnJheVJlZi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vZGUucmV0dXJuVHlw
ZS50eXBlLnZpc2l0KG5ldyBOb25OdW1lcmljU2VhcmNoZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgImZyYWdtZW50IjoKKyAgICAgICAgICAgIGlmICh0aGlzLl9mcmFnbWVu
dEVudHJ5UG9pbnRzLmhhcyhub2RlLm5hbWUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKCJEdXBsaWNhdGUgZnJhZ21lbnQgZW50cnkgcG9pbnQgbmFtZSAiICsgbm9kZS5u
YW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMuYWRkKG5vZGUubmFt
ZSk7CisgICAgICAgICAgICBpZiAoIShub2RlLnJldHVyblR5cGUudHlwZSBpbnN0YW5jZW9mIFN0
cnVjdFR5cGUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCJGcmFnbWVu
dCBzaGFkZXIgIiArIG5vZGUubmFtZSArICIgbXVzdCByZXR1cm4gYSBzdHJ1Y3QuIik7CisgICAg
ICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHBhcmFtZXRlci5uYW1lID09ICJzdGFnZUluIikgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIShwYXJhbWV0ZXIudHlwZS50eXBlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiRnJhZ21lbnQg
ZW50cnkgcG9pbnRzJyBzdGFnZUluIHBhcmFtZXRlciAob2YgIiArIG5vZGUubmFtZSArICIpIG11
c3QgYmUgYSBzdHJ1Y3QgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnR5
cGUudmlzaXQobmV3IE5vbk51bWVyaWNTZWFyY2hlcihub2RlLm5hbWUpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoIShwYXJhbWV0ZXIudHlwZS50
eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKCJGcmFnbWVudCBlbnRyeSBwb2ludCdzICIgKyBwYXJhbWV0ZXIu
bmFtZSArICIgcGFyYW1ldGVyIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UuIik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZS5yZXR1cm5UeXBlLnR5
cGUudmlzaXQobmV3IE5vbk51bWVyaWNTZWFyY2hlcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KICAgICAKICAgICB2aXNpdEZ1bmNEZWYobm9kZSkKICAgICB7CisgICAg
ICAgIGlmIChub2RlLnNoYWRlclR5cGUpCisgICAgICAgICAgICB0aGlzLl9jaGVja1NoYWRlclR5
cGUobm9kZSk7CiAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKICAgICB9CiAgICAgCkBA
IC00MDgsNyArNDY4LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICBpZiAoIXR5cGUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cHJlc3Npb24gaGFz
IG5vIHR5cGUsIGJ1dCBzaG91bGQgYmUgYm9vbDogIiArIGV4cHJlc3Npb24pOwogICAgICAgICBp
ZiAoIXR5cGUuZXF1YWxzKHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy5ib29sKSkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBXRXJyb3IoIkV4cHJlc3Npb24gaXNuJ3QgYSBib29sOiAiICsgZXhwcmVz
c2lvbik7CisgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiRXhwcmVzc2lvbiBpc24n
dCBhIGJvb2w6ICIgKyBleHByZXNzaW9uKTsKICAgICB9CiAKICAgICB2aXNpdExvZ2ljYWxOb3Qo
bm9kZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZsYXR0ZW5l
ZFN0cnVjdE9mZnNldEdhdGhlcmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ4YjFlMzEwZWFl
NGNlNTA1ZWZmMzI1YTdhZWI5NjJiMmNiZmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZsYXR0ZW5lZFN0cnVjdE9mZnNldEdhdGhlcmVyLmpzCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworInVzZSBzdHJpY3QiOworCitjbGFzcyBGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJlciBl
eHRlbmRzIFZpc2l0b3IgeworICAgIGNvbnN0cnVjdG9yKGluaXRpYWwpCisgICAgeworICAgICAg
ICBzdXBlcigpOworICAgICAgICB0aGlzLl9vZmZzZXQgPSAwOworICAgICAgICB0aGlzLl9uYW1l
ID0gW2luaXRpYWxdOworICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICB9CisKKyAgICBn
ZXQgcmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHQ7CisgICAgfQor
ICAgIAorICAgIHZpc2l0UmVmZXJlbmNlVHlwZShub2RlKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdmlzaXRGaWVsZChub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5fb2Zmc2V0ICs9IG5vZGUu
b2Zmc2V0OworICAgICAgICB0aGlzLl9uYW1lLnB1c2gobm9kZS5uYW1lKTsKKyAgICAgICAgc3Vw
ZXIudmlzaXRGaWVsZChub2RlKTsKKyAgICAgICAgdGhpcy5fbmFtZS5wb3AoKTsKKyAgICAgICAg
dGhpcy5fb2Zmc2V0IC09IG5vZGUub2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2aXNpdE5hdGl2
ZVR5cGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdC5wdXNoKHtuYW1lOiB0aGlz
Ll9uYW1lLmpvaW4oIi4iKSwgb2Zmc2V0OiB0aGlzLl9vZmZzZXQsIHR5cGU6IG5vZGUubmFtZX0p
OworICAgICAgICBzdXBlci52aXNpdE5hdGl2ZVR5cGUobm9kZSk7CisgICAgfQorfQorCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwppbmRleCA1MjczZGUwM2Q5MmNlODUyODhiMGVl
NjYzZWI5YzQ0MGFjMDhjNmIzLi40ZGUyMTE3YjA1YmFkYjExYzhkNzM3ZWNlYWU5NTA4Y2Y0ZTU5
MGYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKQEAgLTYwLDcgKzYwLDEz
IEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAKICAgICB0b0RlY2xTdHJpbmcoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLmlzQ2FzdCA/ICJvcGVyYXRvciAiICsgdGhpcy5y
ZXR1cm5UeXBlIDogdGhpcy5yZXR1cm5UeXBlICsgIiAiICsgdGhpcy5uYW1lKSArICI8IiArIHRo
aXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAg
ICBsZXQgdHlwZSA9ICIiOworICAgICAgICBpZiAodGhpcy5zaGFkZXJUeXBlKQorICAgICAgICAg
ICAgdHlwZSA9IHRoaXMuc2hhZGVyVHlwZSArICIgIjsKKyAgICAgICAgbGV0IHJldHVybkFuZE5h
bWUgPSB0aGlzLnJldHVyblR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgIGlmICh0aGlz
LmlzQ2FzdCkKKyAgICAgICAgICAgIHJldHVybkFuZE5hbWUgPSAib3BlcmF0b3IgIiArIHRoaXMu
cmV0dXJuVHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUgKyByZXR1cm5BbmROYW1lICsgIjwiICsg
dGhpcy50eXBlUGFyYW1ldGVycyArICI+KCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CiAgICAg
fQogICAgIAogICAgIHRvU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0lubGluZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGlu
ZS5qcwppbmRleCAxN2UwMGU3YjczYWViMjc5Nzc5OWM3ZTVmNmFlYTRjYTM0ZDc4ZGQ0Li45ZGJi
MzBkZWVhOTMwNzc4Y2Q0NzRiODJiOTA1YWM1ZmRkZmY4MGQwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5saW5lLmpzCkBAIC01Myw5ICs1Myw5IEBAIGZ1bmN0aW9uIF9pbmxpbmVG
dW5jdGlvbihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykKICAgICBmdW5jLmlubGluZWQgPSB0cnVl
OwogfQogCi1mdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5
cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCitmdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0
aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGFsbG93RW50
cnlQb2ludCA9IGZhbHNlKQogewotICAgIGxldCBvdmVybG9hZCA9IHByb2dyYW0uZ2xvYmFsTmFt
ZUNvbnRleHQucmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVu
dFR5cGVzKTsKKyAgICBsZXQgb3ZlcmxvYWQgPSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnJl
c29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgdW5k
ZWZpbmVkLCBhbGxvd0VudHJ5UG9pbnQpOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYykKICAgICAg
ICAgcmV0dXJuIG92ZXJsb2FkLmZhaWx1cmVzOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYy50eXBl
UGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05h
bWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQu
anMKaW5kZXggZWRjMjhiMThkYWIzOWMzZTgzNzcyZDI1NmUyYTg1NmQ3ZTUwOWRhNC4uZTYzOTEz
ODQ2ZmRjOGQ5YWExYjE4OTNiMTM5OTQ1ZmZiMmE3YWYzYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTk2LDEzICs5NiwxMyBAQCBjbGFzcyBO
YW1lQ29udGV4dCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHJl
c29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0
dXJuVHlwZSkKKyAgICByZXNvbHZlRnVuY092ZXJsb2FkKG5hbWUsIHR5cGVBcmd1bWVudHMsIGFy
Z3VtZW50VHlwZXMsIHJldHVyblR5cGUsIGFsbG93RW50cnlQb2ludCA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgbGV0IGZ1bmN0aW9ucyA9IHRoaXMuZ2V0KEZ1bmMsIG5hbWUpOwogICAgICAgICBp
ZiAoIWZ1bmN0aW9ucykKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtdfTsKICAgICAg
ICAgCi0gICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFy
Z3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSk7CisgICAgICAgIHJldHVybiByZXNv
bHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywg
cmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50KTsKICAgICB9CiAgICAgCiAgICAgZ2V0IGN1cnJl
bnRTdGF0ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jl
c29sdmVPdmVybG9hZEltcGwuanMKaW5kZXggOTdmZmEzOGJhNzIwZWE4YjBiODVhMWQ5YjQyNDZj
NjczZDdjYzc5NC4uN2UyMjE1NmRlMWFjNWUyYTZjNzI0YWQzNDY5ZGM5MWU3NDZmMjU2NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJ
bXBsLmpzCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotZnVuY3Rpb24g
cmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlw
ZXMsIHJldHVyblR5cGUpCitmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywg
dHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50
ID0gZmFsc2UpCiB7CiAgICAgaWYgKCFmdW5jdGlvbnMpCiAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiTnVsbCBmdW5jdGlvbnM7IHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgdGhlIGNh
bGxlci4iKTsKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChm
dW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUKICAgICBs
ZXQgZmFpbHVyZXMgPSBbXTsKICAgICBsZXQgc3VjY2Vzc2VzID0gW107CiAgICAgZm9yIChsZXQg
ZnVuYyBvZiBmdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSkgeworICAg
ICAgICBpZiAoIWFsbG93RW50cnlQb2ludCAmJiBmdW5jLnNoYWRlclR5cGUpIHsKICAgICAgICAg
ICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkZ1
bmN0aW9uIGlzIGEgIiArIGZ1bmMuc2hhZGVyVHlwZSArICIgc2hhZGVyLCBzbyBpdCBjYW5ub3Qg
YmUgY2FsbGVkIGZyb20gd2l0aGluIGFuIGV4aXN0aW5nIHNoYWRlci4iKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXggMDhhNTQ0MzcyZjhiMjMwNTI0NGNiYmFhYzNhNDY0
ZmFhYzQ3MTIxNy4uNTZmNTY2MWQ5MjdhYzZjZTE3ZWU0NjMwMjk3YjQyNjZjNWNmZjU1YiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpA
QCAtMTA3LDYgKzEwNyw3IEBAIGJvb2wgb3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKQogICAgICAg
ICByZXR1cm4gYjsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKIGJvb2wgb3BlcmF0b3J8KGJvb2wg
YSwgYm9vbCBiKQogewogICAgIGlmIChhKQpAQCAtMTE1LDEyICsxMTYsMTQgQEAgYm9vbCBvcGVy
YXRvcnwoYm9vbCBhLCBib29sIGIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBm
YWxzZTsKIH0KKwogYm9vbCBvcGVyYXRvcl4oYm9vbCBhLCBib29sIGIpCiB7CiAgICAgaWYgKGEp
CiAgICAgICAgIHJldHVybiAhYjsKICAgICByZXR1cm4gYjsKIH0KKwogYm9vbCBvcGVyYXRvcn4o
Ym9vbCB2YWx1ZSkKIHsKICAgICByZXR1cm4gIXZhbHVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5odG1sCmluZGV4IDYyZGEyMzAxYTljMTczMjlmOTJhNzlmY2FkYWUwNmZhOTRh
ZDA5MzguLjQ2M2E1Mzg1N2NjNjYyZWVlNmRmYjUyYWE0ZGYwYjdkYWNmMTgzZTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTU1LDYgKzU1LDcgQEAKIDxzY3Jp
cHQgc3JjPSJGaWVsZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRmluZEhpZ2hab21iaWVz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbGF0dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJlci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRmxvYXRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJGbG9hdExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGb2xk
Q29uc3RleHBycy5qcyI+PC9zY3JpcHQ+CkBAIC03NSw3ICs3Niw2IEBACiA8c2NyaXB0IHNyYz0i
SW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbFR5cGUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkludHJpbnNpY3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9IkxldEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJMaXRlcmFsVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggYTk5NmM4OGRjN2U5NTM3ZTU5ODkwNTdlYTIwYTdhMjA3
ZDQxYTMyNy4uODU1MDlkZmMyZWU5NjhkYTgwZjZjOTBiOWU0NGMyZDdkZjMxMWYzYSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC0zNzA5LDE1ICszNzA5LDEzMSBAQCBm
dW5jdGlvbiBURVNUX3NoYWRlclR5cGVzKCkKIHsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgp
ID0+IGRvUHJlcChgCi0gICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGJhcigpCisgICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZlcnRleCBGb28gYmFyKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmxvYXQ0KCk7CisgICAgICAgICAgICAgICAgRm9vIHJlc3VsdDsKKyAgICAg
ICAgICAgICAgICByZXN1bHQueCA9IGZsb2F0NCgpOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmbG9hdDQgZm9vKCkgeworICAgICAg
ICAgICAgRm9vIGZvbygpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYmFyKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIGApLAogICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJy
b3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAg
IHZlcnRleCBmbG9hdCBiYXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biA0LjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3Rh
bmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAo
YAorICAgICAgICAgICAgc3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vXiB4KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3Ry
dWN0IEJvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAg
ICAgICAgICBkZXZpY2UgQm9vXiB5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4
IEZvbyBiYXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAg
ICAgICAgICAgc3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzdHJ1Y3QgQm9vIHsKKyAgICAgICAgICAgICAgICBkZXZpY2Ug
Rm9vXiB5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoQm9vIGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICAg
ICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHZlcnRleCBGb28gYmFyKGRldmljZSBGb29eIHgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICAgICAgfQorICAgICAgICBgKSwK
KyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwo
CisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAg
ICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYWdtZW50
IEZvbyBiYXIoRm9vIGZvbykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Rm9vKCk7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVw
KGAKKyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgICAgIGZsb2F0NCB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihkZXZpY2UgRm9vXiBz
dGFnZUluKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5
cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAg
ICAgICAgc3RydWN0IEJvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsK
KyAgICAgICAgICAgICAgICBkZXZpY2UgQm9vXiB5OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYm9vKCk7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAg
ICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAg
ICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBCb28geworICAgICAgICAgICAg
ICAgIGZsb2F0NCB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RydWN0IEZvbyB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICAgICAgZGV2aWNlIEJvb14geTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoQm9vIHN0YWdlSW4p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICAg
ICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKIH0KIAogZnVuY3Rpb24gVEVTVF9idWlsdGluVmVjdG9ycygpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWMxZGZkMTQ0Njg1M2U3MGM1NDA2
MGI3ZmFlNjc4NGEwNGMyOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMCwwICsxLDQ2NyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ik5vZGUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlZmVyZW5jZVR5cGUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhbHVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXdyaXRlci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmlzaXRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Q3JlYXRlTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5
cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJBZGRyZXNzU3BhY2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkFub255bW91c1ZhcmlhYmxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJBcnJheVJlZlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkFycmF5VHlwZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQXV0b1dyYXBwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhbGxFeHByZXNzaW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDYWxsRnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IkNoZWNrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja0xpdGVyYWxU
eXBlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tMb29wcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNoYWJs
ZUNvZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2xv
bmVQcm9ncmFtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDb21tYUV4cHJlc3Npb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnN0ZXhwckZvbGRlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQ29udGludWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnZlcnRQdHJUb0Fy
cmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG9XaGlsZUxvb3Au
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkRvdWJsZUxpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRv
dWJsZUxpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJEZXJlZmVyZW5jZUV4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVBcnJheVJlZi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRUJ1
ZmZlckJ1aWxkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVQdHIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkVudW1MaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJF
bnVtTWVtYmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFbnVtVHlwZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRXZhbHVhdGlvbkNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iRXZhbHVhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFeHByZXNzaW9uRmlu
ZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGaWVsZC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iRmluZEhpZ2hab21iaWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbGF0
dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbGF0dGVuZWRT
dHJ1Y3RPZmZzZXRHYXRoZXJlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRmxvYXRMaXRl
cmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbG9hdExpdGVyYWxUeXBlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJGb2xkQ29uc3RleHBycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iRm9yTG9vcC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVuYy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRnVuY0RlZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVu
Y0luc3RhbnRpYXRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVuY1BhcmFtZXRlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVuY3Rpb25MaWtlQmxvY2suanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkhpZ2hab21iaWVGaW5kZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IklkZW50aXR5RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSWZTdGF0
ZW1lbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkluZGV4RXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5mZXJUeXBlc0ZvckNhbGwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IklubGluZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5saW5lci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5zdGFudGlhdGVJbW1lZGlhdGVzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJJbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJ
bnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGV4ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9naWNhbEV4cHJlc3Npb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IkxvZ2ljYWxOb3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ikxvb3BDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJNYWtlQXJyYXlSZWZFeHBy
ZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJNYWtlUHRyRXhwcmVzc2lvbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTmFtZUNvbnRleHQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ik5hbWVSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTmF0aXZlRnVu
Yy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTmF0aXZlRnVuY0luc3RhbmNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJOYXRpdmVUeXBlSW5zdGFuY2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik5vcm1hbFVz
ZVByb3BlcnR5UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik51bGxMaXRlcmFs
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOdWxsVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iUGFyc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByZXBhcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlByb3BlcnR5UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlByb2dyYW0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3RvY29sLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJQcm90b2NvbERlY2wuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlByb3RvY29sRnVuY0RlY2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3Rv
Y29sUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJQdHJUeXBlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJS
ZXNvbHZlTmFtZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZElt
cGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJTdGFuZGFyZExpYnJhcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IlN0YXRlbWVudENsb25lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3RydWN0TGF5b3V0
QnVpbGRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3RydWN0VHlwZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iU3Vic3RpdHV0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJTeW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3lu
dGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZURl
Zi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJUeXBlT3JWYXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iVHlwZVBhcmFtZXRlclJld3JpdGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJU
eXBlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlVmFyaWFibGUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlR5cGVWYXJpYWJsZVRyYWNrZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IlR5cGVkVmFsdWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlVpbnRMaXRl
cmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlVuaWZpY2F0aW9uQ29udGV4dC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iVmFyaWFibGVEZWNsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJWYXJpYWJsZVJlZi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmlzaXRpbmdTZXQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IldTeW50YXhFcnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iV1RyYXBF
cnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iV2hpbGVMb29wLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXcmFw
Q2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjU2hhZGVyU291cmNlIHsKKyAgICBmb250
LWZhbWlseTogbW9ub3NwYWNlOworICAgIHdpZHRoOiA3MDBweDsKKyAgICBoZWlnaHQ6IDQwMHB4
OworfQorCit0ZCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgor
PHNjcmlwdD4KK2xldCBkZWZhdWx0U2hhZGVyU291cmNlID0gYHN0cnVjdCBWZXJ0ZXhJbnB1dCB7
CisgICAgZmxvYXQyIHBvc2l0aW9uOworICAgIGZsb2F0MyBjb2xvcjsKK30KKworc3RydWN0IFZl
cnRleE91dHB1dCB7CisgICAgZmxvYXQ0IHdzbF9Qb3NpdGlvbjsKKyAgICBmbG9hdDMgY29sb3I7
Cit9CisKK3N0cnVjdCBGcmFnbWVudE91dHB1dCB7CisgICAgZmxvYXQ0IHdzbF9Db2xvcjsKK30K
KwordmVydGV4IFZlcnRleE91dHB1dCB2ZXJ0ZXhTaGFkZXIoVmVydGV4SW5wdXQgdmVydGV4SW5w
dXQpIHsKKyAgICBWZXJ0ZXhPdXRwdXQgcmVzdWx0OworICAgIHJlc3VsdC53c2xfUG9zaXRpb24g
PSBmbG9hdDQodmVydGV4SW5wdXQucG9zaXRpb24sIDAuLCAxLik7CisgICAgcmVzdWx0LmNvbG9y
ID0gdmVydGV4SW5wdXQuY29sb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnJhZ21lbnQg
RnJhZ21lbnRPdXRwdXQgZnJhZ21lbnRTaGFkZXIoVmVydGV4T3V0cHV0IHN0YWdlSW4pIHsKKyAg
ICBGcmFnbWVudE91dHB1dCByZXN1bHQ7CisgICAgcmVzdWx0LndzbF9Db2xvciA9IGZsb2F0NChz
dGFnZUluLmNvbG9yLCAxLik7CisgICAgcmV0dXJuIHJlc3VsdDsKK31gOworCitsZXQgc2hhZGVy
U291cmNlVGV4dGFyZWE7CitsZXQgbG9jYWxTdG9yYWdlOworbGV0IGNvbXBpbGVMb2dFbGVtZW50
OworbGV0IHZlcnRleFNoYWRlclNlbGVjdDsKK2xldCBmcmFnbWVudFNoYWRlclNlbGVjdDsKK2xl
dCBkYXRhVGFibGU7CitsZXQgcmVzdWx0VGFibGU7CisKK2xldCBwcm9ncmFtOworbGV0IGF2YWls
YWJsZVZlcnRleFNoYWRlcnM7CitsZXQgYXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzOworbGV0IGN1
cnJlbnRWZXJ0ZXhTaGFkZXI7CitsZXQgY3VycmVudEZyYWdtZW50U2hhZGVyOworbGV0IGlubGlu
ZWRWZXJ0ZXhTaGFkZXI7CitsZXQgaW5saW5lZEZyYWdtZW50U2hhZGVyOworbGV0IGFsbEFyZ3Vt
ZW50SW5mb3M7CitsZXQgYXJndW1lbnRFUHRyczsKK2xldCBzdGFnZUluQXJndW1lbnRJbmRleDsK
Kword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICBzaGFk
ZXJTb3VyY2VUZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTaGFkZXJTb3VyY2Ui
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQ29tcGlsZUJ1dHRvbiIpLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UpOworICAgIGNvbXBp
bGVMb2dFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNvbXBpbGVMb2ciKTsKKyAg
ICB2ZXJ0ZXhTaGFkZXJTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVmVydGV4U2hh
ZGVyU2VsZWN0Iik7CisgICAgZnJhZ21lbnRTaGFkZXJTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiRnJhZ21lbnRTaGFkZXJTZWxlY3QiKTsKKyAgICB2ZXJ0ZXhTaGFkZXJTZWxlY3Qu
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZCk7CisgICAg
ZnJhZ21lbnRTaGFkZXJTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0ZWRT
aGFkZXJzQ2hhbmdlZCk7CisgICAgZGF0YVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IkRhdGFUYWJsZSIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJSdW5CdXR0b24iKS5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHJ1blNoYWRlcnMpOworICAgIHJlc3VsdFRhYmxlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlJlc3VsdFRhYmxlIik7CisgICAgc2hhZGVyU291cmNl
VGV4dGFyZWEuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBzb3VyY2VDb2RlQ2hhbmdlZCk7CisK
KyAgICBsZXQgc2hhZGVyU291cmNlOworICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZSA9
IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisgICAgICAgIHNoYWRlclNvdXJjZSA9IGxvY2FsU3RvcmFn
ZS5nZXRJdGVtKCJTaGFkZXJTb3VyY2UiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorCisg
ICAgaWYgKCFzaGFkZXJTb3VyY2UpCisgICAgICAgIHNoYWRlclNvdXJjZSA9IGRlZmF1bHRTaGFk
ZXJTb3VyY2U7CisgICAgc2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUgPSBzaGFkZXJTb3VyY2U7
CisgICAgY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UoKTsKK30pOworCitmdW5jdGlvbiBjbGVh
ckRhdGFUYWJsZSgpCit7CisgICAgd2hpbGUgKGRhdGFUYWJsZS5sYXN0Q2hpbGQgaW5zdGFuY2Vv
ZiBIVE1MVGFibGVSb3dFbGVtZW50KQorICAgICAgICBkYXRhVGFibGUucmVtb3ZlQ2hpbGQoZGF0
YVRhYmxlLmxhc3RDaGlsZCk7Cit9CisKK2Z1bmN0aW9uIGNsZWFyUmVzdWx0VGFibGUoKQorewor
ICAgIHdoaWxlIChyZXN1bHRUYWJsZS5sYXN0Q2hpbGQgaW5zdGFuY2VvZiBIVE1MVGFibGVSb3dF
bGVtZW50KQorICAgICAgICByZXN1bHRUYWJsZS5yZW1vdmVDaGlsZChyZXN1bHRUYWJsZS5sYXN0
Q2hpbGQpOworfQorCitmdW5jdGlvbiBjbGVhclNoYWRlclNlbGVjdCgpCit7CisgICAgd2hpbGUg
KHZlcnRleFNoYWRlclNlbGVjdC5maXJzdENoaWxkKQorICAgICAgICB2ZXJ0ZXhTaGFkZXJTZWxl
Y3QucmVtb3ZlQ2hpbGQodmVydGV4U2hhZGVyU2VsZWN0LmZpcnN0Q2hpbGQpOworICAgIHdoaWxl
IChmcmFnbWVudFNoYWRlclNlbGVjdC5maXJzdENoaWxkKQorICAgICAgICBmcmFnbWVudFNoYWRl
clNlbGVjdC5yZW1vdmVDaGlsZChmcmFnbWVudFNoYWRlclNlbGVjdC5maXJzdENoaWxkKTsKK30K
KworZnVuY3Rpb24gc291cmNlQ29kZUNoYW5nZWQoKSB7CisgICAgY29tcGlsZUxvZ0VsZW1lbnQu
dGV4dENvbnRlbnQgPSAiIjsKKyAgICBjbGVhclNoYWRlclNlbGVjdCgpOworICAgIGNsZWFyRGF0
YVRhYmxlKCk7CisgICAgY2xlYXJSZXN1bHRUYWJsZSgpOworfQorCitmdW5jdGlvbiBwcmVzZW50
RXJyb3IobWVzc2FnZSkgeworICAgIGNvbXBpbGVMb2dFbGVtZW50LnRleHRDb250ZW50ID0gbWVz
c2FnZTsKKyAgICBjbGVhclNoYWRlclNlbGVjdCgpOworICAgIGNsZWFyRGF0YVRhYmxlKCk7Cisg
ICAgY2xlYXJSZXN1bHRUYWJsZSgpOworICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK30K
KworZnVuY3Rpb24gY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UoKSB7CisgICAgY29tcGlsZUxv
Z0VsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKKyAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdl
dFRpbWUoKTsKKyAgICBsZXQgcmVzdWx0OworICAgIHRyeSB7CisgICAgICAgIHJlc3VsdCA9IHBy
ZXBhcmUoIi9pbnRlcm5hbC90ZXN0IiwgMCwgc2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmVzdWx0ID0gZTsKKyAgICB9CisgICAgbGV0IGVu
ZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIFBy
b2dyYW0pKSB7CisgICAgICAgIGNvbXBpbGVMb2dFbGVtZW50LnRleHRDb250ZW50ID0gcmVzdWx0
LnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UKKyAgICAgICAgY29tcGls
ZUxvZ0VsZW1lbnQudGV4dENvbnRlbnQgPSAiQ29tcGlsZSBzdWNjZXNzZnVsISI7CisKKyAgICB0
cnkgeworICAgICAgICBzaGFkZXJTb3VyY2UgPSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiU2hhZGVy
U291cmNlIiwgc2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICB9CisKKyAgICBwcm9ncmFtID0gcmVzdWx0OworICAgIGF2YWlsYWJsZVZlcnRleFNoYWRl
cnMgPSBbXTsKKyAgICBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnMgPSBbXTsKKyAgICBmb3IgKGZ1
bmN0aW9uTmFtZXMgb2YgcHJvZ3JhbS5mdW5jdGlvbnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9y
IChmdW5jIG9mIGZ1bmN0aW9uTmFtZXMpIHsKKyAgICAgICAgICAgIGlmIChmdW5jLnNoYWRlclR5
cGUgPT0gInZlcnRleCIpCisgICAgICAgICAgICAgICAgYXZhaWxhYmxlVmVydGV4U2hhZGVycy5w
dXNoKGZ1bmMpOworICAgICAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSA9PSAiZnJhZ21lbnQi
KQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyYWdtZW50U2hhZGVycy5wdXNoKGZ1bmMpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNsZWFyU2hhZGVyU2VsZWN0KCk7CisgICAgZnVuY3Rpb24g
Y3JlYXRlT3B0aW9uKHRleHRDb250ZW50KSB7CisgICAgICAgIGxldCBvcHRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0g
dGV4dENvbnRlbnQ7CisgICAgICAgIHJldHVybiBvcHRpb247CisgICAgfQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgYXZhaWxhYmxlVmVydGV4U2hhZGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAg
dmVydGV4U2hhZGVyU2VsZWN0LmFwcGVuZENoaWxkKGNyZWF0ZU9wdGlvbihhdmFpbGFibGVWZXJ0
ZXhTaGFkZXJzW2ldLm5hbWUpKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF2YWlsYWJsZUZy
YWdtZW50U2hhZGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTZWxlY3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlT3B0aW9uKGF2YWlsYWJsZUZyYWdtZW50U2hhZGVyc1tpXS5uYW1l
KSk7CisgICAgc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZCgpOworfQorCitmdW5jdGlvbiBjcmVhdGVU
YWJsZVJvdyhuYW1lLCBlbGVtZW50Q2FsbGJhY2spIHsKKyAgICBsZXQgcm93ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICBsZXQgdmFyaWFibGVDZWxsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGQiKTsKKyAgICBsZXQgdmFsdWVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidGQiKTsKKyAgICB2YXJpYWJsZUNlbGwudGV4dENvbnRlbnQgPSBuYW1lOworICAgIHZh
bHVlQ2VsbC5hcHBlbmRDaGlsZChlbGVtZW50Q2FsbGJhY2soKSk7CisgICAgcm93LmFwcGVuZENo
aWxkKHZhcmlhYmxlQ2VsbCk7CisgICAgcm93LmFwcGVuZENoaWxkKHZhbHVlQ2VsbCk7CisgICAg
cmV0dXJuIHJvdzsKKyAgICBkYXRhVGFibGUuYXBwZW5kQ2hpbGQocm93KTsKK30KKworZnVuY3Rp
b24gbGlua0Vycm9yKG1lc3NhZ2UpIHsKKyAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVu
dCA9IG1lc3NhZ2UgKyAiIEZpeCB0aGlzIGJ5IHNlbGVjdGluZyBhIGRpZmZlcmVudCBwYWlyIG9m
IHNoYWRlcnMgYmVsb3cuIjsKKyAgICBjbGVhckRhdGFUYWJsZSgpOworICAgIGNsZWFyUmVzdWx0
VGFibGUoKTsKK30KKworZnVuY3Rpb24gc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZCgpIHsKKyAgICBj
b21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOworICAgIGN1cnJlbnRWZXJ0ZXhTaGFk
ZXIgPSBhdmFpbGFibGVWZXJ0ZXhTaGFkZXJzW3ZlcnRleFNoYWRlclNlbGVjdC5zZWxlY3RlZElu
ZGV4XTsKKyAgICBjdXJyZW50RnJhZ21lbnRTaGFkZXIgPSBhdmFpbGFibGVGcmFnbWVudFNoYWRl
cnNbZnJhZ21lbnRTaGFkZXJTZWxlY3Quc2VsZWN0ZWRJbmRleF07CisKKyAgICBpbmxpbmVkVmVy
dGV4U2hhZGVyID0gcHJvZ3JhbS5mdW5jSW5zdGFudGlhdG9yLmdldFVuaXF1ZShjdXJyZW50VmVy
dGV4U2hhZGVyLCBbXSk7CisgICAgX2lubGluZUZ1bmN0aW9uKHByb2dyYW0sIGlubGluZWRWZXJ0
ZXhTaGFkZXIsIG5ldyBWaXNpdGluZ1NldChjdXJyZW50VmVydGV4U2hhZGVyKSk7CisKKyAgICBh
bGxBcmd1bWVudEluZm9zID0gW107CisgICAgYXJndW1lbnRFUHRycyA9IFtdOworICAgIGZvciAo
bGV0IHBhcmFtZXRlciBvZiBpbmxpbmVkVmVydGV4U2hhZGVyLnBhcmFtZXRlcnMpIHsKKyAgICAg
ICAgbGV0IGVQdHIgPSBuZXcgRVB0cihuZXcgRUJ1ZmZlcihwYXJhbWV0ZXIudHlwZS5zaXplKSwg
MCk7CisgICAgICAgIGFyZ3VtZW50RVB0cnMucHVzaCh7ZVB0cjogZVB0ciwgc2l6ZTogcGFyYW1l
dGVyLnR5cGUuc2l6ZX0pOworICAgICAgICBsZXQgZ2F0aGVyZXIgPSBuZXcgRmxhdHRlbmVkU3Ry
dWN0T2Zmc2V0R2F0aGVyZXIocGFyYW1ldGVyLm5hbWUpOworICAgICAgICBwYXJhbWV0ZXIudmlz
aXQoZ2F0aGVyZXIpOworICAgICAgICBmb3IgKGFyZ3VtZW50SW5mbyBvZiBnYXRoZXJlci5yZXN1
bHQpIHsKKyAgICAgICAgICAgIGFyZ3VtZW50SW5mby5lUHRyID0gZVB0cjsKKyAgICAgICAgICAg
IGFsbEFyZ3VtZW50SW5mb3MucHVzaChhcmd1bWVudEluZm8pOworICAgICAgICB9CisgICAgfQor
ICAgIGNsZWFyRGF0YVRhYmxlKCk7CisgICAgY2xlYXJSZXN1bHRUYWJsZSgpOworICAgIGZvciAo
bGV0IGluZm8gb2YgYWxsQXJndW1lbnRJbmZvcykgeworICAgICAgICBkYXRhVGFibGUuYXBwZW5k
Q2hpbGQoY3JlYXRlVGFibGVSb3coaW5mby5uYW1lLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICBsZXQgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICAg
ICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgY2xlYXJSZXN1bHRUYWJsZSk7Cisg
ICAgICAgICAgICAgaW5wdXQudHlwZSA9ICJ0ZXh0IjsKKyAgICAgICAgICAgICByZXR1cm4gaW5w
dXQ7CisgICAgICAgIH0pKTsKKyAgICB9CisKKyAgICBsZXQgZm91bmQgPSBmYWxzZTsKKyAgICBs
ZXQgaW5kZXggPSAwOworICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBjdXJyZW50RnJhZ21lbnRT
aGFkZXIucGFyYW1ldGVycykgeworICAgICAgICBpZiAocGFyYW1ldGVyLm5hbWUgPT0gInN0YWdl
SW4iKSB7CisgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXBhcmFt
ZXRlci50eXBlLmVxdWFscyhjdXJyZW50VmVydGV4U2hhZGVyLnJldHVyblR5cGUpKQorICAgICAg
ICAgICAgICAgIGxpbmtFcnJvcigiVmVydGV4IHNoYWRlcidzIHJldHVybiB0eXBlIG5lZWRzIHRv
IG1hdGNoIHRoZSBzdGFnZUluIHBhcmFtZXRlciBvZiB0aGUgZnJhZ21lbnQgc2hhZGVyISIpOwor
ICAgICAgICAgICAgc3RhZ2VJbkFyZ3VtZW50SW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgICsraW5kZXg7CisgICAgfQorICAgIGlmICghZm91bmQp
CisgICAgICAgIGxpbmtFcnJvcigiQ291bGQgbm90IGZpbmQgdGhlIHN0YWdlSW4gYXJndW1lbnQg
aW4gdGhlIGZyYWdtZW50IHNoYWRlciEiKTsKKyAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0
aCA+IDEpCisgICAgICAgIGxpbmtFcnJvcigiRnJhZ21lbnQgc2hhZGVycyBjdXJyZW50bHkgZG9u
J3Qga25vdyBob3cgdG8gaGF2ZSBhbnkgb3RoZXIgYXJndW1lbnRzIG90aGVyIHRoYW4gc3RhZ2VJ
bi4iKTsKK30KKworZnVuY3Rpb24gcnVuU2hhZGVycygpIHsKKyAgICBsZXQgZnVuYyA9IGlubGlu
ZWRWZXJ0ZXhTaGFkZXI7CisKKyAgICBsZXQgaW5kZXggPSAwOworICAgIGZvciAobGV0IGNoaWxk
RWxlbWVudCBvZiBkYXRhVGFibGUuY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKCEoY2hpbGRFbGVt
ZW50IGluc3RhbmNlb2YgSFRNTFRhYmxlUm93RWxlbWVudCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgbGV0IHZhbHVlID0gY2hpbGRFbGVtZW50LmNoaWxkcmVuWzFdLmZpcnN0Q2hp
bGQudmFsdWU7CisgICAgICAgIGxldCBhcmd1bWVudEluZm8gPSBhbGxBcmd1bWVudEluZm9zW2lu
ZGV4XTsKKyAgICAgICAgbGV0IHR5cGUgPSBhcmd1bWVudEluZm8udHlwZTsKKyAgICAgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgImZsb2F0IjoKKyAgICAgICAgICAgIHZhbHVlID0g
TWF0aC5mcm91bmQocGFyc2VGbG9hdCh2YWx1ZSkpOworICAgICAgICAgICAgYXJndW1lbnRJbmZv
LmVQdHIuc2V0KGFyZ3VtZW50SW5mby5vZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJkb3VibGUiOgorICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0
KHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJpbnQzMiI6CisgICAg
ICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlKSB8IDA7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAidWludDMyIjoKKyAgICAgICAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFs
dWUpID4+PiAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBwcmVzZW50RXJyb3IoIkkgZG9uJ3Qga25vdyBob3cgdG8gcGFyc2UgdmFsdWVzIG9mIHR5
cGUgIiArIHR5cGUpOworICAgICAgICB9CisgICAgICAgIGlmIChpc05hTih2YWx1ZSkpCisgICAg
ICAgICAgICBwcmVzZW50RXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBpbnB1dCBkYXRhICIgKyBpbmRl
eCk7CisgICAgICAgIGFyZ3VtZW50SW5mby5lUHRyLnNldChhcmd1bWVudEluZm8ub2Zmc2V0LCB2
YWx1ZSk7CisgICAgICAgICsraW5kZXg7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBmdW5jLnBhcmFtZXRlcnMubGVuZ3RoOyArK2kpCisgICAgICAgIGZ1bmMucGFyYW1ldGVyc1tp
XS5lUHRyLmNvcHlGcm9tKGFyZ3VtZW50RVB0cnNbaV0uZVB0ciwgYXJndW1lbnRFUHRyc1tpXS5z
aXplKTsKKyAgICBsZXQgcmVzdWx0ID0gbmV3IEV2YWx1YXRvcihwcm9ncmFtKS5ydW5GdW5jKGZ1
bmMpOworCisgICAgaW5saW5lZEZyYWdtZW50U2hhZGVyID0gcHJvZ3JhbS5mdW5jSW5zdGFudGlh
dG9yLmdldFVuaXF1ZShjdXJyZW50RnJhZ21lbnRTaGFkZXIsIFtdKTsKKyAgICBfaW5saW5lRnVu
Y3Rpb24ocHJvZ3JhbSwgaW5saW5lZEZyYWdtZW50U2hhZGVyLCBuZXcgVmlzaXRpbmdTZXQoY3Vy
cmVudEZyYWdtZW50U2hhZGVyKSk7CisgICAgZnVuYyA9IGlubGluZWRGcmFnbWVudFNoYWRlcjsK
KworICAgIGZ1bmMucGFyYW1ldGVyc1tzdGFnZUluQXJndW1lbnRJbmRleF0uZVB0ci5jb3B5RnJv
bShyZXN1bHQsIGZ1bmMucGFyYW1ldGVyc1tzdGFnZUluQXJndW1lbnRJbmRleF0udHlwZS5zaXpl
KTsKKworICAgIHJlc3VsdCA9IG5ldyBFdmFsdWF0b3IocHJvZ3JhbSkucnVuRnVuYyhmdW5jKTsK
KworICAgIGNsZWFyUmVzdWx0VGFibGUoKTsKKyAgICBsZXQgZ2F0aGVyZXIgPSBuZXcgRmxhdHRl
bmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIoZnVuYy5yZXR1cm5UeXBlLnR5cGUubmFtZSk7CisgICAg
ZnVuYy5yZXR1cm5UeXBlLnR5cGUudmlzaXQoZ2F0aGVyZXIpOworICAgIGZvciAobGV0IGluZm8g
b2YgZ2F0aGVyZXIucmVzdWx0KSB7CisgICAgICAgIHJlc3VsdFRhYmxlLmFwcGVuZENoaWxkKGNy
ZWF0ZVRhYmxlUm93KGluZm8ubmFtZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4g
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVzdWx0LmdldChpbmZvLm9mZnNldCkpOworICAgICAg
ICB9KSk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5XZWJHUFUg
U2hhZGluZyBMYW5ndWFnZTwvaDE+Cis8b2w+Cis8bGk+CisgICAgV3JpdGUgYSBzaGFkZXIhCisg
ICAgPGRpdj48dGV4dGFyZWEgaWQ9IlNoYWRlclNvdXJjZSI+PC90ZXh0YXJlYT48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJDb21waWxlTG9nIj48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1dCB0eXBlPSJidXR0
b24iIHZhbHVlPSJDb21waWxlIiBpZD0iQ29tcGlsZUJ1dHRvbiI+PC9kaXY+Cis8L2xpPgorPGxp
PgorICAgIFNlbGVjdCB5b3VyIHNoYWRlcnMKKyAgICA8ZGl2PjxsYWJlbD5WZXJ0ZXggU2hhZGVy
IDxzZWxlY3QgaWQ9IlZlcnRleFNoYWRlclNlbGVjdCI+PC9zZWxlY3Q+PC9sYWJlbD48L2Rpdj4K
KyAgICA8ZGl2PjxsYWJlbD5GcmFnbWVudCBTaGFkZXIgPHNlbGVjdCBpZD0iRnJhZ21lbnRTaGFk
ZXJTZWxlY3QiPjwvc2VsZWN0PjwvbGFiZWw+PC9kaXY+Cis8L2xpPgorPGxpPgorICAgIFNwZWNp
ZnkgaW5wdXQgZGF0YQorICAgIDx0YWJsZSBpZD0iRGF0YVRhYmxlIj4KKyAgICAgICAgPHRoZWFk
PgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD5WYXJpYWJsZTwvdGQ+Cisg
ICAgICAgICAgICAgICAgPHRkPlZhbHVlPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAg
IDwvdGhlYWQ+CisgICAgPC90YWJsZT4KKzwvbGk+Cis8bGk+CisgICAgPGRpdj48aW5wdXQgdHlw
ZT0iYnV0dG9uIiB2YWx1ZT0iUnVuIiBpZD0iUnVuQnV0dG9uIj48L2Rpdj4KKyAgICA8dGFibGUg
aWQ9IlJlc3VsdFRhYmxlIj4KKyAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgPHRyPgorICAg
ICAgICAgICAgICAgIDx0ZD5WYXJpYWJsZTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPlZhbHVl
PC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgIDwvdGhlYWQ+CisgICAgPC90YWJsZT4K
KzwvbGk+Cis8L29sPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321268</attachid>
            <date>2017-09-19 17:25:25 -0700</date>
            <delta_ts>2017-09-20 12:32:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177125-20170919172525.patch</filename>
            <type>text/plain</type>
            <size>36057</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODk1NmU0MjQwN2NjYTZhMTk4ZTNhZTI3OTc1MDE4NzBj
YmJkZjc1OS4uYTNlNWVjYzMyOGMzMDZmMzM2NmIyMTI3NjU2NjM0YWFhYjNlMzRiMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDE3LTA5LTE5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBhIHBsYXlncm91bmQgd2hlcmUgcGVvcGxlIGNhbiB0cnkgV1NMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGNyZWF0ZXMgYSB3ZWJwYWdlLCBpbmRleC5odG1sLCB3aGljaCBsZXRzIHVzZXJzIHR5cGUgaW4g
YSBXU0wgcHJvZ3JhbSBhbmQKKyAgICAgICAgcnVuIGl0LCBhbmQgc2VlIHRoZSByZXN1bHRzLgor
CisgICAgICAgIEl0IGFsc28gYWRkcyBzb21lIHJlc3RyaWN0aW9ucyB0byBlbnRyeSBwb2ludHMs
IGFzIGRldGFpbGVkIGluIHRoZSBXU0wubWQgZmlsZS4KKworICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
YWxsRnVuY3Rpb24uanM6CisgICAgICAgIChjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanM6CisgICAgICAgIChDaGVja2VyKToKKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUuTm9uTnVtZXJpY1NlYXJjaGVy
KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUuTm9uTnVtZXJp
Y1NlYXJjaGVyLnByb3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS5fY2hlY2tTaGFkZXJUeXBlLk5vbk51bWVyaWNTZWFyY2hlci5wcm90b3R5cGUu
dmlzaXRQdHJUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5
cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLl9yZXF1aXJlQm9vbCk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanM6IENvcGllZCBmcm9t
IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcy4KKyAgICAgICAg
KEZsYXR0ZW5lZFN0cnVjdE9mZnNldEdhdGhlcmVyKToKKyAgICAgICAgKEZsYXR0ZW5lZFN0cnVj
dE9mZnNldEdhdGhlcmVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToKKyAgICAgICAgKEZsYXR0ZW5l
ZFN0cnVjdE9mZnNldEdhdGhlcmVyLnByb3RvdHlwZS52aXNpdFJlZmVyZW5jZVR5cGUpOgorICAg
ICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0RmllbGQp
OgorICAgICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0
TmF0aXZlVHlwZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoK
KyAgICAgICAgKEZ1bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lLmpzOgorICAgICAgICAocmVzb2x2ZUlubGluZWRGdW5j
dGlvbik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanM6
CisgICAgICAgIChOYW1lQ29udGV4dC5wcm90b3R5cGUuZ2V0IGxldCk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qczoKKyAgICAgICAgKHJl
c29sdmVPdmVybG9hZEltcGwpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAgICAg
ICAgKFRFU1Rfc2hhZGVyVHlwZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L2luZGV4Lmh0bWw6IEFkZGVkLgorCiAyMDE3LTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUHJpbWl0aXZlIHByb3RvY29sIHNob3VsZCBoYXZlIGNhcGl0
YWwgbmFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IGU4MTE3NjVkZDE4
OTkzOTA4NjEyYmI0MjViODg5NWQ2ZGY4OTdhNDMuLjhjYjUzNDVkOWY4MzdkMWMzNzk5NGZmZTI2
MzZjZjk4MjMwNWZkNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTc4
LDYgKzc4LDcgQEAgbG9hZCgiRXhwcmVzc2lvbkZpbmRlci5qcyIpOwogbG9hZCgiRmllbGQuanMi
KTsKIGxvYWQoIkZpbmRIaWdoWm9tYmllcy5qcyIpOwogbG9hZCgiRmxhdHRlblByb3RvY29sRXh0
ZW5kcy5qcyIpOworbG9hZCgiRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanMiKTsKIGxv
YWQoIkZsb2F0TGl0ZXJhbC5qcyIpOwogbG9hZCgiRmxvYXRMaXRlcmFsVHlwZS5qcyIpOwogbG9h
ZCgiRm9sZENvbnN0ZXhwcnMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxGdW5jdGlvbi5qcwppbmRleCA0MzMwYzliYmQ5OGU5ODczOThjZWRjYjFkN2NmM2UxYjc4
YTg4NTU3Li5mMGYwMzlmNTQ2MmQwNzgxZDgyYjM0NjRjODc0Nzg3MTRjMGExNzM3IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRnVuY3Rpb24uanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzCkBAIC0yOCw3ICsy
OCw3IEBACiBmdW5jdGlvbiBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgbmFtZSwgdHlwZUFyZ3VtZW50
cywgYXJndW1lbnRMaXN0KQogewogICAgIGxldCBhcmd1bWVudFR5cGVzID0gYXJndW1lbnRMaXN0
Lm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC50eXBlKTsKLSAgICBsZXQgZnVuY09yRmFpbHVyZXMg
PSByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFy
Z3VtZW50VHlwZXMpOworICAgIGxldCBmdW5jT3JGYWlsdXJlcyA9IHJlc29sdmVJbmxpbmVkRnVu
Y3Rpb24ocHJvZ3JhbSwgbmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgdHJ1ZSk7
CiAgICAgaWYgKCEoZnVuY09yRmFpbHVyZXMgaW5zdGFuY2VvZiBGdW5jKSkgewogICAgICAgICBs
ZXQgZmFpbHVyZXMgPSBmdW5jT3JGYWlsdXJlczsKICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3IoIjxjYWxsRnVuY3Rpb24+IiwgIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGNhbGwgIiArIG5h
bWUgKyAiPCIgKyB0eXBlQXJndW1lbnRzICsgIj4oIiArIGFyZ3VtZW50TGlzdCArICIpIiArIChm
YWlsdXJlcy5sZW5ndGggPyAiOyB0cmllZDpcbiIgKyBmYWlsdXJlcy5qb2luKCJcbiIpIDogIiIp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IGYyM2U2MTIw
MWI5N2I2OTJlOTUzMzQxMTFkMDBiNGZhYTk0NzcwOWEuLjk3Nzk0YWZlY2Q1YmJmMDk2ZTU4ZDg2
MjU0ZmVhODI0ZmZhMmEzYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tl
ci5qcwpAQCAtMzAsNiArMzAsOCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX3Byb2dyYW0gPSBwcm9ncmFtOwogICAgICAg
ICB0aGlzLl9jdXJyZW50U3RhdGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdmVydGV4RW50
cnlQb2ludHMgPSBuZXcgU2V0KCk7CisgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMg
PSBuZXcgU2V0KCk7CiAgICAgfQogICAgIAogICAgIHZpc2l0UHJvZ3JhbShub2RlKQpAQCAtNTMs
OSArNTUsNjcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
ICAgIGRvU3RhdGVtZW50KGZ1bmMpOwogICAgICAgICB9CiAgICAgfQorCisgICAgX2NoZWNrU2hh
ZGVyVHlwZShub2RlKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFJlbGF4IHRoZXNlIGNoZWNr
cyBvbmNlIHdlIGhhdmUgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgdGV4dHVyZXMgYW5kIHNhbXBs
ZXJzLgorICAgICAgICBpZiAobm9kZS50eXBlUGFyYW1ldGVycy5sZW5ndGggIT0gMCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCJFbnRyeSBwb2ludCAiICsgbm9kZS5uYW1lICsg
IiBtdXN0IG5vdCBoYXZlIHR5cGUgYXJndW1lbnRzLiIpOworICAgICAgICBjbGFzcyBOb25OdW1l
cmljU2VhcmNoZXIgZXh0ZW5kcyBWaXNpdG9yIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5h
bWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZpc2l0
QXJyYXlSZWZUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3IodGhpcy5fbmFtZSArICIgbXVzdCB0cmFuc2l0aXZlbHkgb25seSBoYXZl
IG51bWVyaWMgdHlwZXMuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2aXNpdFB0clR5
cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcih0aGlzLl9uYW1lICsgIiBtdXN0IHRyYW5zaXRpdmVseSBvbmx5IGhhdmUgbnVtZXJpYyB0
eXBlcy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUu
c2hhZGVyVHlwZSkgeworICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgorICAgICAgICAgICAgaWYgKHRo
aXMuX3ZlcnRleEVudHJ5UG9pbnRzLmhhcyhub2RlLm5hbWUpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKCJEdXBsaWNhdGUgdmVydGV4IGVudHJ5IHBvaW50IG5hbWUgIiAr
IG5vZGUubmFtZSk7CisgICAgICAgICAgICB0aGlzLl92ZXJ0ZXhFbnRyeVBvaW50cy5hZGQobm9k
ZS5uYW1lKTsKKyAgICAgICAgICAgIGlmICghKG5vZGUucmV0dXJuVHlwZS50eXBlIGluc3RhbmNl
b2YgU3RydWN0VHlwZSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoIlZl
cnRleCBzaGFkZXIgIiArIG5vZGUubmFtZSArICIgbXVzdCByZXR1cm4gYSBzdHJ1Y3QuIik7Cisg
ICAgICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHBhcmFtZXRlci50eXBlLnR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBl
KQorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudHlwZS52aXNpdChuZXcgTm9uTnVtZXJp
Y1NlYXJjaGVyKG5vZGUubmFtZSkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEocGFyYW1l
dGVyLnR5cGUudHlwZSBpbnN0YW5jZW9mIEFycmF5UmVmVHlwZSkpCisgICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUubmFtZSArICIgYWNjZXB0cyBhIHBhcmFtZXRl
ciAiICsgcGFyYW1ldGVyLm5hbWUgKyAiIHdoaWNoIGlzbid0IGEgc3RydWN0IGFuZCBpc24ndCBh
biBBcnJheVJlZi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vZGUucmV0dXJuVHlw
ZS50eXBlLnZpc2l0KG5ldyBOb25OdW1lcmljU2VhcmNoZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgImZyYWdtZW50IjoKKyAgICAgICAgICAgIGlmICh0aGlzLl9mcmFnbWVu
dEVudHJ5UG9pbnRzLmhhcyhub2RlLm5hbWUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKCJEdXBsaWNhdGUgZnJhZ21lbnQgZW50cnkgcG9pbnQgbmFtZSAiICsgbm9kZS5u
YW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMuYWRkKG5vZGUubmFt
ZSk7CisgICAgICAgICAgICBpZiAoIShub2RlLnJldHVyblR5cGUudHlwZSBpbnN0YW5jZW9mIFN0
cnVjdFR5cGUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCJGcmFnbWVu
dCBzaGFkZXIgIiArIG5vZGUubmFtZSArICIgbXVzdCByZXR1cm4gYSBzdHJ1Y3QuIik7CisgICAg
ICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHBhcmFtZXRlci5uYW1lID09ICJzdGFnZUluIikgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIShwYXJhbWV0ZXIudHlwZS50eXBlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiRnJhZ21lbnQg
ZW50cnkgcG9pbnRzJyBzdGFnZUluIHBhcmFtZXRlciAob2YgIiArIG5vZGUubmFtZSArICIpIG11
c3QgYmUgYSBzdHJ1Y3QgdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnR5
cGUudmlzaXQobmV3IE5vbk51bWVyaWNTZWFyY2hlcihub2RlLm5hbWUpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoIShwYXJhbWV0ZXIudHlwZS50
eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKCJGcmFnbWVudCBlbnRyeSBwb2ludCdzICIgKyBwYXJhbWV0ZXIu
bmFtZSArICIgcGFyYW1ldGVyIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UuIik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZS5yZXR1cm5UeXBlLnR5
cGUudmlzaXQobmV3IE5vbk51bWVyaWNTZWFyY2hlcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KICAgICAKICAgICB2aXNpdEZ1bmNEZWYobm9kZSkKICAgICB7CisgICAg
ICAgIGlmIChub2RlLnNoYWRlclR5cGUpCisgICAgICAgICAgICB0aGlzLl9jaGVja1NoYWRlclR5
cGUobm9kZSk7CiAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKICAgICB9CiAgICAgCkBA
IC00MDgsNyArNDY4LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICBpZiAoIXR5cGUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cHJlc3Npb24gaGFz
IG5vIHR5cGUsIGJ1dCBzaG91bGQgYmUgYm9vbDogIiArIGV4cHJlc3Npb24pOwogICAgICAgICBp
ZiAoIXR5cGUuZXF1YWxzKHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy5ib29sKSkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBXRXJyb3IoIkV4cHJlc3Npb24gaXNuJ3QgYSBib29sOiAiICsgZXhwcmVz
c2lvbik7CisgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiRXhwcmVzc2lvbiBpc24n
dCBhIGJvb2w6ICIgKyBleHByZXNzaW9uKTsKICAgICB9CiAKICAgICB2aXNpdExvZ2ljYWxOb3Qo
bm9kZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZsYXR0ZW5l
ZFN0cnVjdE9mZnNldEdhdGhlcmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ4YjFlMzEwZWFl
NGNlNTA1ZWZmMzI1YTdhZWI5NjJiMmNiZmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZsYXR0ZW5lZFN0cnVjdE9mZnNldEdhdGhlcmVyLmpzCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworInVzZSBzdHJpY3QiOworCitjbGFzcyBGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJlciBl
eHRlbmRzIFZpc2l0b3IgeworICAgIGNvbnN0cnVjdG9yKGluaXRpYWwpCisgICAgeworICAgICAg
ICBzdXBlcigpOworICAgICAgICB0aGlzLl9vZmZzZXQgPSAwOworICAgICAgICB0aGlzLl9uYW1l
ID0gW2luaXRpYWxdOworICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICB9CisKKyAgICBn
ZXQgcmVzdWx0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHQ7CisgICAgfQor
ICAgIAorICAgIHZpc2l0UmVmZXJlbmNlVHlwZShub2RlKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdmlzaXRGaWVsZChub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5fb2Zmc2V0ICs9IG5vZGUu
b2Zmc2V0OworICAgICAgICB0aGlzLl9uYW1lLnB1c2gobm9kZS5uYW1lKTsKKyAgICAgICAgc3Vw
ZXIudmlzaXRGaWVsZChub2RlKTsKKyAgICAgICAgdGhpcy5fbmFtZS5wb3AoKTsKKyAgICAgICAg
dGhpcy5fb2Zmc2V0IC09IG5vZGUub2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2aXNpdE5hdGl2
ZVR5cGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdC5wdXNoKHtuYW1lOiB0aGlz
Ll9uYW1lLmpvaW4oIi4iKSwgb2Zmc2V0OiB0aGlzLl9vZmZzZXQsIHR5cGU6IG5vZGUubmFtZX0p
OworICAgICAgICBzdXBlci52aXNpdE5hdGl2ZVR5cGUobm9kZSk7CisgICAgfQorfQorCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwppbmRleCA1MjczZGUwM2Q5MmNlODUyODhiMGVl
NjYzZWI5YzQ0MGFjMDhjNmIzLi40ZGUyMTE3YjA1YmFkYjExYzhkNzM3ZWNlYWU5NTA4Y2Y0ZTU5
MGYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKQEAgLTYwLDcgKzYwLDEz
IEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAKICAgICB0b0RlY2xTdHJpbmcoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLmlzQ2FzdCA/ICJvcGVyYXRvciAiICsgdGhpcy5y
ZXR1cm5UeXBlIDogdGhpcy5yZXR1cm5UeXBlICsgIiAiICsgdGhpcy5uYW1lKSArICI8IiArIHRo
aXMudHlwZVBhcmFtZXRlcnMgKyAiPigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAg
ICBsZXQgdHlwZSA9ICIiOworICAgICAgICBpZiAodGhpcy5zaGFkZXJUeXBlKQorICAgICAgICAg
ICAgdHlwZSA9IHRoaXMuc2hhZGVyVHlwZSArICIgIjsKKyAgICAgICAgbGV0IHJldHVybkFuZE5h
bWUgPSB0aGlzLnJldHVyblR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgIGlmICh0aGlz
LmlzQ2FzdCkKKyAgICAgICAgICAgIHJldHVybkFuZE5hbWUgPSAib3BlcmF0b3IgIiArIHRoaXMu
cmV0dXJuVHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUgKyByZXR1cm5BbmROYW1lICsgIjwiICsg
dGhpcy50eXBlUGFyYW1ldGVycyArICI+KCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CiAgICAg
fQogICAgIAogICAgIHRvU3RyaW5nKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0lubGluZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGlu
ZS5qcwppbmRleCAxN2UwMGU3YjczYWViMjc5Nzc5OWM3ZTVmNmFlYTRjYTM0ZDc4ZGQ0Li45ZGJi
MzBkZWVhOTMwNzc4Y2Q0NzRiODJiOTA1YWM1ZmRkZmY4MGQwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5saW5lLmpzCkBAIC01Myw5ICs1Myw5IEBAIGZ1bmN0aW9uIF9pbmxpbmVG
dW5jdGlvbihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykKICAgICBmdW5jLmlubGluZWQgPSB0cnVl
OwogfQogCi1mdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5
cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCitmdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0
aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIGFsbG93RW50
cnlQb2ludCA9IGZhbHNlKQogewotICAgIGxldCBvdmVybG9hZCA9IHByb2dyYW0uZ2xvYmFsTmFt
ZUNvbnRleHQucmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVu
dFR5cGVzKTsKKyAgICBsZXQgb3ZlcmxvYWQgPSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnJl
c29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgdW5k
ZWZpbmVkLCBhbGxvd0VudHJ5UG9pbnQpOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYykKICAgICAg
ICAgcmV0dXJuIG92ZXJsb2FkLmZhaWx1cmVzOwogICAgIGlmICghb3ZlcmxvYWQuZnVuYy50eXBl
UGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05h
bWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQu
anMKaW5kZXggZWRjMjhiMThkYWIzOWMzZTgzNzcyZDI1NmUyYTg1NmQ3ZTUwOWRhNC4uZTYzOTEz
ODQ2ZmRjOGQ5YWExYjE4OTNiMTM5OTQ1ZmZiMmE3YWYzYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTk2LDEzICs5NiwxMyBAQCBjbGFzcyBO
YW1lQ29udGV4dCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHJl
c29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0
dXJuVHlwZSkKKyAgICByZXNvbHZlRnVuY092ZXJsb2FkKG5hbWUsIHR5cGVBcmd1bWVudHMsIGFy
Z3VtZW50VHlwZXMsIHJldHVyblR5cGUsIGFsbG93RW50cnlQb2ludCA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgbGV0IGZ1bmN0aW9ucyA9IHRoaXMuZ2V0KEZ1bmMsIG5hbWUpOwogICAgICAgICBp
ZiAoIWZ1bmN0aW9ucykKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IFtdfTsKICAgICAg
ICAgCi0gICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFy
Z3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSk7CisgICAgICAgIHJldHVybiByZXNv
bHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywg
cmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50KTsKICAgICB9CiAgICAgCiAgICAgZ2V0IGN1cnJl
bnRTdGF0ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jl
c29sdmVPdmVybG9hZEltcGwuanMKaW5kZXggOTdmZmEzOGJhNzIwZWE4YjBiODVhMWQ5YjQyNDZj
NjczZDdjYzc5NC4uN2UyMjE1NmRlMWFjNWUyYTZjNzI0YWQzNDY5ZGM5MWU3NDZmMjU2NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJ
bXBsLmpzCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotZnVuY3Rpb24g
cmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlw
ZXMsIHJldHVyblR5cGUpCitmdW5jdGlvbiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywg
dHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50
ID0gZmFsc2UpCiB7CiAgICAgaWYgKCFmdW5jdGlvbnMpCiAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiTnVsbCBmdW5jdGlvbnM7IHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgdGhlIGNh
bGxlci4iKTsKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChm
dW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUKICAgICBs
ZXQgZmFpbHVyZXMgPSBbXTsKICAgICBsZXQgc3VjY2Vzc2VzID0gW107CiAgICAgZm9yIChsZXQg
ZnVuYyBvZiBmdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSkgeworICAg
ICAgICBpZiAoIWFsbG93RW50cnlQb2ludCAmJiBmdW5jLnNoYWRlclR5cGUpIHsKICAgICAgICAg
ICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkZ1
bmN0aW9uIGlzIGEgIiArIGZ1bmMuc2hhZGVyVHlwZSArICIgc2hhZGVyLCBzbyBpdCBjYW5ub3Qg
YmUgY2FsbGVkIGZyb20gd2l0aGluIGFuIGV4aXN0aW5nIHNoYWRlci4iKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMKaW5kZXggMDhhNTQ0MzcyZjhiMjMwNTI0NGNiYmFhYzNhNDY0
ZmFhYzQ3MTIxNy4uNTZmNTY2MWQ5MjdhYzZjZTE3ZWU0NjMwMjk3YjQyNjZjNWNmZjU1YiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpA
QCAtMTA3LDYgKzEwNyw3IEBAIGJvb2wgb3BlcmF0b3ImKGJvb2wgYSwgYm9vbCBiKQogICAgICAg
ICByZXR1cm4gYjsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKIGJvb2wgb3BlcmF0b3J8KGJvb2wg
YSwgYm9vbCBiKQogewogICAgIGlmIChhKQpAQCAtMTE1LDEyICsxMTYsMTQgQEAgYm9vbCBvcGVy
YXRvcnwoYm9vbCBhLCBib29sIGIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBm
YWxzZTsKIH0KKwogYm9vbCBvcGVyYXRvcl4oYm9vbCBhLCBib29sIGIpCiB7CiAgICAgaWYgKGEp
CiAgICAgICAgIHJldHVybiAhYjsKICAgICByZXR1cm4gYjsKIH0KKwogYm9vbCBvcGVyYXRvcn4o
Ym9vbCB2YWx1ZSkKIHsKICAgICByZXR1cm4gIXZhbHVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5odG1sCmluZGV4IDYyZGEyMzAxYTljMTczMjlmOTJhNzlmY2FkYWUwNmZhOTRh
ZDA5MzguLjQ2M2E1Mzg1N2NjNjYyZWVlNmRmYjUyYWE0ZGYwYjdkYWNmMTgzZTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTU1LDYgKzU1LDcgQEAKIDxzY3Jp
cHQgc3JjPSJGaWVsZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRmluZEhpZ2hab21iaWVz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbGF0dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJlci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRmxvYXRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJGbG9hdExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGb2xk
Q29uc3RleHBycy5qcyI+PC9zY3JpcHQ+CkBAIC03NSw3ICs3Niw2IEBACiA8c2NyaXB0IHNyYz0i
SW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbFR5cGUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkludHJpbnNpY3MuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9IkxldEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJMaXRlcmFsVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggYTk5NmM4OGRjN2U5NTM3ZTU5ODkwNTdlYTIwYTdhMjA3
ZDQxYTMyNy4uODU1MDlkZmMyZWU5NjhkYTgwZjZjOTBiOWU0NGMyZDdkZjMxMWYzYSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC0zNzA5LDE1ICszNzA5LDEzMSBAQCBm
dW5jdGlvbiBURVNUX3NoYWRlclR5cGVzKCkKIHsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgp
ID0+IGRvUHJlcChgCi0gICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGJhcigpCisgICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZlcnRleCBGb28gYmFyKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmxvYXQ0KCk7CisgICAgICAgICAgICAgICAgRm9vIHJlc3VsdDsKKyAgICAg
ICAgICAgICAgICByZXN1bHQueCA9IGZsb2F0NCgpOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmbG9hdDQgZm9vKCkgeworICAgICAg
ICAgICAgRm9vIGZvbygpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYmFyKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIGApLAogICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJy
b3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAg
IHZlcnRleCBmbG9hdCBiYXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biA0LjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3Rh
bmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAo
YAorICAgICAgICAgICAgc3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vXiB4KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3Ry
dWN0IEJvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAg
ICAgICAgICBkZXZpY2UgQm9vXiB5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4
IEZvbyBiYXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAg
ICAgICAgICAgc3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzdHJ1Y3QgQm9vIHsKKyAgICAgICAgICAgICAgICBkZXZpY2Ug
Rm9vXiB5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoQm9vIGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICAg
ICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHZlcnRleCBGb28gYmFyKGRldmljZSBGb29eIHgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICAgICAgfQorICAgICAgICBgKSwK
KyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwo
CisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAg
ICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYWdtZW50
IEZvbyBiYXIoRm9vIGZvbykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Rm9vKCk7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVw
KGAKKyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgICAgIGZsb2F0NCB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihkZXZpY2UgRm9vXiBz
dGFnZUluKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5
cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAg
ICAgICAgc3RydWN0IEJvbyB7CisgICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBmbG9hdDQgeDsK
KyAgICAgICAgICAgICAgICBkZXZpY2UgQm9vXiB5OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYm9vKCk7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAg
ICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAg
ICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBCb28geworICAgICAgICAgICAg
ICAgIGZsb2F0NCB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RydWN0IEZvbyB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICAgICAgZGV2aWNlIEJvb14geTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoQm9vIHN0YWdlSW4p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICAg
ICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKIH0KIAogZnVuY3Rpb24gVEVTVF9idWlsdGluVmVjdG9ycygpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzAwZDkxNjZjZmVlNzE0YTNlNDU4
MmM3OGZkZDQzNGNiZDVkNzMwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMCwwICsxLDQ2OCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ik5vZGUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlZmVyZW5jZVR5cGUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhbHVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXdyaXRlci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmlzaXRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Q3JlYXRlTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5
cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJBZGRyZXNzU3BhY2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkFub255bW91c1ZhcmlhYmxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJBcnJheVJlZlR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkFycmF5VHlwZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQXNzaWdubWVudC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQXV0b1dyYXBwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhbGxFeHByZXNzaW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDYWxsRnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IkNoZWNrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja0xpdGVyYWxU
eXBlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tMb29wcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNoYWJs
ZUNvZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2xv
bmVQcm9ncmFtLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDb21tYUV4cHJlc3Npb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnN0ZXhwckZvbGRlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQ29udGludWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbnZlcnRQdHJUb0Fy
cmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG9XaGlsZUxvb3Au
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkRvdWJsZUxpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRv
dWJsZUxpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJEZXJlZmVyZW5jZUV4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVBcnJheVJlZi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRUJ1
ZmZlckJ1aWxkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVQdHIuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkVudW1MaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJF
bnVtTWVtYmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFbnVtVHlwZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRXZhbHVhdGlvbkNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iRXZhbHVhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFeHByZXNzaW9uRmlu
ZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGaWVsZC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iRmluZEhpZ2hab21iaWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbGF0
dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbGF0dGVuZWRT
dHJ1Y3RPZmZzZXRHYXRoZXJlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRmxvYXRMaXRl
cmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbG9hdExpdGVyYWxUeXBlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJGb2xkQ29uc3RleHBycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iRm9yTG9vcC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVuYy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iRnVuY0RlZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVu
Y0luc3RhbnRpYXRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVuY1BhcmFtZXRlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRnVuY3Rpb25MaWtlQmxvY2suanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkhpZ2hab21iaWVGaW5kZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IklkZW50aXR5RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSWZTdGF0
ZW1lbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkluZGV4RXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5mZXJUeXBlc0ZvckNhbGwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IklubGluZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5saW5lci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5zdGFudGlhdGVJbW1lZGlhdGVzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJJbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJ
bnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGV4ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9naWNhbEV4cHJlc3Npb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IkxvZ2ljYWxOb3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ikxvb3BDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJNYWtlQXJyYXlSZWZFeHBy
ZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJNYWtlUHRyRXhwcmVzc2lvbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTmFtZUNvbnRleHQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ik5hbWVSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTmF0aXZlRnVu
Yy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTmF0aXZlRnVuY0luc3RhbmNlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJOYXRpdmVUeXBlSW5zdGFuY2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik5vcm1hbFVz
ZVByb3BlcnR5UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik51bGxMaXRlcmFs
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOdWxsVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iUGFyc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByZXBhcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlByb3BlcnR5UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlByb2dyYW0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3RvY29sLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJQcm90b2NvbERlY2wuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlByb3RvY29sRnVuY0RlY2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlByb3Rv
Y29sUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJQdHJUeXBlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJS
ZXNvbHZlTmFtZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZElt
cGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJTdGFuZGFyZExpYnJhcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
IlN0YXRlbWVudENsb25lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3RydWN0TGF5b3V0
QnVpbGRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3RydWN0VHlwZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iU3Vic3RpdHV0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJTeW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3lu
dGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZURl
Zi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJUeXBlT3JWYXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iVHlwZVBhcmFtZXRlclJld3JpdGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJU
eXBlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlVmFyaWFibGUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlR5cGVWYXJpYWJsZVRyYWNrZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IlR5cGVkVmFsdWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlVpbnRMaXRl
cmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlVuaWZpY2F0aW9uQ29udGV4dC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iVmFyaWFibGVEZWNsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJWYXJpYWJsZVJlZi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmlzaXRpbmdTZXQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IldTeW50YXhFcnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iV1RyYXBF
cnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iV2hpbGVMb29wLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXcmFw
Q2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjU2hhZGVyU291cmNlIHsKKyAgICBmb250
LWZhbWlseTogbW9ub3NwYWNlOworICAgIHdpZHRoOiA3MDBweDsKKyAgICBoZWlnaHQ6IDQwMHB4
OworfQorCit0ZCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgor
PHNjcmlwdD4KK2xldCBkZWZhdWx0U2hhZGVyU291cmNlID0gYHN0cnVjdCBWZXJ0ZXhJbnB1dCB7
CisgICAgZmxvYXQyIHBvc2l0aW9uOworICAgIGZsb2F0MyBjb2xvcjsKK30KKworc3RydWN0IFZl
cnRleE91dHB1dCB7CisgICAgZmxvYXQ0IHdzbF9Qb3NpdGlvbjsKKyAgICBmbG9hdDMgY29sb3I7
Cit9CisKK3N0cnVjdCBGcmFnbWVudE91dHB1dCB7CisgICAgZmxvYXQ0IHdzbF9Db2xvcjsKK30K
KwordmVydGV4IFZlcnRleE91dHB1dCB2ZXJ0ZXhTaGFkZXIoVmVydGV4SW5wdXQgdmVydGV4SW5w
dXQpIHsKKyAgICBWZXJ0ZXhPdXRwdXQgcmVzdWx0OworICAgIHJlc3VsdC53c2xfUG9zaXRpb24g
PSBmbG9hdDQodmVydGV4SW5wdXQucG9zaXRpb24sIDAuLCAxLik7CisgICAgcmVzdWx0LmNvbG9y
ID0gdmVydGV4SW5wdXQuY29sb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnJhZ21lbnQg
RnJhZ21lbnRPdXRwdXQgZnJhZ21lbnRTaGFkZXIoVmVydGV4T3V0cHV0IHN0YWdlSW4pIHsKKyAg
ICBGcmFnbWVudE91dHB1dCByZXN1bHQ7CisgICAgcmVzdWx0LndzbF9Db2xvciA9IGZsb2F0NChz
dGFnZUluLmNvbG9yLCAxLik7CisgICAgcmV0dXJuIHJlc3VsdDsKK31gOworCitsZXQgc2hhZGVy
U291cmNlVGV4dGFyZWE7CitsZXQgbG9jYWxTdG9yYWdlOworbGV0IGNvbXBpbGVMb2dFbGVtZW50
OworbGV0IHZlcnRleFNoYWRlclNlbGVjdDsKK2xldCBmcmFnbWVudFNoYWRlclNlbGVjdDsKK2xl
dCBkYXRhVGFibGU7CitsZXQgcmVzdWx0VGFibGU7CisKK2xldCBwcm9ncmFtOworbGV0IGF2YWls
YWJsZVZlcnRleFNoYWRlcnM7CitsZXQgYXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzOworbGV0IGN1
cnJlbnRWZXJ0ZXhTaGFkZXI7CitsZXQgY3VycmVudEZyYWdtZW50U2hhZGVyOworbGV0IGlubGlu
ZWRWZXJ0ZXhTaGFkZXI7CitsZXQgaW5saW5lZEZyYWdtZW50U2hhZGVyOworbGV0IGFsbEFyZ3Vt
ZW50SW5mb3M7CitsZXQgYXJndW1lbnRFUHRyczsKK2xldCBzdGFnZUluQXJndW1lbnRJbmRleDsK
Kword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICBzaGFk
ZXJTb3VyY2VUZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTaGFkZXJTb3VyY2Ui
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQ29tcGlsZUJ1dHRvbiIpLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UpOworICAgIGNvbXBp
bGVMb2dFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNvbXBpbGVMb2ciKTsKKyAg
ICB2ZXJ0ZXhTaGFkZXJTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVmVydGV4U2hh
ZGVyU2VsZWN0Iik7CisgICAgZnJhZ21lbnRTaGFkZXJTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiRnJhZ21lbnRTaGFkZXJTZWxlY3QiKTsKKyAgICB2ZXJ0ZXhTaGFkZXJTZWxlY3Qu
YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZCk7CisgICAg
ZnJhZ21lbnRTaGFkZXJTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0ZWRT
aGFkZXJzQ2hhbmdlZCk7CisgICAgZGF0YVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IkRhdGFUYWJsZSIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJSdW5CdXR0b24iKS5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHJ1blNoYWRlcnMpOworICAgIHJlc3VsdFRhYmxlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlJlc3VsdFRhYmxlIik7CisgICAgc2hhZGVyU291cmNl
VGV4dGFyZWEuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBzb3VyY2VDb2RlQ2hhbmdlZCk7CisK
KyAgICBsZXQgc2hhZGVyU291cmNlOworICAgIHRyeSB7CisgICAgICAgIGxvY2FsU3RvcmFnZSA9
IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisgICAgICAgIHNoYWRlclNvdXJjZSA9IGxvY2FsU3RvcmFn
ZS5nZXRJdGVtKCJTaGFkZXJTb3VyY2UiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgfQorCisg
ICAgaWYgKCFzaGFkZXJTb3VyY2UpCisgICAgICAgIHNoYWRlclNvdXJjZSA9IGRlZmF1bHRTaGFk
ZXJTb3VyY2U7CisgICAgc2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUgPSBzaGFkZXJTb3VyY2U7
CisgICAgY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UoKTsKK30pOworCitmdW5jdGlvbiBjbGVh
ckRhdGFUYWJsZSgpCit7CisgICAgd2hpbGUgKGRhdGFUYWJsZS5sYXN0Q2hpbGQgaW5zdGFuY2Vv
ZiBIVE1MVGFibGVSb3dFbGVtZW50KQorICAgICAgICBkYXRhVGFibGUucmVtb3ZlQ2hpbGQoZGF0
YVRhYmxlLmxhc3RDaGlsZCk7Cit9CisKK2Z1bmN0aW9uIGNsZWFyUmVzdWx0VGFibGUoKQorewor
ICAgIHdoaWxlIChyZXN1bHRUYWJsZS5sYXN0Q2hpbGQgaW5zdGFuY2VvZiBIVE1MVGFibGVSb3dF
bGVtZW50KQorICAgICAgICByZXN1bHRUYWJsZS5yZW1vdmVDaGlsZChyZXN1bHRUYWJsZS5sYXN0
Q2hpbGQpOworfQorCitmdW5jdGlvbiBjbGVhclNoYWRlclNlbGVjdCgpCit7CisgICAgd2hpbGUg
KHZlcnRleFNoYWRlclNlbGVjdC5maXJzdENoaWxkKQorICAgICAgICB2ZXJ0ZXhTaGFkZXJTZWxl
Y3QucmVtb3ZlQ2hpbGQodmVydGV4U2hhZGVyU2VsZWN0LmZpcnN0Q2hpbGQpOworICAgIHdoaWxl
IChmcmFnbWVudFNoYWRlclNlbGVjdC5maXJzdENoaWxkKQorICAgICAgICBmcmFnbWVudFNoYWRl
clNlbGVjdC5yZW1vdmVDaGlsZChmcmFnbWVudFNoYWRlclNlbGVjdC5maXJzdENoaWxkKTsKK30K
KworZnVuY3Rpb24gc291cmNlQ29kZUNoYW5nZWQoKSB7CisgICAgY29tcGlsZUxvZ0VsZW1lbnQu
dGV4dENvbnRlbnQgPSAiIjsKKyAgICBjbGVhclNoYWRlclNlbGVjdCgpOworICAgIGNsZWFyRGF0
YVRhYmxlKCk7CisgICAgY2xlYXJSZXN1bHRUYWJsZSgpOworfQorCitmdW5jdGlvbiBwcmVzZW50
RXJyb3IobWVzc2FnZSkgeworICAgIGNvbXBpbGVMb2dFbGVtZW50LnRleHRDb250ZW50ID0gbWVz
c2FnZTsKKyAgICBjbGVhclNoYWRlclNlbGVjdCgpOworICAgIGNsZWFyRGF0YVRhYmxlKCk7Cisg
ICAgY2xlYXJSZXN1bHRUYWJsZSgpOworICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKK30K
KworZnVuY3Rpb24gY29tcGlsZVByZXNlbnRTaGFkZXJTb3VyY2UoKSB7CisgICAgY29tcGlsZUxv
Z0VsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKKyAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdl
dFRpbWUoKTsKKyAgICBsZXQgcmVzdWx0OworICAgIHRyeSB7CisgICAgICAgIHJlc3VsdCA9IHBy
ZXBhcmUoIi9pbnRlcm5hbC90ZXN0IiwgMCwgc2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmVzdWx0ID0gZTsKKyAgICB9CisgICAgbGV0IGVu
ZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIFBy
b2dyYW0pKSB7CisgICAgICAgIGNvbXBpbGVMb2dFbGVtZW50LnRleHRDb250ZW50ID0gcmVzdWx0
LnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UKKyAgICAgICAgY29tcGls
ZUxvZ0VsZW1lbnQudGV4dENvbnRlbnQgPSAiQ29tcGlsZSBzdWNjZXNzZnVsISI7CisKKyAgICB0
cnkgeworICAgICAgICBzaGFkZXJTb3VyY2UgPSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiU2hhZGVy
U291cmNlIiwgc2hhZGVyU291cmNlVGV4dGFyZWEudmFsdWUpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICB9CisKKyAgICBwcm9ncmFtID0gcmVzdWx0OworICAgIGF2YWlsYWJsZVZlcnRleFNoYWRl
cnMgPSBbXTsKKyAgICBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnMgPSBbXTsKKyAgICBmb3IgKGZ1
bmN0aW9uTmFtZXMgb2YgcHJvZ3JhbS5mdW5jdGlvbnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9y
IChmdW5jIG9mIGZ1bmN0aW9uTmFtZXMpIHsKKyAgICAgICAgICAgIGlmIChmdW5jLnNoYWRlclR5
cGUgPT0gInZlcnRleCIpCisgICAgICAgICAgICAgICAgYXZhaWxhYmxlVmVydGV4U2hhZGVycy5w
dXNoKGZ1bmMpOworICAgICAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSA9PSAiZnJhZ21lbnQi
KQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyYWdtZW50U2hhZGVycy5wdXNoKGZ1bmMpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNsZWFyU2hhZGVyU2VsZWN0KCk7CisgICAgZnVuY3Rpb24g
Y3JlYXRlT3B0aW9uKHRleHRDb250ZW50KSB7CisgICAgICAgIGxldCBvcHRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLnRleHRDb250ZW50ID0g
dGV4dENvbnRlbnQ7CisgICAgICAgIHJldHVybiBvcHRpb247CisgICAgfQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgYXZhaWxhYmxlVmVydGV4U2hhZGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAg
dmVydGV4U2hhZGVyU2VsZWN0LmFwcGVuZENoaWxkKGNyZWF0ZU9wdGlvbihhdmFpbGFibGVWZXJ0
ZXhTaGFkZXJzW2ldLm5hbWUpKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF2YWlsYWJsZUZy
YWdtZW50U2hhZGVycy5sZW5ndGg7ICsraSkKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTZWxlY3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlT3B0aW9uKGF2YWlsYWJsZUZyYWdtZW50U2hhZGVyc1tpXS5uYW1l
KSk7CisgICAgc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gY3Jl
YXRlVGFibGVSb3cobmFtZSwgZWxlbWVudENhbGxiYWNrKSB7CisgICAgbGV0IHJvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgbGV0IHZhcmlhYmxlQ2VsbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgbGV0IHZhbHVlQ2VsbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRkIik7CisgICAgdmFyaWFibGVDZWxsLnRleHRDb250ZW50ID0gbmFtZTsKKyAg
ICB2YWx1ZUNlbGwuYXBwZW5kQ2hpbGQoZWxlbWVudENhbGxiYWNrKCkpOworICAgIHJvdy5hcHBl
bmRDaGlsZCh2YXJpYWJsZUNlbGwpOworICAgIHJvdy5hcHBlbmRDaGlsZCh2YWx1ZUNlbGwpOwor
ICAgIHJldHVybiByb3c7CisgICAgZGF0YVRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Cit9CisKK2Z1
bmN0aW9uIGxpbmtFcnJvcihtZXNzYWdlKSB7CisgICAgY29tcGlsZUxvZ0VsZW1lbnQudGV4dENv
bnRlbnQgPSBtZXNzYWdlICsgIiBGaXggdGhpcyBieSBzZWxlY3RpbmcgYSBkaWZmZXJlbnQgcGFp
ciBvZiBzaGFkZXJzIGJlbG93LiI7CisgICAgY2xlYXJEYXRhVGFibGUoKTsKKyAgICBjbGVhclJl
c3VsdFRhYmxlKCk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGVkU2hhZGVyc0NoYW5nZWQoZnJvbUNv
bXBpbGF0aW9uID0gZmFsc2UpIHsKKyAgICBpZiAoIWZyb21Db21waWxhdGlvbikKKyAgICAgICAg
Y29tcGlsZUxvZ0VsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKKyAgICBjdXJyZW50VmVydGV4U2hh
ZGVyID0gYXZhaWxhYmxlVmVydGV4U2hhZGVyc1t2ZXJ0ZXhTaGFkZXJTZWxlY3Quc2VsZWN0ZWRJ
bmRleF07CisgICAgY3VycmVudEZyYWdtZW50U2hhZGVyID0gYXZhaWxhYmxlRnJhZ21lbnRTaGFk
ZXJzW2ZyYWdtZW50U2hhZGVyU2VsZWN0LnNlbGVjdGVkSW5kZXhdOworCisgICAgaW5saW5lZFZl
cnRleFNoYWRlciA9IHByb2dyYW0uZnVuY0luc3RhbnRpYXRvci5nZXRVbmlxdWUoY3VycmVudFZl
cnRleFNoYWRlciwgW10pOworICAgIF9pbmxpbmVGdW5jdGlvbihwcm9ncmFtLCBpbmxpbmVkVmVy
dGV4U2hhZGVyLCBuZXcgVmlzaXRpbmdTZXQoY3VycmVudFZlcnRleFNoYWRlcikpOworCisgICAg
YWxsQXJndW1lbnRJbmZvcyA9IFtdOworICAgIGFyZ3VtZW50RVB0cnMgPSBbXTsKKyAgICBmb3Ig
KGxldCBwYXJhbWV0ZXIgb2YgaW5saW5lZFZlcnRleFNoYWRlci5wYXJhbWV0ZXJzKSB7CisgICAg
ICAgIGxldCBlUHRyID0gbmV3IEVQdHIobmV3IEVCdWZmZXIocGFyYW1ldGVyLnR5cGUuc2l6ZSks
IDApOworICAgICAgICBhcmd1bWVudEVQdHJzLnB1c2goe2VQdHI6IGVQdHIsIHNpemU6IHBhcmFt
ZXRlci50eXBlLnNpemV9KTsKKyAgICAgICAgbGV0IGdhdGhlcmVyID0gbmV3IEZsYXR0ZW5lZFN0
cnVjdE9mZnNldEdhdGhlcmVyKHBhcmFtZXRlci5uYW1lKTsKKyAgICAgICAgcGFyYW1ldGVyLnZp
c2l0KGdhdGhlcmVyKTsKKyAgICAgICAgZm9yIChhcmd1bWVudEluZm8gb2YgZ2F0aGVyZXIucmVz
dWx0KSB7CisgICAgICAgICAgICBhcmd1bWVudEluZm8uZVB0ciA9IGVQdHI7CisgICAgICAgICAg
ICBhbGxBcmd1bWVudEluZm9zLnB1c2goYXJndW1lbnRJbmZvKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjbGVhckRhdGFUYWJsZSgpOworICAgIGNsZWFyUmVzdWx0VGFibGUoKTsKKyAgICBmb3Ig
KGxldCBpbmZvIG9mIGFsbEFyZ3VtZW50SW5mb3MpIHsKKyAgICAgICAgZGF0YVRhYmxlLmFwcGVu
ZENoaWxkKGNyZWF0ZVRhYmxlUm93KGluZm8ubmFtZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAg
ICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGNsZWFyUmVzdWx0VGFibGUpOwor
ICAgICAgICAgICAgIGlucHV0LnR5cGUgPSAidGV4dCI7CisgICAgICAgICAgICAgcmV0dXJuIGlu
cHV0OworICAgICAgICB9KSk7CisgICAgfQorCisgICAgbGV0IGZvdW5kID0gZmFsc2U7CisgICAg
bGV0IGluZGV4ID0gMDsKKyAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2YgY3VycmVudEZyYWdtZW50
U2hhZGVyLnBhcmFtZXRlcnMpIHsKKyAgICAgICAgaWYgKHBhcmFtZXRlci5uYW1lID09ICJzdGFn
ZUluIikgeworICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgaWYgKCFwYXJh
bWV0ZXIudHlwZS5lcXVhbHMoY3VycmVudFZlcnRleFNoYWRlci5yZXR1cm5UeXBlKSkKKyAgICAg
ICAgICAgICAgICBsaW5rRXJyb3IoIlZlcnRleCBzaGFkZXIncyByZXR1cm4gdHlwZSBuZWVkcyB0
byBtYXRjaCB0aGUgc3RhZ2VJbiBwYXJhbWV0ZXIgb2YgdGhlIGZyYWdtZW50IHNoYWRlciEiKTsK
KyAgICAgICAgICAgIHN0YWdlSW5Bcmd1bWVudEluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICArK2luZGV4OworICAgIH0KKyAgICBpZiAoIWZvdW5k
KQorICAgICAgICBsaW5rRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHRoZSBzdGFnZUluIGFyZ3VtZW50
IGluIHRoZSBmcmFnbWVudCBzaGFkZXIhIik7CisgICAgaWYgKGZ1bmMucGFyYW1ldGVycy5sZW5n
dGggPiAxKQorICAgICAgICBsaW5rRXJyb3IoIkZyYWdtZW50IHNoYWRlcnMgY3VycmVudGx5IGRv
bid0IGtub3cgaG93IHRvIGhhdmUgYW55IG90aGVyIGFyZ3VtZW50cyBvdGhlciB0aGFuIHN0YWdl
SW4uIik7Cit9CisKK2Z1bmN0aW9uIHJ1blNoYWRlcnMoKSB7CisgICAgbGV0IGZ1bmMgPSBpbmxp
bmVkVmVydGV4U2hhZGVyOworCisgICAgbGV0IGluZGV4ID0gMDsKKyAgICBmb3IgKGxldCBjaGls
ZEVsZW1lbnQgb2YgZGF0YVRhYmxlLmNoaWxkcmVuKSB7CisgICAgICAgIGlmICghKGNoaWxkRWxl
bWVudCBpbnN0YW5jZW9mIEhUTUxUYWJsZVJvd0VsZW1lbnQpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGxldCB2YWx1ZSA9IGNoaWxkRWxlbWVudC5jaGlsZHJlblsxXS5maXJzdENo
aWxkLnZhbHVlOworICAgICAgICBsZXQgYXJndW1lbnRJbmZvID0gYWxsQXJndW1lbnRJbmZvc1tp
bmRleF07CisgICAgICAgIGxldCB0eXBlID0gYXJndW1lbnRJbmZvLnR5cGU7CisgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlICJmbG9hdCI6CisgICAgICAgICAgICB2YWx1ZSA9
IE1hdGguZnJvdW5kKHBhcnNlRmxvYXQodmFsdWUpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50SW5m
by5lUHRyLnNldChhcmd1bWVudEluZm8ub2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAiZG91YmxlIjoKKyAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9h
dCh2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiaW50MzIiOgorICAg
ICAgICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSkgfCAwOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgInVpbnQzMiI6CisgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHZh
bHVlKSA+Pj4gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcHJlc2VudEVycm9yKCJJIGRvbid0IGtub3cgaG93IHRvIHBhcnNlIHZhbHVlcyBvZiB0
eXBlICIgKyB0eXBlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNOYU4odmFsdWUpKQorICAg
ICAgICAgICAgcHJlc2VudEVycm9yKCJDb3VsZCBub3QgcGFyc2UgaW5wdXQgZGF0YSAiICsgaW5k
ZXgpOworICAgICAgICBhcmd1bWVudEluZm8uZVB0ci5zZXQoYXJndW1lbnRJbmZvLm9mZnNldCwg
dmFsdWUpOworICAgICAgICArK2luZGV4OworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aDsgKytpKQorICAgICAgICBmdW5jLnBhcmFtZXRlcnNb
aV0uZVB0ci5jb3B5RnJvbShhcmd1bWVudEVQdHJzW2ldLmVQdHIsIGFyZ3VtZW50RVB0cnNbaV0u
c2l6ZSk7CisgICAgbGV0IHJlc3VsdCA9IG5ldyBFdmFsdWF0b3IocHJvZ3JhbSkucnVuRnVuYyhm
dW5jKTsKKworICAgIGlubGluZWRGcmFnbWVudFNoYWRlciA9IHByb2dyYW0uZnVuY0luc3RhbnRp
YXRvci5nZXRVbmlxdWUoY3VycmVudEZyYWdtZW50U2hhZGVyLCBbXSk7CisgICAgX2lubGluZUZ1
bmN0aW9uKHByb2dyYW0sIGlubGluZWRGcmFnbWVudFNoYWRlciwgbmV3IFZpc2l0aW5nU2V0KGN1
cnJlbnRGcmFnbWVudFNoYWRlcikpOworICAgIGZ1bmMgPSBpbmxpbmVkRnJhZ21lbnRTaGFkZXI7
CisKKyAgICBmdW5jLnBhcmFtZXRlcnNbc3RhZ2VJbkFyZ3VtZW50SW5kZXhdLmVQdHIuY29weUZy
b20ocmVzdWx0LCBmdW5jLnBhcmFtZXRlcnNbc3RhZ2VJbkFyZ3VtZW50SW5kZXhdLnR5cGUuc2l6
ZSk7CisKKyAgICByZXN1bHQgPSBuZXcgRXZhbHVhdG9yKHByb2dyYW0pLnJ1bkZ1bmMoZnVuYyk7
CisKKyAgICBjbGVhclJlc3VsdFRhYmxlKCk7CisgICAgbGV0IGdhdGhlcmVyID0gbmV3IEZsYXR0
ZW5lZFN0cnVjdE9mZnNldEdhdGhlcmVyKGZ1bmMucmV0dXJuVHlwZS50eXBlLm5hbWUpOworICAg
IGZ1bmMucmV0dXJuVHlwZS50eXBlLnZpc2l0KGdhdGhlcmVyKTsKKyAgICBmb3IgKGxldCBpbmZv
IG9mIGdhdGhlcmVyLnJlc3VsdCkgeworICAgICAgICByZXN1bHRUYWJsZS5hcHBlbmRDaGlsZChj
cmVhdGVUYWJsZVJvdyhpbmZvLm5hbWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJu
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlc3VsdC5nZXQoaW5mby5vZmZzZXQpKTsKKyAgICAg
ICAgfSkpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+V2ViR1BV
IFNoYWRpbmcgTGFuZ3VhZ2U8L2gxPgorPG9sPgorPGxpPgorICAgIFdyaXRlIGEgc2hhZGVyIQor
ICAgIDxkaXY+PHRleHRhcmVhIGlkPSJTaGFkZXJTb3VyY2UiPjwvdGV4dGFyZWE+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iQ29tcGlsZUxvZyI+PC9kaXY+CisgICAgPGRpdj48aW5wdXQgdHlwZT0iYnV0
dG9uIiB2YWx1ZT0iQ29tcGlsZSIgaWQ9IkNvbXBpbGVCdXR0b24iPjwvZGl2PgorPC9saT4KKzxs
aT4KKyAgICBTZWxlY3QgeW91ciBzaGFkZXJzCisgICAgPGRpdj48bGFiZWw+VmVydGV4IFNoYWRl
ciA8c2VsZWN0IGlkPSJWZXJ0ZXhTaGFkZXJTZWxlY3QiPjwvc2VsZWN0PjwvbGFiZWw+PC9kaXY+
CisgICAgPGRpdj48bGFiZWw+RnJhZ21lbnQgU2hhZGVyIDxzZWxlY3QgaWQ9IkZyYWdtZW50U2hh
ZGVyU2VsZWN0Ij48L3NlbGVjdD48L2xhYmVsPjwvZGl2PgorPC9saT4KKzxsaT4KKyAgICBTcGVj
aWZ5IGlucHV0IGRhdGEKKyAgICA8dGFibGUgaWQ9IkRhdGFUYWJsZSI+CisgICAgICAgIDx0aGVh
ZD4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQ+VmFyaWFibGU8L3RkPgor
ICAgICAgICAgICAgICAgIDx0ZD5WYWx1ZTwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAg
ICA8L3RoZWFkPgorICAgIDwvdGFibGU+Cis8L2xpPgorPGxpPgorICAgIDxkaXY+PGlucHV0IHR5
cGU9ImJ1dHRvbiIgdmFsdWU9IlJ1biIgaWQ9IlJ1bkJ1dHRvbiI+PC9kaXY+CisgICAgPHRhYmxl
IGlkPSJSZXN1bHRUYWJsZSI+CisgICAgICAgIDx0aGVhZD4KKyAgICAgICAgICAgIDx0cj4KKyAg
ICAgICAgICAgICAgICA8dGQ+VmFyaWFibGU8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD5WYWx1
ZTwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RoZWFkPgorICAgIDwvdGFibGU+
Cis8L2xpPgorPC9vbD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321344</attachid>
            <date>2017-09-20 12:32:05 -0700</date>
            <delta_ts>2017-09-20 12:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177125-20170920123209.patch</filename>
            <type>text/plain</type>
            <size>26519</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTk3OGI1OWY0M2UyYzhhZTAwMDY4MzQxMGFjNzYzYzg3
Y2U0ZWNkNi4uOTVhMzdiYmEwYTgxOWE5YzVkNjJhZjZkZDMwNjBiMDgzYzk5ZDVkZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE3LTA5LTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBhIHBsYXlncm91bmQgd2hlcmUgcGVvcGxlIGNhbiB0cnkgV1NMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcxMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGNyZWF0ZXMgYSB3ZWJwYWdlLCBpbmRleC5odG1sLCB3aGljaCBsZXRzIHVzZXJzIHR5cGUgaW4g
YSBXU0wgcHJvZ3JhbSBhbmQKKyAgICAgICAgcnVuIGl0LCBhbmQgc2VlIHRoZSByZXN1bHRzLgor
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qczoKKyAgICAgICAgKGNhbGxGdW5j
dGlvbik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAg
ICAgICAgKENoZWNrZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVy
VHlwZS5Ob25OdW1lcmljU2VhcmNoZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2hhZGVyVHlwZS5Ob25OdW1lcmljU2VhcmNoZXIucHJvdG90eXBlLnZpc2l0QXJyYXlSZWZU
eXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUuTm9uTnVt
ZXJpY1NlYXJjaGVyLnByb3RvdHlwZS52aXNpdFB0clR5cGUpOgorICAgICAgICAoQ2hlY2tlci5w
cm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52
aXNpdEZ1bmNEZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX3JlcXVpcmVCb29sKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GbGF0dGVuZWRTdHJ1Y3RPZmZzZXRH
YXRoZXJlci5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2Fs
bEZ1bmN0aW9uLmpzLgorICAgICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIpOgor
ICAgICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIucHJvdG90eXBlLmdldCByZXN1
bHQpOgorICAgICAgICAoRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIucHJvdG90eXBlLnZp
c2l0UmVmZXJlbmNlVHlwZSk6CisgICAgICAgIChGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJl
ci5wcm90b3R5cGUudmlzaXRGaWVsZCk6CisgICAgICAgIChGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRH
YXRoZXJlci5wcm90b3R5cGUudmlzaXROYXRpdmVUeXBlKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgorICAgICAgICAoRnVuYy5wcm90b3R5cGUudG9EZWNsU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanM6CisgICAg
ICAgIChyZXNvbHZlSW5saW5lZEZ1bmN0aW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9OYW1lQ29udGV4dC5qczoKKyAgICAgICAgKE5hbWVDb250ZXh0LnByb3RvdHlwZS5n
ZXQgbGV0KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3Zlcmxv
YWRJbXBsLmpzOgorICAgICAgICAocmVzb2x2ZU92ZXJsb2FkSW1wbCk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAoVEVTVF9zaGFkZXJUeXBlcyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbDogQWRkZWQuCisKIDIwMTctMDktMjAg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEN5
Z3dpbiA2NC1iaXQgRVdTIHByb2Nlc3MgY2Fubm90IGZpbmQgVmlzdWFsIFN0dWRpbyBpbnN0YWxs
YXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggZGViZmFmZjQ1MDQ3
NGI4MjZjNTk3N2E0MjdmNjQ5ZDViMmJkOGY3Ni4uOWU3OTlmYmVmMmNiNGZlOWNkNmQzNTM4NDkz
OGU1NzY3YThmMGUwMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtNzgs
NiArNzgsNyBAQCBsb2FkKCJFeHByZXNzaW9uRmluZGVyLmpzIik7CiBsb2FkKCJGaWVsZC5qcyIp
OwogbG9hZCgiRmluZEhpZ2hab21iaWVzLmpzIik7CiBsb2FkKCJGbGF0dGVuUHJvdG9jb2xFeHRl
bmRzLmpzIik7Citsb2FkKCJGbGF0dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJlci5qcyIpOwogbG9h
ZCgiRmxvYXRMaXRlcmFsLmpzIik7CiBsb2FkKCJGbG9hdExpdGVyYWxUeXBlLmpzIik7CiBsb2Fk
KCJGb2xkQ29uc3RleHBycy5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2FsbEZ1bmN0aW9uLmpzCmluZGV4IDYzNzYxN2NlMTE4MThmMmU0N2JjYjM0MTUyNzc2YTBlYTQ1
Y2UyMWIuLjBhZWE1YWJiYjYxMWQwN2FkOTQ3MmQwMTU4MDNiOTRkYTExNjkyNzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRnVuY3Rpb24uanMKQEAgLTI4LDcgKzI4
LDcgQEAKIGZ1bmN0aW9uIGNhbGxGdW5jdGlvbihwcm9ncmFtLCBuYW1lLCB0eXBlQXJndW1lbnRz
LCBhcmd1bWVudExpc3QpCiB7CiAgICAgbGV0IGFyZ3VtZW50VHlwZXMgPSBhcmd1bWVudExpc3Qu
bWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnR5cGUpOwotICAgIGxldCBmdW5jT3JGYWlsdXJlcyA9
IHJlc29sdmVJbmxpbmVkRnVuY3Rpb24ocHJvZ3JhbSwgbmFtZSwgdHlwZUFyZ3VtZW50cywgYXJn
dW1lbnRUeXBlcyk7CisgICAgbGV0IGZ1bmNPckZhaWx1cmVzID0gcmVzb2x2ZUlubGluZWRGdW5j
dGlvbihwcm9ncmFtLCBuYW1lLCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzLCB0cnVlKTsK
ICAgICBpZiAoIShmdW5jT3JGYWlsdXJlcyBpbnN0YW5jZW9mIEZ1bmMpKSB7CiAgICAgICAgIGxl
dCBmYWlsdXJlcyA9IGZ1bmNPckZhaWx1cmVzOwogICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJv
cigiPGNhbGxGdW5jdGlvbj4iLCAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gY2FsbCAiICsgbmFt
ZSArICI8IiArIHR5cGVBcmd1bWVudHMgKyAiPigiICsgYXJndW1lbnRMaXN0ICsgIikiICsgKGZh
aWx1cmVzLmxlbmd0aCA/ICI7IHRyaWVkOlxuIiArIGZhaWx1cmVzLmpvaW4oIlxuIikgOiAiIikp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmxhdHRlbmVkU3Ry
dWN0T2Zmc2V0R2F0aGVyZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GbGF0
dGVuZWRTdHJ1Y3RPZmZzZXRHYXRoZXJlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDhiMWUzMTBlYWU0Y2U1
MDVlZmYzMjVhN2FlYjk2MmIyY2JmZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIuanMKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisi
dXNlIHN0cmljdCI7CisKK2NsYXNzIEZsYXR0ZW5lZFN0cnVjdE9mZnNldEdhdGhlcmVyIGV4dGVu
ZHMgVmlzaXRvciB7CisgICAgY29uc3RydWN0b3IoaW5pdGlhbCkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisgICAgICAgIHRoaXMuX29mZnNldCA9IDA7CisgICAgICAgIHRoaXMuX25hbWUgPSBb
aW5pdGlhbF07CisgICAgICAgIHRoaXMuX3Jlc3VsdCA9IFtdOworICAgIH0KKworICAgIGdldCBy
ZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdDsKKyAgICB9CisgICAg
CisgICAgdmlzaXRSZWZlcmVuY2VUeXBlKG5vZGUpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2
aXNpdEZpZWxkKG5vZGUpCisgICAgeworICAgICAgICB0aGlzLl9vZmZzZXQgKz0gbm9kZS5vZmZz
ZXQ7CisgICAgICAgIHRoaXMuX25hbWUucHVzaChub2RlLm5hbWUpOworICAgICAgICBzdXBlci52
aXNpdEZpZWxkKG5vZGUpOworICAgICAgICB0aGlzLl9uYW1lLnBvcCgpOworICAgICAgICB0aGlz
Ll9vZmZzZXQgLT0gbm9kZS5vZmZzZXQ7CisgICAgfQorICAgIAorICAgIHZpc2l0TmF0aXZlVHlw
ZShub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdWx0LnB1c2goe25hbWU6IHRoaXMuX25h
bWUuam9pbigiLiIpLCBvZmZzZXQ6IHRoaXMuX29mZnNldCwgdHlwZTogbm9kZS5uYW1lfSk7Cisg
ICAgICAgIHN1cGVyLnZpc2l0TmF0aXZlVHlwZShub2RlKTsKKyAgICB9Cit9CisKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZS5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZS5qcwppbmRleCAxN2UwMGU3YjczYWViMjc5Nzc5OWM3
ZTVmNmFlYTRjYTM0ZDc4ZGQ0Li45ZGJiMzBkZWVhOTMwNzc4Y2Q0NzRiODJiOTA1YWM1ZmRkZmY4
MGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lLmpzCkBAIC01Myw5ICs1
Myw5IEBAIGZ1bmN0aW9uIF9pbmxpbmVGdW5jdGlvbihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykK
ICAgICBmdW5jLmlubGluZWQgPSB0cnVlOwogfQogCi1mdW5jdGlvbiByZXNvbHZlSW5saW5lZEZ1
bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMpCitmdW5j
dGlvbiByZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIHR5cGVBcmd1bWVudHMs
IGFyZ3VtZW50VHlwZXMsIGFsbG93RW50cnlQb2ludCA9IGZhbHNlKQogewotICAgIGxldCBvdmVy
bG9hZCA9IHByb2dyYW0uZ2xvYmFsTmFtZUNvbnRleHQucmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1l
LCB0eXBlQXJndW1lbnRzLCBhcmd1bWVudFR5cGVzKTsKKyAgICBsZXQgb3ZlcmxvYWQgPSBwcm9n
cmFtLmdsb2JhbE5hbWVDb250ZXh0LnJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3Vt
ZW50cywgYXJndW1lbnRUeXBlcywgdW5kZWZpbmVkLCBhbGxvd0VudHJ5UG9pbnQpOwogICAgIGlm
ICghb3ZlcmxvYWQuZnVuYykKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkLmZhaWx1cmVzOwogICAg
IGlmICghb3ZlcmxvYWQuZnVuYy50eXBlUGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKaW5kZXggZWRjMjhiMThkYWIzOWMzZTgzNzcyZDI1
NmUyYTg1NmQ3ZTUwOWRhNC4uZTYzOTEzODQ2ZmRjOGQ5YWExYjE4OTNiMTM5OTQ1ZmZiMmE3YWYz
YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAg
LTk2LDEzICs5NiwxMyBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIAotICAgIHJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgdHlwZUFyZ3Vt
ZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKKyAgICByZXNvbHZlRnVuY092ZXJsb2Fk
KG5hbWUsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUsIGFsbG93RW50
cnlQb2ludCA9IGZhbHNlKQogICAgIHsKICAgICAgICAgbGV0IGZ1bmN0aW9ucyA9IHRoaXMuZ2V0
KEZ1bmMsIG5hbWUpOwogICAgICAgICBpZiAoIWZ1bmN0aW9ucykKICAgICAgICAgICAgIHJldHVy
biB7ZmFpbHVyZXM6IFtdfTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiByZXNvbHZlT3Zlcmxv
YWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlw
ZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlT3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFy
Z3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50KTsKICAg
ICB9CiAgICAgCiAgICAgZ2V0IGN1cnJlbnRTdGF0ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMKaW5kZXggOTdmZmEz
OGJhNzIwZWE4YjBiODVhMWQ5YjQyNDZjNjczZDdjYzc5NC4uN2UyMjE1NmRlMWFjNWUyYTZjNzI0
YWQzNDY5ZGM5MWU3NDZmMjU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICJ1
c2Ugc3RyaWN0IjsKIAotZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5
cGVBcmd1bWVudHMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCitmdW5jdGlvbiByZXNvbHZl
T3ZlcmxvYWRJbXBsKGZ1bmN0aW9ucywgdHlwZUFyZ3VtZW50cywgYXJndW1lbnRUeXBlcywgcmV0
dXJuVHlwZSwgYWxsb3dFbnRyeVBvaW50ID0gZmFsc2UpCiB7CiAgICAgaWYgKCFmdW5jdGlvbnMp
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTnVsbCBmdW5jdGlvbnM7IHRoYXQgc2hvdWxkIGhh
dmUgYmVlbiBjYXVnaHQgYnkgdGhlIGNhbGxlci4iKTsKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rp
b24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIHR5cGVBcmd1bWVudHMsIGFyZ3VtZW50
VHlwZXMsIHJldHVyblR5cGUKICAgICBsZXQgZmFpbHVyZXMgPSBbXTsKICAgICBsZXQgc3VjY2Vz
c2VzID0gW107CiAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jdGlvbnMpIHsKLSAgICAgICAgaWYg
KGZ1bmMuc2hhZGVyVHlwZSkgeworICAgICAgICBpZiAoIWFsbG93RW50cnlQb2ludCAmJiBmdW5j
LnNoYWRlclR5cGUpIHsKICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2gobmV3IE92ZXJsb2FkUmVz
b2x1dGlvbkZhaWx1cmUoZnVuYywgIkZ1bmN0aW9uIGlzIGEgIiArIGZ1bmMuc2hhZGVyVHlwZSAr
ICIgc2hhZGVyLCBzbyBpdCBjYW5ub3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGFuIGV4aXN0aW5n
IHNoYWRlci4iKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggNDhjYjVhNWUwNGZmNmIxNjdlOWVlNTli
NzZjY2JhYTM5ZjQwZTAzNy4uZjlmZjE2Y2Y4NjlkZDdiYWRmZDFmMGM1NTg5MDcyMGFhMzg3ZTg2
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtNTUsNiArNTUs
NyBAQAogPHNjcmlwdCBzcmM9IkZpZWxkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGaW5k
SGlnaFpvbWJpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkZsYXR0ZW5Qcm90b2NvbEV4
dGVuZHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZsYXR0ZW5lZFN0cnVjdE9mZnNldEdh
dGhlcmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbG9hdExpdGVyYWwuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IkZsb2F0TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkZvbGRDb25zdGV4cHJzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYTA4YTY4MjYyYzkwZmI3ZmE0MDVjOTA4
YTdhMjU5ODFhNGNlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iVmFsdWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkV4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJld3JpdGVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJWaXNpdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDcmVh
dGVMaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDcmVhdGVMaXRlcmFsVHlwZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9IkFkZHJlc3NTcGFjZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iQW5vbnltb3VzVmFyaWFibGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkFy
cmF5UmVmVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQXJyYXlUeXBlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJBc3NpZ25tZW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJBdXRvV3JhcHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJCcmVhay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2FsbEV4cHJlc3Npb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IkNhbGxGdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iQ2hlY2suanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrTGl0ZXJhbFR5cGVz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja0xvb3BzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJDaGVja1JlY3Vyc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hl
Y2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja1VucmVhY2hhYmxlQ29k
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tXcmFwcGVkLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDbG9uZVBy
b2dyYW0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNvbW1hRXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ29uc3RleHByRm9sZGVyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJDb25zdGV4cHJUeXBlUGFyYW1ldGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJDb250aW51ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ29udmVydFB0clRvQXJyYXlS
ZWZFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJEb1doaWxlTG9vcC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG90RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iRG91YmxlTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRG91Ymxl
TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRlcmVmZXJlbmNlRXhwcmVz
c2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRUFycmF5UmVmLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJFQnVmZmVy
QnVpbGRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRVB0ci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iRW51bUxpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVudW1N
ZW1iZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVudW1UeXBlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJFdmFsdWF0aW9uQ29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJFdmFsdWF0b3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkV4cHJlc3Npb25GaW5kZXIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZpZWxkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJGaW5kSGlnaFpvbWJpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZsYXR0ZW5Q
cm90b2NvbEV4dGVuZHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZsYXR0ZW5lZFN0cnVj
dE9mZnNldEdhdGhlcmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGbG9hdExpdGVyYWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkZsb2F0TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkZvbGRDb25zdGV4cHJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJGb3JMb29wLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJGdW5jRGVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jSW5z
dGFudGlhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jUGFyYW1ldGVyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJGdW5jdGlvbkxpa2VCbG9jay5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iSGlnaFpvbWJpZUZpbmRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
SWRlbnRpdHlFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJZlN0YXRlbWVu
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iSW5kZXhFeHByZXNzaW9uLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJJbmZlclR5cGVzRm9yQ2FsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iSW5saW5lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbmxpbmVyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJJbnN0YW50aWF0ZUltbWVkaWF0ZXMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkludExpdGVyYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkludExp
dGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJbnRyaW5zaWNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJMZXhlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGV4
ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGl0ZXJhbFR5cGVDaGVja2VyLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMb2dpY2FsRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9v
cENoZWNrZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik1ha2VBcnJheVJlZkV4cHJlc3Np
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik1ha2VQdHJFeHByZXNzaW9uLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJOYW1lQ29udGV4dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iTmFtZVJlc29sdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVGdW5jLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJOYXRpdmVGdW5jSW5zdGFuY2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ik5hdGl2ZVR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik5h
dGl2ZVR5cGVJbnN0YW5jZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTm9ybWFsVXNlUHJv
cGVydHlSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTnVsbExpdGVyYWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ik51bGxUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJQYXJzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJlcGFyZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iUHJvcGVydHlSZXNvbHZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvdG9jb2wuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9IlByb3RvY29sRGVjbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iUHJvdG9jb2xGdW5jRGVjbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUHJvdG9jb2xS
ZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlB0clR5cGUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc29s
dmVOYW1lcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXR1cm5DaGVja2VyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3Rh
dGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdHJ1Y3RMYXlvdXRCdWls
ZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdHJ1Y3RUeXBlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJTdWJzdGl0dXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN5
bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTeW50aGVz
aXplU3RydWN0QWNjZXNzb3JzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUcmFwU3RhdGVt
ZW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5
cGVPclZhcmlhYmxlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlUGFyYW1ldGVy
UmV3cml0ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5cGVSZWYuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlR5cGVWYXJpYWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
VHlwZVZhcmlhYmxlVHJhY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZWRWYWx1
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
VW5pZmljYXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJVbnJlYWNoYWJs
ZUNvZGVDaGVja2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJWYXJpYWJsZURlY2wuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlZhcmlhYmxlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iV1N5bnRheEVy
cm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXVHJhcEVycm9yLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXaGls
ZUxvb3AuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IldyYXBDaGVja2VyLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyNTaGFkZXJTb3VyY2UgeworICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7
CisgICAgd2lkdGg6IDcwMHB4OworICAgIGhlaWdodDogNDAwcHg7Cit9CisKK3RkIHsKKyAgICBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorbGV0IGRlZmF1
bHRTaGFkZXJTb3VyY2UgPSBgc3RydWN0IFZlcnRleElucHV0IHsKKyAgICBmbG9hdDIgcG9zaXRp
b247CisgICAgZmxvYXQzIGNvbG9yOworfQorCitzdHJ1Y3QgVmVydGV4T3V0cHV0IHsKKyAgICBm
bG9hdDQgd3NsX1Bvc2l0aW9uOworICAgIGZsb2F0MyBjb2xvcjsKK30KKworc3RydWN0IEZyYWdt
ZW50T3V0cHV0IHsKKyAgICBmbG9hdDQgd3NsX0NvbG9yOworfQorCit2ZXJ0ZXggVmVydGV4T3V0
cHV0IHZlcnRleFNoYWRlcihWZXJ0ZXhJbnB1dCB2ZXJ0ZXhJbnB1dCkgeworICAgIFZlcnRleE91
dHB1dCByZXN1bHQ7CisgICAgcmVzdWx0LndzbF9Qb3NpdGlvbiA9IGZsb2F0NCh2ZXJ0ZXhJbnB1
dC5wb3NpdGlvbiwgMC4sIDEuKTsKKyAgICByZXN1bHQuY29sb3IgPSB2ZXJ0ZXhJbnB1dC5jb2xv
cjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmcmFnbWVudCBGcmFnbWVudE91dHB1dCBmcmFn
bWVudFNoYWRlcihWZXJ0ZXhPdXRwdXQgc3RhZ2VJbikgeworICAgIEZyYWdtZW50T3V0cHV0IHJl
c3VsdDsKKyAgICByZXN1bHQud3NsX0NvbG9yID0gZmxvYXQ0KHN0YWdlSW4uY29sb3IsIDEuKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfWA7CisKK2xldCBzaGFkZXJTb3VyY2VUZXh0YXJlYTsKK2xl
dCBsb2NhbFN0b3JhZ2U7CitsZXQgY29tcGlsZUxvZ0VsZW1lbnQ7CitsZXQgdmVydGV4U2hhZGVy
U2VsZWN0OworbGV0IGZyYWdtZW50U2hhZGVyU2VsZWN0OworbGV0IGRhdGFUYWJsZTsKK2xldCBy
ZXN1bHRUYWJsZTsKKworbGV0IHByb2dyYW07CitsZXQgYXZhaWxhYmxlVmVydGV4U2hhZGVyczsK
K2xldCBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnM7CitsZXQgY3VycmVudFZlcnRleFNoYWRlcjsK
K2xldCBjdXJyZW50RnJhZ21lbnRTaGFkZXI7CitsZXQgaW5saW5lZFZlcnRleFNoYWRlcjsKK2xl
dCBpbmxpbmVkRnJhZ21lbnRTaGFkZXI7CitsZXQgYWxsQXJndW1lbnRJbmZvczsKK2xldCBhcmd1
bWVudEVQdHJzOworbGV0IHN0YWdlSW5Bcmd1bWVudEluZGV4OworCit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgIHNoYWRlclNvdXJjZVRleHRhcmVhID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlNoYWRlclNvdXJjZSIpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJDb21waWxlQnV0dG9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBj
b21waWxlUHJlc2VudFNoYWRlclNvdXJjZSk7CisgICAgY29tcGlsZUxvZ0VsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiQ29tcGlsZUxvZyIpOworICAgIHZlcnRleFNoYWRlclNlbGVj
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJWZXJ0ZXhTaGFkZXJTZWxlY3QiKTsKKyAgICBm
cmFnbWVudFNoYWRlclNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGcmFnbWVudFNo
YWRlclNlbGVjdCIpOworICAgIHZlcnRleFNoYWRlclNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCJj
aGFuZ2UiLCBzZWxlY3RlZFNoYWRlcnNDaGFuZ2VkKTsKKyAgICBmcmFnbWVudFNoYWRlclNlbGVj
dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBzZWxlY3RlZFNoYWRlcnNDaGFuZ2VkKTsKKyAg
ICBkYXRhVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRGF0YVRhYmxlIik7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlJ1bkJ1dHRvbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgcnVuU2hhZGVycyk7CisgICAgcmVzdWx0VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiUmVzdWx0VGFibGUiKTsKKyAgICBzaGFkZXJTb3VyY2VUZXh0YXJlYS5hZGRFdmVudExp
c3RlbmVyKCJpbnB1dCIsIHNvdXJjZUNvZGVDaGFuZ2VkKTsKKworICAgIGxldCBzaGFkZXJTb3Vy
Y2U7CisgICAgdHJ5IHsKKyAgICAgICAgbG9jYWxTdG9yYWdlID0gd2luZG93LmxvY2FsU3RvcmFn
ZTsKKyAgICAgICAgc2hhZGVyU291cmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oIlNoYWRlclNv
dXJjZSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICB9CisKKyAgICBpZiAoIXNoYWRlclNvdXJj
ZSkKKyAgICAgICAgc2hhZGVyU291cmNlID0gZGVmYXVsdFNoYWRlclNvdXJjZTsKKyAgICBzaGFk
ZXJTb3VyY2VUZXh0YXJlYS52YWx1ZSA9IHNoYWRlclNvdXJjZTsKKyAgICBjb21waWxlUHJlc2Vu
dFNoYWRlclNvdXJjZSgpOworfSk7CisKK2Z1bmN0aW9uIGNsZWFyRGF0YVRhYmxlKCkKK3sKKyAg
ICB3aGlsZSAoZGF0YVRhYmxlLmxhc3RDaGlsZCBpbnN0YW5jZW9mIEhUTUxUYWJsZVJvd0VsZW1l
bnQpCisgICAgICAgIGRhdGFUYWJsZS5yZW1vdmVDaGlsZChkYXRhVGFibGUubGFzdENoaWxkKTsK
K30KKworZnVuY3Rpb24gY2xlYXJSZXN1bHRUYWJsZSgpCit7CisgICAgd2hpbGUgKHJlc3VsdFRh
YmxlLmxhc3RDaGlsZCBpbnN0YW5jZW9mIEhUTUxUYWJsZVJvd0VsZW1lbnQpCisgICAgICAgIHJl
c3VsdFRhYmxlLnJlbW92ZUNoaWxkKHJlc3VsdFRhYmxlLmxhc3RDaGlsZCk7Cit9CisKK2Z1bmN0
aW9uIGNsZWFyU2hhZGVyU2VsZWN0KCkKK3sKKyAgICB3aGlsZSAodmVydGV4U2hhZGVyU2VsZWN0
LmZpcnN0Q2hpbGQpCisgICAgICAgIHZlcnRleFNoYWRlclNlbGVjdC5yZW1vdmVDaGlsZCh2ZXJ0
ZXhTaGFkZXJTZWxlY3QuZmlyc3RDaGlsZCk7CisgICAgd2hpbGUgKGZyYWdtZW50U2hhZGVyU2Vs
ZWN0LmZpcnN0Q2hpbGQpCisgICAgICAgIGZyYWdtZW50U2hhZGVyU2VsZWN0LnJlbW92ZUNoaWxk
KGZyYWdtZW50U2hhZGVyU2VsZWN0LmZpcnN0Q2hpbGQpOworfQorCitmdW5jdGlvbiBzb3VyY2VD
b2RlQ2hhbmdlZCgpIHsKKyAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwor
ICAgIGNsZWFyU2hhZGVyU2VsZWN0KCk7CisgICAgY2xlYXJEYXRhVGFibGUoKTsKKyAgICBjbGVh
clJlc3VsdFRhYmxlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXNlbnRFcnJvcihtZXNzYWdlKSB7Cisg
ICAgY29tcGlsZUxvZ0VsZW1lbnQudGV4dENvbnRlbnQgPSBtZXNzYWdlOworICAgIGNsZWFyU2hh
ZGVyU2VsZWN0KCk7CisgICAgY2xlYXJEYXRhVGFibGUoKTsKKyAgICBjbGVhclJlc3VsdFRhYmxl
KCk7CisgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBjb21waWxl
UHJlc2VudFNoYWRlclNvdXJjZSgpIHsKKyAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVu
dCA9ICIiOworICAgIGxldCBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIGxldCBy
ZXN1bHQ7CisgICAgdHJ5IHsKKyAgICAgICAgcmVzdWx0ID0gcHJlcGFyZSgiL2ludGVybmFsL3Rl
c3QiLCAwLCBzaGFkZXJTb3VyY2VUZXh0YXJlYS52YWx1ZSk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICByZXN1bHQgPSBlOworICAgIH0KKyAgICBsZXQgZW5kID0gbmV3IERhdGUoKS5nZXRU
aW1lKCk7CisgICAgaWYgKCEocmVzdWx0IGluc3RhbmNlb2YgUHJvZ3JhbSkpIHsKKyAgICAgICAg
Y29tcGlsZUxvZ0VsZW1lbnQudGV4dENvbnRlbnQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0gZWxzZQorICAgICAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29u
dGVudCA9ICJDb21waWxlIHN1Y2Nlc3NmdWwhIjsKKworICAgIHRyeSB7CisgICAgICAgIHNoYWRl
clNvdXJjZSA9IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJTaGFkZXJTb3VyY2UiLCBzaGFkZXJTb3Vy
Y2VUZXh0YXJlYS52YWx1ZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgIH0KKworICAgIHByb2dy
YW0gPSByZXN1bHQ7CisgICAgYXZhaWxhYmxlVmVydGV4U2hhZGVycyA9IFtdOworICAgIGF2YWls
YWJsZUZyYWdtZW50U2hhZGVycyA9IFtdOworICAgIGZvciAoZnVuY3Rpb25OYW1lcyBvZiBwcm9n
cmFtLmZ1bmN0aW9ucy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGZ1bmMgb2YgZnVuY3Rpb25O
YW1lcykgeworICAgICAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSA9PSAidmVydGV4IikKKyAg
ICAgICAgICAgICAgICBhdmFpbGFibGVWZXJ0ZXhTaGFkZXJzLnB1c2goZnVuYyk7CisgICAgICAg
ICAgICBpZiAoZnVuYy5zaGFkZXJUeXBlID09ICJmcmFnbWVudCIpCisgICAgICAgICAgICAgICAg
YXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzLnB1c2goZnVuYyk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2xlYXJTaGFkZXJTZWxlY3QoKTsKKyAgICBmdW5jdGlvbiBjcmVhdGVPcHRpb24odGV4dENv
bnRlbnQpIHsKKyAgICAgICAgbGV0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9w
dGlvbiIpOworICAgICAgICBvcHRpb24udGV4dENvbnRlbnQgPSB0ZXh0Q29udGVudDsKKyAgICAg
ICAgcmV0dXJuIG9wdGlvbjsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdmFpbGFi
bGVWZXJ0ZXhTaGFkZXJzLmxlbmd0aDsgKytpKQorICAgICAgICB2ZXJ0ZXhTaGFkZXJTZWxlY3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlT3B0aW9uKGF2YWlsYWJsZVZlcnRleFNoYWRlcnNbaV0ubmFtZSkp
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzLmxlbmd0
aDsgKytpKQorICAgICAgICBmcmFnbWVudFNoYWRlclNlbGVjdC5hcHBlbmRDaGlsZChjcmVhdGVP
cHRpb24oYXZhaWxhYmxlRnJhZ21lbnRTaGFkZXJzW2ldLm5hbWUpKTsKKyAgICBzZWxlY3RlZFNo
YWRlcnNDaGFuZ2VkKHRydWUpOworfQorCitmdW5jdGlvbiBjcmVhdGVUYWJsZVJvdyhuYW1lLCBl
bGVtZW50Q2FsbGJhY2spIHsKKyAgICBsZXQgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dHIiKTsKKyAgICBsZXQgdmFyaWFibGVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KTsKKyAgICBsZXQgdmFsdWVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAg
ICB2YXJpYWJsZUNlbGwudGV4dENvbnRlbnQgPSBuYW1lOworICAgIHZhbHVlQ2VsbC5hcHBlbmRD
aGlsZChlbGVtZW50Q2FsbGJhY2soKSk7CisgICAgcm93LmFwcGVuZENoaWxkKHZhcmlhYmxlQ2Vs
bCk7CisgICAgcm93LmFwcGVuZENoaWxkKHZhbHVlQ2VsbCk7CisgICAgcmV0dXJuIHJvdzsKKyAg
ICBkYXRhVGFibGUuYXBwZW5kQ2hpbGQocm93KTsKK30KKworZnVuY3Rpb24gbGlua0Vycm9yKG1l
c3NhZ2UpIHsKKyAgICBjb21waWxlTG9nRWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2UgKyAi
IEZpeCB0aGlzIGJ5IHNlbGVjdGluZyBhIGRpZmZlcmVudCBwYWlyIG9mIHNoYWRlcnMgYmVsb3cu
IjsKKyAgICBjbGVhckRhdGFUYWJsZSgpOworICAgIGNsZWFyUmVzdWx0VGFibGUoKTsKK30KKwor
ZnVuY3Rpb24gc2VsZWN0ZWRTaGFkZXJzQ2hhbmdlZChmcm9tQ29tcGlsYXRpb24gPSBmYWxzZSkg
eworICAgIGlmICghZnJvbUNvbXBpbGF0aW9uKQorICAgICAgICBjb21waWxlTG9nRWxlbWVudC50
ZXh0Q29udGVudCA9ICIiOworICAgIGN1cnJlbnRWZXJ0ZXhTaGFkZXIgPSBhdmFpbGFibGVWZXJ0
ZXhTaGFkZXJzW3ZlcnRleFNoYWRlclNlbGVjdC5zZWxlY3RlZEluZGV4XTsKKyAgICBjdXJyZW50
RnJhZ21lbnRTaGFkZXIgPSBhdmFpbGFibGVGcmFnbWVudFNoYWRlcnNbZnJhZ21lbnRTaGFkZXJT
ZWxlY3Quc2VsZWN0ZWRJbmRleF07CisKKyAgICBpbmxpbmVkVmVydGV4U2hhZGVyID0gcHJvZ3Jh
bS5mdW5jSW5zdGFudGlhdG9yLmdldFVuaXF1ZShjdXJyZW50VmVydGV4U2hhZGVyLCBbXSk7Cisg
ICAgX2lubGluZUZ1bmN0aW9uKHByb2dyYW0sIGlubGluZWRWZXJ0ZXhTaGFkZXIsIG5ldyBWaXNp
dGluZ1NldChjdXJyZW50VmVydGV4U2hhZGVyKSk7CisKKyAgICBhbGxBcmd1bWVudEluZm9zID0g
W107CisgICAgYXJndW1lbnRFUHRycyA9IFtdOworICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBp
bmxpbmVkVmVydGV4U2hhZGVyLnBhcmFtZXRlcnMpIHsKKyAgICAgICAgbGV0IGVQdHIgPSBuZXcg
RVB0cihuZXcgRUJ1ZmZlcihwYXJhbWV0ZXIudHlwZS5zaXplKSwgMCk7CisgICAgICAgIGFyZ3Vt
ZW50RVB0cnMucHVzaCh7ZVB0cjogZVB0ciwgc2l6ZTogcGFyYW1ldGVyLnR5cGUuc2l6ZX0pOwor
ICAgICAgICBsZXQgZ2F0aGVyZXIgPSBuZXcgRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0aGVyZXIo
cGFyYW1ldGVyLm5hbWUpOworICAgICAgICBwYXJhbWV0ZXIudmlzaXQoZ2F0aGVyZXIpOworICAg
ICAgICBmb3IgKGFyZ3VtZW50SW5mbyBvZiBnYXRoZXJlci5yZXN1bHQpIHsKKyAgICAgICAgICAg
IGFyZ3VtZW50SW5mby5lUHRyID0gZVB0cjsKKyAgICAgICAgICAgIGFsbEFyZ3VtZW50SW5mb3Mu
cHVzaChhcmd1bWVudEluZm8pOworICAgICAgICB9CisgICAgfQorICAgIGNsZWFyRGF0YVRhYmxl
KCk7CisgICAgY2xlYXJSZXN1bHRUYWJsZSgpOworICAgIGZvciAobGV0IGluZm8gb2YgYWxsQXJn
dW1lbnRJbmZvcykgeworICAgICAgICBkYXRhVGFibGUuYXBwZW5kQ2hpbGQoY3JlYXRlVGFibGVS
b3coaW5mby5uYW1lLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBsZXQgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50
TGlzdGVuZXIoImlucHV0IiwgY2xlYXJSZXN1bHRUYWJsZSk7CisgICAgICAgICAgICAgaW5wdXQu
dHlwZSA9ICJ0ZXh0IjsKKyAgICAgICAgICAgICByZXR1cm4gaW5wdXQ7CisgICAgICAgIH0pKTsK
KyAgICB9CisKKyAgICBsZXQgZm91bmQgPSBmYWxzZTsKKyAgICBsZXQgaW5kZXggPSAwOworICAg
IGZvciAobGV0IHBhcmFtZXRlciBvZiBjdXJyZW50RnJhZ21lbnRTaGFkZXIucGFyYW1ldGVycykg
eworICAgICAgICBpZiAocGFyYW1ldGVyLm5hbWUgPT0gInN0YWdlSW4iKSB7CisgICAgICAgICAg
ICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoIXBhcmFtZXRlci50eXBlLmVxdWFscyhj
dXJyZW50VmVydGV4U2hhZGVyLnJldHVyblR5cGUpKQorICAgICAgICAgICAgICAgIGxpbmtFcnJv
cigiVmVydGV4IHNoYWRlcidzIHJldHVybiB0eXBlIG5lZWRzIHRvIG1hdGNoIHRoZSBzdGFnZUlu
IHBhcmFtZXRlciBvZiB0aGUgZnJhZ21lbnQgc2hhZGVyISIpOworICAgICAgICAgICAgc3RhZ2VJ
bkFyZ3VtZW50SW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgICsraW5kZXg7CisgICAgfQorICAgIGlmICghZm91bmQpCisgICAgICAgIGxpbmtFcnJv
cigiQ291bGQgbm90IGZpbmQgdGhlIHN0YWdlSW4gYXJndW1lbnQgaW4gdGhlIGZyYWdtZW50IHNo
YWRlciEiKTsKKyAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCA+IDEpCisgICAgICAgIGxp
bmtFcnJvcigiRnJhZ21lbnQgc2hhZGVycyBjdXJyZW50bHkgZG9uJ3Qga25vdyBob3cgdG8gaGF2
ZSBhbnkgb3RoZXIgYXJndW1lbnRzIG90aGVyIHRoYW4gc3RhZ2VJbi4iKTsKK30KKworZnVuY3Rp
b24gcnVuU2hhZGVycygpIHsKKyAgICBsZXQgZnVuYyA9IGlubGluZWRWZXJ0ZXhTaGFkZXI7CisK
KyAgICBsZXQgaW5kZXggPSAwOworICAgIGZvciAobGV0IGNoaWxkRWxlbWVudCBvZiBkYXRhVGFi
bGUuY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKCEoY2hpbGRFbGVtZW50IGluc3RhbmNlb2YgSFRN
TFRhYmxlUm93RWxlbWVudCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbGV0IHZh
bHVlID0gY2hpbGRFbGVtZW50LmNoaWxkcmVuWzFdLmZpcnN0Q2hpbGQudmFsdWU7CisgICAgICAg
IGxldCBhcmd1bWVudEluZm8gPSBhbGxBcmd1bWVudEluZm9zW2luZGV4XTsKKyAgICAgICAgbGV0
IHR5cGUgPSBhcmd1bWVudEluZm8udHlwZTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICAgIGNhc2UgImZsb2F0IjoKKyAgICAgICAgICAgIHZhbHVlID0gTWF0aC5mcm91bmQocGFyc2VG
bG9hdCh2YWx1ZSkpOworICAgICAgICAgICAgYXJndW1lbnRJbmZvLmVQdHIuc2V0KGFyZ3VtZW50
SW5mby5vZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJk
b3VibGUiOgorICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICJpbnQzMiI6CisgICAgICAgICAgICB2YWx1ZSA9IHBh
cnNlSW50KHZhbHVlKSB8IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAidWlu
dDMyIjoKKyAgICAgICAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUpID4+PiAwOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBwcmVzZW50RXJyb3Io
IkkgZG9uJ3Qga25vdyBob3cgdG8gcGFyc2UgdmFsdWVzIG9mIHR5cGUgIiArIHR5cGUpOworICAg
ICAgICB9CisgICAgICAgIGlmIChpc05hTih2YWx1ZSkpCisgICAgICAgICAgICBwcmVzZW50RXJy
b3IoIkNvdWxkIG5vdCBwYXJzZSBpbnB1dCBkYXRhICIgKyBpbmRleCk7CisgICAgICAgIGFyZ3Vt
ZW50SW5mby5lUHRyLnNldChhcmd1bWVudEluZm8ub2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgICsr
aW5kZXg7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmdW5jLnBhcmFtZXRlcnMu
bGVuZ3RoOyArK2kpCisgICAgICAgIGZ1bmMucGFyYW1ldGVyc1tpXS5lUHRyLmNvcHlGcm9tKGFy
Z3VtZW50RVB0cnNbaV0uZVB0ciwgYXJndW1lbnRFUHRyc1tpXS5zaXplKTsKKyAgICBsZXQgcmVz
dWx0ID0gbmV3IEV2YWx1YXRvcihwcm9ncmFtKS5ydW5GdW5jKGZ1bmMpOworCisgICAgaW5saW5l
ZEZyYWdtZW50U2hhZGVyID0gcHJvZ3JhbS5mdW5jSW5zdGFudGlhdG9yLmdldFVuaXF1ZShjdXJy
ZW50RnJhZ21lbnRTaGFkZXIsIFtdKTsKKyAgICBfaW5saW5lRnVuY3Rpb24ocHJvZ3JhbSwgaW5s
aW5lZEZyYWdtZW50U2hhZGVyLCBuZXcgVmlzaXRpbmdTZXQoY3VycmVudEZyYWdtZW50U2hhZGVy
KSk7CisgICAgZnVuYyA9IGlubGluZWRGcmFnbWVudFNoYWRlcjsKKworICAgIGZ1bmMucGFyYW1l
dGVyc1tzdGFnZUluQXJndW1lbnRJbmRleF0uZVB0ci5jb3B5RnJvbShyZXN1bHQsIGZ1bmMucGFy
YW1ldGVyc1tzdGFnZUluQXJndW1lbnRJbmRleF0udHlwZS5zaXplKTsKKworICAgIHJlc3VsdCA9
IG5ldyBFdmFsdWF0b3IocHJvZ3JhbSkucnVuRnVuYyhmdW5jKTsKKworICAgIGNsZWFyUmVzdWx0
VGFibGUoKTsKKyAgICBsZXQgZ2F0aGVyZXIgPSBuZXcgRmxhdHRlbmVkU3RydWN0T2Zmc2V0R2F0
aGVyZXIoZnVuYy5yZXR1cm5UeXBlLnR5cGUubmFtZSk7CisgICAgZnVuYy5yZXR1cm5UeXBlLnR5
cGUudmlzaXQoZ2F0aGVyZXIpOworICAgIGZvciAobGV0IGluZm8gb2YgZ2F0aGVyZXIucmVzdWx0
KSB7CisgICAgICAgIHJlc3VsdFRhYmxlLmFwcGVuZENoaWxkKGNyZWF0ZVRhYmxlUm93KGluZm8u
bmFtZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUocmVzdWx0LmdldChpbmZvLm9mZnNldCkpOworICAgICAgICB9KSk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5XZWJHUFUgU2hhZGluZyBMYW5ndWFnZTwv
aDE+Cis8b2w+Cis8bGk+CisgICAgV3JpdGUgYSBzaGFkZXIhCisgICAgPGRpdj48dGV4dGFyZWEg
aWQ9IlNoYWRlclNvdXJjZSI+PC90ZXh0YXJlYT48L2Rpdj4KKyAgICA8ZGl2IGlkPSJDb21waWxl
TG9nIj48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJDb21waWxl
IiBpZD0iQ29tcGlsZUJ1dHRvbiI+PC9kaXY+Cis8L2xpPgorPGxpPgorICAgIFNlbGVjdCB5b3Vy
IHNoYWRlcnMKKyAgICA8ZGl2PjxsYWJlbD5WZXJ0ZXggU2hhZGVyIDxzZWxlY3QgaWQ9IlZlcnRl
eFNoYWRlclNlbGVjdCI+PC9zZWxlY3Q+PC9sYWJlbD48L2Rpdj4KKyAgICA8ZGl2PjxsYWJlbD5G
cmFnbWVudCBTaGFkZXIgPHNlbGVjdCBpZD0iRnJhZ21lbnRTaGFkZXJTZWxlY3QiPjwvc2VsZWN0
PjwvbGFiZWw+PC9kaXY+Cis8L2xpPgorPGxpPgorICAgIFNwZWNpZnkgaW5wdXQgZGF0YQorICAg
IDx0YWJsZSBpZD0iRGF0YVRhYmxlIj4KKyAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgPHRy
PgorICAgICAgICAgICAgICAgIDx0ZD5WYXJpYWJsZTwvdGQ+CisgICAgICAgICAgICAgICAgPHRk
PlZhbHVlPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgIDwvdGhlYWQ+CisgICAgPC90
YWJsZT4KKzwvbGk+Cis8bGk+CisgICAgPGRpdj48aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i
UnVuIiBpZD0iUnVuQnV0dG9uIj48L2Rpdj4KKyAgICA8dGFibGUgaWQ9IlJlc3VsdFRhYmxlIj4K
KyAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD5W
YXJpYWJsZTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPlZhbHVlPC90ZD4KKyAgICAgICAgICAg
IDwvdHI+CisgICAgICAgIDwvdGhlYWQ+CisgICAgPC90YWJsZT4KKzwvbGk+Cis8L29sPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="341345"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>