<?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>107021</bug_id>
          
          <creation_ts>2013-01-16 08:56:24 -0800</creation_ts>
          <short_desc>Web Inspector: Introduce FileSystemWorkspaceProvider to allow showing files from file system in workspace.</short_desc>
          <delta_ts>2013-01-17 04:41:27 -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="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>808411</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-16 08:56:24 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808415</commentid>
    <comment_count>1</comment_count>
      <attachid>182994</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-16 09:00:31 -0800</bug_when>
    <thetext>Created attachment 182994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808430</commentid>
    <comment_count>2</comment_count>
      <attachid>182994</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-16 09:28:02 -0800</bug_when>
    <thetext>Comment on attachment 182994
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=182994&amp;action=review

Looks good.

&gt; Source/WebCore/inspector/front-end/FileSystemMapping.js:96
&gt; +    Object.call(this);

WebInspector.

&gt; Source/WebCore/inspector/front-end/FileSystemWorkspaceProvider.js:2
&gt; + * Copyright (C) 2012 Google Inc. All rights reserved.

2013

&gt; Source/WebCore/inspector/front-end/FileSystemWorkspaceProvider.js:426
&gt; +    function toArray(list) {

{!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809168</commentid>
    <comment_count>3</comment_count>
      <attachid>183139</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-17 01:06:40 -0800</bug_when>
    <thetext>Created attachment 183139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809269</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-17 04:41:27 -0800</bug_when>
    <thetext>Committed r139978: &lt;http://trac.webkit.org/changeset/139978&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182994</attachid>
            <date>2013-01-16 09:00:31 -0800</date>
            <delta_ts>2013-01-17 01:06:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107021-20130116205731.patch</filename>
            <type>text/plain</type>
            <size>31416</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkyZmI3MDU5M2M3OGI5
ZDRjZDE5NjczNDU5NmFmOGU3NDQxZDI3Ni4uZmYwYTRkYWYwNTFjZDNhNDRjYzg4ZmE2MjhiNTg2
MTJhNmMxNDI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDEzLTAxLTE2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBGaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIgdG8gYWxsb3cgc2hvd2lu
ZyBmaWxlcyBmcm9tIGZpbGUgc3lzdGVtIGluIHdvcmtzcGFjZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzAyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEZpbGVTeXN0ZW1Xb3Jrc3BhY2VQ
cm92aWRlciB0aGF0IHBvcHVsYXRlcyB3b3Jrc3BhY2Ugd2l0aCBmaWxlcworICAgICAgICBsb2Fk
ZWQgZnJvbSBmaWxlIHN5c3RlbXMgcmVnaXN0ZXJlZCBpbiBGaWxlU3lzdGVtTWFwcGluZyBhbmQg
bGlzdGVucworICAgICAgICBmb3IgRmlsZVN5c3RlbUFkZGVkIC8gRmlsZVN5c3RlbVJlbW92ZWQg
ZXZlbnRzIHRvIHVwZGF0ZSB3b3Jrc3BhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RmlsZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90
eXBlLnVybEZvclVSSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGlu
Z0VudHJ5LnByb3RvdHlwZS51cmxGb3JVUkkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1hcHBpbmcucHJvdG90eXBlLnVyaUZvclBhdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1NYXBwaW5nLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmdJbXBsKToKKyAgICAg
ICAgKGdldCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmdJbXBsLnByb3RvdHlwZS51cmlG
b3JQYXRoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3Bh
Y2VQcm92aWRlci5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29s
YXRlZEZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwucHJvdG90eXBlLl9pbm5lckFkZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dv
cmtzcGFjZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL25hdmlnYXRvclZpZXcuY3NzOgorICAgICAgICAoLm5hdmlnYXRvci1vdGhlci10cmVl
LWl0ZW0gLmljb24pOgorCisyMDEzLTAxLTE2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVJU291cmNlQ29kZSBzY3JpcHRG
aWxlIC8gc3R5bGVGaWxlIHNob3VsZCBiZSByZXNldCBvbiBuYXZpZ2F0aW9uIChkZWJ1Z2dlciBv
ciBjc3MgbW9kZWwgcmVzZXQpLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA3MDA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMWMzZjk5NzUyODhlMmQy
NzgxOWQ0MzlmYzNiZjkwZWY4OTIzMzRhLi40OGZlOWE1NmQzYWJjMmY3YmVmYjI0MjU1Y2Q0Nzcz
YjliN2FhNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MTUzLDYgKzUxNTMsNyBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxNjU2ZTUzNjE2NjkyMzAyMzIzNTgxNDY2ZjZm
Mjk3NDNhZWY0MDVkLi4wYzA1ZWIxMTE1MWQ2ZWQwOWU4NmMzNDM0Y2UyODk3ZThlODJjZmMxIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzY4
NDUsNiArNzY4NDUsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVdvcmtzcGFjZVBy
b3ZpZGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlVXRpbHMuanMiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
aW5kZXggMWU0ODIwNTcyMDU4YmVlNDk5ZmFjZjVjODJlZTY2MWNhOGYzNGMyMS4uMDZlMjliM2U4
ZGVjZjYxNmQ5ZGIzMWNhYjU3MzRjOGVlNjlmYmMzOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtNzksNiArNzksNyBAQCBtb2R1bGVzID0g
WwogICAgICAgICAgICAgIkZpbGVNYXBwaW5nLmpzIiwKICAgICAgICAgICAgICJGaWxlU3lzdGVt
TWFwcGluZy5qcyIsCiAgICAgICAgICAgICAiRmlsZVN5c3RlbU1vZGVsLmpzIiwKKyAgICAgICAg
ICAgICJGaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIuanMiLAogICAgICAgICAgICAgIkZpbGVV
dGlscy5qcyIsCiAgICAgICAgICAgICAiSEFSRW50cnkuanMiLAogICAgICAgICAgICAgIkluZGV4
ZWREQk1vZGVsLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVNYXBwaW5nLmpzCmluZGV4IGRlNWVkZDMwN2NjMDliMjQ3MTkzNDBiYWYxM2VlZjM3NTE0
MWNmYzAuLjY4NjFkMDAyYjkzOWRhNjY4Njk5OTNiNTE4YWNhMmQ3ZTYzYTFkYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qcwpAQCAt
NzUsNyArNzUsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90eXBlID0gewogICAg
IAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKLSAgICAgKiBAcmV0dXJuIHs/
c3RyaW5nfQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KICAgICB1cmxGb3JVUkk6
IGZ1bmN0aW9uKHVyaSkKICAgICB7CkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5GaWxl
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fbWFwcGluZ0VudHJp
ZXNbaV0ubWF0Y2hlc1VSSSh1cmkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXBw
aW5nRW50cmllc1tpXS51cmxGb3JVUkkodXJpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgcmV0dXJuICIiOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE4MSwxMyAr
MTgxLDEzIEBAIFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnkucHJvdG90eXBl
ID0gewogICAgIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKLSAgICAgKiBA
cmV0dXJuIHs/c3RyaW5nfQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KICAgICB1
cmxGb3JVUkk6IGZ1bmN0aW9uKHVyaSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLm1hdGNoZXNV
UkkodXJpKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl91cmxQcmVmaXggKyB1cmkuc3Vic3Ry
aW5nKHRoaXMuX3VyaVByZWZpeC5sZW5ndGgpOwotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
ICAgcmV0dXJuICIiOwogICAgIH0sCiAgICAgCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1NYXBwaW5nLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTWFwcGluZy5qcwppbmRleCBm
OGVmYmY5ODJiZjk0ZGRjZGI4N2JkYzY2N2NlOTNjMzc1ZjE2NDRhLi40NjVmYmRjOWRmNGFkZmU1
ZjdkNzRkODQyNDFlNjQyZTlmYTIwYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1NYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanMKQEAgLTQyLDYgKzQyLDEx
IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvciA9IGZ1bmN0
aW9uKGZpbGVTeXN0ZW1QYXRoLCBmaWxlUGF0CiAgICAgdGhpcy5maWxlUGF0aCA9IGZpbGVQYXRo
OwogfQogCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmcuRXZlbnRzID0geworICAgIEZp
bGVTeXN0ZW1BZGRlZDogIkZpbGVTeXN0ZW1BZGRlZCIsCisgICAgRmlsZVN5c3RlbVJlbW92ZWQ6
ICJGaWxlU3lzdGVtUmVtb3ZlZCIKK30KKwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5n
LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0K
QEAgLTY0LDcgKzY5LDIxIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKICAgICAgKiBAcmV0dXJuIHs/c3Ry
aW5nfQogICAgICAqLwotICAgIHVyaUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfQorICAgIHVy
aUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBldmVudFR5cGUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5F
dmVudCl9IGxpc3RlbmVyCisgICAgICogQHBhcmFtIHtPYmplY3Q9fSB0aGlzT2JqZWN0CisgICAg
ICovCisgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwg
dGhpc09iamVjdCkgeyB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50
VHlwZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkV2ZW50KX0gbGlzdGVu
ZXIKKyAgICAgKiBAcGFyYW0ge09iamVjdD19IHRoaXNPYmplY3QKKyAgICAgKi8KKyAgICByZW1v
dmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0
KSB7IH0KIH0KIAogLyoqCkBAIC03NCw2ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGlu
Z0ltcGwgPSBmdW5jdGlvbigpCiB7CisgICAgT2JqZWN0LmNhbGwodGhpcyk7CiAgICAgdGhpcy5f
ZmlsZVN5c3RlbU1hcHBpbmdTZXR0aW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNl
dHRpbmcoImZpbGVTeXN0ZW1NYXBwaW5nIiwge30pOwogICAgIC8qKiBAdHlwZSB7IU9iamVjdC48
c3RyaW5nLCBzdHJpbmc+fSAqLwogICAgIHRoaXMuX21hcHBlZE5hbWVzID0gdGhpcy5fZmlsZVN5
c3RlbU1hcHBpbmdTZXR0aW5nLmdldCgpOwpAQCAtOTIsNiArMTEyLDcgQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1NYXBwaW5nSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB1bmlxdWVN
YXBwZWROYW1lID0gdGhpcy5fdW5pcXVlTWFwcGVkTmFtZShtYXBwZWROYW1lKTsKICAgICAgICAg
dGhpcy5fbWFwcGVkTmFtZXNbZmlsZVN5c3RlbVBhdGhdID0gbWFwcGVkTmFtZTsKICAgICAgICAg
dGhpcy5fZmlsZVN5c3RlbU1hcHBpbmdTZXR0aW5nLnNldCh0aGlzLl9tYXBwZWROYW1lcyk7Cisg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTWFwcGluZy5FdmVudHMuRmlsZVN5c3RlbUFkZGVkLCBmaWxlU3lzdGVtUGF0aCk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtMTEzLDggKzEzNCwxMCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1hcHBpbmdJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZW1vdmVGaWxlU3lzdGVt
TWFwcGluZzogZnVuY3Rpb24oZmlsZVN5c3RlbVBhdGgpCiAgICAgeworICAgICAgICB2YXIgdXJp
UHJlZml4ID0gdGhpcy5fdXJpUHJlZml4Rm9yTWFwcGVkTmFtZSh0aGlzLl9tYXBwZWROYW1lc1tm
aWxlU3lzdGVtUGF0aF0pOwogICAgICAgICBkZWxldGUgdGhpcy5fbWFwcGVkTmFtZXNbZmlsZVN5
c3RlbVBhdGhdOwogICAgICAgICB0aGlzLl9maWxlU3lzdGVtTWFwcGluZ1NldHRpbmcuc2V0KHRo
aXMuX21hcHBlZE5hbWVzKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5nLkV2ZW50cy5GaWxlU3lzdGVtUmVtb3ZlZCwg
ZmlsZVN5c3RlbVBhdGgpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE3NCw1ICsxOTcsNyBAQCBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmdJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9CisgICAgfSwKKwor
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdvcmtzcGFj
ZVByb3ZpZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtV29ya3NwYWNlUHJvdmlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFhY2NlNTYwN2JiNWMwYWFhYmIy
YzJiZmE5ODZjNjA3YmM2ZGViOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzCkBAIC0wLDAg
KzEsNDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0
b3IuV29ya3NwYWNlUHJvdmlkZXJ9CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsfSBpc29sYXRl
ZEZpbGVTeXN0ZW1Nb2RlbAorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVBy
b3ZpZGVyID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwpCit7CisgICAgdGhpcy5f
aXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwgPSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbDsKKyAgICB0
aGlzLl9maWxlcyA9IHt9OworCisgICAgdGhpcy5fcG9wdWxhdGUoKTsKKyAgICB0aGlzLl9pc29s
YXRlZEZpbGVTeXN0ZW1Nb2RlbC5tYXBwaW5nKCkuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1hcHBpbmcuRXZlbnRzLkZpbGVTeXN0ZW1BZGRlZCwgdGhpcy5fZmlsZVN5
c3RlbUFkZGVkLCB0aGlzKTsKKyAgICB0aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5tYXBw
aW5nKCkuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmcuRXZl
bnRzLkZpbGVTeXN0ZW1SZW1vdmVkLCB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZCwgdGhpcyk7Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlID0g
eworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9zdHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIHJl
cXVlc3RGaWxlQ29udGVudDogZnVuY3Rpb24odXJpLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHZhciBmaWxlRGVzY3JpcHRvciA9IHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLm1hcHBp
bmcoKS5maWxlRm9yVVJJKHVyaSk7CisgICAgICAgIGlmICghZmlsZURlc2NyaXB0b3IpIHsKKyAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5vIG1hdGNoaW5nIGZpbGUgZm9yIHVyaTogIiArIHVy
aSk7CisgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBmYWxzZSwgV2ViSW5zcGVjdG9yLnJlc291
cmNlVHlwZXMuT3RoZXIuY2Fub25pY2FsTWltZVR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0
RmlsZUNvbnRlbnQodGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVEZXNjcmlwdG9y
LmZpbGVTeXN0ZW1QYXRoLCBmaWxlRGVzY3JpcHRvci5maWxlUGF0aCwgaW5uZXJDYWxsYmFjay5i
aW5kKHRoaXMpKTsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soY29u
dGVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gdGhpcy5fY29u
dGVudFR5cGVGb3JQYXRoKGZpbGVEZXNjcmlwdG9yLmZpbGVQYXRoKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKGNvbnRlbnQsIGZhbHNlLCBjb250ZW50VHlwZS5jYW5vbmljYWxNaW1lVHlwZSgpKTsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJp
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0NvbnRlbnQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9zdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIHNldEZpbGVDb250ZW50OiBmdW5j
dGlvbih1cmksIG5ld0NvbnRlbnQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIGZpbGVE
ZXNjcmlwdG9yID0gdGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpLmZpbGVG
b3JVUkkodXJpKTsKKyAgICAgICAgaWYgKCFmaWxlRGVzY3JpcHRvcikgeworICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiTm8gbWF0Y2hpbmcgZmlsZSBmb3IgdXJpOiAiICsgdXJpKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCIiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnNldEZpbGVDb250ZW50KHRoaXMuX2lz
b2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlRGVzY3JpcHRvci5maWxlU3lzdGVtUGF0aCwgZmls
ZURlc2NyaXB0b3IuZmlsZVBhdGgsIG5ld0NvbnRlbnQsIGNhbGxiYWNrLmJpbmQodGhpcywgIiIp
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNp
dGl2ZQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0g
Y2FsbGJhY2sKKyAgICAgKi8KKyAgICBzZWFyY2hJbkZpbGVDb250ZW50OiBmdW5jdGlvbih1cmks
IHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IGNhbGxiYWNrKFtdKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHBhdGgKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUeXBlfQorICAgICAq
LworICAgIF9jb250ZW50VHlwZUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpCisgICAgeworICAgICAg
ICB2YXIgc3BsaXR0ZWRQYXRoID0gcGF0aC5zcGxpdCgiLyIpOworICAgICAgICB2YXIgZmlsZU5h
bWUgPSBzcGxpdHRlZFBhdGhbc3BsaXR0ZWRQYXRoLmxlbmd0aCAtIDFdOworICAgICAgICB2YXIg
ZXh0ZW5zaW9uSW5kZXggPSBmaWxlTmFtZS5sYXN0SW5kZXhPZigiLiIpOworICAgICAgICB2YXIg
ZXh0ZW5zaW9uID0gIiI7CisgICAgICAgIGlmIChleHRlbnNpb25JbmRleCAhPT0gLTEpCisgICAg
ICAgICAgICBleHRlbnNpb24gPSBmaWxlTmFtZS5zdWJzdHJpbmcoZXh0ZW5zaW9uSW5kZXggKyAx
KTsKKyAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMu
T3RoZXI7CisgICAgICAgIGlmIChleHRlbnNpb24gPT09ICJqcyIpCisgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0OworICAgICAgICBpZiAoZXh0ZW5z
aW9uID09PSAiY3NzIikKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
eXBlcy5TdHlsZXNoZWV0OworICAgICAgICBpZiAoZXh0ZW5zaW9uID09PSAiaHRtbCIpCisgICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQ7CisgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5PdGhlcjsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICov
CisgICAgX2ZpbGVTeXN0ZW1BZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgZmlsZVN5c3RlbVBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOwor
ICAgICAgICB0aGlzLl9hZGRGaWxlU3lzdGVtKGZpbGVTeXN0ZW1QYXRoKTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICov
CisgICAgX2ZpbGVTeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBmaWxlU3lzdGVtUGF0aCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7
CisgICAgICAgIGZvciAodmFyIHVyaSBpbiB0aGlzLl9maWxlc1tmaWxlU3lzdGVtUGF0aF0pCisg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVGaWxlKGZpbGVTeXN0ZW1QYXRoLCB1cmkpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAgICAg
Ki8KKyAgICBfYWRkRmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZVN5c3RlbVBhdGgpCisgICAgewor
ICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlc1JlY3Vyc2l2
ZSh0aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsICIiLCBmaWxl
c0xvYWRlZC5iaW5kKHRoaXMpKTsKKworICAgICAgICBmdW5jdGlvbiBmaWxlc0xvYWRlZChmaWxl
cykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciB1cmkgPSB0aGlzLl9pc29sYXRlZEZpbGVT
eXN0ZW1Nb2RlbC5tYXBwaW5nKCkudXJpRm9yRmlsZShuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1NYXBwaW5nLkZpbGVEZXNjcmlwdG9yKGZpbGVTeXN0ZW1QYXRoLCBmaWxlc1tpXSkpOworICAg
ICAgICAgICAgICAgIHZhciBjb250ZW50VHlwZSA9IHRoaXMuX2NvbnRlbnRUeXBlRm9yUGF0aChm
aWxlc1tpXSk7CisgICAgICAgICAgICAgICAgdmFyIHVybCA9IFdlYkluc3BlY3Rvci5maWxlTWFw
cGluZy51cmxGb3JVUkkodXJpKTsKKyAgICAgICAgICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3Ig
PSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVEZXNjcmlwdG9yKHVyaSwgImZpbGU6Ly8iICsgZmlsZVN5
c3RlbVBhdGggKyBmaWxlc1tpXSwgdXJsLCBjb250ZW50VHlwZSwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkRmlsZShmaWxlU3lzdGVtUGF0aCwgZmlsZURlc2NyaXB0b3IpOworICAg
ICAgICAgICAgfSAKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxl
RGVzY3JpcHRvcn0gZmlsZURlc2NyaXB0b3IKKyAgICAgKi8KKyAgICBfYWRkRmlsZTogZnVuY3Rp
b24oZmlsZVN5c3RlbVBhdGgsIGZpbGVEZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9maWxlc1tmaWxlU3lzdGVtUGF0aF0pCisgICAgICAgICAgICB0aGlzLl9maWxlc1tmaWxl
U3lzdGVtUGF0aF0gPSB7fTsKKyAgICAgICAgdGhpcy5fZmlsZXNbZmlsZVN5c3RlbVBhdGhdW2Zp
bGVEZXNjcmlwdG9yLnVyaV0gPSB0cnVlOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIuRXZlbnRzLkZpbGVBZGRlZCwg
ZmlsZURlc2NyaXB0b3IpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZmlsZVN5c3RlbVBhdGgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICovCisg
ICAgX3JlbW92ZUZpbGU6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoLCB1cmkpCisgICAgeworICAg
ICAgICBkZWxldGUgdGhpcy5fZmlsZXNbZmlsZVN5c3RlbVBhdGhdW3VyaV07CisgICAgICAgIGlm
IChPYmplY3Qua2V5cyh0aGlzLl9maWxlc1tmaWxlU3lzdGVtUGF0aF0pLmxlbmd0aCA9PT0gMCkK
KyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlc1tmaWxlU3lzdGVtUGF0aF07CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92
aWRlci5FdmVudHMuRmlsZVJlbW92ZWQsIHVyaSk7CisgICAgfSwKKworICAgIF9wb3B1bGF0ZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1QYXRocyA9IHRoaXMuX2lz
b2xhdGVkRmlsZVN5c3RlbU1vZGVsLm1hcHBpbmcoKS5maWxlU3lzdGVtUGF0aHMoKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlU3lzdGVtUGF0aHMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICAgdGhpcy5fYWRkRmlsZVN5c3RlbShmaWxlU3lzdGVtUGF0aHNbaV0pOworICAgIH0s
CisKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2ZW50cy5SZXNl
dCwgbnVsbCk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7CisgICAgfSwKKyAgICAKKyAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCit9CisKKy8qKgorICogQHR5
cGUgez9XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyfQorICovCitXZWJJ
bnNwZWN0b3IuZmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyID0gbnVsbDsKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscyA9IGZ1bmN0aW9u
KCkKK3sKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIgPSBm
dW5jdGlvbihlcnJvcikgeworICAgIHZhciBtc2c7CisgICAgc3dpdGNoIChlcnJvci5jb2RlKSB7
CisgICAgY2FzZSBGaWxlRXJyb3IuUVVPVEFfRVhDRUVERURfRVJSOgorICAgICAgICBtc2cgPSAi
UVVPVEFfRVhDRUVERURfRVJSIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWxlRXJyb3Iu
Tk9UX0ZPVU5EX0VSUjoKKyAgICAgICAgbXNnID0gIk5PVF9GT1VORF9FUlIiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZpbGVFcnJvci5TRUNVUklUWV9FUlI6CisgICAgICAgIG1zZyA9ICJT
RUNVUklUWV9FUlIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVFcnJvci5JTlZBTElE
X01PRElGSUNBVElPTl9FUlI6CisgICAgICAgIG1zZyA9ICJJTlZBTElEX01PRElGSUNBVElPTl9F
UlIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVFcnJvci5JTlZBTElEX1NUQVRFX0VS
UjoKKyAgICAgICAgbXNnID0gIklOVkFMSURfU1RBVEVfRVJSIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgbXNnID0gIlVua25vd24gRXJyb3IiOworICAgICAgICBicmVh
azsKKyAgICB9OworCisgICAgY29uc29sZS5lcnJvcigiRmlsZSBzeXN0ZW0gZXJyb3I6ICIgKyBt
c2cpOworfQorCisvKioKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsfSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtzdHJpbmd9IGZpbGVT
eXN0ZW1QYXRoCisgKiBAcGFyYW0ge2Z1bmN0aW9uKERPTUZpbGVTeXN0ZW0pfSBjYWxsYmFjawor
ICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtID0gZnVu
Y3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBjYWxsYmFjaykK
K3sKKyAgICBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0RE9NRmlsZVN5c3RlbShmaWxl
U3lzdGVtUGF0aCwgY2FsbGJhY2spOworfQorCisvKioKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
Lklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsfSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbAorICogQHBh
cmFtIHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCisgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICog
QHBhcmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPil9IGNhbGxiYWNrCisgKi8KK1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVzUmVjdXJzaXZlID0gZnVuY3Rpb24oaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRoLCBjYWxsYmFjaykKK3sK
KyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtKGlzb2xh
dGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5c3RlbUxvYWRlZCk7CisK
KyAgICB2YXIgZmlsZVN5c3RlbTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUZpbGVTeXN0
ZW19IGZzCisgICAgICovCisgICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxvYWRlZChmcykKKyAgICB7
CisgICAgICAgIGZpbGVTeXN0ZW0gPSBmczsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMoZmlsZVN5c3RlbSwgcGF0aCwgaW5uZXJDYWxsYmFjayk7
CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIHZhciBjYWxsYmFja3NMZWZ0ID0g
MTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxGaWxlRW50cnk+fSBlbnRyaWVzCisg
ICAgICovCisgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlbnRyaWVzKQorICAgIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgZW50cnkgPSBlbnRyaWVzW2ldOworICAgICAgICAgICAgaWYgKCFlbnRyeS5pc0RpcmVj
dG9yeSkKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbnRyeS5mdWxsUGF0aCk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja3NMZWZ0Kys7CisgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMoZmls
ZVN5c3RlbSwgZW50cnkuZnVsbFBhdGgsIGlubmVyQ2FsbGJhY2spOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGlmICghLS1jYWxsYmFja3NMZWZ0KQorICAgICAgICAgICAgY2Fs
bGJhY2socmVzdWx0KTsKKyAgICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
SXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCisgKiBAcGFy
YW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisgKiBA
cGFyYW0ge2Z1bmN0aW9uKHN0cmluZyl9IGNhbGxiYWNrCisgKi8KK1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVXRpbHMucmVxdWVzdEZpbGVDb250ZW50ID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lz
dGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRoLCBjYWxsYmFjaykKK3sKKyAgICBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtKGlzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5c3RlbUxvYWRlZCk7CisKKyAgICB2YXIgZmls
ZVN5c3RlbTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUZpbGVTeXN0ZW19IGZzCisgICAg
ICovCisgICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxvYWRlZChmcykKKyAgICB7CisgICAgICAgIGZz
LnJvb3QuZ2V0RmlsZShwYXRoLCBudWxsLCBmaWxlRW50cnlMb2FkZWQsIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0ZpbGVFbnRyeX0gZW50cnkKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlRW50cnlM
b2FkZWQoZW50cnkpCisgICAgeworICAgICAgICBlbnRyeS5maWxlKGZpbGVMb2FkZWQsIFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0geyFCbG9ifSBmaWxlCisgICAgICovCisgICAgZnVuY3Rpb24gZmlsZUxv
YWRlZChmaWxlKQorICAgIHsKKyAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7
CisgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSByZWFkZXJMb2FkRW5kOworICAgICAgICByZWFk
ZXIucmVhZEFzVGV4dChmaWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAdGhpcyB7Rmls
ZVJlYWRlcn0KKyAgICAgKi8KKyAgICBmdW5jdGlvbiByZWFkZXJMb2FkRW5kKCkKKyAgICB7Cisg
ICAgICAgIGNhbGxiYWNrKC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5yZXN1bHQpKTsKKyAg
ICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5
c3RlbVBhdGgKKyAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisgKiBAcGFyYW0ge3N0cmluZ30gY29u
dGVudAorICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbVV0aWxzLnNldEZpbGVDb250ZW50ID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lz
dGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRoLCBjb250ZW50LCBjYWxsYmFjaykKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtKGlzb2xhdGVk
RmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5c3RlbUxvYWRlZCk7CisKKyAg
ICB2YXIgZmlsZVN5c3RlbTsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUZpbGVTeXN0ZW19
IGZzCisgICAgICovCisgICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxvYWRlZChmcykKKyAgICB7Cisg
ICAgICAgIGZzLnJvb3QuZ2V0RmlsZShwYXRoLCBudWxsLCBmaWxlRW50cnlMb2FkZWQsIFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0ZpbGVFbnRyeX0gZW50cnkKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBm
aWxlRW50cnlMb2FkZWQoZW50cnkpCisgICAgeworICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIo
ZmlsZVdyaXRlckNyZWF0ZWQsIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5k
bGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0ZpbGVXcml0ZXJ9IGZpbGVX
cml0ZXIKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlV3JpdGVyQ3JlYXRlZChmaWxlV3JpdGVy
KQorICAgIHsKKyAgICAgICAgZmlsZVdyaXRlci5vbmVycm9yID0gV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1VdGlscy5lcnJvckhhbmRsZXI7CisgICAgICAgIGZpbGVXcml0ZXIub253cml0ZWVuZCA9
IGZpbGVUcnVuY2F0ZWQ7CisgICAgICAgIGZpbGVXcml0ZXIudHJ1bmNhdGUoMCk7CisKKyAgICAg
ICAgZnVuY3Rpb24gZmlsZVRydW5jYXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVX
cml0ZXIub253cml0ZWVuZCA9IHdyaXRlckVuZDsKKyAgICAgICAgICAgIHZhciBibG9iID0gbmV3
IEJsb2IoW2NvbnRlbnRdLCB7IHR5cGU6ICJ0ZXh0L3BsYWluIiB9KTsKKyAgICAgICAgICAgIGZp
bGVXcml0ZXIud3JpdGUoYmxvYik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiB3
cml0ZXJFbmQoKQorICAgIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9Cit9CisKKy8qKgor
ICogQHBhcmFtIHtEaXJlY3RvcnlFbnRyeX0gcm9vdAorICogQHBhcmFtIHtBcnJheS48c3RyaW5n
Pn0gZm9sZGVycworICogQHBhcmFtIHtPYmplY3R9IGZsYWdzCisgKiBAcGFyYW0ge2Z1bmN0aW9u
KERpcmVjdG9yeUVudHJ5KX0gY2FsbGJhY2sKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1V
dGlscy5fZ2V0RGlyZWN0b3J5ID0gZnVuY3Rpb24ocm9vdCwgZm9sZGVycywgZmxhZ3MsIGNhbGxi
YWNrKQoreworICAgIHdoaWxlIChmb2xkZXJzWzBdID09ICIuIiB8fCBmb2xkZXJzWzBdID09ICIi
KQorICAgICAgICBmb2xkZXJzID0gZm9sZGVycy5zbGljZSgxKTsKKyAgICBpZiAoIWZvbGRlcnMu
bGVuZ3RoKQorICAgICAgICBjYWxsYmFjayhyb290KTsKKyAgICBlbHNlCisgICAgICAgIHJvb3Qu
Z2V0RGlyZWN0b3J5KGZvbGRlcnNbMF0sIGZsYWdzLCBpbm5lckNhbGxiYWNrLCBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVV0aWxzLmVycm9ySGFuZGxlcik7CisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0RpcmVjdG9yeUVudHJ5fSBkaXJFbnRyeQorICAgICAqLworICAgIGZ1bmN0aW9uIGlubmVy
Q2FsbGJhY2soZGlyRW50cnkpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVV0aWxzLl9nZXREaXJlY3RvcnkoZGlyRW50cnksIGZvbGRlcnMuc2xpY2UoMSksIGZsYWdzLCBj
YWxsYmFjayk7CisgICAgfQorfQorCisvKioKKyAqIEBwYXJhbSB7RGlyZWN0b3J5RW50cnl9IGRp
ckVudHJ5CisgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxGaWxlRW50cnk+KX0gY2FsbGJhY2sK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVhZERpcmVjdG9yeSA9IGZ1bmN0
aW9uKGRpckVudHJ5LCBjYWxsYmFjaykKK3sKKyAgICB2YXIgZGlyUmVhZGVyID0gZGlyRW50cnku
Y3JlYXRlUmVhZGVyKCk7CisgICAgdmFyIGVudHJpZXMgPSBbXTsKKworICAgIGZ1bmN0aW9uIGlu
bmVyQ2FsbGJhY2socmVzdWx0cykKKyAgICB7CisgICAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgp
CisgICAgICAgICAgICBjYWxsYmFjayhlbnRyaWVzLnNvcnQoKSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgZW50cmllcyA9IGVudHJpZXMuY29uY2F0KHRvQXJyYXkocmVzdWx0cykpOwor
ICAgICAgICAgICAgZGlyUmVhZGVyLnJlYWRFbnRyaWVzKGlubmVyQ2FsbGJhY2ssIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRvQXJyYXkobGlzdCkgeworICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwobGlzdCB8fCBbXSwgMCk7CisgICAgfSAgICAKKworICAgIGRpclJlYWRl
ci5yZWFkRW50cmllcyhpbm5lckNhbGxiYWNrLCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxz
LmVycm9ySGFuZGxlcik7Cit9CisKKy8qKgorICogQHBhcmFtIHtET01GaWxlU3lzdGVtfSBmaWxl
U3lzdGVtCisgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICogQHBhcmFtIHtmdW5jdGlvbihBcnJh
eS48RmlsZUVudHJ5Pil9IGNhbGxiYWNrCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRp
bHMuX3JlcXVlc3RFbnRyaWVzID0gZnVuY3Rpb24oZmlsZVN5c3RlbSwgcGF0aCwgY2FsbGJhY2sp
Cit7CisgICAgdmFyIGZvbGRlcnMgPSBwYXRoLnNwbGl0KCIvIik7CisgICAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1VdGlscy5fZ2V0RGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgZm9sZGVycywg
bnVsbCwgaW5uZXJDYWxsYmFjayk7CisKKyAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGRpckVu
dHJ5KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVhZERp
cmVjdG9yeShkaXJFbnRyeSwgY2FsbGJhY2spCisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVV0aWxzLnByb3RvdHlwZSA9IHsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzCmlu
ZGV4IGFlNzVlOTVjMGZkZDViZjkyNDdmNmZjN2NiNmViZTY0NWRlYTBmNjIuLmViODRlZWU0MzUy
MGY1NWNlZTY3OGM4NTdmOTk1MGE5YWQ2MmExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5q
cwpAQCAtMzAsOCArMzAsOSBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuV29ya3NwYWNlfSB3b3Jrc3BhY2UKICAqLwotV2ViSW5zcGVjdG9yLklzb2xh
dGVkRmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLklzb2xhdGVkRmls
ZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24od29ya3NwYWNlKQogewogICAgIC8qKiBAdHlwZSB7IU9i
amVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuRmlsZVN5
c3RlbT59ICovCiAgICAgdGhpcy5fZmlsZVN5c3RlbXMgPSB7fTsKQEAgLTQxLDYgKzQyLDkgQEAg
V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24oKQogCiAgICAg
aWYgKHRoaXMuc3VwcG9ydHNGaWxlU3lzdGVtcygpKQogICAgICAgICB0aGlzLl9yZXF1ZXN0Rmls
ZVN5c3RlbXMoKTsKKworICAgIHRoaXMuX2ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMpOworICAgIHdv
cmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuRmlsZVN5c3RlbSwg
dGhpcy5fZmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyKTsKIH0KIAogLyoqIEB0eXBlZGVmIHt7
ZmlsZVN5c3RlbU5hbWU6IHN0cmluZywgcm9vdFVSTDogc3RyaW5nLCBmaWxlU3lzdGVtUGF0aDog
c3RyaW5nfX0gKi8KQEAgLTEwMyw4ICsxMDcsOCBAQCBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxl
U3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9pbm5lckFkZEZpbGVTeXN0
ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCiAgICAgewotICAgICAgICB0aGlzLl9maWxlU3lzdGVt
TWFwcGluZy5hZGRGaWxlU3lzdGVtTWFwcGluZyhmaWxlU3lzdGVtLmZpbGVTeXN0ZW1QYXRoKTsK
ICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbXNbZmlsZVN5c3RlbS5maWxlU3lzdGVtUGF0aF0gPSBm
aWxlU3lzdGVtOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtTWFwcGluZy5hZGRGaWxlU3lzdGVt
TWFwcGluZyhmaWxlU3lzdGVtLmZpbGVTeXN0ZW1QYXRoKTsKICAgICB9LAogCiAgICAgLyoqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNjRm
MGU5YTFhZjNiOTg1MTBmNTUyZWYzYTYwM2M0NTVlMWNjYzA0ZS4uZTFiNjJjYjUxN2NiNzRkODVk
MDZiODMwNTJhNjhkNGIwNmNiZjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNzgsNiArNzgsNyBAQAogICAgIDxmaWxlPkZpbGVTeXN0
ZW1NYXBwaW5nLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4K
ICAgICA8ZmlsZT5GaWxlU3lzdGVtVmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlU3lzdGVt
V29ya3NwYWNlUHJvdmlkZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVV0aWxzLmpzPC9maWxl
PgogICAgIDxmaWxlPkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qczwvZmlsZT4KICAgICA8
ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Xb3Jrc3BhY2UuanMKaW5kZXggODJhMmNkOTI2ODUwZTUzNTNkZDJkMjhlNTRkOWI4
YjZkZjU0MmE5MC4uY2Q0YWIyNTUwOGIyZjY3ZDU5OWQwMTE3Y2NiOGQwZDM5NWMzMmE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMKQEAg
LTI1Nyw2ICsyNTcsNyBAQCBXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzID0gewogICAgIENvbXBp
bGVyOiAiY29tcGlsZXIiLAogICAgIE5ldHdvcms6ICJuZXR3b3JrIiwKICAgICBTbmlwcGV0czog
InNuaXBwZXRzIiwKKyAgICBGaWxlU3lzdGVtOiAiZmlsZXN5c3RlbSIKIH0KIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggMTk5MWE2
MmIxNTA0ZmFiMTM0NzAwZTE3MWQxZTNjYTQyNDYwNGQyYy4uYWM5NWYyZDMzNzAxYmFlMDNjN2U1
N2UyOGVlNjBlNDEzNmJjOTQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9leHRlcm5zLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvZXh0ZXJucy5qcwpAQCAtMTQ0LDYgKzE0NCwxMSBAQCBET01BcHBsaWNhdGlvbkNhY2hl
LnByb3RvdHlwZS5PQlNPTEVURSA9IDU7CiAgKi8KIGZ1bmN0aW9uIERPTUZpbGVTeXN0ZW0oKSB7
fQogCisvKioKKyAqIEB0eXBlIHtEaXJlY3RvcnlFbnRyeX0KKyAqLworRE9NRmlsZVN5c3RlbS5w
cm90b3R5cGUucm9vdCA9IG51bGw7CisKIC8qKiBAdHlwZSB7Tm9kZX0gKi8KIFJhbmdlLnByb3Rv
dHlwZS5zdGFydENvbnRhaW5lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMDA1NDdiMDhmZjJiYjJkM2E3YmQ2NGIxZjU5
NmVmNDdmYTg5NjJlNi4uNTQ2MTFjZGQ1OWI0MjRkODJkYjVhNzlmY2I1MzAyNzY4NTljYzBlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCkBAIC0xMzcsOCArMTM3LDkgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJMaW5raWZpZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJlc2VudGF0aW9u
Q29uc29sZU1lc3NhZ2VIZWxwZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Iklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtV29ya3Nw
YWNlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkZpbGVTeXN0ZW1NYXBwaW5nLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZU1hcHBp
bmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IldvcmtzcGFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBmMzliYzZk
Njg2ZWEwZGQyYWY3OGM1M2M1MTk4NzYyMTY5MWIxMWE4Li43M2QzZWNlNWY4MjgwMDFjOTE2N2Iy
ZDRmN2YzZTEwZWQxNWJiZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDMwLDIxICs0MzAsMjQgQEAgV2ViSW5zcGVjdG9yLl9k
b0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rpb24oKQogICAgIHRoaXMub3BlbkFu
Y2hvckxvY2F0aW9uUmVnaXN0cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeShv
cGVuQW5jaG9yTG9jYXRpb25TZXR0aW5nKTsKICAgICB0aGlzLm9wZW5BbmNob3JMb2NhdGlvblJl
Z2lzdHJ5LnJlZ2lzdGVySGFuZGxlcihhdXRvc2VsZWN0UGFuZWwsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZmFsc2U7IH0pOwogCi0gICAgdGhpcy5pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwoKTsKKyAgICB0aGlzLndvcmtzcGFj
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CisgICAgdGhpcy53b3Jrc3BhY2VDb250
cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVyKHRoaXMud29ya3Nw
YWNlKTsKKworICAgIHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVj
dG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsKHRoaXMud29ya3NwYWNlKTsKICAgICB0aGlzLmlz
b2xhdGVkRmlsZVN5c3RlbURpc3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLklzb2xhdGVkRmls
ZVN5c3RlbURpc3BhdGNoZXIodGhpcy5pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCk7CiAgICAgdGhp
cy5maWxlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcodGhpcy5pc29sYXRl
ZEZpbGVTeXN0ZW1Nb2RlbC5tYXBwaW5nKCkpOwotICAgIHRoaXMud29ya3NwYWNlID0gbmV3IFdl
Ykluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKwogICAgIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3Zp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih0aGlzLndvcmtz
cGFjZSk7CiAgICAgdGhpcy53b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVj
dE5hbWVzLk5ldHdvcmssIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKLSAgICB0aGlz
LndvcmtzcGFjZUNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZUNvbnRyb2xs
ZXIodGhpcy53b3Jrc3BhY2UpOworICAgIG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNl
Q29kZVByb3ZpZGVyKHRoaXMud29ya3NwYWNlLCB0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRl
cik7CiAKICAgICB0aGlzLmJyZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50TWFuYWdlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtwb2ludHMsIHRoaXMuZGVi
dWdnZXJNb2RlbCwgdGhpcy53b3Jrc3BhY2UpOwogCiAgICAgdGhpcy5zY3JpcHRTbmlwcGV0TW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbCh0aGlzLndvcmtzcGFjZSk7
CisKICAgICBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh0aGlzLndvcmtz
cGFjZSwgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwogICAgIHRoaXMubGl2ZUVkaXRT
dXBwb3J0ID0gbmV3IFdlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQodGhpcy53b3Jrc3BhY2Up
OwogICAgIHRoaXMuc3R5bGVDb250ZW50QmluZGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVD
b250ZW50QmluZGluZyh0aGlzLmNzc01vZGVsKTsKLSAgICBuZXcgV2ViSW5zcGVjdG9yLk5ldHdv
cmtVSVNvdXJjZUNvZGVQcm92aWRlcih0aGlzLndvcmtzcGFjZSwgdGhpcy5uZXR3b3JrV29ya3Nw
YWNlUHJvdmlkZXIpOwogICAgIG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyh0
aGlzLndvcmtzcGFjZSk7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdz
LnNhc3MuaXNFbmFibGVkKCkpCiAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU0FTU1NvdXJjZU1h
cHBpbmcodGhpcy53b3Jrc3BhY2UsIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmF2aWdhdG9yVmll
dy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdmlnYXRvclZpZXcu
Y3NzCmluZGV4IGZiYzBmYWU1MTUwM2UzMTk2YzhhN2NkMmQxNGYyNTU2ZGNmMjEzODYuLjc5Mzk2
ODk5MDFmODUwNzliYTVjZmI1YmQ5MWFiMmU0NWIyZmExNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmF2aWdhdG9yVmlldy5jc3MKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9uYXZpZ2F0b3JWaWV3LmNzcwpAQCAtNDgsNiAr
NDgsMTAgQEAKICAgICBjb250ZW50OiB1cmwoSW1hZ2VzL3Jlc291cmNlRG9jdW1lbnRJY29uLnBu
Zyk7CiB9CiAKKy5uYXZpZ2F0b3Itb3RoZXItdHJlZS1pdGVtIC5pY29uIHsKKyAgICBjb250ZW50
OiB1cmwoSW1hZ2VzL3Jlc291cmNlUGxhaW5JY29uLnBuZyk7Cit9CisKIC5uYXZpZ2F0b3IgbGkg
ewogICAgIGhlaWdodDogMTdweDsKICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJi
M2Q2MzE5YTFiMWI2Yzg0ZGYzNmM3MTFhYTU3MjIxYzdmMGU1MzIuLjkwMzk2YmZmNzBmZjlkMTE3
ZTNiMDUwOGNhYjkwY2RkZGVlNDc0YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0x
NiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBJbnRyb2R1Y2UgRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyIHRvIGFsbG93
IHNob3dpbmcgZmlsZXMgZnJvbSBmaWxlIHN5c3RlbSBpbiB3b3Jrc3BhY2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9maWxlLW1h
cHBpbmctZXhwZWN0ZWQudHh0OgorCiAyMDEzLTAxLTE2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNl
cUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29va2llcyB3aXRoIGVt
cHR5IHZhbHVlIGFyZSBwYXJzZWQgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9maWxlLW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2ZpbGUtbWFwcGluZy1leHBlY3RlZC50eHQKaW5kZXggYWFlOTZjNGU0M2EwMjNjNGI5ZDU1
ZjBkYjkzNGZmNmQyY2U1NGU3Yy4uN2QzZDZhZmYxNmYwYjFiZjVhNWQ1ODMzMzQ5OTAxNTAxMzNj
NmZhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2ZpbGUtbWFwcGluZy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2ZpbGUtbWFwcGluZy1leHBlY3Rl
ZC50eHQKQEAgLTEwLDcgKzEwLDcgQEAgaHR0cDovL3d3dy5leGFtcGxlLmNvbQogaHR0cDovL3d3
dy5leGFtcGxlLmNvbS8KIGh0dHA6Ly9sb2NhbGhvc3QvaW5kZXguaHRtbAogaHR0cDovL2xvY2Fs
aG9zdC9mb28vaW5kZXguaHRtbAotbnVsbAotbnVsbAorCisKIEFsbCBtYXBwaW5ncyB3ZXJlIGNv
cnJlY3QuCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183139</attachid>
            <date>2013-01-17 01:06:40 -0800</date>
            <delta_ts>2013-01-17 04:31:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107021-20130117130340.patch</filename>
            <type>text/plain</type>
            <size>31435</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkyZmI3MDU5M2M3OGI5
ZDRjZDE5NjczNDU5NmFmOGU3NDQxZDI3Ni4uZmYwYTRkYWYwNTFjZDNhNDRjYzg4ZmE2MjhiNTg2
MTJhNmMxNDI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDEzLTAxLTE2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBGaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIgdG8gYWxsb3cgc2hvd2lu
ZyBmaWxlcyBmcm9tIGZpbGUgc3lzdGVtIGluIHdvcmtzcGFjZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzAyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEZpbGVTeXN0ZW1Xb3Jrc3BhY2VQ
cm92aWRlciB0aGF0IHBvcHVsYXRlcyB3b3Jrc3BhY2Ugd2l0aCBmaWxlcworICAgICAgICBsb2Fk
ZWQgZnJvbSBmaWxlIHN5c3RlbXMgcmVnaXN0ZXJlZCBpbiBGaWxlU3lzdGVtTWFwcGluZyBhbmQg
bGlzdGVucworICAgICAgICBmb3IgRmlsZVN5c3RlbUFkZGVkIC8gRmlsZVN5c3RlbVJlbW92ZWQg
ZXZlbnRzIHRvIHVwZGF0ZSB3b3Jrc3BhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RmlsZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90
eXBlLnVybEZvclVSSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGlu
Z0VudHJ5LnByb3RvdHlwZS51cmxGb3JVUkkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1hcHBpbmcucHJvdG90eXBlLnVyaUZvclBhdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1NYXBwaW5nLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmdJbXBsKToKKyAgICAg
ICAgKGdldCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmdJbXBsLnByb3RvdHlwZS51cmlG
b3JQYXRoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3Bh
Y2VQcm92aWRlci5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29s
YXRlZEZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwucHJvdG90eXBlLl9pbm5lckFkZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dv
cmtzcGFjZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL25hdmlnYXRvclZpZXcuY3NzOgorICAgICAgICAoLm5hdmlnYXRvci1vdGhlci10cmVl
LWl0ZW0gLmljb24pOgorCisyMDEzLTAxLTE2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVJU291cmNlQ29kZSBzY3JpcHRG
aWxlIC8gc3R5bGVGaWxlIHNob3VsZCBiZSByZXNldCBvbiBuYXZpZ2F0aW9uIChkZWJ1Z2dlciBv
ciBjc3MgbW9kZWwgcmVzZXQpLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA3MDA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMWMzZjk5NzUyODhlMmQy
NzgxOWQ0MzlmYzNiZjkwZWY4OTIzMzRhLi40OGZlOWE1NmQzYWJjMmY3YmVmYjI0MjU1Y2Q0Nzcz
YjliN2FhNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MTUzLDYgKzUxNTMsNyBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxNjU2ZTUzNjE2NjkyMzAyMzIzNTgxNDY2ZjZm
Mjk3NDNhZWY0MDVkLi4wYzA1ZWIxMTE1MWQ2ZWQwOWU4NmMzNDM0Y2UyODk3ZThlODJjZmMxIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzY4
NDUsNiArNzY4NDUsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVdvcmtzcGFjZVBy
b3ZpZGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlVXRpbHMuanMiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
aW5kZXggMWU0ODIwNTcyMDU4YmVlNDk5ZmFjZjVjODJlZTY2MWNhOGYzNGMyMS4uMDZlMjliM2U4
ZGVjZjYxNmQ5ZGIzMWNhYjU3MzRjOGVlNjlmYmMzOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtNzksNiArNzksNyBAQCBtb2R1bGVzID0g
WwogICAgICAgICAgICAgIkZpbGVNYXBwaW5nLmpzIiwKICAgICAgICAgICAgICJGaWxlU3lzdGVt
TWFwcGluZy5qcyIsCiAgICAgICAgICAgICAiRmlsZVN5c3RlbU1vZGVsLmpzIiwKKyAgICAgICAg
ICAgICJGaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIuanMiLAogICAgICAgICAgICAgIkZpbGVV
dGlscy5qcyIsCiAgICAgICAgICAgICAiSEFSRW50cnkuanMiLAogICAgICAgICAgICAgIkluZGV4
ZWREQk1vZGVsLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVNYXBwaW5nLmpzCmluZGV4IGRlNWVkZDMwN2NjMDliMjQ3MTkzNDBiYWYxM2VlZjM3NTE0
MWNmYzAuLjY4NjFkMDAyYjkzOWRhNjY4Njk5OTNiNTE4YWNhMmQ3ZTYzYTFkYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qcwpAQCAt
NzUsNyArNzUsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90eXBlID0gewogICAg
IAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKLSAgICAgKiBAcmV0dXJuIHs/
c3RyaW5nfQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KICAgICB1cmxGb3JVUkk6
IGZ1bmN0aW9uKHVyaSkKICAgICB7CkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5GaWxl
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fbWFwcGluZ0VudHJp
ZXNbaV0ubWF0Y2hlc1VSSSh1cmkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXBw
aW5nRW50cmllc1tpXS51cmxGb3JVUkkodXJpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgcmV0dXJuICIiOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE4MSwxMyAr
MTgxLDEzIEBAIFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnkucHJvdG90eXBl
ID0gewogICAgIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKLSAgICAgKiBA
cmV0dXJuIHs/c3RyaW5nfQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KICAgICB1
cmxGb3JVUkk6IGZ1bmN0aW9uKHVyaSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLm1hdGNoZXNV
UkkodXJpKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl91cmxQcmVmaXggKyB1cmkuc3Vic3Ry
aW5nKHRoaXMuX3VyaVByZWZpeC5sZW5ndGgpOwotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
ICAgcmV0dXJuICIiOwogICAgIH0sCiAgICAgCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1NYXBwaW5nLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTWFwcGluZy5qcwppbmRleCBm
OGVmYmY5ODJiZjk0ZGRjZGI4N2JkYzY2N2NlOTNjMzc1ZjE2NDRhLi4zYjExZTUwMmQ0MWIyZWFm
MWY4YmY4ZWE4NDE5NjI0MDc0OWJkNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1NYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanMKQEAgLTQyLDYgKzQyLDEx
IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvciA9IGZ1bmN0
aW9uKGZpbGVTeXN0ZW1QYXRoLCBmaWxlUGF0CiAgICAgdGhpcy5maWxlUGF0aCA9IGZpbGVQYXRo
OwogfQogCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmcuRXZlbnRzID0geworICAgIEZp
bGVTeXN0ZW1BZGRlZDogIkZpbGVTeXN0ZW1BZGRlZCIsCisgICAgRmlsZVN5c3RlbVJlbW92ZWQ6
ICJGaWxlU3lzdGVtUmVtb3ZlZCIKK30KKwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5n
LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0K
QEAgLTY0LDcgKzY5LDIxIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKICAgICAgKiBAcmV0dXJuIHs/c3Ry
aW5nfQogICAgICAqLwotICAgIHVyaUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfQorICAgIHVy
aUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBldmVudFR5cGUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5F
dmVudCl9IGxpc3RlbmVyCisgICAgICogQHBhcmFtIHtPYmplY3Q9fSB0aGlzT2JqZWN0CisgICAg
ICovCisgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwg
dGhpc09iamVjdCkgeyB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50
VHlwZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkV2ZW50KX0gbGlzdGVu
ZXIKKyAgICAgKiBAcGFyYW0ge09iamVjdD19IHRoaXNPYmplY3QKKyAgICAgKi8KKyAgICByZW1v
dmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0
KSB7IH0KIH0KIAogLyoqCkBAIC03NCw2ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGlu
Z0ltcGwgPSBmdW5jdGlvbigpCiB7CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogICAgIHRoaXMuX2ZpbGVTeXN0ZW1NYXBwaW5nU2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5jcmVhdGVTZXR0aW5nKCJmaWxlU3lzdGVtTWFwcGluZyIsIHt9KTsKICAgICAvKiogQHR5
cGUgeyFPYmplY3QuPHN0cmluZywgc3RyaW5nPn0gKi8KICAgICB0aGlzLl9tYXBwZWROYW1lcyA9
IHRoaXMuX2ZpbGVTeXN0ZW1NYXBwaW5nU2V0dGluZy5nZXQoKTsKQEAgLTkyLDYgKzExMiw3IEBA
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZ0ltcGwucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIgdW5pcXVlTWFwcGVkTmFtZSA9IHRoaXMuX3VuaXF1ZU1hcHBlZE5hbWUobWFwcGVkTmFt
ZSk7CiAgICAgICAgIHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVTeXN0ZW1QYXRoXSA9IG1hcHBlZE5h
bWU7CiAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1NYXBwaW5nU2V0dGluZy5zZXQodGhpcy5fbWFw
cGVkTmFtZXMpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmcuRXZlbnRzLkZpbGVTeXN0ZW1BZGRlZCwgZmlsZVN5c3Rl
bVBhdGgpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTExMyw4ICsxMzQsMTAgQEAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1NYXBwaW5nSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmVt
b3ZlRmlsZVN5c3RlbU1hcHBpbmc6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoKQogICAgIHsKKyAg
ICAgICAgdmFyIHVyaVByZWZpeCA9IHRoaXMuX3VyaVByZWZpeEZvck1hcHBlZE5hbWUodGhpcy5f
bWFwcGVkTmFtZXNbZmlsZVN5c3RlbVBhdGhdKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX21hcHBl
ZE5hbWVzW2ZpbGVTeXN0ZW1QYXRoXTsKICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1hcHBpbmdT
ZXR0aW5nLnNldCh0aGlzLl9tYXBwZWROYW1lcyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZy5FdmVudHMuRmlsZVN5
c3RlbVJlbW92ZWQsIGZpbGVTeXN0ZW1QYXRoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNzQs
NSArMTk3LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5nSW1wbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAg
fQorICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMDdjOWJi
ZWE2ODFiMDhmYTc3ODhmOTg4OGJhYzU2YmJkMDM5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRl
ci5qcwpAQCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50
cyB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyfQorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5PYmplY3R9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1N
b2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Xb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsKQor
eworICAgIHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsID0gaXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWw7CisgICAgdGhpcy5fZmlsZXMgPSB7fTsKKworICAgIHRoaXMuX3BvcHVsYXRlKCk7Cisg
ICAgdGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5nLkV2ZW50cy5GaWxlU3lzdGVtQWRkZWQs
IHRoaXMuX2ZpbGVTeXN0ZW1BZGRlZCwgdGhpcyk7CisgICAgdGhpcy5faXNvbGF0ZWRGaWxlU3lz
dGVtTW9kZWwubWFwcGluZygpLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1NYXBwaW5nLkV2ZW50cy5GaWxlU3lzdGVtUmVtb3ZlZCwgdGhpcy5fZmlsZVN5c3RlbVJlbW92
ZWQsIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAg
ICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLGJvb2xlYW4sc3RyaW5nKX0gY2FsbGJhY2sKKyAg
ICAgKi8KKyAgICByZXF1ZXN0RmlsZUNvbnRlbnQ6IGZ1bmN0aW9uKHVyaSwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSB0aGlzLl9pc29sYXRlZEZpbGVTeXN0
ZW1Nb2RlbC5tYXBwaW5nKCkuZmlsZUZvclVSSSh1cmkpOworICAgICAgICBpZiAoIWZpbGVEZXNj
cmlwdG9yKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJObyBtYXRjaGluZyBmaWxlIGZv
ciB1cmk6ICIgKyB1cmkpOworICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmFsc2UsIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVR5cGVzLk90aGVyLmNhbm9uaWNhbE1pbWVUeXBlKCkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VXRpbHMucmVxdWVzdEZpbGVDb250ZW50KHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBm
aWxlRGVzY3JpcHRvci5maWxlU3lzdGVtUGF0aCwgZmlsZURlc2NyaXB0b3IuZmlsZVBhdGgsIGlu
bmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBpbm5l
ckNhbGxiYWNrKGNvbnRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50VHlw
ZSA9IHRoaXMuX2NvbnRlbnRUeXBlRm9yUGF0aChmaWxlRGVzY3JpcHRvci5maWxlUGF0aCk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhjb250ZW50LCBmYWxzZSwgY29udGVudFR5cGUuY2Fub25pY2Fs
TWltZVR5cGUoKSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IHVyaQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdDb250ZW50CisgICAgICog
QHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBzZXRGaWxl
Q29udGVudDogZnVuY3Rpb24odXJpLCBuZXdDb250ZW50LCBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIHZhciBmaWxlRGVzY3JpcHRvciA9IHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLm1h
cHBpbmcoKS5maWxlRm9yVVJJKHVyaSk7CisgICAgICAgIGlmICghZmlsZURlc2NyaXB0b3IpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5vIG1hdGNoaW5nIGZpbGUgZm9yIHVyaTogIiAr
IHVyaSk7CisgICAgICAgICAgICBjYWxsYmFjaygiIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5zZXRGaWxlQ29u
dGVudCh0aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZURlc2NyaXB0b3IuZmlsZVN5
c3RlbVBhdGgsIGZpbGVEZXNjcmlwdG9yLmZpbGVQYXRoLCBuZXdDb250ZW50LCBjYWxsYmFjay5i
aW5kKHRoaXMsICIiKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB1cmkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKKyAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGNhc2VTZW5zaXRpdmUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUmVnZXgKKyAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLlNl
YXJjaE1hdGNoPil9IGNhbGxiYWNrCisgICAgICovCisgICAgc2VhcmNoSW5GaWxlQ29udGVudDog
ZnVuY3Rpb24odXJpLCBxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICBjYWxsYmFjayhbXSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBwYXRoCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlc291cmNl
VHlwZX0KKyAgICAgKi8KKyAgICBfY29udGVudFR5cGVGb3JQYXRoOiBmdW5jdGlvbihwYXRoKQor
ICAgIHsKKyAgICAgICAgdmFyIHNwbGl0dGVkUGF0aCA9IHBhdGguc3BsaXQoIi8iKTsKKyAgICAg
ICAgdmFyIGZpbGVOYW1lID0gc3BsaXR0ZWRQYXRoW3NwbGl0dGVkUGF0aC5sZW5ndGggLSAxXTsK
KyAgICAgICAgdmFyIGV4dGVuc2lvbkluZGV4ID0gZmlsZU5hbWUubGFzdEluZGV4T2YoIi4iKTsK
KyAgICAgICAgdmFyIGV4dGVuc2lvbiA9ICIiOworICAgICAgICBpZiAoZXh0ZW5zaW9uSW5kZXgg
IT09IC0xKQorICAgICAgICAgICAgZXh0ZW5zaW9uID0gZmlsZU5hbWUuc3Vic3RyaW5nKGV4dGVu
c2lvbkluZGV4ICsgMSk7CisgICAgICAgIHZhciBjb250ZW50VHlwZSA9IFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLk90aGVyOworICAgICAgICBpZiAoZXh0ZW5zaW9uID09PSAianMiKQorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdDsKKyAgICAg
ICAgaWYgKGV4dGVuc2lvbiA9PT0gImNzcyIpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldDsKKyAgICAgICAgaWYgKGV4dGVuc2lvbiA9PT0g
Imh0bWwiKQorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRv
Y3VtZW50OworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuT3RoZXI7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBl
dmVudAorICAgICAqLworICAgIF9maWxlU3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1QYXRoID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChl
dmVudC5kYXRhKTsKKyAgICAgICAgdGhpcy5fYWRkRmlsZVN5c3RlbShmaWxlU3lzdGVtUGF0aCk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBl
dmVudAorICAgICAqLworICAgIF9maWxlU3lzdGVtUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB2YXIgZmlsZVN5c3RlbVBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8g
KGV2ZW50LmRhdGEpOworICAgICAgICBmb3IgKHZhciB1cmkgaW4gdGhpcy5fZmlsZXNbZmlsZVN5
c3RlbVBhdGhdKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRmlsZShmaWxlU3lzdGVtUGF0aCwg
dXJpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVTeXN0
ZW1QYXRoCisgICAgICovCisgICAgX2FkZEZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Q
YXRoKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0
RmlsZXNSZWN1cnNpdmUodGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1Q
YXRoLCAiIiwgZmlsZXNMb2FkZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgZnVuY3Rpb24gZmls
ZXNMb2FkZWQoZmlsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZmlsZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgdXJpID0gdGhpcy5f
aXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpLnVyaUZvckZpbGUobmV3IFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvcihmaWxlU3lzdGVtUGF0aCwgZmls
ZXNbaV0pKTsKKyAgICAgICAgICAgICAgICB2YXIgY29udGVudFR5cGUgPSB0aGlzLl9jb250ZW50
VHlwZUZvclBhdGgoZmlsZXNbaV0pOworICAgICAgICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNw
ZWN0b3IuZmlsZU1hcHBpbmcudXJsRm9yVVJJKHVyaSk7CisgICAgICAgICAgICAgICAgdmFyIGZp
bGVEZXNjcmlwdG9yID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlRGVzY3JpcHRvcih1cmksICJmaWxl
Oi8vIiArIGZpbGVTeXN0ZW1QYXRoICsgZmlsZXNbaV0sIHVybCwgY29udGVudFR5cGUsIHRydWUp
OworICAgICAgICAgICAgICAgIHRoaXMuX2FkZEZpbGUoZmlsZVN5c3RlbVBhdGgsIGZpbGVEZXNj
cmlwdG9yKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRmlsZURlc2NyaXB0b3J9IGZpbGVEZXNjcmlwdG9yCisgICAgICovCisgICAgX2Fk
ZEZpbGU6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoLCBmaWxlRGVzY3JpcHRvcikKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fZmlsZXNbZmlsZVN5c3RlbVBhdGhdKQorICAgICAgICAgICAgdGhp
cy5fZmlsZXNbZmlsZVN5c3RlbVBhdGhdID0ge307CisgICAgICAgIHRoaXMuX2ZpbGVzW2ZpbGVT
eXN0ZW1QYXRoXVtmaWxlRGVzY3JpcHRvci51cmldID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2ZW50
cy5GaWxlQWRkZWQsIGZpbGVEZXNjcmlwdG9yKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVy
aQorICAgICAqLworICAgIF9yZW1vdmVGaWxlOiBmdW5jdGlvbihmaWxlU3lzdGVtUGF0aCwgdXJp
KQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzW2ZpbGVTeXN0ZW1QYXRoXVt1cmld
OworICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5fZmlsZXNbZmlsZVN5c3RlbVBhdGhdKS5s
ZW5ndGggPT09IDApCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXNbZmlsZVN5c3RlbVBh
dGhdOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlUHJvdmlkZXIuRXZlbnRzLkZpbGVSZW1vdmVkLCB1cmkpOworICAgIH0sCisKKyAg
ICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlU3lzdGVtUGF0
aHMgPSB0aGlzLl9pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5tYXBwaW5nKCkuZmlsZVN5c3RlbVBh
dGhzKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZVN5c3RlbVBhdGhzLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgIHRoaXMuX2FkZEZpbGVTeXN0ZW0oZmlsZVN5c3RlbVBhdGhz
W2ldKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRl
ci5FdmVudHMuUmVzZXQsIG51bGwpOworICAgICAgICB0aGlzLl9wb3B1bGF0ZSgpOworICAgIH0s
CisgICAgCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQorfQor
CisvKioKKyAqIEB0eXBlIHs/V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRl
cn0KKyAqLworV2ViSW5zcGVjdG9yLmZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlciA9IG51bGw7
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRp
bHMgPSBmdW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJy
b3JIYW5kbGVyID0gZnVuY3Rpb24oZXJyb3IpCit7CisgICAgdmFyIG1zZzsKKyAgICBzd2l0Y2gg
KGVycm9yLmNvZGUpIHsKKyAgICBjYXNlIEZpbGVFcnJvci5RVU9UQV9FWENFRURFRF9FUlI6Cisg
ICAgICAgIG1zZyA9ICJRVU9UQV9FWENFRURFRF9FUlIiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSOgorICAgICAgICBtc2cgPSAiTk9UX0ZPVU5EX0VS
UiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUjoKKyAg
ICAgICAgbXNnID0gIlNFQ1VSSVRZX0VSUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmls
ZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjoKKyAgICAgICAgbXNnID0gIklOVkFMSURf
TU9ESUZJQ0FUSU9OX0VSUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9yLklO
VkFMSURfU1RBVEVfRVJSOgorICAgICAgICBtc2cgPSAiSU5WQUxJRF9TVEFURV9FUlIiOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtc2cgPSAiVW5rbm93biBFcnJvciI7
CisgICAgICAgIGJyZWFrOworICAgIH07CisKKyAgICBjb25zb2xlLmVycm9yKCJGaWxlIHN5c3Rl
bSBlcnJvcjogIiArIG1zZyk7Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0g
e3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oRE9NRmlsZVN5c3Rl
bSl9IGNhbGxiYWNrCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZp
bGVTeXN0ZW0gPSBmdW5jdGlvbihpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBh
dGgsIGNhbGxiYWNrKQoreworICAgIGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RET01G
aWxlU3lzdGVtKGZpbGVTeXN0ZW1QYXRoLCBjYWxsYmFjayk7Cit9CisKKy8qKgorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsCisgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBwYXRoCisgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxzdHJpbmc+KX0gY2FsbGJhY2sK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZXNSZWN1cnNpdmUg
PSBmdW5jdGlvbihpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIHBhdGgs
IGNhbGxiYWNrKQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZp
bGVTeXN0ZW0oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lz
dGVtTG9hZGVkKTsKKworICAgIHZhciBmaWxlU3lzdGVtOworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7RE9NRmlsZVN5c3RlbX0gZnMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtTG9h
ZGVkKGZzKQorICAgIHsKKyAgICAgICAgZmlsZVN5c3RlbSA9IGZzOworICAgICAgICBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZXF1ZXN0RW50cmllcyhmaWxlU3lzdGVtLCBwYXRoLCBp
bm5lckNhbGxiYWNrKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIGNh
bGxiYWNrc0xlZnQgPSAxOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPEZpbGVFbnRy
eT59IGVudHJpZXMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVudHJpZXMp
CisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaV07CisgICAgICAgICAgICBpZiAo
IWVudHJ5LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVudHJ5LmZ1
bGxQYXRoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrc0xl
ZnQrKzsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZXF1
ZXN0RW50cmllcyhmaWxlU3lzdGVtLCBlbnRyeS5mdWxsUGF0aCwgaW5uZXJDYWxsYmFjayk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEtLWNhbGxiYWNrc0xlZnQpCisg
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgIH0KK30KKworLyoqCisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAorICogQHBhcmFtIHtzdHJp
bmd9IHBhdGgKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sKKyAqLworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZUNvbnRlbnQgPSBmdW5jdGlvbihp
c29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIHBhdGgsIGNhbGxiYWNrKQor
eworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVTeXN0ZW0oaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lzdGVtTG9hZGVkKTsK
KworICAgIHZhciBmaWxlU3lzdGVtOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NRmlsZVN5
c3RlbX0gZnMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtTG9hZGVkKGZzKQorICAg
IHsKKyAgICAgICAgZnMucm9vdC5nZXRGaWxlKHBhdGgsIG51bGwsIGZpbGVFbnRyeUxvYWRlZCwg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAgIH0KKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQorICAgICAqLworICAgIGZ1bmN0
aW9uIGZpbGVFbnRyeUxvYWRlZChlbnRyeSkKKyAgICB7CisgICAgICAgIGVudHJ5LmZpbGUoZmls
ZUxvYWRlZCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAg
IH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IUJsb2J9IGZpbGUKKyAgICAgKi8KKyAgICBm
dW5jdGlvbiBmaWxlTG9hZGVkKGZpbGUpCisgICAgeworICAgICAgICB2YXIgcmVhZGVyID0gbmV3
IEZpbGVSZWFkZXIoKTsKKyAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IHJlYWRlckxvYWRFbmQ7
CisgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpOworICAgIH0KKworICAgIC8qKgorICAg
ICAqIEB0aGlzIHtGaWxlUmVhZGVyfQorICAgICAqLworICAgIGZ1bmN0aW9uIHJlYWRlckxvYWRF
bmQoKQorICAgIHsKKyAgICAgICAgY2FsbGJhY2soLyoqIEB0eXBlIHtzdHJpbmd9ICovICh0aGlz
LnJlc3VsdCkpOworICAgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29s
YXRlZEZpbGVTeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7
c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAorICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAqIEBwYXJh
bSB7c3RyaW5nfSBjb250ZW50CisgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrCisgKi8K
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuc2V0RmlsZUNvbnRlbnQgPSBmdW5jdGlvbihp
c29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIHBhdGgsIGNvbnRlbnQsIGNh
bGxiYWNrKQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVT
eXN0ZW0oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lzdGVt
TG9hZGVkKTsKKworICAgIHZhciBmaWxlU3lzdGVtOworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
RE9NRmlsZVN5c3RlbX0gZnMKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBmaWxlU3lzdGVtTG9hZGVk
KGZzKQorICAgIHsKKyAgICAgICAgZnMucm9vdC5nZXRGaWxlKHBhdGgsIG51bGwsIGZpbGVFbnRy
eUxvYWRlZCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAg
IH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQorICAgICAqLwor
ICAgIGZ1bmN0aW9uIGZpbGVFbnRyeUxvYWRlZChlbnRyeSkKKyAgICB7CisgICAgICAgIGVudHJ5
LmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyQ3JlYXRlZCwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1V
dGlscy5lcnJvckhhbmRsZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Rmls
ZVdyaXRlcn0gZmlsZVdyaXRlcgorICAgICAqLworICAgIGZ1bmN0aW9uIGZpbGVXcml0ZXJDcmVh
dGVkKGZpbGVXcml0ZXIpCisgICAgeworICAgICAgICBmaWxlV3JpdGVyLm9uZXJyb3IgPSBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLmVycm9ySGFuZGxlcjsKKyAgICAgICAgZmlsZVdyaXRl
ci5vbndyaXRlZW5kID0gZmlsZVRydW5jYXRlZDsKKyAgICAgICAgZmlsZVdyaXRlci50cnVuY2F0
ZSgwKTsKKworICAgICAgICBmdW5jdGlvbiBmaWxlVHJ1bmNhdGVkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gd3JpdGVyRW5kOworICAgICAgICAgICAg
dmFyIGJsb2IgPSBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogInRleHQvcGxhaW4iIH0pOwor
ICAgICAgICAgICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHdyaXRlckVuZCgpCisgICAgeworICAgICAgICBjYWxsYmFjaygpOworICAg
IH0KK30KKworLyoqCisgKiBAcGFyYW0ge0RpcmVjdG9yeUVudHJ5fSByb290CisgKiBAcGFyYW0g
e0FycmF5LjxzdHJpbmc+fSBmb2xkZXJzCisgKiBAcGFyYW0ge09iamVjdH0gZmxhZ3MKKyAqIEBw
YXJhbSB7ZnVuY3Rpb24oRGlyZWN0b3J5RW50cnkpfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVV0aWxzLl9nZXREaXJlY3RvcnkgPSBmdW5jdGlvbihyb290LCBmb2xkZXJz
LCBmbGFncywgY2FsbGJhY2spCit7CisgICAgd2hpbGUgKGZvbGRlcnNbMF0gPT0gIi4iIHx8IGZv
bGRlcnNbMF0gPT0gIiIpCisgICAgICAgIGZvbGRlcnMgPSBmb2xkZXJzLnNsaWNlKDEpOworICAg
IGlmICghZm9sZGVycy5sZW5ndGgpCisgICAgICAgIGNhbGxiYWNrKHJvb3QpOworICAgIGVsc2UK
KyAgICAgICAgcm9vdC5nZXREaXJlY3RvcnkoZm9sZGVyc1swXSwgZmxhZ3MsIGlubmVyQ2FsbGJh
Y2ssIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JIYW5kbGVyKTsKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7RGlyZWN0b3J5RW50cnl9IGRpckVudHJ5CisgICAgICovCisgICAg
ZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhkaXJFbnRyeSkKKyAgICB7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVXRpbHMuX2dldERpcmVjdG9yeShkaXJFbnRyeSwgZm9sZGVycy5zbGlj
ZSgxKSwgZmxhZ3MsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtEaXJl
Y3RvcnlFbnRyeX0gZGlyRW50cnkKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEZpbGVFbnRy
eT4pfSBjYWxsYmFjaworICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZWFkRGly
ZWN0b3J5ID0gZnVuY3Rpb24oZGlyRW50cnksIGNhbGxiYWNrKQoreworICAgIHZhciBkaXJSZWFk
ZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIoKTsKKyAgICB2YXIgZW50cmllcyA9IFtdOworCisg
ICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhyZXN1bHRzKQorICAgIHsKKyAgICAgICAgaWYgKCFy
ZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAgIGNhbGxiYWNrKGVudHJpZXMuc29ydCgpKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbnRyaWVzID0gZW50cmllcy5jb25jYXQodG9BcnJh
eShyZXN1bHRzKSk7CisgICAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoaW5uZXJDYWxs
YmFjaywgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworICAgICAg
ICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdG9BcnJheShsaXN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGxpc3QgfHwgW10sIDApOworICAgIH0g
ICAgCisKKyAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoaW5uZXJDYWxsYmFjaywgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJvckhhbmRsZXIpOworfQorCisvKioKKyAqIEBwYXJhbSB7
RE9NRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAqIEBw
YXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEZpbGVFbnRyeT4pfSBjYWxsYmFjaworICovCitXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZXF1ZXN0RW50cmllcyA9IGZ1bmN0aW9uKGZpbGVTeXN0
ZW0sIHBhdGgsIGNhbGxiYWNrKQoreworICAgIHZhciBmb2xkZXJzID0gcGF0aC5zcGxpdCgiLyIp
OworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuX2dldERpcmVjdG9yeShmaWxlU3lz
dGVtLnJvb3QsIGZvbGRlcnMsIG51bGwsIGlubmVyQ2FsbGJhY2spOworCisgICAgZnVuY3Rpb24g
aW5uZXJDYWxsYmFjayhkaXJFbnRyeSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVXRpbHMuX3JlYWREaXJlY3RvcnkoZGlyRW50cnksIGNhbGxiYWNrKQorICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5wcm90b3R5cGUgPSB7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbC5qcwppbmRleCBhZTc1ZTk1YzBmZGQ1YmY5MjQ3ZjZmYzdjYjZlYmU2NDVk
ZWEwZjYyLi5lYjg0ZWVlNDM1MjBmNTVjZWU2NzhjODU3Zjk5NTBhOWFkNjJhMWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWwuanMKQEAgLTMwLDggKzMwLDkgQEAKIAogLyoqCiAgKiBAY29uc3Ry
dWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29ya3NwYWNlCiAgKi8K
LVdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCA9IGZ1bmN0aW9uKCkKK1dlYklu
c3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKIHsK
ICAgICAvKiogQHR5cGUgeyFPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLklzb2xhdGVkRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0+fSAqLwogICAgIHRoaXMuX2ZpbGVTeXN0ZW1zID0ge307
CkBAIC00MSw2ICs0Miw5IEBAIFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCA9
IGZ1bmN0aW9uKCkKIAogICAgIGlmICh0aGlzLnN1cHBvcnRzRmlsZVN5c3RlbXMoKSkKICAgICAg
ICAgdGhpcy5fcmVxdWVzdEZpbGVTeXN0ZW1zKCk7CisKKyAgICB0aGlzLl9maWxlU3lzdGVtV29y
a3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92
aWRlcih0aGlzKTsKKyAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVj
dE5hbWVzLkZpbGVTeXN0ZW0sIHRoaXMuX2ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlcik7CiB9
CiAKIC8qKiBAdHlwZWRlZiB7e2ZpbGVTeXN0ZW1OYW1lOiBzdHJpbmcsIHJvb3RVUkw6IHN0cmlu
ZywgZmlsZVN5c3RlbVBhdGg6IHN0cmluZ319ICovCkBAIC0xMDMsOCArMTA3LDggQEAgV2ViSW5z
cGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICBfaW5uZXJBZGRGaWxlU3lzdGVtOiBmdW5jdGlvbihmaWxlU3lzdGVtKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fZmlsZVN5c3RlbU1hcHBpbmcuYWRkRmlsZVN5c3RlbU1hcHBpbmcoZmlsZVN5c3Rl
bS5maWxlU3lzdGVtUGF0aCk7CiAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zW2ZpbGVTeXN0ZW0u
ZmlsZVN5c3RlbVBhdGhdID0gZmlsZVN5c3RlbTsKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1h
cHBpbmcuYWRkRmlsZVN5c3RlbU1hcHBpbmcoZmlsZVN5c3RlbS5maWxlU3lzdGVtUGF0aCk7CiAg
ICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCmluZGV4IDY0ZjBlOWExYWYzYjk4NTEwZjU1MmVmM2E2MDNjNDU1ZTFjY2MwNGUu
LmUxYjYyY2I1MTdjYjc0ZDg1ZDA2YjgzMDUyYTY4ZDRiMDZjYmY2ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTc4LDYgKzc4LDcgQEAK
ICAgICA8ZmlsZT5GaWxlU3lzdGVtTWFwcGluZy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lz
dGVtTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8L2ZpbGU+Cisg
ICAgPGZpbGU+RmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzPC9maWxlPgogICAgIDxmaWxl
PkZpbGVVdGlscy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFs
b2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCmluZGV4IDgyYTJjZDkyNjg1
MGU1MzUzZGQyZDI4ZTU0ZDliOGI2ZGY1NDJhOTAuLmNkNGFiMjU1MDhiMmY2N2Q1OTlkMDExN2Nj
YjhkMGQzOTVjMzJhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV29ya3NwYWNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV29ya3NwYWNlLmpzCkBAIC0yNTcsNiArMjU3LDcgQEAgV2ViSW5zcGVjdG9yLnByb2plY3RO
YW1lcyA9IHsKICAgICBDb21waWxlcjogImNvbXBpbGVyIiwKICAgICBOZXR3b3JrOiAibmV0d29y
ayIsCiAgICAgU25pcHBldHM6ICJzbmlwcGV0cyIsCisgICAgRmlsZVN5c3RlbTogImZpbGVzeXN0
ZW0iCiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9leHRlcm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRl
cm5zLmpzCmluZGV4IDE5OTFhNjJiMTUwNGZhYjEzNDcwMGUxNzFkMWUzY2E0MjQ2MDRkMmMuLmFj
OTVmMmQzMzcwMWJhZTAzYzdlNTdlMjhlZTYwZTQxMzZiYzk0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTE0NCw2ICsxNDQsMTEgQEAg
RE9NQXBwbGljYXRpb25DYWNoZS5wcm90b3R5cGUuT0JTT0xFVEUgPSA1OwogICovCiBmdW5jdGlv
biBET01GaWxlU3lzdGVtKCkge30KIAorLyoqCisgKiBAdHlwZSB7RGlyZWN0b3J5RW50cnl9Cisg
Ki8KK0RPTUZpbGVTeXN0ZW0ucHJvdG90eXBlLnJvb3QgPSBudWxsOworCiAvKiogQHR5cGUge05v
ZGV9ICovCiBSYW5nZS5wcm90b3R5cGUuc3RhcnRDb250YWluZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDAwNTQ3YjA4
ZmYyYmIyZDNhN2JkNjRiMWY1OTZlZjQ3ZmE4OTYyZTYuLjU0NjExY2RkNTliNDI0ZDgyZGI1YTc5
ZmNiNTMwMjc2ODU5Y2MwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTM3LDggKzEzNyw5IEBAIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTGlua2lmaWVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlclNjcmlw
dE1hcHBpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJc29sYXRlZEZpbGVTeXN0ZW1N
b2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtTWFwcGluZy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSXNvbGF0ZWRGaWxl
U3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkZpbGVNYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJXb3Jrc3BhY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKaW5kZXggZjM5YmM2ZDY4NmVhMGRkMmFmNzhjNTNjNTE5ODc2MjE2OTFiMTFhOC4uNzNk
M2VjZTVmODI4MDAxYzkxNjdiMmQ0ZjdmM2UxMGVkMTViYmRiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQzMCwyMSArNDMwLDI0
IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9u
KCkKICAgICB0aGlzLm9wZW5BbmNob3JMb2NhdGlvblJlZ2lzdHJ5ID0gbmV3IFdlYkluc3BlY3Rv
ci5IYW5kbGVyUmVnaXN0cnkob3BlbkFuY2hvckxvY2F0aW9uU2V0dGluZyk7CiAgICAgdGhpcy5v
cGVuQW5jaG9yTG9jYXRpb25SZWdpc3RyeS5yZWdpc3RlckhhbmRsZXIoYXV0b3NlbGVjdFBhbmVs
LCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9KTsKIAotICAgIHRoaXMuaXNvbGF0ZWRGaWxl
U3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsKCk7
CisgICAgdGhpcy53b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOworICAg
IHRoaXMud29ya3NwYWNlQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlQ29u
dHJvbGxlcih0aGlzLndvcmtzcGFjZSk7CisKKyAgICB0aGlzLmlzb2xhdGVkRmlsZVN5c3RlbU1v
ZGVsID0gbmV3IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCh0aGlzLndvcmtz
cGFjZSk7CiAgICAgdGhpcy5pc29sYXRlZEZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gbmV3IFdlYklu
c3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMuaXNvbGF0ZWRGaWxlU3lz
dGVtTW9kZWwpOwogICAgIHRoaXMuZmlsZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVN
YXBwaW5nKHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpKTsKLSAgICB0aGlz
LndvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CisKICAgICB0aGlzLm5l
dHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNl
UHJvdmlkZXIodGhpcy53b3Jrc3BhY2UpOwogICAgIHRoaXMud29ya3NwYWNlLmFkZFByb2plY3Qo
V2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrLCB0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQ
cm92aWRlcik7Ci0gICAgdGhpcy53b3Jrc3BhY2VDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2VDb250cm9sbGVyKHRoaXMud29ya3NwYWNlKTsKKyAgICBuZXcgV2ViSW5zcGVj
dG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlcih0aGlzLndvcmtzcGFjZSwgdGhpcy5uZXR3
b3JrV29ya3NwYWNlUHJvdmlkZXIpOwogCiAgICAgdGhpcy5icmVha3BvaW50TWFuYWdlciA9IG5l
dyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmJy
ZWFrcG9pbnRzLCB0aGlzLmRlYnVnZ2VyTW9kZWwsIHRoaXMud29ya3NwYWNlKTsKIAogICAgIHRo
aXMuc2NyaXB0U25pcHBldE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9k
ZWwodGhpcy53b3Jrc3BhY2UpOworCiAgICAgbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlw
dE1hcHBpbmcodGhpcy53b3Jrc3BhY2UsIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsK
ICAgICB0aGlzLmxpdmVFZGl0U3VwcG9ydCA9IG5ldyBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBw
b3J0KHRoaXMud29ya3NwYWNlKTsKICAgICB0aGlzLnN0eWxlQ29udGVudEJpbmRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlN0eWxlQ29udGVudEJpbmRpbmcodGhpcy5jc3NNb2RlbCk7Ci0gICAgbmV3
IFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIodGhpcy53b3Jrc3BhY2Us
IHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKICAgICBuZXcgV2ViSW5zcGVjdG9yLlN0
eWxlc1NvdXJjZU1hcHBpbmcodGhpcy53b3Jrc3BhY2UpOwogICAgIGlmIChXZWJJbnNwZWN0b3Iu
ZXhwZXJpbWVudHNTZXR0aW5ncy5zYXNzLmlzRW5hYmxlZCgpKQogICAgICAgICBuZXcgV2ViSW5z
cGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nKHRoaXMud29ya3NwYWNlLCB0aGlzLm5ldHdvcmtXb3Jr
c3BhY2VQcm92aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL25hdmlnYXRvclZpZXcuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9uYXZpZ2F0b3JWaWV3LmNzcwppbmRleCBmYmMwZmFlNTE1MDNlMzE5NmM4YTdjZDJkMTRm
MjU1NmRjZjIxMzg2Li43OTM5Njg5OTAxZjg1MDc5YmE1Y2ZiNWJkOTFhYjJlNDViMmZhMTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdmlnYXRvclZp
ZXcuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmF2aWdhdG9y
Vmlldy5jc3MKQEAgLTQ4LDYgKzQ4LDEwIEBACiAgICAgY29udGVudDogdXJsKEltYWdlcy9yZXNv
dXJjZURvY3VtZW50SWNvbi5wbmcpOwogfQogCisubmF2aWdhdG9yLW90aGVyLXRyZWUtaXRlbSAu
aWNvbiB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9yZXNvdXJjZVBsYWluSWNvbi5wbmcpOwor
fQorCiAubmF2aWdhdG9yIGxpIHsKICAgICBoZWlnaHQ6IDE3cHg7CiAgICAgd2hpdGUtc3BhY2U6
IG5vd3JhcDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyYjNkNjMxOWExYjFiNmM4NGRmMzZjNzExYWE1NzIyMWM3ZjBlNTMy
Li45MDM5NmJmZjcwZmY5ZDExN2UzYjA1MDhjYWI5MGNkZGRlZTQ3NGI4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDEtMTYgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW50cm9kdWNlIEZpbGVTeXN0ZW1Xb3Jrc3Bh
Y2VQcm92aWRlciB0byBhbGxvdyBzaG93aW5nIGZpbGVzIGZyb20gZmlsZSBzeXN0ZW0gaW4gd29y
a3NwYWNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3MDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvZmlsZS1tYXBwaW5nLWV4cGVjdGVkLnR4dDoKKwogMjAxMy0wMS0xNiAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNvb2tpZXMgd2l0aCBlbXB0eSB2YWx1ZSBhcmUgcGFyc2VkIGluY29ycmVjdGx5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZmlsZS1tYXBwaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1hcHBpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFh
ZTk2YzRlNDNhMDIzYzRiOWQ1NWYwZGI5MzRmZjZkMmNlNTRlN2MuLjdkM2Q2YWZmMTZmMGIxYmY1
YTVkNTgzMzM0OTkwMTUwMTMzYzZmYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9maWxlLW1hcHBpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9m
aWxlLW1hcHBpbmctZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3IEBAIGh0dHA6Ly93d3cuZXhh
bXBsZS5jb20KIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vCiBodHRwOi8vbG9jYWxob3N0L2luZGV4
Lmh0bWwKIGh0dHA6Ly9sb2NhbGhvc3QvZm9vL2luZGV4Lmh0bWwKLW51bGwKLW51bGwKKworCiBB
bGwgbWFwcGluZ3Mgd2VyZSBjb3JyZWN0LgogCg==
</data>
<flag name="review"
          id="201419"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>