<?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>34646</bug_id>
          
          <creation_ts>2010-02-05 06:01:51 -0800</creation_ts>
          <short_desc>Web Inspector: simplify cookies view, introduce DataGrid::autoSizeColumns.</short_desc>
          <delta_ts>2010-02-05 11:30:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>188163</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-05 06:01:51 -0800</bug_when>
    <thetext>I brushed up CookiesView a bit (fixed sorting to preserve selection, delete to preserve sorting, general code brush up). I noticed fair amount of copypaste logic related to the auto-sizing of columns in DataGrid and fixed that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188168</commentid>
    <comment_count>1</comment_count>
      <attachid>48228</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-05 06:09:50 -0800</bug_when>
    <thetext>Created attachment 48228
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188174</commentid>
    <comment_count>2</comment_count>
      <attachid>48230</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-05 06:53:17 -0800</bug_when>
    <thetext>Created attachment 48230
[PATCH] Same with a minor fix for platforms with no raw cookie access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188232</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-05 11:30:30 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/CookieItemsView.js
	M	WebCore/inspector/front-end/DOMStorageItemsView.js
	M	WebCore/inspector/front-end/DataGrid.js
	M	WebCore/inspector/front-end/DatabaseQueryView.js
	M	WebCore/inspector/front-end/DatabaseTableView.js
	M	WebCore/inspector/front-end/StoragePanel.js
Committed r54436</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48228</attachid>
            <date>2010-02-05 06:09:50 -0800</date>
            <delta_ts>2010-02-05 06:53:17 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>cookies_brushup</filename>
            <type>text/plain</type>
            <size>27698</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTIzMmUyZC4uN2I3MDM4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wMi0wNSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaW1wbGlmeSBjb29raWVzIHZpZXcs
