<?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>176242</bug_id>
          
          <creation_ts>2017-09-01 13:00:40 -0700</creation_ts>
          <short_desc>WSL should be be able to call a function declared in a protocol from a generic function</short_desc>
          <delta_ts>2018-10-13 19:52:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344539</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-01 13:00:40 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344542</commentid>
    <comment_count>1</comment_count>
      <attachid>319636</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-01 13:02:56 -0700</bug_when>
    <thetext>Created attachment 319636
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344580</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-01 14:35:51 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/221496/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353589</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:40:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469002</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 19:52:24 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/196</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319636</attachid>
            <date>2017-09-01 13:02:56 -0700</date>
            <delta_ts>2017-09-01 13:29:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26882</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMTQ5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDgzIEBACisyMDE3LTA5LTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV1NMIHNob3VsZCBiZSBiZSBhYmxlIHRvIGNhbGwgYSBmdW5jdGlvbiBkZWNsYXJl
ZCBpbiBhIHByb3RvY29sIGZyb20gYSBnZW5lcmljIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyNDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEl0IHR1cm5zIG91dCB0aGF0
IHdlIG5lZWQgdG8ga25vdyB3aGVuIGEgZnVuY3Rpb24gaXMgcmVzb2x2ZWQgdG8gYSBwcm90b2Nv
bCBzaWduYXR1cmUsIHNvIHdlCisgICAgICAgIG5lZWQgdG8gaGF2ZSBhIHR5cGUgZm9yIHRoaXMu
IFRoaXMgaW50cm9kdWNlcyBQcm90b2NvbEZ1bmNEZWNsLgorICAgICAgICAKKyAgICAgICAgQWxz
bywgdGhpcyBpbnRyb2R1Y2VzIHBhcnNpbmcgb2YgcHJvdG9jb2wgZGVjbHMuCisgICAgICAgIAor
ICAgICAgICBXaGVuIGluc3RhbnRpYXRpbmcgYSBmdW5jdGlvbiwgd2UgbmVlZCB0byByZXdyaXRl
IGl0cyBDYWxsRXhwcmVzc2lvbnMgaWYgdGhleSB3ZXJlIHByZXZpb3VzbHkKKyAgICAgICAgcmVz
b2x2ZWQgdG8gYSBQcnRvY29jb2xGdW5jRGVjbCBpbnN0ZWFkIG9mIGEgRnVuY0RlZiBvciBOYXRp
dmVGdW5jLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8KKyAgICAgICAgcmVydW4gdGhlIHJlc29s
dXRpb24gb24gdGhlIHByb2dyYW0uIFRoYXQgcmVzb2x1dGlvbiBpcyBndWFyYW50ZWVkIHRvIHN1
Y2NlZWQgaWYgdGhlIHR5cGUKKyAgICAgICAgc3lzdGVtIHdvcmtzIGNvcnJlY3RseS4KKworICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qczoKKyAgICAgICAgKENhbGxFeHByZXNz
aW9uLnByb3RvdHlwZS5yZXNvbHZlKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DaGVja2VyLmpzOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm90b2NvbERl
Y2wuc2V0IHRocm93KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FQnVmZmVy
QnVpbGRlci5qczoKKyAgICAgICAgKEVCdWZmZXJCdWlsZGVyLnByb3RvdHlwZS5fY3JlYXRlRVB0
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAgICAg
KEZ1bmMpOgorICAgICAgICAoRnVuYy5wcm90b3R5cGUuZ2V0IG9yaWdpbik6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qczoKKyAgICAgICAgKEZ1bmNEZWYpOgor
ICAgICAgICAoRnVuY0RlZi5wcm90b3R5cGUuZ2V0IG9yaWdpbik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0luc3RhbnRpYXRvci5qczoKKyAgICAgICAg
KEZ1bmNJbnN0YW50aWF0b3IpOgorICAgICAgICAoRnVuY0luc3RhbnRpYXRvci5wcm90b3R5cGUu
Z2V0VW5pcXVlLkluc3RhbnRpYXRpb25TdWJzdGl0dXRpb24ucHJvdG90eXBlLnZpc2l0Q2FsbEV4
cHJlc3Npb24pOgorICAgICAgICAoRnVuY0luc3RhbnRpYXRvci5wcm90b3R5cGUuZ2V0VW5pcXVl
Lkluc3RhbnRpYXRpb25TdWJzdGl0dXRpb24pOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05hdGl2ZUZ1bmMuanM6CisgICAgICAgIChOYXRpdmVGdW5jKToKKyAgICAgICAgKE5h
dGl2ZUZ1bmMucHJvdG90eXBlLmdldCBvcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmNJbnN0YW5jZS5qczoKKyAgICAgICAgKE5hdGl2
ZUZ1bmNJbnN0YW5jZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTm9kZS5q
czoKKyAgICAgICAgKE5vZGUucHJvdG90eXBlLnN1YnN0aXR1dGUpOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VQcm90b2NvbEZ1bmNE
ZWNsKToKKyAgICAgICAgKHBhcnNlUHJvdG9jb2xEZWNsKToKKyAgICAgICAgKHBhcnNlKToKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzOgorICAgICAgICAoUHJv
Z3JhbSk6CisgICAgICAgIChQcm9ncmFtLnByb3RvdHlwZS5nZXQgcHJvdG9jb2xzKToKKyAgICAg
ICAgKFByb2dyYW0ucHJvdG90eXBlLmFkZCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUHJvdG9jb2xEZWNsLmpzOgorICAgICAgICAoUHJvdG9jb2xEZWNsLnByb3RvdHlwZS5h
ZGQpOgorICAgICAgICAoUHJvdG9jb2xEZWNsLnByb3RvdHlwZS5oYXNIZWlyKToKKyAgICAgICAg
KFByb3RvY29sRGVjbC5wcm90b3R5cGUuYWRkU2lnbmF0dXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm90b2NvbEZ1bmNEZWNsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFByb3RvY29sRnVuY0RlY2wpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Jld3JpdGVyLmpzOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0U3RydWN0
VHlwZSk6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRUeXBlVmFyaWFibGUpOgor
ICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0UHJvdG9jb2xGdW5jRGVjbCk6CisgICAg
ICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RydWN0VHlwZS5qczoKKyAgICAgICAgKFN0cnVjdFR5
cGUucHJvdG90eXBlLmluc3RhbnRpYXRlKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdWJzdGl0dXRpb24uanM6CisgICAgICAgIChTdWJzdGl0dXRpb24pOgorICAgICAgICAo
U3Vic3RpdHV0aW9uLm1hcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanM6CisgICAgICAgIChURVNUX3NpbXBsZUdlbmVyaWMpOgorICAgICAg
ICAoVEVTVF9zaW1wbGVBc3NpZ25tZW50KToKKyAgICAgICAgKFRFU1Rfc2ltcGxlRGVmYXVsdCk6
CisgICAgICAgIChURVNUX3NpbXBsZURlcmVmZXJlbmNlKToKKyAgICAgICAgKFRFU1RfZGVyZWZl
cmVuY2VTdG9yZSk6CisgICAgICAgIChURVNUX3NpbXBsZU1ha2VQdHIpOgorICAgICAgICAoVEVT
VF90aHJlYWRBcnJheUxvYWQpOgorICAgICAgICAoVEVTVF9kZXZpY2VBcnJheUxvYWQpOgorICAg
ICAgICAoVEVTVF90aHJlYWRBcnJheVN0b3JlKToKKyAgICAgICAgKFRFU1RfZGV2aWNlQXJyYXlT
dG9yZSk6CisgICAgICAgIChURVNUX3NpbXBsZVByb3RvY29sKToKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUu
dmlzaXRQcm90b2NvbEZ1bmNEZWNsKToKKwogMjAxNy0wOS0wMSAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgZG93bmxvYWQtbGF0ZXN0LWdpdGh1Yi1y
ZWxlYXNlLnB5IHNob3VsZCBoYXZlIGZyaWVuZGxpZXIgb3V0cHV0IGZvciBub24tNDA0IGVycm9y
cwpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwkocmV2aXNpb24gMjIxNDg2
KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC03Nyw2ICs3Nyw3IEBAIGxvYWQoIlByZXBhcmUuanMiKTsKIGxvYWQoIlByb2dyYW0uanMi
KTsKIGxvYWQoIlByb3RvY29sLmpzIik7CiBsb2FkKCJQcm90b2NvbERlY2wuanMiKTsKK2xvYWQo
IlByb3RvY29sRnVuY0RlY2wuanMiKTsKIGxvYWQoIlByb3RvY29sUmVmLmpzIik7CiBsb2FkKCJQ
dHJUeXBlLmpzIik7CiBsb2FkKCJSZXNvbHZlTmFtZXMuanMiKTsKSW5kZXg6IFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCShyZXZpc2lvbiAyMjE0
ODYpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTcgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0
ZW5kcyBFeHByZXNzaW9uIAogICAgIGdldCB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gdGhpcy5f
dHlwZUFyZ3VtZW50czsgfQogICAgIGdldCBhcmd1bWVudExpc3QoKSB7IHJldHVybiB0aGlzLl9h
cmd1bWVudExpc3Q7IH0KICAgICAKKyAgICByZXNvbHZlKG92ZXJsb2FkKQorICAgIHsKKyAgICAg
ICAgdGhpcy5mdW5jID0gb3ZlcmxvYWQuZnVuYzsKKyAgICAgICAgdGhpcy5hY3R1YWxUeXBlQXJn
dW1lbnRzID0gb3ZlcmxvYWQudHlwZUFyZ3VtZW50czsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG92
ZXJsb2FkLmZ1bmMucmV0dXJuVHlwZS5zdWJzdGl0dXRlVG9VbmlmaWNhdGlvbigKKyAgICAgICAg
ICAgIG92ZXJsb2FkLmZ1bmMudHlwZVBhcmFtZXRlcnMsIG92ZXJsb2FkLnVuaWZpY2F0aW9uQ29u
dGV4dCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJOdWxsIHJldHVybiB0eXBlIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAogICAgIHRvU3RyaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgKyAiPCIg
KyB0aGlzLnR5cGVBcmd1bWVudHMgKyAiPigiICsgdGhpcy5hcmd1bWVudExpc3QgKyAiKSI7Cklu
ZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMJKHJldmlzaW9uIDIy
MTQ4NykKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMJKHdvcmtp
bmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ2aXNpdG9yIHJldHVybmVkIG51
bGwgZm9yICIgKyBhcmd1bWVudCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3QXJndW1lbnQ7CiAg
ICAgICAgIH0pOworICAgICAgICBub2RlLmFyZ3VtZW50VHlwZXMgPSBhcmd1bWVudFR5cGVzOwog
ICAgICAgICAKICAgICAgICAgbGV0IG92ZXJsb2FkID0gbnVsbDsKICAgICAgICAgbGV0IGZhaWx1
cmVzID0gW107CkBAIC0yMTMsNyArMjE0LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0
b3IgewogICAgICAgICAgICAgaWYgKCF0eXBlUGFyYW1ldGVyLnByb3RvY29sKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbGV0IHNpZ25hdHVyZXMgPQotICAgICAgICAg
ICAgICAgIHR5cGVQYXJhbWV0ZXIucHJvdG9jb2wuc2lnbmF0dXJlc0J5TmFtZVdpdGhUeXBlVmFy
aWFibGUobm9kZS5uYW1lLCB0eXBlUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICB0eXBlUGFy
YW1ldGVyLnByb3RvY29sLnByb3RvY29sRGVjbC5zaWduYXR1cmVzQnlOYW1lV2l0aFR5cGVWYXJp
YWJsZShub2RlLm5hbWUsIHR5cGVQYXJhbWV0ZXIpOwogICAgICAgICAgICAgaWYgKCFzaWduYXR1
cmVzKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgb3ZlcmxvYWQgPSBy
ZXNvbHZlT3ZlcmxvYWRJbXBsKHNpZ25hdHVyZXMsIG5vZGUudHlwZUFyZ3VtZW50cywgYXJndW1l
bnRUeXBlcyk7CkBAIC0yMzYsMTMgKzIzNyw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsIG1lc3NhZ2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IG5vZGUuZnVuYyA9IG92ZXJsb2FkLmZ1bmM7Ci0gICAgICAgIG5vZGUuYWN0dWFsVHlwZUFyZ3Vt
ZW50cyA9IG92ZXJsb2FkLnR5cGVBcmd1bWVudHM7Ci0gICAgICAgIGxldCByZXN1bHQgPSBvdmVy
bG9hZC5mdW5jLnJldHVyblR5cGUuc3Vic3RpdHV0ZVRvVW5pZmljYXRpb24oCi0gICAgICAgICAg
ICBvdmVybG9hZC5mdW5jLnR5cGVQYXJhbWV0ZXJzLCBvdmVybG9hZC51bmlmaWNhdGlvbkNvbnRl
eHQpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
TnVsbCByZXN1bHQgZnJvbSBDYWxsRXhwcmVzc2lvbiIpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4gbm9kZS5yZXNvbHZlKG92ZXJsb2FkKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0VCdWZmZXJCdWlsZGVyLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0VCdWZmZXJCdWlsZGVyLmpz
CShyZXZpc2lvbiAyMjE0ODYpCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FQnVm
ZmVyQnVpbGRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBjbGFzcyBFQnVm
ZmVyQnVpbGRlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHsKICAgICAgICAgdHlwZSA9IHR5cGUu
aW5zdGFudGlhdGVkVHlwZTsKICAgICAgICAgbGV0IGJ1ZmZlciA9IG5ldyBFQnVmZmVyKHR5cGUu
c2l6ZSk7CisgICAgICAgIGlmICghdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBvcHVsYXRlRGVmYXVsdFZhbHVlIHdpdGg6ICIg
KyB0eXBlKTsKICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZShidWZmZXIsIDApOwog
ICAgICAgICByZXR1cm4gbmV3IEVQdHIoYnVmZmVyLCAwKTsKICAgICB9CkluZGV4OiBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMJKHJldmlzaW9uIDIyMTQ4NikKKysrIFRvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsy
NSwxNyBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7Ci0gICAg
Y29uc3RydWN0b3IobmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMp
CisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVy
cywgcGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX29y
aWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7CiAgICAgICAgIHRoaXMu
X3JldHVyblR5cGUgPSByZXR1cm5UeXBlOwogICAgICAgICB0aGlzLl90eXBlUGFyYW1ldGVycyA9
IHR5cGVQYXJhbWV0ZXJzOwogICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsK
ICAgICB9CiAgICAgCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQog
ICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCByZXR1cm5UeXBl
KCkgeyByZXR1cm4gdGhpcy5fcmV0dXJuVHlwZTsgfQogICAgIGdldCB0eXBlUGFyYW1ldGVycygp
IHsgcmV0dXJuIHRoaXMuX3R5cGVQYXJhbWV0ZXJzOyB9CkluZGV4OiBUb29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMJKHJldmlzaW9uIDIyMTQ4NikKKysrIFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsy
NywxMCBAQAogY2xhc3MgRnVuY0RlZiBleHRlbmRzIEZ1bmMgewogICAgIGNvbnN0cnVjdG9yKG9y
aWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMsIGJvZHkp
CiAgICAgewotICAgICAgICBzdXBlcihuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywg
cGFyYW1ldGVycyk7Ci0gICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgc3Vw
ZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywgcGFyYW1ldGVycyk7
CiAgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7CiAgICAgfQogICAgIAotICAgIGdldCBvcmlnaW4o
KSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KLSAgICAKICAgICB0b1N0cmluZygpCiAgICAgewog
ICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKSArICIgIiArIHRoaXMuYm9keTsKSW5kZXg6
IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNJbnN0YW50aWF0b3IuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0luc3RhbnRpYXRvci5q
cwkocmV2aXNpb24gMjIxNDg2KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Y0luc3RhbnRpYXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDE0IEBACiAidXNl
IHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNJbnN0YW50aWF0b3IgewotICAgIGNvbnN0cnVjdG9yKCkK
KyAgICBjb25zdHJ1Y3Rvcihwcm9ncmFtKQogICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZ3JhbSA9
IHByb2dyYW07CiAgICAgICAgIHRoaXMuX2luc3RhbmNlcyA9IG5ldyBNYXAoKTsKICAgICB9CiAg
ICAgCi0gICAgLy8gUmV0dXJucyBhIEZ1bmMgb2JqZWN0IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmll
cyBhIHBhcnRpY3VsYXIgc3lzdGVtIG9mIHR5cGUgYXJndW1lbnRzLgorICAgIC8vIFJldHVybnMg
YSBGdW5jIG9iamVjdCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIHN5c3Rl
bSBvZiB0eXBlIGFyZ3VtZW50cy4gWW91IG11c3QKKyAgICAvLyBpbnRhbnRpYXRlIHRoaW5ncyB3
aXRoIGNvbmNyZXRlIHR5cGVzLCBiZWNhdXNlIHRoaXMgY29kZSBjYXN1YWxseSBhc3N1bWVzIHRo
aXMuCiAgICAgZ2V0VW5pcXVlKGZ1bmMsIHR5cGVBcmd1bWVudHMpCiAgICAgewogICAgICAgICBp
ZiAoIWZ1bmMudHlwZVBhcmFtZXRlcnMubGVuZ3RoKQpAQCAtNTMsNyArNTUsMjYgQEAgY2xhc3Mg
RnVuY0luc3RhbnRpYXRvciB7CiAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UuZnVuYzsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgbGV0IHN1YnN0aXR1dGlvbiA9IFN1YnN0aXR1dGlv
bi5tYXBwaW5nKGZ1bmMudHlwZVBhcmFtZXRlcnMsIHR5cGVBcmd1bWVudHMpOworICAgICAgICBs
ZXQgdGhpc0luc3RhbnRpYXRvciA9IHRoaXM7CisgICAgICAgIGNsYXNzIEluc3RhbnRpYXRpb25T
dWJzdGl0dXRpb24gZXh0ZW5kcyBTdWJzdGl0dXRpb24geworICAgICAgICAgICAgdmlzaXRDYWxs
RXhwcmVzc2lvbihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBzdXBlci52aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHJlLXJlc29sdmUgdGhlIGZ1bmN0aW9u
IGNhbGwsIGlmIGl0IHdhcyBhIGNhbGwgdG8gYSBwcm90b2NvbAorICAgICAgICAgICAgICAgIC8v
IHNpZ25hdHVyZS4KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZ1bmMgaW5zdGFuY2VvZiBQ
cm90b2NvbEZ1bmNEZWNsKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBvdmVybG9hZCA9IHRo
aXNJbnN0YW50aWF0b3IuX3Byb2dyYW0ucmVzb2x2ZUZ1bmNPdmVybG9hZChub2RlLm5hbWUsIG5v
ZGUudHlwZUFyZ3VtZW50cywgbm9kZS5hcmd1bWVudFR5cGVzKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFvdmVybG9hZC5mdW5jKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJDb3VsZCBub3QgcmVzb2x2ZSBwcm90b2NvbCBzaWduYXR1cmUgZnVuY3Rpb24gY2Fs
bCBkdXJpbmcgaW5zdGFudGlhdGlvbjogIiArIHJlc3VsdC5mdW5jICsgKG92ZXJsb2FkLmZhaWx1
cmVzLmxlbmd0aCA/ICI7IHRyaWVkOlxuIiArIG92ZXJsb2FkLmZhaWx1cmVzLmpvaW4oIlxuIikg
OiAiIikpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVzb2x2ZShvdmVybG9hZCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGxl
dCBzdWJzdGl0dXRpb24gPSBuZXcgSW5zdGFudGlhdGlvblN1YnN0aXR1dGlvbihmdW5jLnR5cGVQ
YXJhbWV0ZXJzLCB0eXBlQXJndW1lbnRzKTsKICAgICAgICAgCiAgICAgICAgIGNsYXNzIEluc3Rh
bnRpYXRlIHsKICAgICAgICAgICAgIHZpc2l0RnVuY0RlZihmdW5jKQpJbmRleDogVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCShyZXZpc2lvbiAyMjE0ODYpCisr
KyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxMSArMjcsOSBAQAogY2xhc3MgTmF0aXZlRnVuYyBleHRlbmRzIEZ1bmMgewog
ICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMs
IHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICBzdXBlcihuYW1lLCByZXR1cm5UeXBlLCB0eXBl
UGFyYW1ldGVycywgcGFyYW1ldGVycyk7Ci0gICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsK
KyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCB0eXBlUGFyYW1ldGVycywg
cGFyYW1ldGVycyk7CiAgICAgfQogICAgIAotICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlz
Ll9vcmlnaW47IH0KICAgICBnZXQgaXNOYXRpdmUoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB0
b1N0cmluZygpCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5j
SW5zdGFuY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TmF0aXZlRnVuY0luc3RhbmNlLmpzCShyZXZpc2lvbiAyMjE0ODYpCisrKyBUb29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jSW5zdGFuY2UuanMJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDcgQEAKIGNsYXNzIE5hdGl2ZUZ1bmNJbnN0YW5jZSBleHRlbmRzIEZ1bmMgewog
ICAgIGNvbnN0cnVjdG9yKGZ1bmMsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMpCiAgICAgewotICAg
ICAgICBzdXBlcihmdW5jLm5hbWUsIHJldHVyblR5cGUsIFtdLCBwYXJhbWV0ZXJzKTsKLSAgICAg
ICAgdGhpcy5fZnVuYyA9IGZ1bmM7CisgICAgICAgIHN1cGVyKGZ1bmMub3JpZ2luLCBmdW5jLm5h
bWUsIHJldHVyblR5cGUsIFtdLCBwYXJhbWV0ZXJzKTsKICAgICB9CiAgICAgCiAgICAgZ2V0IGZ1
bmMoKSB7IHJldHVybiB0aGlzLl9mdW5jOyB9CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9Ob2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05vZGUuanMJKHJldmlzaW9uIDIyMTQ4NikKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05vZGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTm9k
ZSB7CiAgICAgCiAgICAgc3Vic3RpdHV0ZShwYXJhbWV0ZXJzLCBhcmd1bWVudExpc3QpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy52aXNpdChTdWJzdGl0dXRpb24ubWFwcGluZyhwYXJhbWV0
ZXJzLCBhcmd1bWVudExpc3QpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMudmlzaXQobmV3IFN1YnN0
aXR1dGlvbihwYXJhbWV0ZXJzLCBhcmd1bWVudExpc3QpKTsKICAgICB9CiAgICAgCiAgICAgc3Vi
c3RpdHV0ZVRvVW5pZmljYXRpb24ocGFyYW1ldGVycywgdW5pZmljYXRpb25Db250ZXh0KQpJbmRl
eDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMJKHJldmlzaW9uIDIyMTQ4NikK
KysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC02MzYsNiArNjM2LDE1IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGlu
ZU51bWIKICAgICAgICAgcmV0dXJuIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKICAg
ICB9CiAgICAgCisgICAgZnVuY3Rpb24gcGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkKKyAgICB7Cisg
ICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgIGxldCBuYW1lID0g
cGFyc2VGdW5jTmFtZSgpOworICAgICAgICBsZXQgdHlwZVBhcmFtZXRlcnMgPSBwYXJzZVR5cGVQ
YXJhbWV0ZXJzKCk7CisgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7
CisgICAgICAgIHJldHVybiBuZXcgUHJvdG9jb2xGdW5jRGVjbChyZXR1cm5UeXBlLm9yaWdpbiwg
bmFtZSwgcmV0dXJuVHlwZSwgdHlwZVBhcmFtZXRlcnMsIHBhcmFtZXRlcnMpOworICAgIH0KKyAg
ICAKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWYoKQogICAgIHsKICAgICAgICAgbGV0IHJldHVy
blR5cGUgPSBwYXJzZVR5cGUoKTsKQEAgLTY0Niw2ICs2NTUsMjEgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBsaW5lTnVtYgogICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYocmV0
dXJuVHlwZS5vcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHR5cGVQYXJhbWV0ZXJzLCBwYXJhbWV0
ZXJzLCBib2R5KTsKICAgICB9CiAgICAgCisgICAgZnVuY3Rpb24gcGFyc2VQcm90b2NvbERlY2wo
KQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInByb3RvY29sIik7CisgICAg
ICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0OworICAgICAgICAv
LyBGSVhNRTogU3VwcG9ydCBwcm90b2NvbCBpbmNsdXNpb24KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIzOAorICAgICAgICBjb25zdW1lKCJ7
Iik7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgUHJvdG9jb2xEZWNsKG9yaWdpbiwgbmFtZSk7
CisgICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKSB7CisgICAgICAgICAgICByZXN1bHQu
YWRkKHBhcnNlUHJvdG9jb2xGdW5jRGVjbCgpKTsKKyAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBmb3Ig
KDs7KSB7CiAgICAgICAgIGxldCB0b2tlbiA9IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYgKCF0
b2tlbikKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcwkocmV2
aXNpb24gMjIxNDg2KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDE0IEBAIGNsYXNzIFByb2dyYW0gZXh0ZW5k
cyBOb2RlIHsKICAgICAgICAgdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzID0gW107CiAgICAgICAg
IHRoaXMuX2Z1bmN0aW9ucyA9IG5ldyBNYXAoKTsKICAgICAgICAgdGhpcy5fdHlwZXMgPSBuZXcg
TWFwKCk7Ci0gICAgICAgIHRoaXMuX2Z1bmNJbnN0YW50aWF0b3IgPSBuZXcgRnVuY0luc3RhbnRp
YXRvcigpOworICAgICAgICB0aGlzLl9wcm90b2NvbHMgPSBuZXcgTWFwKCk7CisgICAgICAgIHRo
aXMuX2Z1bmNJbnN0YW50aWF0b3IgPSBuZXcgRnVuY0luc3RhbnRpYXRvcih0aGlzKTsKICAgICB9
CiAgICAgCiAgICAgZ2V0IHRvcExldmVsU3RhdGVtZW50cygpIHsgcmV0dXJuIHRoaXMuX3RvcExl
dmVsU3RhdGVtZW50czsgfQogICAgIGdldCBmdW5jdGlvbnMoKSB7IHJldHVybiB0aGlzLl9mdW5j
dGlvbnM7IH0KICAgICBnZXQgdHlwZXMoKSB7IHJldHVybiB0aGlzLl90eXBlczsgfQorICAgIGdl
dCBwcm90b2NvbHMoKSB7IHJldHVybiB0aGlzLl9wcm90b2NvbHM7IH0KICAgICBnZXQgZnVuY0lu
c3RhbnRpYXRvcigpIHsgcmV0dXJuIHRoaXMuX2Z1bmNJbnN0YW50aWF0b3I7IH0KICAgICAKICAg
ICBhZGQoc3RhdGVtZW50KQpAQCAtNDksNiArNTEsOCBAQCBjbGFzcyBQcm9ncmFtIGV4dGVuZHMg
Tm9kZSB7CiAgICAgICAgICAgICBhcnJheS5wdXNoKHN0YXRlbWVudCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgVHlwZSkKICAgICAgICAgICAgIHRoaXMuX3R5cGVz
LnNldChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50KTsKKyAgICAgICAgZWxzZSBpZiAoc3RhdGVt
ZW50IGluc3RhbmNlb2YgUHJvdG9jb2wpCisgICAgICAgICAgICB0aGlzLl9wcm90b2NvbHMuc2V0
KHN0YXRlbWVudC5hZGQsIHN0YXRlbWVudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiU3RhdGVtZW50IGlzIG5vdCBhIGZ1bmN0aW9uIG9yIHR5cGU6ICIgKyBz
dGF0ZW1lbnQpOwogICAgICAgICB0aGlzLl90b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1l
bnQpOwpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvdG9jb2xEZWNsLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb3RvY29sRGVj
bC5qcwkocmV2aXNpb24gMjIxNDg2KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJvdG9jb2xEZWNsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCwxMiBAQCBjbGFzcyBQ
cm90b2NvbERlY2wgZXh0ZW5kcyBQcm90b2NvbCB7CiAgICAgICAgIHRoaXMuaXNQcmltaXRpdmUg
PSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZSkKKyAgICBh
ZGQoc2lnbmF0dXJlKQogICAgIHsKKyAgICAgICAgaWYgKCEoc2lnbmF0dXJlIGluc3RhbmNlb2Yg
UHJvdG9jb2xGdW5jRGVjbCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNpZ25hdHVy
ZSBpc24ndCBhIFByb3RvY29sRnVuY0RlY2wgYnV0IGEgIiArIHNpZ25hdHVyZS5jb25zdHJ1Y3Rv
ci5uYW1lKTsKKyAgICAgICAgCisgICAgICAgIHNpZ25hdHVyZS5wcm90b2NvbERlY2wgPSB0aGlz
OwogICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTsKICAgICAgICAgbGV0
IG92ZXJsb2FkcyA9IHRoaXMuX3NpZ25hdHVyZU1hcC5nZXQoc2lnbmF0dXJlLm5hbWUpOwogICAg
ICAgICBpZiAoIW92ZXJsb2FkcykKQEAgLTgyLDkgKzg2LDEwIEBAIGNsYXNzIFByb3RvY29sRGVj
bCBleHRlbmRzIFByb3RvY29sIHsKICAgICAKICAgICBoYXNIZWlyKHR5cGUpCiAgICAgewotICAg
ICAgICBsZXQgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLm1hcHBpbmcoW3RoaXMuX3R5cGVW
YXJpYWJsZV0sIFt0eXBlXSk7Ci0gICAgICAgIGZvciAobGV0IHNpZ25hdHVyZSBvZiB0aGlzLl9z
aWduYXR1cmVzKSB7Ci0gICAgICAgICAgICBsZXQgc2lnbmF0dXJlID0gc2lnbmF0dXJlLnZpc2l0
KHN1YnN0aXR1dGlvbik7CisgICAgICAgIGxldCBzdWJzdGl0dXRpb24gPSBuZXcgU3Vic3RpdHV0
aW9uKFt0aGlzLl90eXBlVmFyaWFibGVdLCBbdHlwZV0pOworICAgICAgICBsZXQgc2lnbmF0dXJl
cyA9IHRoaXMuc2lnbmF0dXJlczsKKyAgICAgICAgZm9yIChsZXQgc2lnbmF0dXJlIG9mIHNpZ25h
dHVyZXMpIHsKKyAgICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZS52aXNpdChzdWJzdGl0
dXRpb24pOwogICAgICAgICAgICAgbGV0IG92ZXJsb2FkID0gdGhpcy5wcm9ncmFtLnJlc29sdmVG
dW5jT3ZlcmxvYWQoc2lnbmF0dXJlLm5hbWUsIFtdLCBzaWduYXR1cmUucGFyYW1ldGVyVHlwZXMp
OwogICAgICAgICAgICAgaWYgKCFvdmVybG9hZCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm90b2NvbEZ1bmNEZWNs
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb3RvY29s
RnVuY0RlY2wuanMJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUHJvdG9jb2xGdW5jRGVjbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7
CisKK2NsYXNzIFByb3RvY29sRnVuY0RlY2wgZXh0ZW5kcyBGdW5jIHsgfQorCkluZGV4OiBUb29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwkocmV2aXNpb24gMjIxNDg3KQor
KysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDggKzU3LDIyIEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICB2aXNpdE5hdGl2ZVR5
cGUobm9kZSkgeyByZXR1cm4gbm9kZTsgfQogICAgIHZpc2l0VHlwZURlZihub2RlKSB7IHJldHVy
biBub2RlOyB9CiAgICAgdmlzaXRTdHJ1Y3RUeXBlKG5vZGUpIHsgcmV0dXJuIG5vZGU7IH0KLSAg
ICB2aXNpdFR5cGVWYXJpYWJsZShub2RlKSB7IHJldHVybiBub2RlOyB9CiAgICAgdmlzaXRDb25z
dGV4cHJUeXBlUGFyYW1ldGVyKG5vZGUpIHsgcmV0dXJuIG5vZGU7IH0KKworICAgIC8vIFRoaXMg
aXMgYWxtb3N0IHdyb25nLiBXZSBpbnN0YW50aWF0ZSBGdW5jIGluIFN1YnN0aXR1dGlvbiBpbiBQ
cm90b2NvbERlY2wuIFRoZW4sIHdlIGVuZCB1cAorICAgIC8vIG5vdCByZXdyaXRpbmcgdHlwZSB2
YXJpYWJsZXMuIEkgdGhpbmsgdGhhdCBqdXN0IHdvcmtzIGJlY2F1c2Ugbm90IHJld3JpdGluZyB0
aGVtIHRoZXJlIGlzIE9LLgorICAgIHZpc2l0VHlwZVZhcmlhYmxlKG5vZGUpIHsgcmV0dXJuIG5v
ZGU7IH0KKworICAgIHZpc2l0UHJvdG9jb2xGdW5jRGVjbChub2RlKQorICAgIHsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IG5ldyBQcm90b2NvbEZ1bmNEZWNsKAorICAgICAgICAgICAgbm9kZS5vcmln
aW4sIG5vZGUubmFtZSwKKyAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwK
KyAgICAgICAgICAgIG5vZGUudHlwZVBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0
ZXIudmlzaXQodGhpcykpLAorICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJzLm1hcChwYXJhbWV0
ZXIgPT4gcGFyYW1ldGVyLnZpc2l0KHRoaXMpKSk7CisgICAgICAgIHJlc3VsdC5wcm90b2NvbERl
Y2wgPSBub2RlLnByb3RvY29sRGVjbDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAg
ICAgCiAgICAgdmlzaXROYXRpdmVUeXBlSW5zdGFuY2Uobm9kZSkKICAgICB7CkBAIC0xOTIsNiAr
MjA2LDkgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgICAgICAgICAgcmVzdWx0LmFjdHVhbFR5cGVB
cmd1bWVudHMgPQogICAgICAgICAgICAgICAgIGFjdHVhbFR5cGVBcmd1bWVudHMubWFwKGFjdHVh
bFR5cGVBcmd1bWVudCA9PiBhY3R1YWxUeXBlQXJndW1lbnQudmlzaXQodGhpcykpOwogICAgICAg
ICB9CisgICAgICAgIGxldCBhcmd1bWVudFR5cGVzID0gbm9kZS5hcmd1bWVudFR5cGVzOworICAg
ICAgICBpZiAoYXJndW1lbnRUeXBlcykKKyAgICAgICAgICAgIHJlc3VsdC5hcmd1bWVudFR5cGVz
ID0gYXJndW1lbnRUeXBlcy5tYXAoYXJndW1lbnRUeXBlID0+IGFyZ3VtZW50VHlwZS52aXNpdCh0
aGlzKSk7CiAgICAgICAgIHJlc3VsdC5mdW5jID0gbm9kZS5mdW5jOwogICAgICAgICByZXN1bHQu
bmF0aXZlRnVuY0luc3RhbmNlID0gbm9kZS5uYXRpdmVGdW5jSW5zdGFuY2U7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdHJ1Y3RU
eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0cnVj
dFR5cGUuanMJKHJldmlzaW9uIDIyMTQ4NikKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N0cnVjdFR5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3Mg
U3RydWN0VHlwZSBleHRlbmRzIFR5cGUgewogICAgICAgICBpZiAoIXR5cGVBcmd1bWVudHMubGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIAotICAgICAgICBsZXQgc3Vi
c3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLm1hcHBpbmcodGhpcy50eXBlUGFyYW1ldGVycywgdHlw
ZUFyZ3VtZW50cyk7CisgICAgICAgIGxldCBzdWJzdGl0dXRpb24gPSBuZXcgU3Vic3RpdHV0aW9u
KHRoaXMudHlwZVBhcmFtZXRlcnMsIHR5cGVBcmd1bWVudHMpOwogICAgICAgICBsZXQgaW5zdGFu
dGlhdGVJbW1lZGlhdGVzID0gbmV3IEluc3RhbnRpYXRlSW1tZWRpYXRlcygpOwogICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUodGhpcy5vcmlnaW4sIHRoaXMubmFtZSwgW10pOwog
ICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiB0aGlzLmZpZWxkcykKSW5kZXg6IFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1N1YnN0aXR1dGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdWJzdGl0dXRpb24uanMJKHJldmlzaW9uIDIyMTQ4NikK
KysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N1YnN0aXR1dGlvbi5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsMjAgKzI1LDE0IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIFN1YnN0
aXR1dGlvbiBleHRlbmRzIFJld3JpdGVyIHsKLSAgICBjb25zdHJ1Y3RvcihtYXApCisgICAgY29u
c3RydWN0b3IocGFyYW1ldGVycywgYXJndW1lbnRMaXN0KQogICAgIHsKICAgICAgICAgc3VwZXIo
KTsKLSAgICAgICAgdGhpcy5fbWFwID0gbWFwOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgbWFw
cGluZyhwYXJhbWV0ZXJzLCBhcmd1bWVudExpc3QpCi0gICAgewogICAgICAgICBpZiAocGFyYW1l
dGVycy5sZW5ndGggIT0gYXJndW1lbnRMaXN0Lmxlbmd0aCkKICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiUGFyYW1ldGVycyBhbmQgYXJndW1lbnRzIGFyZSBtaXNtYXRjaGVkIik7Ci0gICAg
ICAgIGxldCBtYXAgPSBuZXcgTWFwKCk7CisgICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTsK
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgbWFwLnNldChwYXJhbWV0ZXJzW2ldLCBhcmd1bWVudExpc3RbaV0pOwotICAgICAg
ICByZXR1cm4gbmV3IFN1YnN0aXR1dGlvbihtYXApOworICAgICAgICAgICAgdGhpcy5fbWFwLnNl
dChwYXJhbWV0ZXJzW2ldLCBhcmd1bWVudExpc3RbaV0pOwogICAgIH0KICAgICAKICAgICB2aXNp
dFR5cGVSZWYobm9kZSkKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwko
cmV2aXNpb24gMjIxNDkwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5q
cwkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsOCBAQCBmdW5jdGlvbiBURVNUX2FkZDEoKSB7
CiBmdW5jdGlvbiBURVNUX3NpbXBsZUdlbmVyaWMoKSB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1By
ZXAoYAogICAgICAgICBUIGlkPFQ+KFQgeCkgeyByZXR1cm4geDsgfQotICAgICAgICBpbnQgZm9v
KGludCB4KSB7IHJldHVybiBpZCh4KSArIDE7IH1gKTsKKyAgICAgICAgaW50IGZvbyhpbnQgeCkg
eyByZXR1cm4gaWQoeCkgKyAxOyB9CisgICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNDIpXSksIDQz
KTsKIH0KIApAQCAtODQsNyArODUsOCBAQCBmdW5jdGlvbiBURVNUX3NpbXBsZVZhcmlhYmxlKCkK
ICAgICAgICAgewogICAgICAgICAgICAgaW50IHJlc3VsdCA9IHA7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9YCk7CisgICAgICAgIH0KKyAgICBgKTsKICAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9n
cmFtLCA0MildKSwgNDIpOwogfQogCkBAIC05Niw3ICs5OCw4IEBAIGZ1bmN0aW9uIFRFU1Rfc2lt
cGxlQXNzaWdubWVudCgpCiAgICAgICAgICAgICBpbnQgcmVzdWx0OwogICAgICAgICAgICAgcmVz
dWx0ID0gcDsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH1gKTsKKyAgICAg
ICAgfQorICAgIGApOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDQyKV0pLCA0Mik7CiB9CiAKQEAgLTEwNyw3
ICsxMTAsOCBAQCBmdW5jdGlvbiBURVNUX3NpbXBsZURlZmF1bHQoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpbnQgcmVzdWx0OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
fWApOworICAgICAgICB9CisgICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW10pLCAwKTsKIH0KIApAQCAtMTE3LDcgKzEyMSw4IEBA
IGZ1bmN0aW9uIFRFU1Rfc2ltcGxlRGVyZWZlcmVuY2UoKQogICAgICAgICBpbnQgZm9vKGRldmlj
ZSBpbnReIHApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBecDsKLSAgICAgICAgfWAp
OworICAgICAgICB9CisgICAgYCk7CiAgICAgbGV0IGJ1ZmZlciA9IG5ldyBFQnVmZmVyKDEpOwog
ICAgIGJ1ZmZlci5zZXQoMCwgMTMpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW10sIFtUeXBlZFZhbHVlLmJveChuZXcgUHRyVHlwZShudWxsLCAi
ZGV2aWNlIiwgcHJvZ3JhbS5pbnRyaW5zaWNzLmludDMyKSwgbmV3IEVQdHIoYnVmZmVyLCAwKSld
KSwgMTMpOwpAQCAtMTI5LDcgKzEzNCw4IEBAIGZ1bmN0aW9uIFRFU1RfZGVyZWZlcmVuY2VTdG9y
ZSgpCiAgICAgICAgIHZvaWQgZm9vKGRldmljZSBpbnReIHApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIF5wID0gNTI7Ci0gICAgICAgIH1gKTsKKyAgICAgICAgfQorICAgIGApOwogICAgIGxldCBi
dWZmZXIgPSBuZXcgRUJ1ZmZlcigxKTsKICAgICBidWZmZXIuc2V0KDAsIDEzKTsKICAgICBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbVHlwZWRWYWx1ZS5ib3gobmV3IFB0clR5cGUo
bnVsbCwgImRldmljZSIsIHByb2dyYW0uaW50cmluc2ljcy5pbnQzMiksIG5ldyBFUHRyKGJ1ZmZl
ciwgMCkpXSk7CkBAIC0xNDQsNyArMTUwLDggQEAgZnVuY3Rpb24gVEVTVF9zaW1wbGVNYWtlUHRy
KCkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHggPSA0MjsKICAgICAgICAgICAgIHJldHVy
biBcXHg7Ci0gICAgICAgIH1gKTsKKyAgICAgICAgfQorICAgIGApOwogICAgIGxldCByZXN1bHQg
PSBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbXSk7CiAgICAgaWYgKCFyZXN1bHQu
dHlwZS5pc1B0cikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJSZXR1cm4gdHlwZSBpcyBub3Qg
YSBwb2ludGVyOiAiICsgcmVzdWx0LnR5cGUpOwpAQCAtMTYzLDcgKzE3MCw4IEBAIGZ1bmN0aW9u
IFRFU1RfdGhyZWFkQXJyYXlMb2FkKCkKICAgICAgICAgaW50IGZvbyh0aHJlYWQgaW50W10gYXJy
YXkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhcnJheVswdV07Ci0gICAgICAgIH1g
KTsKKyAgICAgICAgfQorICAgIGApOwogICAgIGxldCBidWZmZXIgPSBuZXcgRUJ1ZmZlcigxKTsK
ICAgICBidWZmZXIuc2V0KDAsIDg5KTsKICAgICBsZXQgcmVzdWx0ID0gY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSwgW1R5cGVkVmFsdWUuYm94KG5ldyBBcnJheVJlZlR5cGUobnVsbCwg
InRocmVhZCIsIHByb2dyYW0uaW50cmluc2ljcy5pbnQzMiksIG5ldyBFQXJyYXlSZWYobmV3IEVQ
dHIoYnVmZmVyLCAwKSwgMSkpXSk7CkBAIC0xNzYsNyArMTg0LDggQEAgZnVuY3Rpb24gVEVTVF9k
ZXZpY2VBcnJheUxvYWQoKQogICAgICAgICBpbnQgZm9vKGRldmljZSBpbnRbXSBhcnJheSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFycmF5WzB1XTsKLSAgICAgICAgfWApOworICAg
ICAgICB9CisgICAgYCk7CiAgICAgbGV0IGJ1ZmZlciA9IG5ldyBFQnVmZmVyKDEpOwogICAgIGJ1
ZmZlci5zZXQoMCwgODkpOwogICAgIGxldCByZXN1bHQgPSBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdLCBbVHlwZWRWYWx1ZS5ib3gobmV3IEFycmF5UmVmVHlwZShudWxsLCAiZGV2aWNl
IiwgcHJvZ3JhbS5pbnRyaW5zaWNzLmludDMyKSwgbmV3IEVBcnJheVJlZihuZXcgRVB0cihidWZm
ZXIsIDApLCAxKSldKTsKQEAgLTE4OSw3ICsxOTgsOCBAQCBmdW5jdGlvbiBURVNUX3RocmVhZEFy
cmF5U3RvcmUoKQogICAgICAgICB2b2lkIGZvbyh0aHJlYWQgaW50W10gYXJyYXksIGludCB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXlbMHVdID0gdmFsdWU7Ci0gICAgICAgIH1g
KTsKKyAgICAgICAgfQorICAgIGApOwogICAgIGxldCBidWZmZXIgPSBuZXcgRUJ1ZmZlcigxKTsK
ICAgICBidWZmZXIuc2V0KDAsIDE1KTsKICAgICBsZXQgYXJyYXlSZWYgPSBUeXBlZFZhbHVlLmJv
eCgKQEAgLTIwOSw3ICsyMTksOCBAQCBmdW5jdGlvbiBURVNUX2RldmljZUFycmF5U3RvcmUoKQog
ICAgICAgICB2b2lkIGZvbyhkZXZpY2UgaW50W10gYXJyYXksIGludCB2YWx1ZSkKICAgICAgICAg
ewogICAgICAgICAgICAgYXJyYXlbMHVdID0gdmFsdWU7Ci0gICAgICAgIH1gKTsKKyAgICAgICAg
fQorICAgIGApOwogICAgIGxldCBidWZmZXIgPSBuZXcgRUJ1ZmZlcigxKTsKICAgICBidWZmZXIu
c2V0KDAsIDE1KTsKICAgICBsZXQgYXJyYXlSZWYgPSBUeXBlZFZhbHVlLmJveCgKQEAgLTIyMyw2
ICsyMzQsMjQgQEAgZnVuY3Rpb24gVEVTVF9kZXZpY2VBcnJheVN0b3JlKCkKICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCYWQgdmFsdWUgc3RvcmVkIGludG8gYnVmZmVyIChleHBlY3RlZCAtMTEx
KTogIiArIGJ1ZmZlci5nZXQoMCkpOwogfQogCitmdW5jdGlvbiBURVNUX3NpbXBsZVByb3RvY29s
KCkKK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHByb3RvY29sIEFkZGFi
bGUgeworICAgICAgICAgICAgQWRkYWJsZSBvcGVyYXRvcisoQWRkYWJsZSwgQWRkYWJsZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgVCBhZGQ8VDpBZGRhYmxlPihUIGEsIFQgYikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGEgKyBiOworICAgICAgICB9CisgICAgICAgIGludCBmb28oaW50
IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZGQoeCwgNzMpOworICAgICAgICB9
CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNDUpXSksIDQ1ICsgNzMpOworfQorCiBsZXQgYmVm
b3JlID0gcHJlY2lzZVRpbWUoKTsKIAogbGV0IGZpbHRlciA9IC8uKi87IC8vIHJ1biBldmVyeXRo
aW5nIGJ5IGRlZmF1bHQKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRv
ci5qcwkocmV2aXNpb24gMjIxNDg3KQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VmlzaXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTEgQEAgY2xhc3MgVmlzaXRv
ciB7CiAgICAgICAgICAgICBwYXJhbWV0ZXIudmlzaXQodGhpcyk7CiAgICAgfQogICAgIAorICAg
IHZpc2l0UHJvdG9jb2xGdW5jRGVjbChub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy52aXNpdEZ1
bmMobm9kZSk7CisgICAgfQorICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAg
IHsKICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpOwo=
</data>
<flag name="review"
          id="339882"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>