IGludHJvZHVjZSBEYXRhR3JpZDo6YXV0b1NpemVDb2x1bW5zLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY0NgorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29va2llSXRlbXNWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcu
cHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5w
cm90b3R5cGUuX3VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3
LnByb3RvdHlwZS5fdXBkYXRlV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
b2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2ZpbHRlckNvb2tpZXNGb3JEb21haW4pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2NyZWF0ZURhdGFHcmlk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9wb3B1
bGF0ZURhdGFHcmlkLmV4cGlyZXNDb21wYXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVJdGVtc1ZpZXcucHJvdG90eXBlLl9wb3B1bGF0ZURhdGFHcmlkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9jcmVhdGVTaW1wbGVEYXRhR3JpZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS5fcG9wdWxh
dGVTaW1wbGVEYXRhR3JpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3
LnByb3RvdHlwZS5fZGVsZXRlQ29va2llQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlja2VkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX3Nob3dET01TdG9y
YWdlRW50cmllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5w
cm90b3R5cGUuX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hdXRvU2l6ZUNv
bHVtbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcucHJvdG90eXBlLl9x
dWVyeUZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFi
bGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVWaWV3LnByb3Rv
dHlwZS5fcXVlcnlGaW5pc2hlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9y
YWdlUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlw
ZS5kYXRhR3JpZEZvclJlc3VsdCk6CisKIDIwMTAtMDItMDQgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRl
eCAzYWY5YzJlLi5hMTc5N2QzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29va2llSXRlbXNWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b29raWVJdGVtc1ZpZXcuanMKQEAgLTQzLDYgKzQzLDExIEBAIFdlYkluc3BlY3Rvci5Db29raWVJ
dGVtc1ZpZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVudCwgY29va2llRG9tYWluKQogICAgIAogICAg
IHRoaXMuX3RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CiAgICAgdGhpcy5fY29va2llRG9tYWlu
ID0gY29va2llRG9tYWluOworCisgICAgdGhpcy5fZW1wdHlNc2dFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fZW1wdHlNc2dFbGVtZW50LmNsYXNzTmFt
ZSA9ICJzdG9yYWdlLXRhYmxlLWVtcHR5IjsKKyAgICB0aGlzLl9lbXB0eU1zZ0VsZW1lbnQudGV4
dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgc2l0ZSBoYXMgbm8gY29va2ll
cy4iKTsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlNc2dFbGVtZW50
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CkBAIC01
NCw3ICs1OSw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewog
ICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAg
ICAgICB0aGlzLnVwZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCiAg
ICAgaGlkZTogZnVuY3Rpb24oKQpAQCAtNjMsMzcgKzY4LDUzIEBAIFdlYkluc3BlY3Rvci5Db29r
aWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNp
YmxlID0gZmFsc2U7CiAgICAgfSwKIAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQorICAgIF91cGRh
dGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOwogICAgICAgICBXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmModGhpcy5f
dXBkYXRlV2l0aENvb2tpZXMuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVXaXRo
Q29va2llczogZnVuY3Rpb24oYWxsQ29va2llcywgaXNBZHZhbmNlZCkKICAgICB7Ci0gICAgICAg
IHZhciBjb29raWVzID0gdGhpcy5fY29va2llc0ZvckRvbWFpbihhbGxDb29raWVzLCBpc0FkdmFu
Y2VkKTsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gKGlzQWR2YW5jZWQgPyB0aGlzLmRhdGFHcmlk
Rm9yQ29va2llcyhjb29raWVzKSA6IHRoaXMuc2ltcGxlRGF0YUdyaWRGb3JDb29raWVzKGNvb2tp
ZXMpKTsKLSAgICAgICAgaWYgKGRhdGFHcmlkKSB7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhR3Jp
ZCA9IGRhdGFHcmlkOwotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRhdGFH
cmlkLmVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7
Ci0gICAgICAgICAgICBpZiAoaXNBZHZhbmNlZCkKLSAgICAgICAgICAgICAgICB0aGlzLmRlbGV0
ZUJ1dHRvbi52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZh
ciBlbXB0eU1zZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAg
ICAgICAgIGVtcHR5TXNnRWxlbWVudC5jbGFzc05hbWUgPSAic3RvcmFnZS10YWJsZS1lbXB0eSI7
Ci0gICAgICAgICAgICBlbXB0eU1zZ0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRoaXMgc2l0ZSBoYXMgbm8gY29va2llcy4iKTsKLSAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChlbXB0eU1zZ0VsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQgPSBudWxsOworICAgICAgICB0aGlzLl9maWx0ZXJDb29raWVzRm9yRG9tYWluKGFs
bENvb2tpZXMpOworCisgICAgICAgIGlmICghdGhpcy5fY29va2llcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIC8vIE5vdGhpbmcgdG8gc2hvdy4KKyAgICAgICAgICAgIHRoaXMuX2VtcHR5TXNnRWxl
bWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIHRoaXMuZGVsZXRl
QnV0dG9uLnZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkK
KyAgICAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhp
ZGRlbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0
aGlzLl9kYXRhR3JpZCkgeworICAgICAgICAgICAgaWYgKGlzQWR2YW5jZWQpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9jcmVhdGVEYXRhR3JpZCgpOworICAgICAgICAgICAgICAgIHRoaXMuX3Bv
cHVsYXRlRGF0YUdyaWQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5hdXRvU2l6
ZUNvbHVtbnMoNiwgMzMpOworICAgICAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50LnN1YnRp
dGxlID0gU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBjb29raWVzICgl
cykiKSwgdGhpcy5fY29va2llcy5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIE51bWJlci5i
eXRlc1RvU3RyaW5nKHRoaXMuX3RvdGFsU2l6ZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVNpbXBsZURh
dGFHcmlkKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTaW1wbGVEYXRhR3JpZCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlzQWR2
YW5jZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVEYXRhR3JpZCgpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU2ltcGxlRGF0YUdyaWQo
KTsKICAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHRoaXMuX2VtcHR5TXNnRWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgaWYgKGlzQWR2YW5jZWQpCisgICAgICAgICAgICB0
aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxlID0gdHJ1ZTsKICAgICB9LAogCi0gICAgX2Nvb2tpZXNG
b3JEb21haW46IGZ1bmN0aW9uKGFsbENvb2tpZXMsIGlzQWR2YW5jZWQpCisgICAgX2ZpbHRlckNv
b2tpZXNGb3JEb21haW46IGZ1bmN0aW9uKGFsbENvb2tpZXMpCiAgICAgewotICAgICAgICB2YXIg
Y29va2llc0ZvckRvbWFpbiA9IFtdOworICAgICAgICB0aGlzLl9jb29raWVzID0gW107CiAgICAg
ICAgIHZhciByZXNvdXJjZVVSTHNGb3JEb2N1bWVudFVSTCA9IFtdOwotICAgICAgICB2YXIgdG90
YWxTaXplID0gMDsKKyAgICAgICAgdGhpcy5fdG90YWxTaXplID0gMDsKIAogICAgICAgICBmb3Ig
KHZhciBpZCBpbiBXZWJJbnNwZWN0b3IucmVzb3VyY2VzKSB7CiAgICAgICAgICAgICB2YXIgcmVz
b3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VzW2lkXTsKQEAgLTEwOCwxNDQgKzEyOSw0OSBA
QCBXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgcmVzb3VyY2VVUkxzRm9yRG9jdW1lbnRVUkwubGVuZ3RoOyAr
K2opIHsKICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VVUkwgPSByZXNvdXJjZVVSTHNGb3JE
b2N1bWVudFVSTFtqXTsKICAgICAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tpZXMu
Y29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGFsbENvb2tpZXNbaV0sIHJlc291cmNlVVJMKSkgewot
ICAgICAgICAgICAgICAgICAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcHVz
aGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoZWQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgY29va2llc0ZvckRvbWFpbi5wdXNoKGFsbENvb2tpZXNbaV0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29va2llcy5wdXNoKGFsbENvb2tpZXNbaV0pOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzQWR2YW5jZWQpIHsKLSAgICAgICAgICAgIHRoaXMu
X3RyZWVFbGVtZW50LnN1YnRpdGxlID0gU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlZCBjb29raWVzICglcykiKSwgY29va2llc0ZvckRvbWFpbi5sZW5ndGgsCi0gICAgICAg
ICAgICAgICAgTnVtYmVyLmJ5dGVzVG9TdHJpbmcodG90YWxTaXplLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY29va2llc0ZvckRvbWFpbjsKICAg
ICB9LAogCi0gICAgZGF0YUdyaWRGb3JDb29raWVzOiBmdW5jdGlvbihjb29raWVzKQorICAgIF9j
cmVhdGVEYXRhR3JpZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKCFjb29raWVzLmxl
bmd0aCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGNvb2tpZXNbaV0uZXhwaXJl
cyA9IG5ldyBEYXRlKGNvb2tpZXNbaV0uZXhwaXJlcyk7Ci0KICAgICAgICAgdmFyIGNvbHVtbnMg
PSB7IDA6IHt9LCAxOiB7fSwgMjoge30sIDM6IHt9LCA0OiB7fSwgNToge30sIDY6IHt9LCA3OiB7
fSB9OwogICAgICAgICBjb2x1bW5zWzBdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJO
YW1lIik7Ci0gICAgICAgIGNvbHVtbnNbMF0ud2lkdGggPSBjb2x1bW5zWzBdLnRpdGxlLmxlbmd0
aDsKICAgICAgICAgY29sdW1uc1swXS5zb3J0YWJsZSA9IHRydWU7CiAgICAgICAgIGNvbHVtbnNb
MV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIik7Ci0gICAgICAgIGNvbHVt
bnNbMV0ud2lkdGggPSBjb2x1bW5zWzFdLnRpdGxlLmxlbmd0aDsKICAgICAgICAgY29sdW1uc1sx
XS5zb3J0YWJsZSA9IHRydWU7CiAgICAgICAgIGNvbHVtbnNbMl0udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRvbWFpbiIpOwotICAgICAgICBjb2x1bW5zWzJdLndpZHRoID0gY29sdW1u
c1syXS50aXRsZS5sZW5ndGg7CiAgICAgICAgIGNvbHVtbnNbMl0uc29ydGFibGUgPSB0cnVlOwog
ICAgICAgICBjb2x1bW5zWzNdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXRoIik7
Ci0gICAgICAgIGNvbHVtbnNbM10ud2lkdGggPSBjb2x1bW5zWzNdLnRpdGxlLmxlbmd0aDsKICAg
ICAgICAgY29sdW1uc1szXS5zb3J0YWJsZSA9IHRydWU7CiAgICAgICAgIGNvbHVtbnNbNF0udGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cGlyZXMiKTsKLSAgICAgICAgY29sdW1uc1s0
XS53aWR0aCA9IGNvbHVtbnNbNF0udGl0bGUubGVuZ3RoOwogICAgICAgICBjb2x1bW5zWzRdLnNv
cnRhYmxlID0gdHJ1ZTsKICAgICAgICAgY29sdW1uc1s1XS50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2l6ZSIpOwotICAgICAgICBjb2x1bW5zWzVdLndpZHRoID0gY29sdW1uc1s1XS50
aXRsZS5sZW5ndGg7CiAgICAgICAgIGNvbHVtbnNbNV0uYWxpZ25lZCA9ICJyaWdodCI7CiAgICAg
ICAgIGNvbHVtbnNbNV0uc29ydGFibGUgPSB0cnVlOwogICAgICAgICBjb2x1bW5zWzZdLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIVFRQIik7Ci0gICAgICAgIGNvbHVtbnNbNl0ud2lk
dGggPSBjb2x1bW5zWzZdLnRpdGxlLmxlbmd0aDsKICAgICAgICAgY29sdW1uc1s2XS5hbGlnbmVk
ID0gImNlbnRlcmVkIjsKICAgICAgICAgY29sdW1uc1s2XS5zb3J0YWJsZSA9IHRydWU7CiAgICAg
ICAgIGNvbHVtbnNbN10udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyZSIpOwot
ICAgICAgICBjb2x1bW5zWzddLndpZHRoID0gY29sdW1uc1s3XS50aXRsZS5sZW5ndGg7CiAgICAg
ICAgIGNvbHVtbnNbN10uYWxpZ25lZCA9ICJjZW50ZXJlZCI7CiAgICAgICAgIGNvbHVtbnNbN10u
c29ydGFibGUgPSB0cnVlOwogCi0gICAgICAgIHZhciB0b3RhbENvbHVtbldpZHRocyA9IDA7Ci0g
ICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykKLSAgICAgICAgICAg
IHRvdGFsQ29sdW1uV2lkdGhzICs9IGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGg7Ci0K
LSAgICAgICAgLy8gRW5mb3JjZSB0aGUgVmFsdWUgY29sdW1uICh0aGUgMm5kIGNvbHVtbikgdG8g
YmUgYSBtYXggb2YgMzMlCi0gICAgICAgIC8vIHR3ZWFraW5nIHRoZSByYXcgdG90YWwgd2lkdGgg
YmVjYXVzZSBtYXkgbWFzc2l2ZWx5IG91dHNoYWRvdyB0aGUgb3RoZXJzCi0gICAgICAgIHZhciB2
YWx1ZUNvbHVtbldpZHRoID0gY29sdW1uc1sxXS53aWR0aDsKLSAgICAgICAgaWYgKHZhbHVlQ29s
dW1uV2lkdGggLyB0b3RhbENvbHVtbldpZHRocyA+IDAuMzMpIHsKLSAgICAgICAgICAgIHRvdGFs
Q29sdW1uV2lkdGhzIC09IHZhbHVlQ29sdW1uV2lkdGg7Ci0gICAgICAgICAgICB0b3RhbENvbHVt
bldpZHRocyAqPSAxLjMzOwotICAgICAgICAgICAgY29sdW1uc1sxXS53aWR0aCA9IHRvdGFsQ29s
dW1uV2lkdGhzICogMC4zMzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUg
cGVyY2VudGFnZSB3aWR0aCBmb3IgdGhlIGNvbHVtbnMuCi0gICAgICAgIGNvbnN0IG1pbmltdW1Q
cmVjZW50ID0gNjsKLSAgICAgICAgdmFyIHJlY291cFBlcmNlbnQgPSAwOwotICAgICAgICBmb3Ig
KHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpIHsKLSAgICAgICAgICAgIHZhciB3aWR0
aCA9IGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGg7Ci0gICAgICAgICAgICB3aWR0aCA9
IE1hdGgucm91bmQoKHdpZHRoIC8gdG90YWxDb2x1bW5XaWR0aHMpICogMTAwKTsKLSAgICAgICAg
ICAgIGlmICh3aWR0aCA8IG1pbmltdW1QcmVjZW50KSB7Ci0gICAgICAgICAgICAgICAgcmVjb3Vw
UGVyY2VudCArPSAobWluaW11bVByZWNlbnQgLSB3aWR0aCk7Ci0gICAgICAgICAgICAgICAgd2lk
dGggPSBtaW5pbXVtUHJlY2VudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbHVtbnNb
Y29sdW1uSWRlbnRpZmllcl0ud2lkdGggPSB3aWR0aDsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEVuZm9yY2UgdGhlIG1pbmltdW0gcGVyY2VudGFnZSB3aWR0aC4gKG5lZWQgdG8gbmFycm93IHRv
dGFsIHBlcmNlbnRhZ2UgZHVlIHRvIGVhcmxpZXIgYWRkaXRpb25zKQotICAgICAgICB3aGlsZSAo
cmVjb3VwUGVyY2VudCA+IDApIHsKLSAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZp
ZXIgaW4gY29sdW1ucykgewotICAgICAgICAgICAgICAgIGlmIChjb2x1bW5zW2NvbHVtbklkZW50
aWZpZXJdLndpZHRoID4gbWluaW11bVByZWNlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgLS1j
b2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLndpZHRoOwotICAgICAgICAgICAgICAgICAgICAtLXJl
Y291cFBlcmNlbnQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmVjb3VwUGVyY2VudCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4g
Y29sdW1ucykKLSAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGggKz0g
IiUiOwotCi0gICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQo
Y29sdW1ucywgbnVsbCwgdGhpcy5fZGVsZXRlQ29va2llQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0g
ICAgICAgIHZhciBub2RlcyA9IHRoaXMuX2NyZWF0ZU5vZGVzKGRhdGFHcmlkLCBjb29raWVzKTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGVzW2ldKTsKLSAgICAgICAgaWYgKG5vZGVzLmxl
bmd0aCkKLSAgICAgICAgICAgIG5vZGVzWzBdLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgZGF0
YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5fc29ydERhdGEu
YmluZCh0aGlzLCBkYXRhR3JpZCwgY29va2llcykpOwotCi0gICAgICAgIHJldHVybiBkYXRhR3Jp
ZDsKLSAgICB9LAotCi0gICAgX2NyZWF0ZU5vZGVzOiBmdW5jdGlvbihkYXRhR3JpZCwgY29va2ll
cykKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgaW5k
ZXgsIHZhbHVlKSB7Ci0gICAgICAgICAgICBkYXRhW2luZGV4XSA9IHZhbHVlOwotICAgICAgICAg
ICAgaWYgKHZhbHVlLmxlbmd0aCA+IGRhdGFHcmlkLmNvbHVtbnNbaW5kZXhdLndpZHRoKQotICAg
ICAgICAgICAgICAgIGRhdGFHcmlkLmNvbHVtbnNbaW5kZXhdLndpZHRoID0gdmFsdWUubGVuZ3Ro
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG5vZGVzID0gW107Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGRhdGEg
PSB7fTsKLSAgICAgICAgICAgIHZhciBjb29raWUgPSBjb29raWVzW2ldOwotCi0gICAgICAgICAg
ICB1cGRhdGVEYXRhQW5kQ29sdW1uKGRhdGEsIDAsIGNvb2tpZS5uYW1lKTsKLSAgICAgICAgICAg
IHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgMSwgY29va2llLnZhbHVlKTsKLSAgICAgICAgICAg
IHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgMiwgY29va2llLmRvbWFpbik7Ci0gICAgICAgICAg
ICB1cGRhdGVEYXRhQW5kQ29sdW1uKGRhdGEsIDMsIGNvb2tpZS5wYXRoKTsKLSAgICAgICAgICAg
IHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgNCwgKGNvb2tpZS5zZXNzaW9uID8gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTZXNzaW9uIikgOiBjb29raWUuZXhwaXJlcy50b0dNVFN0cmluZygpKSk7
Ci0gICAgICAgICAgICB1cGRhdGVEYXRhQW5kQ29sdW1uKGRhdGEsIDUsIE51bWJlci5ieXRlc1Rv
U3RyaW5nKGNvb2tpZS5zaXplLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcpKTsKLSAgICAgICAgICAg
IHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgNiwgKGNvb2tpZS5odHRwT25seSA/ICJcdTI3MTMi
IDogIiIpKTsgLy8gQ2hlY2ttYXJrCi0gICAgICAgICAgICB1cGRhdGVEYXRhQW5kQ29sdW1uKGRh
dGEsIDcsIChjb29raWUuc2VjdXJlID8gIlx1MjcxMyIgOiAiIikpOyAvLyBDaGVja21hcmsKLQot
ICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRh
KTsKLSAgICAgICAgICAgIG5vZGUuY29va2llID0gY29va2llOwotICAgICAgICAgICAgbm9kZS5z
ZWxlY3RhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG5vZGVzOworICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgbnVsbCwgdGhpcy5fZGVsZXRlQ29va2llQ2Fs
bGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVu
ZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuX3BvcHVsYXRlRGF0YUdyaWQsIHRoaXMpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOwogICAgIH0sCiAKLSAgICBfc29y
dERhdGE6IGZ1bmN0aW9uKGRhdGFHcmlkLCBjb29raWVzKQorICAgIF9wb3B1bGF0ZURhdGFHcmlk
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IGRhdGFHcmlk
LnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyIgPyAxIDogLTE7CisgICAgICAgIHZhciBzZWxlY3Rl
ZENvb2tpZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSA/IHRoaXMuX2RhdGFHcmlkLnNl
bGVjdGVkTm9kZS5jb29raWUgOiBudWxsOworICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IHRo
aXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyIgPyAxIDogLTE7CiAKICAgICAg
ICAgZnVuY3Rpb24gbG9jYWxlQ29tcGFyZShmaWVsZCwgY29va2llMSwgY29va2llMikKICAgICAg
ICAgewpAQCAtMjY1LDExICsxOTEsMTEgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoY29va2llMS5zZXNzaW9uKQogICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChj
b29raWUxLmV4cGlyZXMuZ2V0VGltZSgpIC0gY29va2llMi5leHBpcmVzLmdldFRpbWUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLmV4cGlyZXMgLSBjb29r
aWUyLmV4cGlyZXMpOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIGNvbXBhcmF0b3I7Ci0gICAg
ICAgIHN3aXRjaCAocGFyc2VJbnQoZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIpKSB7Cisg
ICAgICAgIHN3aXRjaCAocGFyc2VJbnQodGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZp
ZXIpKSB7CiAgICAgICAgICAgICBjYXNlIDA6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJp
bmQodGhpcywgIm5hbWUiKTsgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDE6IGNvbXBhcmF0b3Ig
PSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInZhbHVlIik7IGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSAyOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJkb21haW4iKTsg
YnJlYWs7CkBAIC0yODEsNzIgKzIwNyw2MyBAQCBXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlZmF1bHQ6IGxvY2FsZUNvbXBhcmUuYmluZCh0
aGlzLCAibmFtZSIpOwogICAgICAgICB9CiAKLSAgICAgICAgY29va2llcy5zb3J0KGNvbXBhcmF0
b3IpOwotICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9jcmVhdGVOb2RlcyhkYXRhR3JpZCwgY29v
a2llcyk7CisgICAgICAgIHRoaXMuX2Nvb2tpZXMuc29ydChjb21wYXJhdG9yKTsKIAotICAgICAg
ICBkYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG5vZGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9k
ZXNbaV0pOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOworICAgICAg
ICB2YXIgbm9kZVRvU2VsZWN0OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2Nv
b2tpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0ge307CisgICAgICAg
ICAgICB2YXIgY29va2llID0gdGhpcy5fY29va2llc1tpXTsKKyAgICAgICAgICAgIGRhdGFbMF0g
PSBjb29raWUubmFtZTsKKyAgICAgICAgICAgIGRhdGFbMV0gPSBjb29raWUudmFsdWU7CisgICAg
ICAgICAgICBkYXRhWzJdID0gY29va2llLmRvbWFpbjsKKyAgICAgICAgICAgIGRhdGFbM10gPSBj
b29raWUucGF0aDsKKyAgICAgICAgICAgIGRhdGFbNF0gPSAoY29va2llLnNlc3Npb24gPyBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5leHBpcmVzKS50
b0dNVFN0cmluZygpKTsKKyAgICAgICAgICAgIGRhdGFbNV0gPSBOdW1iZXIuYnl0ZXNUb1N0cmlu
Zyhjb29raWUuc2l6ZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKTsKKyAgICAgICAgICAgIGRhdGFb
Nl0gPSAoY29va2llLmh0dHBPbmx5ID8gIlx1MjcxMyIgOiAiIik7IC8vIENoZWNrbWFyaworICAg
ICAgICAgICAgZGF0YVs3XSA9IChjb29raWUuc2VjdXJlID8gIlx1MjcxMyIgOiAiIik7IC8vIENo
ZWNrbWFyawogCi0gICAgICAgIGlmIChub2Rlcy5sZW5ndGgpCi0gICAgICAgICAgICBub2Rlc1sw
XS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlKGRhdGEpOworICAgICAgICAgICAgbm9kZS5jb29raWUgPSBjb29raWU7
CisgICAgICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgICAgICBpZiAoY29va2llID09PSBz
ZWxlY3RlZENvb2tpZSkKKyAgICAgICAgICAgICAgICBub2RlVG9TZWxlY3QgPSBub2RlOworICAg
ICAgICB9CisgICAgICAgIGlmIChub2RlVG9TZWxlY3QpCisgICAgICAgICAgICBub2RlVG9TZWxl
Y3Quc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC5jaGlsZHJlblswXS5zZWxlY3RlZCA9IHRydWU7CiAgICAgfSwKIAotICAgIHNpbXBsZURh
dGFHcmlkRm9yQ29va2llczogZnVuY3Rpb24oY29va2llcykKKyAgICBfY3JlYXRlU2ltcGxlRGF0
YUdyaWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbDsKLQogICAgICAgICB2YXIgY29sdW1ucyA9IHt9OwogICAg
ICAgICBjb2x1bW5zWzBdID0ge307CiAgICAgICAgIGNvbHVtbnNbMV0gPSB7fTsKICAgICAgICAg
Y29sdW1uc1swXS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmFtZSIpOwotICAgICAg
ICBjb2x1bW5zWzBdLndpZHRoID0gY29sdW1uc1swXS50aXRsZS5sZW5ndGg7CiAgICAgICAgIGNv
bHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIik7Ci0gICAgICAg
IGNvbHVtbnNbMV0ud2lkdGggPSBjb2x1bW5zWzFdLnRpdGxlLmxlbmd0aDsKIAotICAgICAgICB2
YXIgbm9kZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkKGNvbHVtbnMpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRo
cygpOworICAgIH0sCisKKyAgICBfcG9wdWxhdGVTaW1wbGVEYXRhR3JpZDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgY29va2llID0gY29va2llc1tpXTsKICAgICAgICAgICAgIHZhciBkYXRhID0ge307Ci0KLSAg
ICAgICAgICAgIHZhciBuYW1lID0gY29va2llLm5hbWU7Ci0gICAgICAgICAgICBkYXRhWzBdID0g
bmFtZTsKLSAgICAgICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IGNvbHVtbnNbMF0ud2lkdGgpCi0g
ICAgICAgICAgICAgICAgY29sdW1uc1swXS53aWR0aCA9IG5hbWUubGVuZ3RoOwotCi0gICAgICAg
ICAgICB2YXIgdmFsdWUgPSBjb29raWUudmFsdWU7Ci0gICAgICAgICAgICBkYXRhWzFdID0gdmFs
dWU7Ci0gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gY29sdW1uc1sxXS53aWR0aCkKLSAg
ICAgICAgICAgICAgICBjb2x1bW5zWzFdLndpZHRoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAg
ICAgZGF0YVswXSA9IGNvb2tpZXNbaV0ubmFtZTsKKyAgICAgICAgICAgIGRhdGFbMV0gPSBjb29r
aWVzW2ldLnZhbHVlOwogCiAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlKGRhdGEsIGZhbHNlKTsKICAgICAgICAgICAgIG5vZGUuc2VsZWN0YWJsZSA9
IHRydWU7Ci0gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgIH0KLQotICAgICAgICB2YXIgdG90
YWxDb2x1bW5XaWR0aHMgPSBjb2x1bW5zWzBdLndpZHRoICsgY29sdW1uc1sxXS53aWR0aDsKLSAg
ICAgICAgdmFyIHdpZHRoID0gTWF0aC5yb3VuZCgoY29sdW1uc1swXS53aWR0aCAqIDEwMCkgLyB0
b3RhbENvbHVtbldpZHRocyk7Ci0gICAgICAgIGNvbnN0IG1pbmltdW1QcmVjZW50ID0gMjA7Ci0g
ICAgICAgIGlmICh3aWR0aCA8IG1pbmltdW1QcmVjZW50KQotICAgICAgICAgICAgd2lkdGggPSBt
aW5pbXVtUHJlY2VudDsKLSAgICAgICAgaWYgKHdpZHRoID4gMTAwIC0gbWluaW11bVByZWNlbnQp
Ci0gICAgICAgICAgICB3aWR0aCA9IDEwMCAtIG1pbmltdW1QcmVjZW50OwotICAgICAgICBjb2x1
bW5zWzBdLndpZHRoID0gd2lkdGg7Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSAxMDAgLSB3
aWR0aDsKLSAgICAgICAgY29sdW1uc1swXS53aWR0aCArPSAiJSI7Ci0gICAgICAgIGNvbHVtbnNb
MV0ud2lkdGggKz0gIiUiOwotCi0gICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQoY29sdW1ucyk7Ci0gICAgICAgIHZhciBsZW5ndGggPSBub2Rlcy5sZW5ndGg7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBk
YXRhR3JpZC5hcHBlbmRDaGlsZChub2Rlc1tpXSk7Ci0gICAgICAgIGlmIChsZW5ndGggPiAwKQot
ICAgICAgICAgICAgbm9kZXNbMF0uc2VsZWN0ZWQgPSB0cnVlOwotCi0gICAgICAgIHJldHVybiBk
YXRhR3JpZDsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5bMF0uc2VsZWN0ZWQgPSB0
cnVlOwogICAgIH0sCi0gICAgCisKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKQEAgLTM2MCwxNyArMjc3LDE3IEBAIFdlYkluc3BlY3Rv
ci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2RlbGV0ZUNv
b2tpZUNhbGxiYWNrKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSk7CiAgICAgfSwKLSAgICAK
KwogICAgIF9kZWxldGVDb29raWVDYWxsYmFjazogZnVuY3Rpb24obm9kZSkKICAgICB7CiAgICAg
ICAgIHZhciBjb29raWUgPSBub2RlLmNvb2tpZTsKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5k
ZWxldGVDb29raWUoY29va2llLm5hbWUsIHRoaXMuX2Nvb2tpZURvbWFpbik7Ci0gICAgICAgIHRo
aXMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0sCiAKICAgICBfcmVm
cmVzaEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy51
cGRhdGUoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCmluZGV4IDc0
NDFmMmUuLmRiZDczNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01TdG9yYWdlSXRlbXNWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01TdG9yYWdlSXRlbXNWaWV3LmpzCkBAIC02OSw3ICs2OSw3IEBAIFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkID0gdGhpcy5fZGF0YUdyaWRGb3JET01TdG9yYWdlRW50cmllcyhlbnRyaWVzKTsKICAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwotICAg
ICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKKyAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYXV0b1NpemVDb2x1bW5zKDEwKTsKICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJs
ZSA9IHRydWU7CiAgICAgfSwKIApAQCAtODUsOSArODUsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbHVtbnNbMF0gPSB7fTsKICAg
ICAgICAgY29sdW1uc1sxXSA9IHt9OwogICAgICAgICBjb2x1bW5zWzBdLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJLZXkiKTsKLSAgICAgICAgY29sdW1uc1swXS53aWR0aCA9IGNvbHVt
bnNbMF0udGl0bGUubGVuZ3RoOwogICAgICAgICBjb2x1bW5zWzFdLnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJWYWx1ZSIpOwotICAgICAgICBjb2x1bW5zWzFdLndpZHRoID0gY29sdW1u
c1sxXS50aXRsZS5sZW5ndGg7CiAKICAgICAgICAgdmFyIG5vZGVzID0gW107CiAKQEAgLTk4LDMx
ICs5NiwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgICAgIHZhciBrZXkgPSBlbnRyaWVzW2ldWzBdOwogICAgICAgICAgICAgZGF0
YVswXSA9IGtleTsKLSAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID4gY29sdW1uc1swXS53aWR0
aCkKLSAgICAgICAgICAgICAgICBjb2x1bW5zWzBdLndpZHRoID0ga2V5Lmxlbmd0aDsKLQogICAg
ICAgICAgICAgdmFyIHZhbHVlID0gZW50cmllc1tpXVsxXTsKICAgICAgICAgICAgIGRhdGFbMV0g
PSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiBjb2x1bW5zWzFdLndpZHRo
KQotICAgICAgICAgICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSB2YWx1ZS5sZW5ndGg7CiAgICAg
ICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEsIGZh
bHNlKTsKICAgICAgICAgICAgIG5vZGUuc2VsZWN0YWJsZSA9IHRydWU7CiAgICAgICAgICAgICBu
b2Rlcy5wdXNoKG5vZGUpOwogICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2YXIgdG90YWxDb2x1bW5XaWR0aHMgPSBjb2x1bW5zWzBdLndpZHRoICsgY29s
dW1uc1sxXS53aWR0aDsKLSAgICAgICAgdmFyIHdpZHRoID0gTWF0aC5yb3VuZCgoY29sdW1uc1sw
XS53aWR0aCAqIDEwMCkgLyB0b3RhbENvbHVtbldpZHRocyk7Ci0gICAgICAgIGNvbnN0IG1pbmlt
dW1QcmVjZW50ID0gMTA7Ci0gICAgICAgIGlmICh3aWR0aCA8IG1pbmltdW1QcmVjZW50KQotICAg
ICAgICAgICAgd2lkdGggPSBtaW5pbXVtUHJlY2VudDsKLSAgICAgICAgaWYgKHdpZHRoID4gMTAw
IC0gbWluaW11bVByZWNlbnQpCi0gICAgICAgICAgICB3aWR0aCA9IDEwMCAtIG1pbmltdW1QcmVj
ZW50OwotICAgICAgICBjb2x1bW5zWzBdLndpZHRoID0gd2lkdGg7Ci0gICAgICAgIGNvbHVtbnNb
MV0ud2lkdGggPSAxMDAgLSB3aWR0aDsKLSAgICAgICAgY29sdW1uc1swXS53aWR0aCArPSAiJSI7
Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lkdGggKz0gIiUiOwotCiAgICAgICAgIHZhciBkYXRhR3Jp
ZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgdGhpcy5fZWRpdGluZ0NhbGxi
YWNrLmJpbmQodGhpcyksIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAg
ICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rh
dGFHcmlkLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCmluZGV4
IDNlY2E5ZTQuLjFlY2M0ZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EYXRhR3JpZC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQu
anMKQEAgLTYxLDcgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29s
dW1ucywgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKIAogICAgIHZhciBoZWFkZXJSb3cg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwogICAgIHZhciBjb2x1bW5Hcm91cCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbGdyb3VwIik7Ci0gICAgdmFyIGNvbHVtbkNvdW50ID0g
MDsKKyAgICB0aGlzLl9jb2x1bW5Db3VudCA9IDA7CiAKICAgICBmb3IgKHZhciBjb2x1bW5JZGVu
dGlmaWVyIGluIGNvbHVtbnMpIHsKICAgICAgICAgdmFyIGNvbHVtbiA9IGNvbHVtbnNbY29sdW1u
SWRlbnRpZmllcl07CkBAIC03MSw2ICs3MSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1
bmN0aW9uKGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiAgICAgICAgIHZh
ciBjb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjb2wiKTsKICAgICAgICAgaWYgKGNvbHVt
bi53aWR0aCkKICAgICAgICAgICAgIGNvbC5zdHlsZS53aWR0aCA9IGNvbHVtbi53aWR0aDsKKyAg
ICAgICAgY29sdW1uLmVsZW1lbnQgPSBjb2w7CiAgICAgICAgIGNvbHVtbkdyb3VwLmFwcGVuZENo
aWxkKGNvbCk7CiAKICAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
aCIpOwpAQCAtOTgsMTAgKzk5LDEwIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9u
KGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiAKICAgICAgICAgaGVhZGVy
Um93LmFwcGVuZENoaWxkKGNlbGwpOwogCi0gICAgICAgICsrY29sdW1uQ291bnQ7CisgICAgICAg
ICsrdGhpcy5fY29sdW1uQ291bnQ7CiAgICAgfQogCi0gICAgY29sdW1uR3JvdXAuc3BhbiA9IGNv
bHVtbkNvdW50OworICAgIGNvbHVtbkdyb3VwLnNwYW4gPSB0aGlzLl9jb2x1bW5Db3VudDsKIAog
ICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKICAgICBjZWxsLmNs
YXNzTmFtZSA9ICJjb3JuZXIiOwpAQCAtMTE0LDcgKzExNSw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiAg
ICAgdmFyIGZpbGxlclJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CiAgICAgZmls
bGVyUm93LmNsYXNzTmFtZSA9ICJmaWxsZXIiOwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b2x1bW5Db3VudDsgKytpKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb2x1bW5D
b3VudDsgKytpKSB7CiAgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dGQiKTsKICAgICAgICAgZmlsbGVyUm93LmFwcGVuZENoaWxkKGNlbGwpOwogICAgIH0KQEAgLTI5
Miw3ICsyOTMsNzAgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5fZGF0YVRhYmxlQm9keTsKICAgICB9LAotIAorCisgICAgYXV0b1Np
emVDb2x1bW5zOiBmdW5jdGlvbihtaW5QZXJjZW50LCBtYXhQZXJjZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKG1pblBlcmNlbnQpCisgICAgICAgICAgICBtaW5QZXJjZW50ID0gTWF0aC5taW4obWlu
UGVyY2VudCwgTWF0aC5mbG9vcigxMDAgLyB0aGlzLl9jb2x1bW5Db3VudCkpOworICAgICAgICB2
YXIgd2lkdGhzID0ge307CisgICAgICAgIHZhciBjb2x1bW5zID0gdGhpcy5jb2x1bW5zOworICAg
ICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpCisgICAgICAgICAgICB3
aWR0aHNbY29sdW1uSWRlbnRpZmllcl0gPSAoY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXS50aXRs
ZSB8fCAiIikubGVuZ3RoOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGls
ZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNoaWxkcmVu
W2ldOworICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKSB7
CisgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBub2RlLmRhdGFbY29sdW1uSWRlbnRpZmllcl0g
fHwgIiI7CisgICAgICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoID4gd2lkdGhzW2NvbHVtbklk
ZW50aWZpZXJdKQorICAgICAgICAgICAgICAgICAgICB3aWR0aHNbY29sdW1uSWRlbnRpZmllcl0g
PSB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciB0
b3RhbENvbHVtbldpZHRocyA9IDA7CisgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIg
aW4gY29sdW1ucykKKyAgICAgICAgICAgIHRvdGFsQ29sdW1uV2lkdGhzICs9IHdpZHRoc1tjb2x1
bW5JZGVudGlmaWVyXTsKKworICAgICAgICB2YXIgcmVjb3VwUGVyY2VudCA9IDA7CisgICAgICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgeworICAgICAgICAgICAgdmFy
IHdpZHRoID0gTWF0aC5yb3VuZCgxMDAgKiB3aWR0aHNbY29sdW1uSWRlbnRpZmllcl0gLyB0b3Rh
bENvbHVtbldpZHRocyk7CisgICAgICAgICAgICBpZiAobWluUGVyY2VudCAmJiB3aWR0aCA8IG1p
blBlcmNlbnQpIHsKKyAgICAgICAgICAgICAgICByZWNvdXBQZXJjZW50ICs9IChtaW5QZXJjZW50
IC0gd2lkdGgpOworICAgICAgICAgICAgICAgIHdpZHRoID0gbWluUGVyY2VudDsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAobWF4UGVyY2VudCAmJiB3aWR0aCA+IG1heFBlcmNlbnQpIHsKKyAgICAg
ICAgICAgICAgICByZWNvdXBQZXJjZW50IC09ICh3aWR0aCAtIG1heFBlcmNlbnQpOworICAgICAg
ICAgICAgICAgIHdpZHRoID0gbWF4UGVyY2VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHdpZHRoc1tjb2x1bW5JZGVudGlmaWVyXSA9IHdpZHRoOworICAgICAgICB9CisKKyAgICAgICAg
d2hpbGUgKG1pblBlcmNlbnQgJiYgcmVjb3VwUGVyY2VudCA+IDApIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgeworICAgICAgICAgICAgICAgIGlm
ICh3aWR0aHNbY29sdW1uSWRlbnRpZmllcl0gPiBtaW5QZXJjZW50KSB7CisgICAgICAgICAgICAg
ICAgICAgIC0td2lkdGhzW2NvbHVtbklkZW50aWZpZXJdOworICAgICAgICAgICAgICAgICAgICAt
LXJlY291cFBlcmNlbnQ7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVjb3VwUGVyY2VudCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChtYXhQZXJjZW50ICYmIHJlY291
cFBlcmNlbnQgPCAwKSB7CisgICAgICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGlu
IGNvbHVtbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGhzW2NvbHVtbklkZW50aWZpZXJd
IDwgbWF4UGVyY2VudCkgeworICAgICAgICAgICAgICAgICAgICArK3dpZHRoc1tjb2x1bW5JZGVu
dGlmaWVyXTsKKyAgICAgICAgICAgICAgICAgICAgKytyZWNvdXBQZXJjZW50OworICAgICAgICAg
ICAgICAgICAgICBpZiAoIXJlY291cFBlcmNlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpCisgICAgICAgICAgICBj
b2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLmVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aHNbY29s
dW1uSWRlbnRpZmllcl0gKyAiJSI7CisgICAgICAgIHRoaXMuY29sdW1uV2lkdGhzSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy51cGRhdGVXaWR0aHMoKTsKKyAgICB9LAorCiAgICAg
Ly8gVXBkYXRlcyB0aGUgd2lkdGhzIG9mIHRoZSB0YWJsZSwgaW5jbHVkaW5nIHRoZSBwb3NpdGlv
bnMgb2YgdGhlIGNvbHVtbgogICAgIC8vIHJlc2l6ZXJzLgogICAgIC8vCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMKaW5kZXggMjY1Njg0Mi4u
Y2M5MDJlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNl
UXVlcnlWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1
ZXJ5Vmlldy5qcwpAQCAtMTQ0LDYgKzE0NCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVF1ZXJ5
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlk
LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaW5saW5lIik7CiAgICAgICAgIHRoaXMuX2FwcGVuZFF1
ZXJ5UmVzdWx0KHF1ZXJ5LCBkYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgZGF0YUdyaWQuYXV0
b1NpemVDb2x1bW5zKDUpOwogCiAgICAgICAgIGlmIChxdWVyeS5tYXRjaCgvXmNyZWF0ZSAvaSkg
fHwgcXVlcnkubWF0Y2goL15kcm9wIHRhYmxlIC9pKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuc3RvcmFnZS51cGRhdGVEYXRhYmFzZVRhYmxlcyh0aGlzLmRhdGFiYXNlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcwppbmRl
eCBhYTc2Nzk0Li5jZDY2YWI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2VUYWJsZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RhdGFiYXNlVGFibGVWaWV3LmpzCkBAIC02OCw2ICs2OCw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIGRhdGFHcmlkLmF1
dG9TaXplQ29sdW1ucyg1KTsKICAgICB9LAogCiAgICAgX3F1ZXJ5RXJyb3I6IGZ1bmN0aW9uKGVy
cm9yKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5l
bC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMKaW5kZXgg
MThiYzk4Zi4uY2ExYjI3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0b3JhZ2VQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFn
ZVBhbmVsLmpzCkBAIC0zMDAsNTIgKzMwMCwxNCBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBkYXRhID0ge307CiAKICAgICAgICAgICAg
IHZhciByb3cgPSByb3dzW2ldOwotICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmll
ciBpbiByb3cpIHsKLSAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IHJvd1tjb2x1bW5JZGVudGlm
aWVyXTsKLSAgICAgICAgICAgICAgICBkYXRhW2NvbHVtbklkZW50aWZpZXJdID0gdGV4dDsKLSAg
ICAgICAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiBjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJd
LndpZHRoKQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLndp
ZHRoID0gdGV4dC5sZW5ndGg7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBj
b2x1bW5JZGVudGlmaWVyIGluIHJvdykKKyAgICAgICAgICAgICAgICBkYXRhW2NvbHVtbklkZW50
aWZpZXJdID0gcm93W2NvbHVtbklkZW50aWZpZXJdOwogCiAgICAgICAgICAgICB2YXIgbm9kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEsIGZhbHNlKTsKICAgICAgICAgICAg
IG5vZGUuc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZhciB0b3RhbENvbHVtbldpZHRocyA9IDA7Ci0gICAgICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykKLSAgICAgICAgICAgIHRvdGFs
Q29sdW1uV2lkdGhzICs9IGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGg7Ci0KLSAgICAg
ICAgLy8gQ2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIHdpZHRoIGZvciB0aGUgY29sdW1ucy4KLSAg
ICAgICAgY29uc3QgbWluaW11bVByZWNlbnQgPSBNYXRoLm1pbig1LCBNYXRoLmZsb29yKDEwMC9u
dW1Db2x1bW5zKSk7Ci0gICAgICAgIHZhciByZWNvdXBQZXJjZW50ID0gMDsKLSAgICAgICAgZm9y
ICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKSB7Ci0gICAgICAgICAgICB2YXIgd2lk
dGggPSBjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLndpZHRoOwotICAgICAgICAgICAgd2lkdGgg
PSBNYXRoLnJvdW5kKCh3aWR0aCAvIHRvdGFsQ29sdW1uV2lkdGhzKSAqIDEwMCk7Ci0gICAgICAg
ICAgICBpZiAod2lkdGggPCBtaW5pbXVtUHJlY2VudCkgewotICAgICAgICAgICAgICAgIHJlY291
cFBlcmNlbnQgKz0gKG1pbmltdW1QcmVjZW50IC0gd2lkdGgpOwotICAgICAgICAgICAgICAgIHdp
ZHRoID0gbWluaW11bVByZWNlbnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbHVt
bnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGggPSB3aWR0aDsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEVuZm9yY2UgdGhlIG1pbmltdW0gcGVyY2VudGFnZSB3aWR0aC4KLSAgICAgICAgd2hpbGUg
KHJlY291cFBlcmNlbnQgPiAwKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlm
aWVyIGluIGNvbHVtbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29sdW1uc1tjb2x1bW5JZGVu
dGlmaWVyXS53aWR0aCA+IG1pbmltdW1QcmVjZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIC0t
Y29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXS53aWR0aDsKLSAgICAgICAgICAgICAgICAgICAgLS1y
ZWNvdXBQZXJjZW50OwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlY291cFBlcmNlbnQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDaGFuZ2UgdGhlIHdpZHRoIHByb3BlcnR5
IHRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHN0eWxlIHdpZHRoLgotICAgICAgICBmb3IgKHZh
ciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpCi0gICAgICAgICAgICBjb2x1bW5zW2NvbHVt
bklkZW50aWZpZXJdLndpZHRoICs9ICIlIjsKLQogICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMpOwogICAgICAgICB2YXIgbGVuZ3RoID0gbm9k
ZXMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48230</attachid>
            <date>2010-02-05 06:53:17 -0800</date>
            <delta_ts>2010-02-05 09:22:18 -0800</delta_ts>
            <desc>[PATCH] Same with a minor fix for platforms with no raw cookie access.</desc>
            <filename>cookies_brushup</filename>
            <type>text/plain</type>
            <size>28035</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTIzMmUyZC4uN2I3MDM4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wMi0wNSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaW1wbGlmeSBjb29raWVzIHZpZXcs
IGludHJvZHVjZSBEYXRhR3JpZDo6YXV0b1NpemVDb2x1bW5zLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY0NgorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29va2llSXRlbXNWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcu
cHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5w
cm90b3R5cGUuX3VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3
LnByb3RvdHlwZS5fdXBkYXRlV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
b2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2ZpbHRlckNvb2tpZXNGb3JEb21haW4pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2NyZWF0ZURhdGFHcmlk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9wb3B1
bGF0ZURhdGFHcmlkLmV4cGlyZXNDb21wYXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVJdGVtc1ZpZXcucHJvdG90eXBlLl9wb3B1bGF0ZURhdGFHcmlkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9jcmVhdGVTaW1wbGVEYXRhR3JpZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS5fcG9wdWxh
dGVTaW1wbGVEYXRhR3JpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3
LnByb3RvdHlwZS5fZGVsZXRlQ29va2llQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlja2VkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX3Nob3dET01TdG9y
YWdlRW50cmllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5w
cm90b3R5cGUuX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hdXRvU2l6ZUNv
bHVtbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcucHJvdG90eXBlLl9x
dWVyeUZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFi
bGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVWaWV3LnByb3Rv
dHlwZS5fcXVlcnlGaW5pc2hlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9y
YWdlUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlw
ZS5kYXRhR3JpZEZvclJlc3VsdCk6CisKIDIwMTAtMDItMDQgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRl
eCAzYWY5YzJlLi5iNTY3NGI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29va2llSXRlbXNWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b29raWVJdGVtc1ZpZXcuanMKQEAgLTQzLDYgKzQzLDExIEBAIFdlYkluc3BlY3Rvci5Db29raWVJ
dGVtc1ZpZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVudCwgY29va2llRG9tYWluKQogICAgIAogICAg
IHRoaXMuX3RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CiAgICAgdGhpcy5fY29va2llRG9tYWlu
ID0gY29va2llRG9tYWluOworCisgICAgdGhpcy5fZW1wdHlNc2dFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fZW1wdHlNc2dFbGVtZW50LmNsYXNzTmFt
ZSA9ICJzdG9yYWdlLXRhYmxlLWVtcHR5IjsKKyAgICB0aGlzLl9lbXB0eU1zZ0VsZW1lbnQudGV4
dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgc2l0ZSBoYXMgbm8gY29va2ll
cy4iKTsKKyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlNc2dFbGVtZW50
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CkBAIC01
NCw3ICs1OSw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewog
ICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAg
ICAgICB0aGlzLnVwZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCiAg
ICAgaGlkZTogZnVuY3Rpb24oKQpAQCAtNjMsMzcgKzY4LDU3IEBAIFdlYkluc3BlY3Rvci5Db29r
aWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNp
YmxlID0gZmFsc2U7CiAgICAgfSwKIAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQorICAgIF91cGRh
dGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOwogICAgICAgICBXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmModGhpcy5f
dXBkYXRlV2l0aENvb2tpZXMuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVXaXRo
Q29va2llczogZnVuY3Rpb24oYWxsQ29va2llcywgaXNBZHZhbmNlZCkKICAgICB7Ci0gICAgICAg
IHZhciBjb29raWVzID0gdGhpcy5fY29va2llc0ZvckRvbWFpbihhbGxDb29raWVzLCBpc0FkdmFu
Y2VkKTsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gKGlzQWR2YW5jZWQgPyB0aGlzLmRhdGFHcmlk
Rm9yQ29va2llcyhjb29raWVzKSA6IHRoaXMuc2ltcGxlRGF0YUdyaWRGb3JDb29raWVzKGNvb2tp
ZXMpKTsKLSAgICAgICAgaWYgKGRhdGFHcmlkKSB7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhR3Jp
ZCA9IGRhdGFHcmlkOwotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRhdGFH
cmlkLmVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7
Ci0gICAgICAgICAgICBpZiAoaXNBZHZhbmNlZCkKLSAgICAgICAgICAgICAgICB0aGlzLmRlbGV0
ZUJ1dHRvbi52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZh
ciBlbXB0eU1zZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAg
ICAgICAgIGVtcHR5TXNnRWxlbWVudC5jbGFzc05hbWUgPSAic3RvcmFnZS10YWJsZS1lbXB0eSI7
Ci0gICAgICAgICAgICBlbXB0eU1zZ0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRoaXMgc2l0ZSBoYXMgbm8gY29va2llcy4iKTsKLSAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChlbXB0eU1zZ0VsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQgPSBudWxsOworICAgICAgICBpZiAoaXNBZHZhbmNlZCkKKyAgICAgICAgICAgIHRo
aXMuX2ZpbHRlckNvb2tpZXNGb3JEb21haW4oYWxsQ29va2llcyk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuX2Nvb2tpZXMgPSBhbGxDb29raWVzOworCisgICAgICAgIGlmICghdGhp
cy5fY29va2llcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gc2hvdy4KKyAg
ICAgICAgICAgIHRoaXMuX2VtcHR5TXNnRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4i
KTsKICAgICAgICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkgeworICAgICAgICAgICAg
aWYgKGlzQWR2YW5jZWQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEYXRhR3JpZCgp
OworICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlRGF0YUdyaWQoKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5hdXRvU2l6ZUNvbHVtbnMoNiwgMzMpOworICAgICAgICAgICAg
ICAgIHRoaXMuX3RyZWVFbGVtZW50LnN1YnRpdGxlID0gU3RyaW5nLnNwcmludGYoV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCIlZCBjb29raWVzICglcykiKSwgdGhpcy5fY29va2llcy5sZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3RvdGFsU2l6ZSwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHRoaXMuX2NyZWF0ZVNpbXBsZURhdGFHcmlkKCk7CisgICAgICAgICAgICAgICAgdGhp
cy5fcG9wdWxhdGVTaW1wbGVEYXRhR3JpZCgpOworICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLmF1dG9TaXplQ29sdW1ucygyMCwgODApOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGlzQWR2YW5jZWQpCisgICAgICAgICAgICAgICAgdGhpcy5f
cG9wdWxhdGVEYXRhR3JpZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRo
aXMuX3BvcHVsYXRlU2ltcGxlRGF0YUdyaWQoKTsKICAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X2RhdGFHcmlkLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHRo
aXMuX2VtcHR5TXNnRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgaWYg
KGlzQWR2YW5jZWQpCisgICAgICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxlID0gdHJ1
ZTsKICAgICB9LAogCi0gICAgX2Nvb2tpZXNGb3JEb21haW46IGZ1bmN0aW9uKGFsbENvb2tpZXMs
IGlzQWR2YW5jZWQpCisgICAgX2ZpbHRlckNvb2tpZXNGb3JEb21haW46IGZ1bmN0aW9uKGFsbENv
b2tpZXMpCiAgICAgewotICAgICAgICB2YXIgY29va2llc0ZvckRvbWFpbiA9IFtdOworICAgICAg
ICB0aGlzLl9jb29raWVzID0gW107CiAgICAgICAgIHZhciByZXNvdXJjZVVSTHNGb3JEb2N1bWVu
dFVSTCA9IFtdOwotICAgICAgICB2YXIgdG90YWxTaXplID0gMDsKKyAgICAgICAgdGhpcy5fdG90
YWxTaXplID0gMDsKIAogICAgICAgICBmb3IgKHZhciBpZCBpbiBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VzKSB7CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2Vz
W2lkXTsKQEAgLTEwOCwxNDQgKzEzMyw0OSBAQCBXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVzb3VyY2VV
UkxzRm9yRG9jdW1lbnRVUkwubGVuZ3RoOyArK2opIHsKICAgICAgICAgICAgICAgICB2YXIgcmVz
b3VyY2VVUkwgPSByZXNvdXJjZVVSTHNGb3JEb2N1bWVudFVSTFtqXTsKICAgICAgICAgICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGFsbENv
b2tpZXNbaV0sIHJlc291cmNlVVJMKSkgewotICAgICAgICAgICAgICAgICAgICB0b3RhbFNpemUg
Kz0gc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG90YWxTaXplICs9IHNpemU7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghcHVzaGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29va2llc0ZvckRvbWFp
bi5wdXNoKGFsbENvb2tpZXNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29v
a2llcy5wdXNoKGFsbENvb2tpZXNbaV0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzQWR2
YW5jZWQpIHsKLSAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50LnN1YnRpdGxlID0gU3RyaW5n
LnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBjb29raWVzICglcykiKSwgY29va2ll
c0ZvckRvbWFpbi5sZW5ndGgsCi0gICAgICAgICAgICAgICAgTnVtYmVyLmJ5dGVzVG9TdHJpbmco
dG90YWxTaXplLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gY29va2llc0ZvckRvbWFpbjsKICAgICB9LAogCi0gICAgZGF0YUdyaWRGb3JDb29raWVz
OiBmdW5jdGlvbihjb29raWVzKQorICAgIF9jcmVhdGVEYXRhR3JpZDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBudWxs
OwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIGNvb2tpZXNbaV0uZXhwaXJlcyA9IG5ldyBEYXRlKGNvb2tpZXNbaV0uZXhwaXJl
cyk7Ci0KICAgICAgICAgdmFyIGNvbHVtbnMgPSB7IDA6IHt9LCAxOiB7fSwgMjoge30sIDM6IHt9
LCA0OiB7fSwgNToge30sIDY6IHt9LCA3OiB7fSB9OwogICAgICAgICBjb2x1bW5zWzBdLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOYW1lIik7Ci0gICAgICAgIGNvbHVtbnNbMF0ud2lk
dGggPSBjb2x1bW5zWzBdLnRpdGxlLmxlbmd0aDsKICAgICAgICAgY29sdW1uc1swXS5zb3J0YWJs
ZSA9IHRydWU7CiAgICAgICAgIGNvbHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlZhbHVlIik7Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSBjb2x1bW5zWzFdLnRpdGxl
Lmxlbmd0aDsKICAgICAgICAgY29sdW1uc1sxXS5zb3J0YWJsZSA9IHRydWU7CiAgICAgICAgIGNv
bHVtbnNbMl0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbWFpbiIpOwotICAgICAg
ICBjb2x1bW5zWzJdLndpZHRoID0gY29sdW1uc1syXS50aXRsZS5sZW5ndGg7CiAgICAgICAgIGNv
bHVtbnNbMl0uc29ydGFibGUgPSB0cnVlOwogICAgICAgICBjb2x1bW5zWzNdLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJQYXRoIik7Ci0gICAgICAgIGNvbHVtbnNbM10ud2lkdGggPSBj
b2x1bW5zWzNdLnRpdGxlLmxlbmd0aDsKICAgICAgICAgY29sdW1uc1szXS5zb3J0YWJsZSA9IHRy
dWU7CiAgICAgICAgIGNvbHVtbnNbNF0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4
cGlyZXMiKTsKLSAgICAgICAgY29sdW1uc1s0XS53aWR0aCA9IGNvbHVtbnNbNF0udGl0bGUubGVu
Z3RoOwogICAgICAgICBjb2x1bW5zWzRdLnNvcnRhYmxlID0gdHJ1ZTsKICAgICAgICAgY29sdW1u
c1s1XS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpOwotICAgICAgICBjb2x1
bW5zWzVdLndpZHRoID0gY29sdW1uc1s1XS50aXRsZS5sZW5ndGg7CiAgICAgICAgIGNvbHVtbnNb
NV0uYWxpZ25lZCA9ICJyaWdodCI7CiAgICAgICAgIGNvbHVtbnNbNV0uc29ydGFibGUgPSB0cnVl
OwogICAgICAgICBjb2x1bW5zWzZdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIVFRQ
Iik7Ci0gICAgICAgIGNvbHVtbnNbNl0ud2lkdGggPSBjb2x1bW5zWzZdLnRpdGxlLmxlbmd0aDsK
ICAgICAgICAgY29sdW1uc1s2XS5hbGlnbmVkID0gImNlbnRlcmVkIjsKICAgICAgICAgY29sdW1u
c1s2XS5zb3J0YWJsZSA9IHRydWU7CiAgICAgICAgIGNvbHVtbnNbN10udGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNlY3VyZSIpOwotICAgICAgICBjb2x1bW5zWzddLndpZHRoID0gY29s
dW1uc1s3XS50aXRsZS5sZW5ndGg7CiAgICAgICAgIGNvbHVtbnNbN10uYWxpZ25lZCA9ICJjZW50
ZXJlZCI7CiAgICAgICAgIGNvbHVtbnNbN10uc29ydGFibGUgPSB0cnVlOwogCi0gICAgICAgIHZh
ciB0b3RhbENvbHVtbldpZHRocyA9IDA7Ci0gICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZp
ZXIgaW4gY29sdW1ucykKLSAgICAgICAgICAgIHRvdGFsQ29sdW1uV2lkdGhzICs9IGNvbHVtbnNb
Y29sdW1uSWRlbnRpZmllcl0ud2lkdGg7Ci0KLSAgICAgICAgLy8gRW5mb3JjZSB0aGUgVmFsdWUg
Y29sdW1uICh0aGUgMm5kIGNvbHVtbikgdG8gYmUgYSBtYXggb2YgMzMlCi0gICAgICAgIC8vIHR3
ZWFraW5nIHRoZSByYXcgdG90YWwgd2lkdGggYmVjYXVzZSBtYXkgbWFzc2l2ZWx5IG91dHNoYWRv
dyB0aGUgb3RoZXJzCi0gICAgICAgIHZhciB2YWx1ZUNvbHVtbldpZHRoID0gY29sdW1uc1sxXS53
aWR0aDsKLSAgICAgICAgaWYgKHZhbHVlQ29sdW1uV2lkdGggLyB0b3RhbENvbHVtbldpZHRocyA+
IDAuMzMpIHsKLSAgICAgICAgICAgIHRvdGFsQ29sdW1uV2lkdGhzIC09IHZhbHVlQ29sdW1uV2lk
dGg7Ci0gICAgICAgICAgICB0b3RhbENvbHVtbldpZHRocyAqPSAxLjMzOwotICAgICAgICAgICAg
Y29sdW1uc1sxXS53aWR0aCA9IHRvdGFsQ29sdW1uV2lkdGhzICogMC4zMzsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSB3aWR0aCBmb3IgdGhlIGNvbHVt
bnMuCi0gICAgICAgIGNvbnN0IG1pbmltdW1QcmVjZW50ID0gNjsKLSAgICAgICAgdmFyIHJlY291
cFBlcmNlbnQgPSAwOwotICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVt
bnMpIHsKLSAgICAgICAgICAgIHZhciB3aWR0aCA9IGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0u
d2lkdGg7Ci0gICAgICAgICAgICB3aWR0aCA9IE1hdGgucm91bmQoKHdpZHRoIC8gdG90YWxDb2x1
bW5XaWR0aHMpICogMTAwKTsKLSAgICAgICAgICAgIGlmICh3aWR0aCA8IG1pbmltdW1QcmVjZW50
KSB7Ci0gICAgICAgICAgICAgICAgcmVjb3VwUGVyY2VudCArPSAobWluaW11bVByZWNlbnQgLSB3
aWR0aCk7Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBtaW5pbXVtUHJlY2VudDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGggPSB3aWR0
aDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVuZm9yY2UgdGhlIG1pbmltdW0gcGVyY2VudGFn
ZSB3aWR0aC4gKG5lZWQgdG8gbmFycm93IHRvdGFsIHBlcmNlbnRhZ2UgZHVlIHRvIGVhcmxpZXIg
YWRkaXRpb25zKQotICAgICAgICB3aGlsZSAocmVjb3VwUGVyY2VudCA+IDApIHsKLSAgICAgICAg
ICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewotICAgICAgICAgICAg
ICAgIGlmIChjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLndpZHRoID4gbWluaW11bVByZWNlbnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgLS1jb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLndpZHRo
OwotICAgICAgICAgICAgICAgICAgICAtLXJlY291cFBlcmNlbnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghcmVjb3VwUGVyY2VudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZv
ciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykKLSAgICAgICAgICAgIGNvbHVtbnNb
Y29sdW1uSWRlbnRpZmllcl0ud2lkdGggKz0gIiUiOwotCi0gICAgICAgIHZhciBkYXRhR3JpZCA9
IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgbnVsbCwgdGhpcy5fZGVsZXRlQ29v
a2llQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgICAgIHZhciBub2RlcyA9IHRoaXMuX2NyZWF0
ZU5vZGVzKGRhdGFHcmlkLCBjb29raWVzKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
b2Rlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGVz
W2ldKTsKLSAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkKLSAgICAgICAgICAgIG5vZGVzWzBdLnNl
bGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcigic29ydGlu
ZyBjaGFuZ2VkIiwgdGhpcy5fc29ydERhdGEuYmluZCh0aGlzLCBkYXRhR3JpZCwgY29va2llcykp
OwotCi0gICAgICAgIHJldHVybiBkYXRhR3JpZDsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMsIG51bGwsIHRoaXMuX2RlbGV0ZUNvb2tp
ZUNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExp
c3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLl9wb3B1bGF0ZURhdGFHcmlkLCB0aGlzKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQp
OworICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKICAgICB9LAogCi0gICAg
X2NyZWF0ZU5vZGVzOiBmdW5jdGlvbihkYXRhR3JpZCwgY29va2llcykKKyAgICBfcG9wdWxhdGVE
YXRhR3JpZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlRGF0YUFu
ZENvbHVtbihkYXRhLCBpbmRleCwgdmFsdWUpIHsKLSAgICAgICAgICAgIGRhdGFbaW5kZXhdID0g
dmFsdWU7Ci0gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gZGF0YUdyaWQuY29sdW1uc1tp
bmRleF0ud2lkdGgpCi0gICAgICAgICAgICAgICAgZGF0YUdyaWQuY29sdW1uc1tpbmRleF0ud2lk
dGggPSB2YWx1ZS5sZW5ndGg7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbm9kZXMgPSBbXTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgZGF0YSA9IHt9OwotICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGNvb2tpZXNb
aV07Ci0KLSAgICAgICAgICAgIHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgMCwgY29va2llLm5h
bWUpOwotICAgICAgICAgICAgdXBkYXRlRGF0YUFuZENvbHVtbihkYXRhLCAxLCBjb29raWUudmFs
dWUpOwotICAgICAgICAgICAgdXBkYXRlRGF0YUFuZENvbHVtbihkYXRhLCAyLCBjb29raWUuZG9t
YWluKTsKLSAgICAgICAgICAgIHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwgMywgY29va2llLnBh
dGgpOwotICAgICAgICAgICAgdXBkYXRlRGF0YUFuZENvbHVtbihkYXRhLCA0LCAoY29va2llLnNl
c3Npb24gPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6IGNvb2tpZS5leHBpcmVz
LnRvR01UU3RyaW5nKCkpKTsKLSAgICAgICAgICAgIHVwZGF0ZURhdGFBbmRDb2x1bW4oZGF0YSwg
NSwgTnVtYmVyLmJ5dGVzVG9TdHJpbmcoY29va2llLnNpemUsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZykpOwotICAgICAgICAgICAgdXBkYXRlRGF0YUFuZENvbHVtbihkYXRhLCA2LCAoY29va2llLmh0
dHBPbmx5ID8gIlx1MjcxMyIgOiAiIikpOyAvLyBDaGVja21hcmsKLSAgICAgICAgICAgIHVwZGF0
ZURhdGFBbmRDb2x1bW4oZGF0YSwgNywgKGNvb2tpZS5zZWN1cmUgPyAiXHUyNzEzIiA6ICIiKSk7
IC8vIENoZWNrbWFyawotCi0gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlKGRhdGEpOwotICAgICAgICAgICAgbm9kZS5jb29raWUgPSBjb29raWU7Ci0g
ICAgICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVlOwotICAgICAgICAgICAgbm9kZXMucHVz
aChub2RlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbm9kZXM7Ci0gICAgfSwKLQotICAg
IF9zb3J0RGF0YTogZnVuY3Rpb24oZGF0YUdyaWQsIGNvb2tpZXMpCi0gICAgewotICAgICAgICB2
YXIgc29ydERpcmVjdGlvbiA9IGRhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyIgPyAx
IDogLTE7CisgICAgICAgIHZhciBzZWxlY3RlZENvb2tpZSA9IHRoaXMuX2RhdGFHcmlkLnNlbGVj
dGVkTm9kZSA/IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZS5jb29raWUgOiBudWxsOworICAg
ICAgICB2YXIgc29ydERpcmVjdGlvbiA9IHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFz
Y2VuZGluZyIgPyAxIDogLTE7CiAKICAgICAgICAgZnVuY3Rpb24gbG9jYWxlQ29tcGFyZShmaWVs
ZCwgY29va2llMSwgY29va2llMikKICAgICAgICAgewpAQCAtMjY1LDExICsxOTUsMTEgQEAgV2Vi
SW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAo
Y29va2llMS5zZXNzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgICAg
ICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLmV4cGlyZXMuZ2V0VGltZSgpIC0gY29v
a2llMi5leHBpcmVzLmdldFRpbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc29ydERpcmVjdGlv
biAqIChjb29raWUxLmV4cGlyZXMgLSBjb29raWUyLmV4cGlyZXMpOwogICAgICAgICB9CiAKICAg
ICAgICAgdmFyIGNvbXBhcmF0b3I7Ci0gICAgICAgIHN3aXRjaCAocGFyc2VJbnQoZGF0YUdyaWQu
c29ydENvbHVtbklkZW50aWZpZXIpKSB7CisgICAgICAgIHN3aXRjaCAocGFyc2VJbnQodGhpcy5f
ZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICBjYXNlIDA6IGNv
bXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgIm5hbWUiKTsgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIDE6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInZh
bHVlIik7IGJyZWFrOwogICAgICAgICAgICAgY2FzZSAyOiBjb21wYXJhdG9yID0gbG9jYWxlQ29t
cGFyZS5iaW5kKHRoaXMsICJkb21haW4iKTsgYnJlYWs7CkBAIC0yODEsNzIgKzIxMSw2OCBAQCBX
ZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRl
ZmF1bHQ6IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAibmFtZSIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgY29va2llcy5zb3J0KGNvbXBhcmF0b3IpOwotICAgICAgICB2YXIgbm9kZXMgPSB0aGlz
Ll9jcmVhdGVOb2RlcyhkYXRhR3JpZCwgY29va2llcyk7CisgICAgICAgIHRoaXMuX2Nvb2tpZXMu
c29ydChjb21wYXJhdG9yKTsKIAotICAgICAgICBkYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZXNbaV0pOworICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB2YXIgbm9kZVRvU2VsZWN0OworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2Nvb2tpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBkYXRhID0ge307CisgICAgICAgICAgICB2YXIgY29va2llID0gdGhpcy5fY29va2ll
c1tpXTsKKyAgICAgICAgICAgIGRhdGFbMF0gPSBjb29raWUubmFtZTsKKyAgICAgICAgICAgIGRh
dGFbMV0gPSBjb29raWUudmFsdWU7CisgICAgICAgICAgICBkYXRhWzJdID0gY29va2llLmRvbWFp
bjsKKyAgICAgICAgICAgIGRhdGFbM10gPSBjb29raWUucGF0aDsKKyAgICAgICAgICAgIGRhdGFb
NF0gPSAoY29va2llLnNlc3Npb24gPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6
IG5ldyBEYXRlKGNvb2tpZS5leHBpcmVzKS50b0dNVFN0cmluZygpKTsKKyAgICAgICAgICAgIGRh
dGFbNV0gPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhjb29raWUuc2l6ZSwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKTsKKyAgICAgICAgICAgIGRhdGFbNl0gPSAoY29va2llLmh0dHBPbmx5ID8gIlx1Mjcx
MyIgOiAiIik7IC8vIENoZWNrbWFyaworICAgICAgICAgICAgZGF0YVs3XSA9IChjb29raWUuc2Vj
dXJlID8gIlx1MjcxMyIgOiAiIik7IC8vIENoZWNrbWFyawogCi0gICAgICAgIGlmIChub2Rlcy5s
ZW5ndGgpCi0gICAgICAgICAgICBub2Rlc1swXS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAg
ICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEpOworICAgICAg
ICAgICAgbm9kZS5jb29raWUgPSBjb29raWU7CisgICAgICAgICAgICBub2RlLnNlbGVjdGFibGUg
PSB0cnVlOworICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7Cisg
ICAgICAgICAgICBpZiAoY29va2llID09PSBzZWxlY3RlZENvb2tpZSkKKyAgICAgICAgICAgICAg
ICBub2RlVG9TZWxlY3QgPSBub2RlOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlVG9TZWxl
Y3QpCisgICAgICAgICAgICBub2RlVG9TZWxlY3Quc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5jaGlsZHJlblswXS5zZWxlY3RlZCA9IHRy
dWU7CiAgICAgfSwKIAotICAgIHNpbXBsZURhdGFHcmlkRm9yQ29va2llczogZnVuY3Rpb24oY29v
a2llcykKKyAgICBfY3JlYXRlU2ltcGxlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIGlmICghY29va2llcy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLQogICAg
ICAgICB2YXIgY29sdW1ucyA9IHt9OwogICAgICAgICBjb2x1bW5zWzBdID0ge307CiAgICAgICAg
IGNvbHVtbnNbMV0gPSB7fTsKICAgICAgICAgY29sdW1uc1swXS50aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTmFtZSIpOwotICAgICAgICBjb2x1bW5zWzBdLndpZHRoID0gY29sdW1uc1sw
XS50aXRsZS5sZW5ndGg7CiAgICAgICAgIGNvbHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlZhbHVlIik7Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSBjb2x1bW5zWzFd
LnRpdGxlLmxlbmd0aDsKIAotICAgICAgICB2YXIgbm9kZXMgPSBbXTsKKyAgICAgICAgdGhpcy5f
ZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMpOworICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAg
IHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOworICAgIH0sCisKKyAgICBfcG9wdWxhdGVT
aW1wbGVEYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGNvb2tpZXMgPSB0
aGlzLl9jb29raWVzOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwor
ICAgICAgICB2YXIgYWRkZWRDb29raWVzID0ge307CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29va2llcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGNvb2tpZSA9IGNvb2tp
ZXNbaV07CisgICAgICAgICAgICBpZiAoYWRkZWRDb29raWVzW2Nvb2tpZXNbaV0ubmFtZV0pCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhZGRlZENvb2tpZXNbY29va2ll
c1tpXS5uYW1lXSA9IHRydWU7CiAgICAgICAgICAgICB2YXIgZGF0YSA9IHt9OwotCi0gICAgICAg
ICAgICB2YXIgbmFtZSA9IGNvb2tpZS5uYW1lOwotICAgICAgICAgICAgZGF0YVswXSA9IG5hbWU7
Ci0gICAgICAgICAgICBpZiAobmFtZS5sZW5ndGggPiBjb2x1bW5zWzBdLndpZHRoKQotICAgICAg
ICAgICAgICAgIGNvbHVtbnNbMF0ud2lkdGggPSBuYW1lLmxlbmd0aDsKLQotICAgICAgICAgICAg
dmFyIHZhbHVlID0gY29va2llLnZhbHVlOwotICAgICAgICAgICAgZGF0YVsxXSA9IHZhbHVlOwot
ICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IGNvbHVtbnNbMV0ud2lkdGgpCi0gICAgICAg
ICAgICAgICAgY29sdW1uc1sxXS53aWR0aCA9IHZhbHVlLmxlbmd0aDsKKyAgICAgICAgICAgIGRh
dGFbMF0gPSBjb29raWVzW2ldLm5hbWU7CisgICAgICAgICAgICBkYXRhWzFdID0gY29va2llc1tp
XS52YWx1ZTsKIAogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZShkYXRhLCBmYWxzZSk7CiAgICAgICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVl
OwotICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRvdGFsQ29s
dW1uV2lkdGhzID0gY29sdW1uc1swXS53aWR0aCArIGNvbHVtbnNbMV0ud2lkdGg7Ci0gICAgICAg
IHZhciB3aWR0aCA9IE1hdGgucm91bmQoKGNvbHVtbnNbMF0ud2lkdGggKiAxMDApIC8gdG90YWxD
b2x1bW5XaWR0aHMpOwotICAgICAgICBjb25zdCBtaW5pbXVtUHJlY2VudCA9IDIwOwotICAgICAg
ICBpZiAod2lkdGggPCBtaW5pbXVtUHJlY2VudCkKLSAgICAgICAgICAgIHdpZHRoID0gbWluaW11
bVByZWNlbnQ7Ci0gICAgICAgIGlmICh3aWR0aCA+IDEwMCAtIG1pbmltdW1QcmVjZW50KQotICAg
ICAgICAgICAgd2lkdGggPSAxMDAgLSBtaW5pbXVtUHJlY2VudDsKLSAgICAgICAgY29sdW1uc1sw
XS53aWR0aCA9IHdpZHRoOwotICAgICAgICBjb2x1bW5zWzFdLndpZHRoID0gMTAwIC0gd2lkdGg7
Ci0gICAgICAgIGNvbHVtbnNbMF0ud2lkdGggKz0gIiUiOwotICAgICAgICBjb2x1bW5zWzFdLndp
ZHRoICs9ICIlIjsKLQotICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkKGNvbHVtbnMpOwotICAgICAgICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgZGF0YUdy
aWQuYXBwZW5kQ2hpbGQobm9kZXNbaV0pOwotICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAg
ICAgICAgIG5vZGVzWzBdLnNlbGVjdGVkID0gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZGF0YUdy
aWQ7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuWzBdLnNlbGVjdGVkID0gdHJ1ZTsK
ICAgICB9LAotICAgIAorCiAgICAgcmVzaXplOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fZGF0YUdyaWQpCkBAIC0zNjAsMTcgKzI4NiwxNyBAQCBXZWJJbnNwZWN0b3IuQ29v
a2llSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kZWxldGVDb29raWVD
YWxsYmFjayh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpOwogICAgIH0sCi0gICAgCisKICAg
ICBfZGVsZXRlQ29va2llQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICB2
YXIgY29va2llID0gbm9kZS5jb29raWU7CiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGVsZXRl
Q29va2llKGNvb2tpZS5uYW1lLCB0aGlzLl9jb29raWVEb21haW4pOwotICAgICAgICB0aGlzLnVw
ZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCiAgICAgX3JlZnJlc2hC
dXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRl
KCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcwppbmRleCA3NDQxZjJl
Li5kYmQ3MzZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3Rv
cmFnZUl0ZW1zVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3Rv
cmFnZUl0ZW1zVmlldy5qcwpAQCAtNjksNyArNjksNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZCA9
IHRoaXMuX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKLSAgICAgICAg
dGhpcy5fZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmF1
dG9TaXplQ29sdW1ucygxMCk7CiAgICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0
cnVlOwogICAgIH0sCiAKQEAgLTg1LDkgKzg1LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJ
dGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBjb2x1bW5zWzBdID0ge307CiAgICAgICAg
IGNvbHVtbnNbMV0gPSB7fTsKICAgICAgICAgY29sdW1uc1swXS50aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiS2V5Iik7Ci0gICAgICAgIGNvbHVtbnNbMF0ud2lkdGggPSBjb2x1bW5zWzBd
LnRpdGxlLmxlbmd0aDsKICAgICAgICAgY29sdW1uc1sxXS50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVmFsdWUiKTsKLSAgICAgICAgY29sdW1uc1sxXS53aWR0aCA9IGNvbHVtbnNbMV0u
dGl0bGUubGVuZ3RoOwogCiAgICAgICAgIHZhciBub2RlcyA9IFtdOwogCkBAIC05OCwzMSArOTYs
MTQgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogCiAg
ICAgICAgICAgICB2YXIga2V5ID0gZW50cmllc1tpXVswXTsKICAgICAgICAgICAgIGRhdGFbMF0g
PSBrZXk7Ci0gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA+IGNvbHVtbnNbMF0ud2lkdGgpCi0g
ICAgICAgICAgICAgICAgY29sdW1uc1swXS53aWR0aCA9IGtleS5sZW5ndGg7Ci0KICAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IGVudHJpZXNbaV1bMV07CiAgICAgICAgICAgICBkYXRhWzFdID0gdmFs
dWU7Ci0gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gY29sdW1uc1sxXS53aWR0aCkKLSAg
ICAgICAgICAgICAgICBjb2x1bW5zWzFdLndpZHRoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICAg
ICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7
CiAgICAgICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVlOwogICAgICAgICAgICAgbm9kZXMu
cHVzaChub2RlKTsKICAgICAgICAgICAgIGtleXMucHVzaChrZXkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmFyIHRvdGFsQ29sdW1uV2lkdGhzID0gY29sdW1uc1swXS53aWR0aCArIGNvbHVtbnNb
MV0ud2lkdGg7Ci0gICAgICAgIHZhciB3aWR0aCA9IE1hdGgucm91bmQoKGNvbHVtbnNbMF0ud2lk
dGggKiAxMDApIC8gdG90YWxDb2x1bW5XaWR0aHMpOwotICAgICAgICBjb25zdCBtaW5pbXVtUHJl
Y2VudCA9IDEwOwotICAgICAgICBpZiAod2lkdGggPCBtaW5pbXVtUHJlY2VudCkKLSAgICAgICAg
ICAgIHdpZHRoID0gbWluaW11bVByZWNlbnQ7Ci0gICAgICAgIGlmICh3aWR0aCA+IDEwMCAtIG1p
bmltdW1QcmVjZW50KQotICAgICAgICAgICAgd2lkdGggPSAxMDAgLSBtaW5pbXVtUHJlY2VudDsK
LSAgICAgICAgY29sdW1uc1swXS53aWR0aCA9IHdpZHRoOwotICAgICAgICBjb2x1bW5zWzFdLndp
ZHRoID0gMTAwIC0gd2lkdGg7Ci0gICAgICAgIGNvbHVtbnNbMF0ud2lkdGggKz0gIiUiOwotICAg
ICAgICBjb2x1bW5zWzFdLndpZHRoICs9ICIlIjsKLQogICAgICAgICB2YXIgZGF0YUdyaWQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMsIHRoaXMuX2VkaXRpbmdDYWxsYmFjay5i
aW5kKHRoaXMpLCB0aGlzLl9kZWxldGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICAgICAgdmFy
IGxlbmd0aCA9IG5vZGVzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3Jp
ZC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcwppbmRleCAzZWNh
OWU0Li4xZWNjNGYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0
YUdyaWQuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCkBA
IC02MSw3ICs2MSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnMs
IGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiAKICAgICB2YXIgaGVhZGVyUm93ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKICAgICB2YXIgY29sdW1uR3JvdXAgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjb2xncm91cCIpOwotICAgIHZhciBjb2x1bW5Db3VudCA9IDA7Cisg
ICAgdGhpcy5fY29sdW1uQ291bnQgPSAwOwogCiAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmll
ciBpbiBjb2x1bW5zKSB7CiAgICAgICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zW2NvbHVtbklkZW50
aWZpZXJdOwpAQCAtNzEsNiArNzEsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBmdW5jdGlv
bihjb2x1bW5zLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQogICAgICAgICB2YXIgY29s
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29sIik7CiAgICAgICAgIGlmIChjb2x1bW4ud2lk
dGgpCiAgICAgICAgICAgICBjb2wuc3R5bGUud2lkdGggPSBjb2x1bW4ud2lkdGg7CisgICAgICAg
IGNvbHVtbi5lbGVtZW50ID0gY29sOwogICAgICAgICBjb2x1bW5Hcm91cC5hcHBlbmRDaGlsZChj
b2wpOwogCiAgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsK
QEAgLTk4LDEwICs5OSwxMCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1
bW5zLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQogCiAgICAgICAgIGhlYWRlclJvdy5h
cHBlbmRDaGlsZChjZWxsKTsKIAotICAgICAgICArK2NvbHVtbkNvdW50OworICAgICAgICArK3Ro
aXMuX2NvbHVtbkNvdW50OwogICAgIH0KIAotICAgIGNvbHVtbkdyb3VwLnNwYW4gPSBjb2x1bW5D
b3VudDsKKyAgICBjb2x1bW5Hcm91cC5zcGFuID0gdGhpcy5fY29sdW1uQ291bnQ7CiAKICAgICB2
YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7CiAgICAgY2VsbC5jbGFzc05h
bWUgPSAiY29ybmVyIjsKQEAgLTExNCw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQg
PSBmdW5jdGlvbihjb2x1bW5zLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQogICAgIHZh
ciBmaWxsZXJSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwogICAgIGZpbGxlclJv
dy5jbGFzc05hbWUgPSAiZmlsbGVyIjsKIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1u
Q291bnQ7ICsraSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29sdW1uQ291bnQ7
ICsraSkgewogICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7
CiAgICAgICAgIGZpbGxlclJvdy5hcHBlbmRDaGlsZChjZWxsKTsKICAgICB9CkBAIC0yOTIsNyAr
MjkzLDcwIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
cmV0dXJuIHRoaXMuX2RhdGFUYWJsZUJvZHk7CiAgICAgfSwKLSAKKworICAgIGF1dG9TaXplQ29s
dW1uczogZnVuY3Rpb24obWluUGVyY2VudCwgbWF4UGVyY2VudCkKKyAgICB7CisgICAgICAgIGlm
IChtaW5QZXJjZW50KQorICAgICAgICAgICAgbWluUGVyY2VudCA9IE1hdGgubWluKG1pblBlcmNl
bnQsIE1hdGguZmxvb3IoMTAwIC8gdGhpcy5fY29sdW1uQ291bnQpKTsKKyAgICAgICAgdmFyIHdp
ZHRocyA9IHt9OworICAgICAgICB2YXIgY29sdW1ucyA9IHRoaXMuY29sdW1uczsKKyAgICAgICAg
Zm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKQorICAgICAgICAgICAgd2lkdGhz
W2NvbHVtbklkZW50aWZpZXJdID0gKGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl0udGl0bGUgfHwg
IiIpLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4u
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5jaGlsZHJlbltpXTsK
KyAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgeworICAg
ICAgICAgICAgICAgIHZhciB0ZXh0ID0gbm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJdIHx8ICIi
OworICAgICAgICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IHdpZHRoc1tjb2x1bW5JZGVudGlm
aWVyXSkKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzW2NvbHVtbklkZW50aWZpZXJdID0gdGV4
dC5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgdG90YWxD
b2x1bW5XaWR0aHMgPSAwOworICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNv
bHVtbnMpCisgICAgICAgICAgICB0b3RhbENvbHVtbldpZHRocyArPSB3aWR0aHNbY29sdW1uSWRl
bnRpZmllcl07CisKKyAgICAgICAgdmFyIHJlY291cFBlcmNlbnQgPSAwOworICAgICAgICBmb3Ig
KHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpIHsKKyAgICAgICAgICAgIHZhciB3aWR0
aCA9IE1hdGgucm91bmQoMTAwICogd2lkdGhzW2NvbHVtbklkZW50aWZpZXJdIC8gdG90YWxDb2x1
bW5XaWR0aHMpOworICAgICAgICAgICAgaWYgKG1pblBlcmNlbnQgJiYgd2lkdGggPCBtaW5QZXJj
ZW50KSB7CisgICAgICAgICAgICAgICAgcmVjb3VwUGVyY2VudCArPSAobWluUGVyY2VudCAtIHdp
ZHRoKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IG1pblBlcmNlbnQ7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKG1heFBlcmNlbnQgJiYgd2lkdGggPiBtYXhQZXJjZW50KSB7CisgICAgICAgICAg
ICAgICAgcmVjb3VwUGVyY2VudCAtPSAod2lkdGggLSBtYXhQZXJjZW50KTsKKyAgICAgICAgICAg
ICAgICB3aWR0aCA9IG1heFBlcmNlbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aWR0
aHNbY29sdW1uSWRlbnRpZmllcl0gPSB3aWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxl
IChtaW5QZXJjZW50ICYmIHJlY291cFBlcmNlbnQgPiAwKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAod2lk
dGhzW2NvbHVtbklkZW50aWZpZXJdID4gbWluUGVyY2VudCkgeworICAgICAgICAgICAgICAgICAg
ICAtLXdpZHRoc1tjb2x1bW5JZGVudGlmaWVyXTsKKyAgICAgICAgICAgICAgICAgICAgLS1yZWNv
dXBQZXJjZW50OworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlY291cFBlcmNlbnQpCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAobWF4UGVyY2VudCAmJiByZWNvdXBQZXJj
ZW50IDwgMCkgeworICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1
bW5zKSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoc1tjb2x1bW5JZGVudGlmaWVyXSA8IG1h
eFBlcmNlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgKyt3aWR0aHNbY29sdW1uSWRlbnRpZmll
cl07CisgICAgICAgICAgICAgICAgICAgICsrcmVjb3VwUGVyY2VudDsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFyZWNvdXBQZXJjZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Zm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKQorICAgICAgICAgICAgY29sdW1u
c1tjb2x1bW5JZGVudGlmaWVyXS5lbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGhzW2NvbHVtbklk
ZW50aWZpZXJdICsgIiUiOworICAgICAgICB0aGlzLmNvbHVtbldpZHRoc0luaXRpYWxpemVkID0g
ZmFsc2U7CisgICAgICAgIHRoaXMudXBkYXRlV2lkdGhzKCk7CisgICAgfSwKKwogICAgIC8vIFVw
ZGF0ZXMgdGhlIHdpZHRocyBvZiB0aGUgdGFibGUsIGluY2x1ZGluZyB0aGUgcG9zaXRpb25zIG9m
IHRoZSBjb2x1bW4KICAgICAvLyByZXNpemVycy4KICAgICAvLwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzCmluZGV4IDI2NTY4NDIuLmNjOTAy
ZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5
Vmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZp
ZXcuanMKQEAgLTE0NCw2ICsxNDQsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkYXRhR3JpZC5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoImlubGluZSIpOwogICAgICAgICB0aGlzLl9hcHBlbmRRdWVyeVJl
c3VsdChxdWVyeSwgZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIGRhdGFHcmlkLmF1dG9TaXpl
Q29sdW1ucyg1KTsKIAogICAgICAgICBpZiAocXVlcnkubWF0Y2goL15jcmVhdGUgL2kpIHx8IHF1
ZXJ5Lm1hdGNoKC9eZHJvcCB0YWJsZSAvaSkpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnN0b3JhZ2UudXBkYXRlRGF0YWJhc2VUYWJsZXModGhpcy5kYXRhYmFzZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMKaW5kZXggYWE3
Njc5NC4uY2Q2NmFiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rh
dGFiYXNlVGFibGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRh
YmFzZVRhYmxlVmlldy5qcwpAQCAtNjgsNiArNjgsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKGRhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICBkYXRhR3JpZC5hdXRvU2l6
ZUNvbHVtbnMoNSk7CiAgICAgfSwKIAogICAgIF9xdWVyeUVycm9yOiBmdW5jdGlvbihlcnJvcikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzCmluZGV4IDE4YmM5
OGYuLmNhMWIyNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9y
YWdlUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5l
bC5qcwpAQCAtMzAwLDUyICszMDAsMTQgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgZGF0YSA9IHt9OwogCiAgICAgICAgICAgICB2YXIg
cm93ID0gcm93c1tpXTsKLSAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4g
cm93KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRleHQgPSByb3dbY29sdW1uSWRlbnRpZmllcl07
Ci0gICAgICAgICAgICAgICAgZGF0YVtjb2x1bW5JZGVudGlmaWVyXSA9IHRleHQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRleHQubGVuZ3RoID4gY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXS53aWR0
aCkKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXS53aWR0aCA9
IHRleHQubGVuZ3RoOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh2YXIgY29sdW1u
SWRlbnRpZmllciBpbiByb3cpCisgICAgICAgICAgICAgICAgZGF0YVtjb2x1bW5JZGVudGlmaWVy
XSA9IHJvd1tjb2x1bW5JZGVudGlmaWVyXTsKIAogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7CiAgICAgICAgICAgICBub2Rl
LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2YXIgdG90YWxDb2x1bW5XaWR0aHMgPSAwOwotICAgICAgICBmb3Ig
KHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpCi0gICAgICAgICAgICB0b3RhbENvbHVt
bldpZHRocyArPSBjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLndpZHRoOwotCi0gICAgICAgIC8v
IENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSB3aWR0aCBmb3IgdGhlIGNvbHVtbnMuCi0gICAgICAg
IGNvbnN0IG1pbmltdW1QcmVjZW50ID0gTWF0aC5taW4oNSwgTWF0aC5mbG9vcigxMDAvbnVtQ29s
dW1ucykpOwotICAgICAgICB2YXIgcmVjb3VwUGVyY2VudCA9IDA7Ci0gICAgICAgIGZvciAodmFy
IGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewotICAgICAgICAgICAgdmFyIHdpZHRoID0g
Y29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXS53aWR0aDsKLSAgICAgICAgICAgIHdpZHRoID0gTWF0
aC5yb3VuZCgod2lkdGggLyB0b3RhbENvbHVtbldpZHRocykgKiAxMDApOwotICAgICAgICAgICAg
aWYgKHdpZHRoIDwgbWluaW11bVByZWNlbnQpIHsKLSAgICAgICAgICAgICAgICByZWNvdXBQZXJj
ZW50ICs9IChtaW5pbXVtUHJlY2VudCAtIHdpZHRoKTsKLSAgICAgICAgICAgICAgICB3aWR0aCA9
IG1pbmltdW1QcmVjZW50OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb2x1bW5zW2Nv
bHVtbklkZW50aWZpZXJdLndpZHRoID0gd2lkdGg7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBF
bmZvcmNlIHRoZSBtaW5pbXVtIHBlcmNlbnRhZ2Ugd2lkdGguCi0gICAgICAgIHdoaWxlIChyZWNv
dXBQZXJjZW50ID4gMCkgewotICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBp
biBjb2x1bW5zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbHVtbnNbY29sdW1uSWRlbnRpZmll
cl0ud2lkdGggPiBtaW5pbXVtUHJlY2VudCkgewotICAgICAgICAgICAgICAgICAgICAtLWNvbHVt
bnNbY29sdW1uSWRlbnRpZmllcl0ud2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIC0tcmVjb3Vw
UGVyY2VudDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWNvdXBQZXJjZW50KQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hhbmdlIHRoZSB3aWR0aCBwcm9wZXJ0eSB0byBh
IHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzdHlsZSB3aWR0aC4KLSAgICAgICAgZm9yICh2YXIgY29s
dW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKQotICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5JZGVu
dGlmaWVyXS53aWR0aCArPSAiJSI7Ci0KICAgICAgICAgdmFyIGRhdGFHcmlkID0gbmV3IFdlYklu
c3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKICAgICAgICAgdmFyIGxlbmd0aCA9IG5vZGVzLmxl
bmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
</data>
<flag name="review"
          id="30876"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>