<?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>189134</bug_id>
          
          <creation_ts>2018-08-29 17:45:38 -0700</creation_ts>
          <short_desc>[WHSL] Implement semantics</short_desc>
          <delta_ts>2018-10-13 14:44:16 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=189033</see_also>
          <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>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>rmorisset</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455076</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-29 17:45:38 -0700</bug_when>
    <thetext>Implement semantics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459209</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-12 18:50:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/44402998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462273</commentid>
    <comment_count>2</comment_count>
      <attachid>350491</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-21 21:33:46 -0700</bug_when>
    <thetext>Created attachment 350491
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462276</commentid>
    <comment_count>3</comment_count>
      <attachid>350493</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-21 21:35:17 -0700</bug_when>
    <thetext>Created attachment 350493
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462320</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 01:27:45 -0700</bug_when>
    <thetext>*** Bug 189033 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462323</commentid>
    <comment_count>5</comment_count>
      <attachid>350505</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 01:43:05 -0700</bug_when>
    <thetext>Created attachment 350505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462342</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 02:47:00 -0700</bug_when>
    <thetext>*** Bug 189387 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462415</commentid>
    <comment_count>7</comment_count>
      <attachid>350505</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 14:30:25 -0700</bug_when>
    <thetext>Comment on attachment 350505
Patch

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

&gt; Tools/WebGPUShadingLanguageRI/Parse.js:1230
&gt; +            return fail(&quot;Semantic  is not 32-bit unsigned integer: &quot; + index.text);

Double space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462939</commentid>
    <comment_count>8</comment_count>
      <attachid>350505</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-09-24 15:41:31 -0700</bug_when>
    <thetext>Comment on attachment 350505
Patch

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

&gt; Tools/WebGPUShadingLanguageRI/Field.js:2
&gt; - * Copyright (C) 2017 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

2017-2018

&gt; Tools/WebGPUShadingLanguageRI/FuncParameter.js:2
&gt; - * Copyright (C) 2017 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

2017-2018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463106</commentid>
    <comment_count>9</comment_count>
      <attachid>350740</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 23:48:57 -0700</bug_when>
    <thetext>Created attachment 350740
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463313</commentid>
    <comment_count>10</comment_count>
      <attachid>350782</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-25 13:43:12 -0700</bug_when>
    <thetext>Created attachment 350782
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463325</commentid>
    <comment_count>11</comment_count>
      <attachid>350788</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-25 13:55:13 -0700</bug_when>
    <thetext>Created attachment 350788
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463339</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-25 14:21:49 -0700</bug_when>
    <thetext>Committed r236475: &lt;https://trac.webkit.org/changeset/236475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468827</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 14:44:16 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/52</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350491</attachid>
            <date>2018-09-21 21:33:46 -0700</date>
            <delta_ts>2018-09-21 21:35:14 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189134-20180922133344.patch</filename>
            <type>text/plain</type>
            <size>83781</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uYTQzMzM4N2NkMjE1NjZiNDI4YjJlNDhjMDQwOGYzN2ExNDkzZjZiMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MyBAQAorMjAxOC0wOS0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSFNMXSBJbXBsZW1lbnQgc2VtYW50aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50
aWMuanM6IEFkZGVkLgorICAgICAgICAoQnVpbHRJblNlbWFudGljKToKKyAgICAgICAgKEJ1aWx0
SW5TZW1hbnRpYy5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoQnVpbHRJblNlbWFudGlj
LnByb3RvdHlwZS5nZXQgZXh0cmFBcmd1bWVudHMpOgorICAgICAgICAoQnVpbHRJblNlbWFudGlj
LnByb3RvdHlwZS5pc0FjY2VwdGFibGVUeXBlKToKKyAgICAgICAgKEJ1aWx0SW5TZW1hbnRpYy5w
cm90b3R5cGUuaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChCdWlsdEluU2Vt
YW50aWMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DYWxsRXhwcmVzc2lvbi5qczoKKyAgICAgICAgKENhbGxFeHByZXNzaW9uLnByb3RvdHlw
ZS5fcmVzb2x2ZVdpdGhPcGVyYXRvckFuZGVySW5kZXhlcik6CisgICAgICAgIChDYWxsRXhwcmVz
c2lvbi5wcm90b3R5cGUuX3Jlc29sdmVXaXRoT3BlcmF0b3JMZW5ndGgpOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanM6CisgICAgICAgIChDaGVja2VyKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UHJvZ3JhbSk6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbSk6CisgICAgICAgIChDaGVja2VyLnByb3Rv
dHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbS5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAo
Q2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkl0ZW0ucHJvdG90eXBlLmdldCBzZW1h
bnRpYyk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVy
ZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVy
LnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1h
bnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnNldCBjdXJyZW50U2VtYW50aWMpOgorICAgICAgICAo
Q2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS5nZXQg
Y3VycmVudFNlbWFudGljKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFu
dGljcy5HYXRoZXJlci5wcm90b3R5cGUuZ2V0IHJlc3VsdCk6CisgICAgICAgIChDaGVja2VyLnBy
b3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0RW51bVR5cGUp
OgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnBy
b3RvdHlwZS52aXNpdFZlY3RvclR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdE1hdHJpeFR5cGUpOgorICAgICAg
ICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52
aXNpdE5hdGl2ZVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50
aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdFN0cnVjdFR5cGUpOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdFR5cGVS
ZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVy
LnByb3RvdHlwZS52aXNpdFB0clR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAg
ICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBl
LnZpc2l0QXJyYXlUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFu
dGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVja0R1cGxpY2F0ZVNlbWFudGljcyk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuY2hlY2tTZW1hbnRp
Y1R5cGVzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVj
a1NlbWFudGljRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hl
Y2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6CisgICAgICAg
IChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUu
dmlzaXRBcnJheVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50
aWNzLlBPRENoZWNrZXIucHJvdG90eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRN
YXRyaXhUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5Q
T0RDaGVja2VyLnByb3RvdHlwZS52aXNpdE5hdGl2ZVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5w
cm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLlBPRENoZWNrZXIucHJvdG90eXBlLnZpc2l0UHRyVHlw
ZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tl
ci5wcm90b3R5cGUudmlzaXRBcnJheVJlZlR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5
cGUuX2NoZWNrU2VtYW50aWNzLlBPRENoZWNrZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5w
cm90b3R5cGUudmlzaXRUeXBlUmVmKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVj
a1NlbWFudGljcy5QT0RDaGVja2VyKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVj
a1NlbWFudGljcy5jaGVja1BPRERhdGEpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2VtYW50aWNzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5
cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrT3BlcmF0b3JPdmVybG9hZCk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOgorICAgICAgICAoQ2hl
Y2tlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlw
ZS52aXNpdEFycmF5VHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdE1ha2VQ
dHJFeHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0TWFrZUFycmF5
UmVmRXhwcmVzc2lvbik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fZmluaXNoVmlzaXRp
bmdQcm9wZXJ0eUFjY2Vzcyk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdEluZGV4
RXhwcmVzc2lvbik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdFJldHVybik6Cisg
ICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdFN3aXRjaFN0YXRlbWVudCk6CisgICAgICAg
IChDaGVja2VyLnByb3RvdHlwZS52aXNpdENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qczoKKyAgICAgICAgKEZpZWxkKToKKyAgICAgICAg
KEZpZWxkLnByb3RvdHlwZS5nZXQgc2VtYW50aWMpOgorICAgICAgICAoRmllbGQucHJvdG90eXBl
LnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgor
ICAgICAgICAoRnVuYyk6CisgICAgICAgIChGdW5jLnByb3RvdHlwZS5nZXQgc2VtYW50aWMpOgor
ICAgICAgICAoRnVuYy5wcm90b3R5cGUudG9EZWNsU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzOgorICAgICAgICAoRnVuY0RlZik6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qczoKKyAgICAgICAgKEZ1
bmNQYXJhbWV0ZXIpOgorICAgICAgICAoRnVuY1BhcmFtZXRlci5wcm90b3R5cGUuZ2V0IHNlbWFu
dGljKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzOgorICAgICAgICAoTGF0ZUNoZWNr
ZXIucHJvdG90eXBlLnZpc2l0UmVmZXJlbmNlVHlwZSk6CisgICAgICAgIChMYXRlQ2hlY2tlcik6
CisgICAgICAgIChMYXRlQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6IERlbGV0
ZWQuCisgICAgICAgIChMYXRlQ2hlY2tlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAg
ICAgICAoTmF0aXZlRnVuYyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanM6CisgICAgICAgIChwYXJzZVBhcmFtZXRlcik6CisgICAgICAgIChwYXJzZUZ1bmNEZWNs
KToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZVN0YWdlSW5PdXRTZW1h
bnRpYyk6CisgICAgICAgIChwYXJzZVJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAocGFyc2VT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAocGFyc2VCdWlsdEluU2Vt
YW50aWMpOgorICAgICAgICAocGFyc2VTZW1hbnRpYyk6CisgICAgICAgIChwYXJzZUZpZWxkKToK
KyAgICAgICAgKHBhcnNlTmF0aXZlRnVuYyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMpOgorICAg
ICAgICAoUmVzb3VyY2VTZW1hbnRpYy5wcm90b3R5cGUuZ2V0IHJlc291cmNlTW9kZSk6CisgICAg
ICAgIChSZXNvdXJjZVNlbWFudGljLnByb3RvdHlwZS5nZXQgaW5kZXgpOgorICAgICAgICAoUmVz
b3VyY2VTZW1hbnRpYy5wcm90b3R5cGUuaXNBY2NlcHRhYmxlVHlwZSk6CisgICAgICAgIChSZXNv
dXJjZVNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAg
ICAgKFJlc291cmNlU2VtYW50aWMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVyLnByb3Rv
dHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZp
c2l0RmllbGQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU2VtYW50aWMuanM6IEFkZGVkLgor
ICAgICAgICAoU2VtYW50aWMpOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmdldCBvcmln
aW4pOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNv
bXBhcmVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRp
Yy5wcm90b3R5cGUuZXF1YWxUb090aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0
UmVzb3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5wcm90b3R5cGUuZXF1YWxUb090
aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNlbWFudGljKToK
KyAgICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYy5Db21wYXJl
ci5wcm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAg
ICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBhcmVyKToKKyAg
ICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYyk6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcy4K
KyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgor
ICAgICAgICAoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2Vw
dGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N0YWdlSW5PdXRTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYyk6Cisg
ICAgICAgIChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmdldCBpbmRleCk6CisgICAgICAg
IChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAg
ICAoU3RhZ2VJbk91dFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBl
KToKKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczoKKyAgICAg
ICAgKFN0YXRlbWVudENsb25lci5wcm90b3R5cGUudmlzaXROYXRpdmVGdW5jKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5q
czoKKyAgICAgICAgKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3Iu
anM6CisgICAgICAgIChzeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JP
cGVyYXRvci5qczoKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRv
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUVudW1GdW5j
dGlvbnMuanM6CisgICAgICAgIChzeW50aGVzaXplRW51bUZ1bmN0aW9ucyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qczoKKyAg
ICAgICAgKHNldHVwQW5kZXIpOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29yc0Zv
clN0cnVjdFR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRGdW5jKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNp
dEZpZWxkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sOgor
CiAyMDE4LTA5LTIxICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dITFNMXSBMb2NhbCB2YXJpYWJsZXMgc2hvdWxkIGJlIHN0YXRpY2FsbHkgYWxsb2NhdGVk
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggZTI5MTBkNzlkNmMyMzU5Yjc2
MzE2MTk4MDMxNmFmZjA5NDIyNzBmMy4uNDUxOTY5MjMwMDEwZjFmNWY0NWUxMjJkYzQ0ZGY2YTE5
MWZiNjJmNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtNDYsNiArNDYs
NyBAQCBsb2FkKCJBdXRvV3JhcHBlci5qcyIpOwogbG9hZCgiQmxvY2suanMiKTsKIGxvYWQoIkJv
b2xMaXRlcmFsLmpzIik7CiBsb2FkKCJCcmVhay5qcyIpOworbG9hZCgiQnVpbHRJblNlbWFudGlj
LmpzIik7CiBsb2FkKCJCdWlsdGluTWF0cml4R2V0dGVyLmpzIik7CiBsb2FkKCJCdWlsdGluTWF0
cml4U2V0dGVyLmpzIik7CiBsb2FkKCJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIik7CkBAIC0xMzgs
MTAgKzEzOSwxNCBAQCBsb2FkKCJSZXNvbHZlTmFtZXMuanMiKTsKIGxvYWQoIlJlc29sdmVPdmVy
bG9hZEltcGwuanMiKTsKIGxvYWQoIlJlc29sdmVQcm9wZXJ0aWVzLmpzIik7CiBsb2FkKCJSZXNv
bHZlVHlwZURlZnMuanMiKTsKK2xvYWQoIlJlc291cmNlU2VtYW50aWMuanMiKTsKIGxvYWQoIlJl
dHVybi5qcyIpOwogbG9hZCgiUmV0dXJuQ2hlY2tlci5qcyIpOwogbG9hZCgiUmV0dXJuRXhjZXB0
aW9uLmpzIik7CiBsb2FkKCJTYW1wbGVyLmpzIik7Citsb2FkKCJTZW1hbnRpYy5qcyIpOworbG9h
ZCgiU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIik7Citsb2FkKCJTdGFnZUluT3V0
U2VtYW50aWMuanMiKTsKIGxvYWQoIlN0YW5kYXJkTGlicmFyeS5qcyIpOwogbG9hZCgiU3RhdGVt
ZW50Q2xvbmVyLmpzIik7CiBsb2FkKCJTdHJ1Y3RMYXlvdXRCdWlsZGVyLmpzIik7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50aWMuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50aWMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjUzOTMzMjhjZmRlYmEwNGQ0ZTMxZTM3MTZhZDg5MTllOTQxZDRkZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5qcwpA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEJ1aWx0SW5TZW1hbnRpYyBleHRlbmRzIFNlbWFu
dGljIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIC4uLmV4dHJhQXJndW1lbnRzKQor
ICAgIHsKKyAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7
CisgICAgICAgIHRoaXMuX2V4dHJhQXJndW1lbnRzID0gZXh0cmFBcmd1bWVudHM7CisgICAgfQor
CisgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CisgICAgZ2V0IGV4dHJhQXJn
dW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fZXh0cmFBcmd1bWVudHM7IH0KKworICAgIGlzQWNjZXB0
YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIGxldCByZXF1aXJlZFR5cGU7
CisgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgIGNhc2UgIlNWX0luc3RhbmNl
SUQiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfVmVydGV4SUQiOgorICAgICAg
ICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiUFNJWkUiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBl
ID0gcHJvZ3JhbS5pbnRyaW5zaWNzLmZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgIlNWX1Bvc2l0aW9uIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0u
aW50cmluc2ljc1sidmVjdG9yPGZsb2F0LCA0PiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgIlNWX0lzRnJvbnRGYWNlIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHBy
b2dyYW0uaW50cmluc2ljcy5ib29sOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
IlNWX1NhbXBsZUluZGV4IjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50
cmluc2ljcy51aW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0lubmVy
Q292ZXJhZ2UiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNz
LnVpbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfVGFyZ2V0IjoKKyAg
ICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljc1sidmVjdG9yPGZsb2F0
LCA0PiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0RlcHRoIjoKKyAg
ICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy5mbG9hdDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9Db3ZlcmFnZSI6CisgICAgICAgICAgICBy
ZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJTVl9EaXNwYXRjaFRocmVhZElEIjoKKyAgICAgICAgICAgIHJlcXVp
cmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljc1sidmVjdG9yPHVpbnQsIDM+Il07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfR3JvdXBJRCI6CisgICAgICAgICAgICByZXF1
aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjx1aW50LCAzPiJdOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0dyb3VwSW5kZXgiOgorICAgICAgICAgICAg
cmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAiU1ZfR3JvdXBUaHJlYWRJRCI6CisgICAgICAgICAgICByZXF1aXJl
ZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjx1aW50LCAzPiJdOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YFVua25vd24gc2VtYW50aWM6ICR7dGhpcy5uYW1lfWApOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHR5cGUuZXF1YWxzKHJlcXVpcmVkVHlwZSk7CisgICAgfQorCisgICAgaXNBY2NlcHRh
YmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAgICAgICBz
d2l0Y2ggKHNoYWRlclR5cGUpIHsKKyAgICAgICAgY2FzZSAidmVydGV4IjoKKyAgICAgICAgICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgICAgICBjYXNlICJpbnB1dCI6CisgICAgICAg
ICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJTVl9J
bnN0YW5jZUlEIjoKKyAgICAgICAgICAgICAgICBjYXNlICJTVl9WZXJ0ZXhJRCI6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlICJvdXRwdXQiOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAiUFNJWkUiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNW
X1Bvc2l0aW9uIjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgorICAg
ICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgImlucHV0IjoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgICAgIGNh
c2UgIlNWX0lzRnJvbnRGYWNlIjoKKyAgICAgICAgICAgICAgICBjYXNlICJTVl9TYW1wbGVJbmRl
eCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfSW5uZXJDb3ZlcmFnZSI6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlICJvdXRwdXQiOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSAiU1ZfVGFyZ2V0IjoKKyAgICAgICAgICAgICAgICBjYXNlICJT
Vl9EZXB0aCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfQ292ZXJhZ2UiOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24g
IT0gImlucHV0IikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBz
d2l0Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgY2FzZSAiU1ZfRGlzcGF0Y2hUaHJlYWRJ
RCI6CisgICAgICAgICAgICBjYXNlICJTVl9Hcm91cElEIjoKKyAgICAgICAgICAgIGNhc2UgIlNW
X0dyb3VwSW5kZXgiOgorICAgICAgICAgICAgY2FzZSAiU1ZfR3JvdXBUaHJlYWRJRCI6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSAidGVzdCI6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaGFkZSB0eXBlOiAke3NoYWRlclR5cGV9YCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICBsZXQgcmVz
dWx0ID0gdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy5leHRyYUFyZ3VtZW50cykKKyAgICAg
ICAgICAgIHJlc3VsdCArPSB0aGlzLmV4dHJhQXJndW1lbnRzLmpvaW4oIiIpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DYWxsRXhwcmVzc2lvbi5qcwppbmRleCA0ZTRkNjVmMDkxMzgwNGY0ZDBlNzBjMDAyYmY2
MzE0MDYwYjBlZTJlLi5iNGMwZGE3ODc3MzBhMWIzODgxMGM4YjU5NDMxNzg0OTA5ZGRiM2UwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcwpA
QCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIENhbGxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lv
biB7CiAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwgIm9w
ZXJhdG9yJltdIiwgdGhpcy5yZXN1bHRUeXBlLCBbCiAgICAgICAgICAgICBuZXcgRnVuY1BhcmFt
ZXRlcih0aGlzLm9yaWdpbiwgbnVsbCwgYXJyYXlSZWZUeXBlKSwKICAgICAgICAgICAgIG5ldyBG
dW5jUGFyYW1ldGVyKHRoaXMub3JpZ2luLCBudWxsLCB1aW50VHlwZSkKLSAgICAgICAgXSwgZmFs
c2UsIG51bGwpOworICAgICAgICBdLCBmYWxzZSk7CiAKICAgICAgICAgYXJyYXlSZWZBY2Nlc3Nv
ci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAg
Y2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAgICAgIGNv
bnN0IGFycmF5VHlwZSA9IHRoaXMuYXJndW1lbnRUeXBlc1swXTsKICAgICAgICAgICAgIGNvbnN0
IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwgIm9wZXJhdG9yLmxlbmd0aCIsIHRo
aXMucmVzdWx0VHlwZSwgWwogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKHRoaXMu
b3JpZ2luLCBudWxsLCBhcnJheVR5cGUpCi0gICAgICAgICAgICBdLCBmYWxzZSwgbnVsbCk7Cisg
ICAgICAgICAgICBdLCBmYWxzZSk7CiAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KGFyZ3MsIG5vZGUpID0+IEVQdHIuYm94KGFycmF5VHlwZS5udW1FbGVtZW50c1ZhbHVlKTsKICAg
ICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXJndW1lbnRU
eXBlc1swXS5pc0FycmF5UmVmKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgQ2FsbEV4cHJl
c3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yTGVu
Z3RoID0gbmV3IE9wZXJhdG9yQXJyYXlSZWZMZW5ndGgoYXJyYXlSZWZUeXBlLnRvU3RyaW5nKCks
IGFkZHJlc3NTcGFjZSk7CiAgICAgICAgICAgICBjb25zdCBmdW5jID0gbmV3IE5hdGl2ZUZ1bmMo
dGhpcy5vcmlnaW4sICJvcGVyYXRvci5sZW5ndGgiLCB0aGlzLnJlc3VsdFR5cGUsIFsKICAgICAg
ICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0aGlzLm9yaWdpbiwgbnVsbCwgYXJyYXlSZWZU
eXBlKQotICAgICAgICAgICAgXSwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgXSwgZmFsc2Up
OwogICAgICAgICAgICAgb3BlcmF0b3JMZW5ndGguaW5zdGFudGlhdGVJbXBsZW1lbnRhdGlvbihm
dW5jKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDVmNTk4YjJlZTc1MjJiYmM4MTA1
NDVjOTQ4ZDc3M2YyZTRmOTk0N2QuLjA3Y2I3OGVmMzZjNDliMzZkNjFlN2U5YmJjY2Y4NDI2MWU1
ODkxNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMzIs
MTUgKzMyLDE2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgdGhp
cy5fY3VycmVudFN0YXRlbWVudCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3ZlcnRleEVudHJ5UG9p
bnRzID0gbmV3IFNldCgpOwogICAgICAgICB0aGlzLl9mcmFnbWVudEVudHJ5UG9pbnRzID0gbmV3
IFNldCgpOworICAgICAgICB0aGlzLl9jb21wdXRlRW50cnlQb2ludHMgPSBuZXcgU2V0KCk7CiAg
ICAgfQotICAgIAorCiAgICAgdmlzaXRQcm9ncmFtKG5vZGUpCiAgICAgewogICAgICAgICBsZXQg
ZG9TdGF0ZW1lbnQgPSBzdGF0ZW1lbnQgPT4gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudFN0
YXRlbWVudCA9IHN0YXRlbWVudDsKICAgICAgICAgICAgIHN0YXRlbWVudC52aXNpdCh0aGlzKTsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlw
ZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKQEAgLTU5
LDEwICs2MCwxOTggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB9
CiAgICAgfQogCisgICAgX2NoZWNrU2VtYW50aWNzKG5vZGUpCisgICAgeworICAgICAgICBjbGFz
cyBJdGVtIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHR5cGUsIHNlbWFudGljKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICAgICAgaWYgKCFz
ZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoIkFuIGVu
dHJ5LXBvaW50IGlucHV0L291dHB1dCBleGlzdHMgd2hpY2ggZG9lc24ndCBoYXZlIGEgc2VtYW50
aWMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICAgICAgICAgIGdldCBzZW1h
bnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CisgICAgICAgIH0KKworICAgICAgICBj
bGFzcyBHYXRoZXJlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgY29uc3RydWN0b3Io
Y3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBz
dXBlcigpOworICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRT
ZW1hbnRpYzsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmVzZXQoY3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1h
bnRpYzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRpYyh2
YWx1ZSkgeyB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSB2YWx1ZTsgfQorICAgICAgICAgICAgZ2V0
IGN1cnJlbnRTZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQorICAg
ICAgICAgICAgZ2V0IHJlc3VsdCgpIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQorCisgICAgICAg
ICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUs
IHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0TWF0cml4VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMu
cmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlz
LmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFN0
cnVjdFR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5j
dXJyZW50U2VtYW50aWMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3IoIlN0cnVjdHMgaW5zaWRlIGVudHJ5IHBvaW50IHNpZ25hdHVyZXMgY2FuJ3QgaGF2
ZSBzZW1hbnRpY3MuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgb2Ygbm9kZS5m
aWVsZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VtYW50aWMgPSBmaWVs
ZC5zZW1hbnRpYzsKKyAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZS52aXNpdCh0aGlzKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlw
ZVJlZihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNp
dCh0aGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRQdHJUeXBlKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRl
bShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2aXNpdEFycmF5UmVmVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMp
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRBcnJheVR5cGUobm9kZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5v
ZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IG5vZGUuc2VtYW50aWM7CisgICAgICAgICAgICAgICAg
bm9kZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgbGV0IGlucHV0R2F0aGVyZXIgPSBuZXcgR2F0aGVyZXIoKTsKKyAgICAgICAgZm9yIChsZXQg
cGFyYW1ldGVyIGluIG5vZGUucGFyYW1ldGVycykgeworICAgICAgICAgICAgaW5wdXRHYXRoZXJl
ci5yZXNldCgpOworICAgICAgICAgICAgaW5wdXRHYXRoZXJlci52aXNpdChwYXJhbWV0ZXIpOwor
ICAgICAgICB9CisgICAgICAgIGxldCBvdXRwdXRHYXRoZXJlciA9IG5ldyBHYXRoZXJlcihub2Rl
LnNlbWFudGljKTsKKyAgICAgICAgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KG91dHB1dEdhdGhlcmVy
KTsKKworICAgICAgICBmdW5jdGlvbiBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhpdGVtcykgewor
ICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBmYXN0ZXIgdGhhbiBPKG5eMikKKyAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBpdGVtcy5sZW5ndGg7ICsraikgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0uc2VtYW50aWMuZXF1YWxUb090aGVyU2VtYW50
aWMoaXRlbXNbal0uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3IoYER1cGxpY2F0ZSBzZW1hbnRpYyBmb3VuZCBpbiBlbnRyeSBwb2ludDogJHtp
dGVtc1tpXS5zZW1hbnRpY31gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaW5wdXRHYXRoZXJlci5y
ZXN1bHQpOworICAgICAgICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRHYXRoZXJlci5y
ZXN1bHQpOworCisgICAgICAgIGxldCBwcm9ncmFtID0gdGhpcy5fcHJvZ3JhbTsKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tTZW1hbnRpY1R5cGVzKGl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxl
dCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpdGVtLnNlbWFudGljLmlz
QWNjZXB0YWJsZVR5cGUoaXRlbS50eXBlLCBwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3IoYFNlbWFudGljICR7aXRlbS5zZW1hbnRpY30gaXMgdW5uYWNj
ZXB0YWJsZSB0eXBlICR7aXRlbS50eXBlfWApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNoZWNrU2VtYW50aWNUeXBlcyhpbnB1dEdhdGhlcmVyLnJlc3VsdCk7CisgICAgICAg
IGNoZWNrU2VtYW50aWNUeXBlcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQpOworCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGl0ZW1zLCBkaXJlY3Rpb24pIHsKKyAg
ICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWl0ZW0uc2VtYW50aWMuaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIG5vZGUu
c2hhZGVyVHlwZSkpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKGBT
ZW1hbnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFibGUgYXMgYW4gJHtkaXJlY3Rp
b259IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBlfWApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGlucHV0R2F0aGVy
ZXIucmVzdWx0LCAiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUo
b3V0cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisKKyAgICAgICAgY2xhc3MgUE9EQ2hl
Y2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgdmlzaXRFbnVtVHlwZShub2RlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2aXNpdEFycmF5VHlwZShub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0TmF0aXZl
VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmlz
TnVtYmVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFB0clR5cGUobm9kZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZpc2l0QXJyYXlSZWZUeXBlKG5vZGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBu
b2RlLmZpZWxkcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIGZpZWxk
LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlwZVJlZihub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2hlY2tQT0REYXRhKGl0ZW1zKSB7CisgICAg
ICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaWYgKChp
dGVtLnR5cGUgaW5zdGFuY2VvZiBQdHJUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2YgQXJy
YXlSZWZUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2YgQXJyYXlUeXBlKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZS5lbGVtZW50VHlwZS52aXNpdChuZXcgUE9EQ2hl
Y2tlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCJC
dWZmZXIgYXR0YWNoZWQgdG8gZW50cnkgcG9pbnQgbmVlZHMgdG8gb25seSBjb250YWluIFBPRCB0
eXBlcyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjaGVja1BPRERhdGEoaW5wdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAgICBjaGVja1BP
RERhdGEob3V0cHV0R2F0aGVyZXIucmVzdWx0KTspCisgICAgfQorCiAgICAgX2NoZWNrU2hhZGVy
VHlwZShub2RlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFJlbGF4IHRoZXNlIGNoZWNrcyBv
bmNlIHdlIGhhdmUgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgdGV4dHVyZXMgYW5kIHNhbXBsZXJz
LgotICAgICAgICBsZXQgc2hhZGVyRnVuYyA9IG5vZGU7CiAgICAgICAgIHN3aXRjaCAobm9kZS5z
aGFkZXJUeXBlKSB7CiAgICAgICAgIGNhc2UgInZlcnRleCI6CiAgICAgICAgICAgICBpZiAodGhp
cy5fdmVydGV4RW50cnlQb2ludHMuaGFzKG5vZGUubmFtZSkpCkBAIC03NCw2ICsyNjMsMTUgQEAg
Y2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBmcmFnbWVu
dCBlbnRyeSBwb2ludCBuYW1lICIgKyBub2RlLm5hbWUpOwogICAgICAgICAgICAgdGhpcy5fZnJh
Z21lbnRFbnRyeVBvaW50cy5hZGQobm9kZS5uYW1lKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wdXRlRW50cnlQ
b2ludHMuaGFzKG5vZGUubmFtZSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRHVwbGljYXRlIGNvbXB1dGUgZW50cnkgcG9p
bnQgbmFtZSAiICsgbm9kZS5uYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVFbnRyeVBv
aW50cy5hZGQobm9kZS5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJ0
ZXN0IjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgc2hhZGVyIHR5cGU6ICIgKyBub2RlLnNoYWRlclR5cGUpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC04NCw3ICsyODIsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVu
ZHMgVmlzaXRvciB7CiAKICAgICAgICAgaWYgKCFmdW5jLm5hbWUuc3RhcnRzV2l0aCgib3BlcmF0
b3IiKSkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIG9wZXJhdG9yIG92ZXJsb2Fk
IG5hbWU6ICIgKyBmdW5jLm5hbWUpOwotICAgICAgICAKKwogICAgICAgICBsZXQgY2hlY2tHZXR0
ZXIgPSAoa2luZCkgPT4gewogICAgICAgICAgICAgbGV0IG51bUV4cGVjdGVkUGFyYW1ldGVycyA9
IGtpbmQgPT0gImluZGV4IiA/IDIgOiAxOwogICAgICAgICAgICAgaWYgKGZ1bmMucGFyYW1ldGVy
cy5sZW5ndGggIT0gbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzKQpAQCAtOTIsNyArMjkwLDcgQEAgY2xh
c3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgaWYgKGZ1bmMucGFyYW1l
dGVyVHlwZXNbMF0udW5pZnlOb2RlLmlzUHRyKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKGZ1bmMub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCBoYXZlIGdldHRlciBm
b3IgcG9pbnRlciB0eXBlOiAiICsgZnVuYy5wYXJhbWV0ZXJUeXBlc1swXSk7CiAgICAgICAgIH07
Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBjaGVja1NldHRlciA9IChraW5kKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzID0ga2luZCA9PSAiaW5kZXgiID8gMyA6
IDI7CiAgICAgICAgICAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBudW1FeHBlY3Rl
ZFBhcmFtZXRlcnMpCkBAIC0xMTQsNyArMzEyLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZp
c2l0b3IgewogICAgICAgICAgICAgaWYgKCFyZXN1bHRUeXBlLmVxdWFscyh2YWx1ZVR5cGUpKQog
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKGZ1bmMub3JpZ2luLm9yaWdpblN0
cmluZywgIlNldHRlciBhbmQgZ2V0dGVyIG11c3QgYWdyZWUgb24gdmFsdWUgdHlwZSAoZ2V0dGVy
IGF0ICIgKyBvdmVybG9hZC5mdW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcgKyAiIHNheXMgIiArIHJl
c3VsdFR5cGUgKyAiIHdoaWxlIHRoaXMgc2V0dGVyIHNheXMgIiArIHZhbHVlVHlwZSArICIpIik7
CiAgICAgICAgIH07Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBjaGVja0FuZGVyID0gKGtpbmQp
ID0+IHsKICAgICAgICAgICAgIGxldCBudW1FeHBlY3RlZFBhcmFtZXRlcnMgPSBraW5kID09ICJp
bmRleCIgPyAyIDogMTsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlcnMubGVuZ3RoICE9
IG51bUV4cGVjdGVkUGFyYW1ldGVycykKQEAgLTEyNCw3ICszMjIsNyBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICBpZiAoIWZ1bmMucGFyYW1ldGVyVHlwZXNb
MF0udW5pZnlOb2RlLmlzUmVmKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KGZ1bmMub3JpZ2luLm9yaWdpblN0cmluZywgIlBhcmFtZXRlciB0byBhbmRlciBpcyBub3QgYSBy
ZWZlcmVuY2U6ICIgKyBmdW5jLnBhcmFtZXRlclR5cGVzWzBdKTsKICAgICAgICAgfTsKLSAgICAg
ICAgCisKICAgICAgICAgc3dpdGNoIChmdW5jLm5hbWUpIHsKICAgICAgICAgY2FzZSAib3BlcmF0
b3IgY2FzdCI6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4OSw0NCArMzg3LDQ2IEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
UGFyc2VyIGFjY2VwdGVkIHVucmVjb2duaXplZCBvcGVyYXRvcjogIiArIGZ1bmMubmFtZSk7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2aXNpdEZ1bmNEZWYobm9kZSkKICAgICB7Ci0g
ICAgICAgIGlmIChub2RlLnNoYWRlclR5cGUpCisgICAgICAgIGlmIChub2RlLnNoYWRlclR5cGUp
IHsKICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2hhZGVyVHlwZShub2RlKTsKKyAgICAgICAgICAg
IHRoaXMuX2NoZWNrU2VtYW50aWNzKG5vZGUpOworICAgICAgICB9CiAgICAgICAgIHRoaXMuX2No
ZWNrT3BlcmF0b3JPdmVybG9hZChub2RlLCBuYW1lID0+IHRoaXMuX3Byb2dyYW0uZnVuY3Rpb25z
LmdldChuYW1lKSk7CiAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKICAgICB9Ci0gICAg
CisKICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmJhc2VUeXBl
LnZpc2l0KHRoaXMpOwotICAgICAgICAKKwogICAgICAgICBsZXQgYmFzZVR5cGUgPSBub2RlLmJh
c2VUeXBlLnVuaWZ5Tm9kZTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFiYXNlVHlwZS5pc0lu
dCkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0
cmluZywgIkJhc2UgdHlwZSBvZiBlbnVtIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgbm9kZS5iYXNl
VHlwZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IG1lbWJlciBvZiBub2RlLm1lbWJl
cnMpIHsKICAgICAgICAgICAgIGlmICghbWVtYmVyLnZhbHVlKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxldCBtZW1iZXJUeXBlID0gbWVt
YmVyLnZhbHVlLnZpc2l0KHRoaXMpOwogICAgICAgICAgICAgaWYgKCFiYXNlVHlwZS5lcXVhbHNX
aXRoQ29tbWl0KG1lbWJlclR5cGUpKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG1lbWJlci5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiVHlwZSBvZiBlbnVtIG1lbWJlciAiICsg
bWVtYmVyLnZhbHVlLm5hbWUgKyAiIGRvZXMgbm90IHBhdGNoIGVudW0gYmFzZSB0eXBlIChtZW1i
ZXIgdHlwZSBpcyAiICsgbWVtYmVyVHlwZSArICIsIGVudW0gYmFzZSB0eXBlIGlzICIgKyBub2Rl
LmJhc2VUeXBlICsgIikiKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgbmV4
dFZhbHVlID0gYmFzZVR5cGUuZGVmYXVsdFZhbHVlOwogICAgICAgICBmb3IgKGxldCBtZW1iZXIg
b2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAgICBpZiAobWVtYmVyLnZhbHVlKSB7CiAgICAg
ICAgICAgICAgICAgbmV4dFZhbHVlID0gYmFzZVR5cGUuc3VjY2Vzc29yVmFsdWUobWVtYmVyLnZh
bHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSk7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgbWVtYmVy
LnZhbHVlID0gYmFzZVR5cGUuY3JlYXRlTGl0ZXJhbChtZW1iZXIub3JpZ2luLCBuZXh0VmFsdWUp
OwogICAgICAgICAgICAgbmV4dFZhbHVlID0gYmFzZVR5cGUuc3VjY2Vzc29yVmFsdWUobmV4dFZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgbWVtYmVyQXJyYXkgPSBB
cnJheS5mcm9tKG5vZGUubWVtYmVycyk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVt
YmVyQXJyYXkubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBtZW1iZXIgPSBtZW1iZXJB
cnJheVtpXTsKQEAgLTIzNiw3ICs0MzYsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG90aGVyTWVtYmVy
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZW51bSBtZW1iZXIgdmFsdWUgKCIgKyBt
ZW1iZXIubmFtZSArICIgaGFzICIgKyBtZW1iZXIudmFsdWUgKyAiIHdoaWxlICIgKyBvdGhlck1l
bWJlci5uYW1lICsgIiBoYXMgIiArIG90aGVyTWVtYmVyLnZhbHVlICsgIikiKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgZm91bmRaZXJvID0gZmFs
c2U7CiAgICAgICAgIGZvciAobGV0IG1lbWJlciBvZiBub2RlLm1lbWJlcnMpIHsKICAgICAgICAg
ICAgIGlmIChiYXNlVHlwZS52YWx1ZXNFcXVhbChtZW1iZXIudmFsdWUudW5pZnlOb2RlLnZhbHVl
Rm9yU2VsZWN0ZWRUeXBlLCBiYXNlVHlwZS5kZWZhdWx0VmFsdWUpKSB7CkBAIC0yNDcsNyArNDQ3
LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIWZvdW5k
WmVybykKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdp
blN0cmluZywgIkVudW0gZG9lcyBub3QgaGF2ZSBhIG1lbWJlciB3aXRoIHRoZSB2YWx1ZSB6ZXJv
Iik7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewogICAgICAg
ICBpZiAoIW5vZGUudHlwZSkKQEAgLTMwNiwyMCArNTA2LDIwIEBAIGNsYXNzIENoZWNrZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUubnVtQ29sdW1uc1ZhbHVlICE9IDIgJiYg
bm9kZS5udW1Db2x1bW5zVmFsdWUgIT0gMyAmJiBub2RlLm51bUNvbHVtbnNWYWx1ZSAhPSA0KQog
ICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoYCR7bm9kZS50b1N0cmluZygpfTogJHtu
b2RlLm51bUNvbHVtbnNWYWx1ZX0gaXMgbm90IDIsIDMsIG9yIDQuYCk7CiAgICAgfQotICAgIAor
CiAgICAgdmlzaXRBcnJheVR5cGUobm9kZSkKICAgICB7CiAgICAgICAgIG5vZGUuZWxlbWVudFR5
cGUudmlzaXQodGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5udW1FbGVtZW50
cy5pc0NvbnN0ZXhwcikKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3Jp
Z2luLm9yaWdpblN0cmluZywgIkFycmF5IGxlbmd0aCBtdXN0IGJlIGNvbnN0ZXhwciIpOwotICAg
ICAgICAKKwogICAgICAgICBsZXQgdHlwZSA9IG5vZGUubnVtRWxlbWVudHMudmlzaXQodGhpcyk7
Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdHlwZS5lcXVhbHNXaXRoQ29tbWl0KHRoaXMuX3By
b2dyYW0uaW50cmluc2ljcy51aW50KSkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkFycmF5IGxlbmd0aCBtdXN0IGJlIGEgdWludCIp
OwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0VmFyaWFibGVEZWNsKG5vZGUpCiAgICAgewogICAg
ICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CkBAIC0zMzAsNyArNTMwLDcgQEAgY2xhc3MgQ2hl
Y2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgbWlzbWF0Y2ggaW4gdmFyaWFibGUg
aW5pdGlhbGl6YXRpb246ICIgKyBsaHNUeXBlICsgIiB2ZXJzdXMgIiArIHJoc1R5cGUpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpCiAgICAgewog
ICAgICAgICBsZXQgbGhzVHlwZSA9IG5vZGUubGhzLnZpc2l0KHRoaXMpOwpAQCAtMzQyLDEyICs1
NDIsMTIgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBub2RlLnR5
cGUgPSBsaHNUeXBlOwogICAgICAgICByZXR1cm4gbGhzVHlwZTsKICAgICB9Ci0gICAgCisKICAg
ICB2aXNpdElkZW50aXR5RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5v
ZGUudGFyZ2V0LnZpc2l0KHRoaXMpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0IGxoc1R5cGUgPSBub2Rl
LmxWYWx1ZS52aXNpdCh0aGlzKTsKQEAgLTM2MiwxMyArNTYyLDEzIEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHJlYWQtbW9kaWZ5LXdyaXRl
OiAiICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyBuZXdWYWx1ZVR5cGUpOwogICAgICAgICByZXR1
cm4gbm9kZS5yZXN1bHRFeHAudmlzaXQodGhpcyk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRB
bm9ueW1vdXNWYXJpYWJsZShub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnR5cGUpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFub255bW91cyB2YXJpYWJsZSBtdXN0IGtub3cg
dHlwZSBiZWZvcmUgZmlyc3QgYXBwZWFyYW5jZSIpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0
RGVyZWZlcmVuY2VFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IG5v
ZGUucHRyLnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKQEAgLTM4MCwxNiArNTgwLDE2IEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
TnVsbCBhZGRyZXNzIHNwYWNlIGluIHR5cGU6ICIgKyB0eXBlKTsKICAgICAgICAgcmV0dXJuIG5v
ZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE1ha2VQdHJFeHByZXNzaW9uKG5vZGUp
CiAgICAgewogICAgICAgICBsZXQgZWxlbWVudFR5cGUgPSBub2RlLmxWYWx1ZS52aXNpdCh0aGlz
KS51bmlmeU5vZGU7CiAgICAgICAgIGlmICghbm9kZS5sVmFsdWUuaXNMVmFsdWUpCiAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJPcGVy
YW5kIHRvICYgaXMgbm90IGFuIExWYWx1ZTogIiArIG5vZGUubFZhbHVlICsgbm9kZS5sVmFsdWUu
bm90TFZhbHVlUmVhc29uU3RyaW5nKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIG5ldyBQ
dHJUeXBlKG5vZGUub3JpZ2luLCBub2RlLmxWYWx1ZS5hZGRyZXNzU3BhY2UsIGVsZW1lbnRUeXBl
KTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE1ha2VBcnJheVJlZkV4cHJlc3Npb24obm9kZSkK
ICAgICB7CiAgICAgICAgIGxldCBlbGVtZW50VHlwZSA9IG5vZGUubFZhbHVlLnZpc2l0KHRoaXMp
LnVuaWZ5Tm9kZTsKQEAgLTM5NywzNyArNTk3LDM3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgICAgIG5vZGUuYmVjb21lKG5ldyBDb252ZXJ0UHRyVG9BcnJheVJl
ZkV4cHJlc3Npb24obm9kZS5vcmlnaW4sIG5vZGUubFZhbHVlKSk7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IEFycmF5UmVmVHlwZShub2RlLm9yaWdpbiwgZWxlbWVudFR5cGUuYWRkcmVzc1NwYWNl
LCBlbGVtZW50VHlwZS5lbGVtZW50VHlwZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgaWYgKCFub2RlLmxWYWx1ZS5pc0xWYWx1ZSkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIk9wZXJhbmQgdG8gQCBpcyBub3QgYW4g
TFZhbHVlOiAiICsgbm9kZS5sVmFsdWUgKyBub2RlLmxWYWx1ZS5ub3RMVmFsdWVSZWFzb25TdHJp
bmcpOwotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudFR5cGUuaXNBcnJheSkgewogICAg
ICAgICAgICAgbm9kZS5udW1FbGVtZW50cyA9IGVsZW1lbnRUeXBlLm51bUVsZW1lbnRzOwogICAg
ICAgICAgICAgZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZS5lbGVtZW50VHlwZTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBub2RlLm51bUVsZW1lbnRzID0gVWludExpdGVyYWwud2l0aFR5
cGUobm9kZS5vcmlnaW4sIDEsIHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy51aW50KTsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgQXJyYXlSZWZUeXBlKG5vZGUub3JpZ2luLCBu
b2RlLmxWYWx1ZS5hZGRyZXNzU3BhY2UsIGVsZW1lbnRUeXBlKTsKICAgICB9Ci0gICAgCisKICAg
ICB2aXNpdENvbnZlcnRUb0FycmF5UmVmRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbm90IGV4aXN0IHlldC4iKTsKICAgICB9Ci0gICAgCisK
ICAgICBfZmluaXNoVmlzaXRpbmdQcm9wZXJ0eUFjY2Vzcyhub2RlLCBiYXNlVHlwZSwgZXh0cmFB
cmdzLCBleHRyYUFyZ1R5cGVzKQogICAgIHsKICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZS52
aXNpdChuZXcgQXV0b1dyYXBwZXIoKSkKICAgICAgICAgbm9kZS5iYXNlVHlwZSA9IGJhc2VUeXBl
OwotICAgICAgICAKKwogICAgICAgICAvLyBTdWNoIGEgdHlwZSBtdXN0IGV4aXN0LiBUaGlzIG1h
eSB0aHJvdyBpZiBpdCBkb2Vzbid0LgogICAgICAgICBsZXQgdHlwZUZvckFuZCA9IGJhc2VUeXBl
LmFyZ3VtZW50VHlwZUZvckFuZE92ZXJsb2FkKG5vZGUub3JpZ2luKTsKICAgICAgICAgaWYgKCF0
eXBlRm9yQW5kKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZ2V0IHR5cGVG
b3JBbmQiKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGVycm9yRm9yR2V0OwogICAgICAgICBs
ZXQgZXJyb3JGb3JBbmQ7Ci0gICAgICAgIAorCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gQ2FsbEV4cHJlc3Npb24ucmVzb2x2ZSgKICAgICAgICAgICAgICAgICBub2Rl
Lm9yaWdpbiwgbm9kZS5wb3NzaWJsZUdldE92ZXJsb2FkcywKQEAgLTQzOSwxMCArNjM5LDEwIEBA
IGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBl
OwogICAgICAgICAgICAgZXJyb3JGb3JHZXQgPSBlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICBsZXQgYmFzZUZvckFuZCA9IGJhc2VUeXBlLmFyZ3Vt
ZW50Rm9yQW5kT3ZlcmxvYWQobm9kZS5vcmlnaW4sIG5vZGUuYmFzZSk7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IENhbGxFeHByZXNzaW9uLnJlc29sdmUoCiAgICAg
ICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucG9zc2libGVBbmRPdmVybG9hZHMsCiAgICAg
ICAgICAgICAgICAgbm9kZS5hbmRGdW5jTmFtZSwgW2Jhc2VGb3JBbmQsIC4uLmV4dHJhQXJnc10s
IFt0eXBlRm9yQW5kLCAuLi5leHRyYUFyZ1R5cGVzXSwKQEAgLTQ1NCw3ICs2NTQsNyBAQCBjbGFz
cyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAg
ICAgICAgICAgIGVycm9yRm9yQW5kID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAoIW5vZGUucmVzdWx0VHlwZUZvckdldCAmJiAhbm9kZS5yZXN1bHRUeXBlRm9yQW5kKSB7
CiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigKICAgICAgICAgICAgICAgICBub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsCkBAIC00NjMsMTEgKzY2MywxMSBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgImFuZCB0cmllZCBieS1wb2ludGVy
OlxuIiArCiAgICAgICAgICAgICAgICAgZXJyb3JGb3JBbmQudHlwZUVycm9yTWVzc2FnZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKG5vZGUucmVzdWx0VHlwZUZvckdldCAm
JiBub2RlLnJlc3VsdFR5cGVGb3JBbmQKICAgICAgICAgICAgICYmICFub2RlLnJlc3VsdFR5cGVG
b3JHZXQuZXF1YWxzKG5vZGUucmVzdWx0VHlwZUZvckFuZCkpCiAgICAgICAgICAgICB0aHJvdyBu
ZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJSZXN1bHQgdHlwZSByZXNv
bHZlZCBieS12YWx1ZSAoIiArIG5vZGUucmVzdWx0VHlwZUZvckdldCArICIpIGRvZXMgbm90IG1h
dGNoIHJlc3VsdCB0eXBlIHJlc29sdmVkIGJ5LXBvaW50ZXIgKCIgKyBub2RlLnJlc3VsdFR5cGVG
b3JBbmQgKyAiKSIpOwotICAgICAgICAKKwogICAgICAgICB0cnkgewogICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IENhbGxFeHByZXNzaW9uLnJlc29sdmUoCiAgICAgICAgICAgICAgICAgbm9kZS5v
cmlnaW4sIG5vZGUucG9zc2libGVTZXRPdmVybG9hZHMsCkBAIC00ODAsNyArNjgwLDcgQEAgY2xh
c3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgICAgICAgICBub2RlLmVycm9yRm9yU2V0ID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICAvLyBPSywgbm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBhbiBsdmFs
dWUuIFdlIGFyZSBhbiBsdmFsdWUgaWYgd2UgY2FuIGJlIGFzc2lnbmVkIHRvLiBXZSBjYW4KICAg
ICAgICAgLy8gYmUgYXNzaWduZWQgdG8gaWYgd2UgaGF2ZSBhbiBhbmRlciBvciBzZXR0ZXIuIEJ1
dCBpdCdzIHdlaXJkZXIgdGhhbiB0aGF0LiBXZSBhbHNvIG5lZWQgdGhlIGJhc2UgdG8gYmUKICAg
ICAgICAgLy8gYW4gbHZhbHVlLCBleGNlcHQgdW5sZXNzIHRoZSBiYXNlIGlzIGFuIGFycmF5IHJl
ZmVyZW5jZS4KQEAgLTQ5OCwzMSArNjk4LDMxIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgIG5vZGUuaXNMVmFsdWUgPSB0cnVlOwogICAgICAgICAgICAgbm9k
ZS5hZGRyZXNzU3BhY2UgPSBub2RlLmJhc2UuaXNMVmFsdWUgPyBub2RlLmJhc2UuYWRkcmVzc1Nw
YWNlIDogYmFzZVR5cGUuYWRkcmVzc1NwYWNlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJldHVybiBub2RlLnJlc3VsdFR5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXREb3RF
eHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgc3RydWN0VHlwZSA9IG5vZGUuc3Ry
dWN0LnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFZp
c2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgc3RydWN0VHlwZSwgW10sIFtdKTsKICAgICB9Ci0g
ICAgCisKICAgICB2aXNpdEluZGV4RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0
IGFycmF5VHlwZSA9IG5vZGUuYXJyYXkudmlzaXQodGhpcykudW5pZnlOb2RlOwogICAgICAgICBs
ZXQgaW5kZXhUeXBlID0gbm9kZS5pbmRleC52aXNpdCh0aGlzKTsKLSAgICAgICAgCisKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFZpc2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgYXJyYXlU
eXBlLCBbbm9kZS5pbmRleF0sIFtpbmRleFR5cGVdKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNp
dFZhcmlhYmxlUmVmKG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUudmFyaWFibGUudHlw
ZSkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVmFyaWFibGUgaGFzIG5vIHR5cGU6ICIg
KyBub2RlLnZhcmlhYmxlKTsKICAgICAgICAgcmV0dXJuIG5vZGUudmFyaWFibGUudHlwZTsKICAg
ICB9Ci0gICAgCisKICAgICB2aXNpdFJldHVybihub2RlKQogICAgIHsKICAgICAgICAgaWYgKG5v
ZGUudmFsdWUpIHsKQEAgLTUzMywyNiArNzMzLDI2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJUcnlpbmcgdG8gcmV0dXJuICIgKyByZXN1bHRUeXBlICsgIiBpbiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAiICsgbm9kZS5mdW5jLnJldHVyblR5cGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5m
dW5jLnJldHVyblR5cGUuZXF1YWxzV2l0aENvbW1pdCh0aGlzLl9wcm9ncmFtLmludHJpbnNpY3Mu
dm9pZCkpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJOb24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIik7CiAgICAg
fQotICAgIAorCiAgICAgdmlzaXRHZW5lcmljTGl0ZXJhbChub2RlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE51bGxMaXRlcmFsKG5v
ZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS50eXBlOwogICAgIH0KLSAgICAKKwogICAg
IHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9n
cmFtLmludHJpbnNpY3MuYm9vbDsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdEVudW1MaXRlcmFs
KG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS5tZW1iZXIuZW51bVR5cGU7CkBAIC02
MTQsMTQgKzgxNCwxNCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgdmlz
aXRTd2l0Y2hTdGF0ZW1lbnQobm9kZSkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gbm9kZS52
YWx1ZS52aXNpdCh0aGlzKS5jb21taXQoKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCF0eXBl
LnVuaWZ5Tm9kZS5pc0ludCAmJiAhKHR5cGUudW5pZnlOb2RlIGluc3RhbmNlb2YgRW51bVR5cGUp
KQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiQ2Fubm90IHN3aXRjaCBvbiBub24taW50ZWdlci9ub24tZW51bSB0eXBlOiAiICsgdHlw
ZSk7CiAKICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKLSAgICAgICAgCisKICAgICAgICAgbGV0
IGhhc0RlZmF1bHQgPSBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQgc3dpdGNo
Q2FzZSBvZiBub2RlLnN3aXRjaENhc2VzKSB7CiAgICAgICAgICAgICBzd2l0Y2hDYXNlLmJvZHku
dmlzaXQodGhpcyk7CiAKQEAgLTYyOSwyNiArODI5LDI2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICBoYXNEZWZhdWx0ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoIXN3aXRjaENhc2UudmFsdWUuaXNDb25zdGV4cHIpCiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3Ioc3dpdGNoQ2FzZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU3dp
dGNoIGNhc2Ugbm90IGNvbnN0ZXhwcjogIiArIHN3aXRjaENhc2UudmFsdWUpOwotICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIGxldCBjYXNlVHlwZSA9IHN3aXRjaENhc2UudmFsdWUudmlzaXQo
dGhpcyk7CiAgICAgICAgICAgICBpZiAoIXR5cGUuZXF1YWxzV2l0aENvbW1pdChjYXNlVHlwZSkp
CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc3dpdGNoQ2FzZS5vcmlnaW4u
b3JpZ2luU3RyaW5nLCAiU3dpdGNoIGNhc2UgdHlwZSBkb2VzIG5vdCBtYXRjaCBzd2l0Y2ggdmFs
dWUgdHlwZSAoY2FzZSB0eXBlIGlzICIgKyBjYXNlVHlwZSArICIgYnV0IHN3aXRjaCB2YWx1ZSB0
eXBlIGlzICIgKyB0eXBlICsgIikiKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IG5vZGUuc3dpdGNoQ2FzZXMubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgIGxldCBmaXJzdENhc2UgPSBub2RlLnN3aXRjaENhc2VzW2ldOwogICAgICAgICAgICAg
Zm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbm9kZS5zd2l0Y2hDYXNlcy5sZW5ndGg7ICsraikgewog
ICAgICAgICAgICAgICAgIGxldCBzZWNvbmRDYXNlID0gbm9kZS5zd2l0Y2hDYXNlc1tqXTsKLSAg
ICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENhc2UuaXNEZWZhdWx0
ICE9IHNlY29uZENhc2UuaXNEZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENhc2UuaXNEZWZh
dWx0KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzZWNvbmRDYXNl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZGVmYXVsdCBjYXNlIGluIHN3aXRjaCBz
dGF0ZW1lbnQiKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxldCB2YWx1
ZXNFcXVhbCA9IHR5cGUudW5pZnlOb2RlLnZhbHVlc0VxdWFsKAogICAgICAgICAgICAgICAgICAg
ICBmaXJzdENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2VsZWN0ZWRUeXBlLAogICAgICAg
ICAgICAgICAgICAgICBzZWNvbmRDYXNlLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVk
VHlwZSk7CkBAIC02NTYsMTkgKzg1NiwxOSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHNlY29uZENhc2Uu
b3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBjYXNlIGluIHN3aXRjaCBzdGF0ZW1lbnQg
Zm9yIHZhbHVlICIgKyBmaXJzdENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2VsZWN0ZWRU
eXBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAo
IWhhc0RlZmF1bHQpIHsKICAgICAgICAgICAgIGxldCBpbmNsdWRlZFZhbHVlcyA9IG5ldyBTZXQo
KTsKICAgICAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9kZS5zd2l0Y2hDYXNlcykK
ICAgICAgICAgICAgICAgICBpbmNsdWRlZFZhbHVlcy5hZGQoc3dpdGNoQ2FzZS52YWx1ZS51bmlm
eU5vZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IGZvciAobGV0IHt2YWx1ZSwgbmFtZX0gb2YgdHlwZS51bmlmeU5vZGUuYWxsVmFsdWVzKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVkVmFsdWVzLmhhcyh2YWx1ZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmlu
ZywgIlZhbHVlIG5vdCBoYW5kbGVkIGJ5IHN3aXRjaCBzdGF0ZW1lbnQ6ICIgKyBuYW1lKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHZpc2l0Q29tbWFFeHBy
ZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKQEAgLTY5MSw3
ICs4OTEsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIG5vZGUu
aXNMVmFsdWUgPSBub2RlLmJvZHlFeHByZXNzaW9uLmlzTFZhbHVlICYmIG5vZGUuZWxzZUV4cHJl
c3Npb24uaXNMVmFsdWU7CiAgICAgICAgIHJldHVybiBib2R5VHlwZTsKICAgICB9Ci0gICAgCisK
ICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgYXJndW1l
bnRUeXBlcyA9IG5vZGUuYXJndW1lbnRMaXN0Lm1hcChhcmd1bWVudCA9PiB7CkBAIC03MDAsNyAr
OTAwLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigidmlzaXRvciByZXR1cm5lZCBudWxsIGZvciAiICsgYXJndW1lbnQp
OwogICAgICAgICAgICAgcmV0dXJuIG5ld0FyZ3VtZW50LnZpc2l0KG5ldyBBdXRvV3JhcHBlcigp
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9
IGFyZ3VtZW50VHlwZXM7CiAgICAgICAgIGlmIChub2RlLnJldHVyblR5cGUpCiAgICAgICAgICAg
ICBub2RlLnJldHVyblR5cGUudmlzaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0ZpZWxkLmpzCmluZGV4IDkwZDdlZjhhNjg0MWNiZmU5ZTY5ZDgxNTQ1N2NjZTVhYTdjZWI5ZGUu
LjMxMmIwMGQ5ZTI4Y2IzZTMzNmFlMDlmYzM5NmZkODljMTYwYWIwYTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMCwyNSArMjAsMzAgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
ICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgRmllbGQgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1
Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0
eXBlLCBzZW1hbnRpYyA9IG51bGwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0
aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAg
ICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsK
ICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQog
ICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyBy
ZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3Nl
bWFudGljOyB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMudHlwZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudHlw
ZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgaWYgKHRoaXMuc2VtYW50aWMpCisgICAgICAg
ICAgICByZXN1bHQgKz0gIjogIiArIHRoaXMuc2VtYW50aWM7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKaW5kZXggNGY1
ODkwNjA3YjFhMjkxNzE4MjM0YWZhM2Q2ZTA2NmYxZDk5MDVkNS4uNjY1NjY0YmZjZTBiYmYzYjE4
NzcwYmMxMTI0YjY5NWMzN2VmYjU2OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuYy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5j
LmpzCkBAIC0yNSw3ICsyNSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmMgZXh0ZW5k
cyBOb2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFt
ZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSA9IG51bGwsIHNlbWFu
dGljID0gbnVsbCkKICAgICB7CiAgICAgICAgIGlmICghKG9yaWdpbiBpbnN0YW5jZW9mIExleGVy
VG9rZW4pKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgb3JpZ2luOiAiICsgb3Jp
Z2luKTsKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRnVuYyBleHRlbmRzIE5vZGUgewogICAgICAg
ICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICAgICAgdGhpcy5faXNDYXN0ID0g
aXNDYXN0OwogICAgICAgICB0aGlzLl9zaGFkZXJUeXBlID0gc2hhZGVyVHlwZTsKKyAgICAgICAg
dGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigp
IHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQpAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBGdW5jIGV4
dGVuZHMgTm9kZSB7CiAgICAgZ2V0IHBhcmFtZXRlclR5cGVzKCkgeyByZXR1cm4gdGhpcy5wYXJh
bWV0ZXJzLm1hcChwYXJhbWV0ZXIgPT4gcGFyYW1ldGVyLnR5cGUpOyB9CiAgICAgZ2V0IGlzQ2Fz
dCgpIHsgcmV0dXJuIHRoaXMuX2lzQ2FzdDsgfQogICAgIGdldCBzaGFkZXJUeXBlKCkgeyByZXR1
cm4gdGhpcy5fc2hhZGVyVHlwZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMu
X3NlbWFudGljOyB9CiAgICAgZ2V0IGlzRW50cnlQb2ludCgpIHsgcmV0dXJuIHRoaXMuc2hhZGVy
VHlwZSAhPSBudWxsOyB9CiAgICAgZ2V0IHJldHVyblR5cGVGb3JPdmVybG9hZFJlc29sdXRpb24o
KSB7IHJldHVybiB0aGlzLmlzQ2FzdCA/IHRoaXMucmV0dXJuVHlwZSA6IG51bGw7IH0KICAgICAK
QEAgLTcwLDcgKzcyLDEwIEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgICAg
IHJlc3VsdCArPSBgb3BlcmF0b3IgJHt0aGlzLnJldHVyblR5cGV9YDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMucmV0dXJuVHlwZX0gJHt0aGlzLm5hbWV9YDsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdCArICIoIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAg
ICAgICAgcmVzdWx0ICs9ICIoIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAgICAgICAgaWYg
KHRoaXMuc2VtYW50aWMpCisgICAgICAgICAgICByZXN1bHQgKz0gIjogIiArIHRoaXMuc2VtYW50
aWM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHRvU3RyaW5nKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCmluZGV4IDMwMTZiMTMyNTkx
N2RkNzJlYWE3ZGVkODVhNmViMjdlNTgwMjk4YWMuLjUxMzY4NDgyMjhkYWIxNGE3YmJjNTNkMDBj
NDYzMDA4ZGY3MmU1ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNEZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5q
cwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jRGVmIGV4dGVu
ZHMgRnVuYyB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJh
bWV0ZXJzLCBib2R5LCBpc0Nhc3QsIHNoYWRlclR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2lu
LCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBib2R5LCBpc0Nhc3QsIHNoYWRlclR5cGUs
IHNlbWFudGljKQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBl
LCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICBzdXBlcihvcmlnaW4s
IG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSwgc2VtYW50
aWMpOwogICAgICAgICB0aGlzLl9ib2R5ID0gYm9keTsKICAgICAgICAgdGhpcy5pc1Jlc3RyaWN0
ZWQgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9GdW5jUGFyYW1ldGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Y1BhcmFtZXRlci5qcwppbmRleCBkMGJiMWQ2MjMwNGE0ODZjYWI4NTM3NzU3NTlkNGU4ZWQ2N2M4
MzgzLi4wNWNkYjUyZmRlMzkwZGIyNTBlYzZjMjZiYzY3ZTlmNTBiMWYxZjQ3IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDMwICsyMCwzNyBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jUGFyYW1ldGVy
IGV4dGVuZHMgVmFsdWUgewogICAgIC8vIFRoZSBuYW1lIGlzIG9wdGlvbmFsLiBJdCdzIE9LIGZv
ciBpdCB0byBiZSBudWxsIQotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSkKKyAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKICAgICB7
CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAg
ICAgdGhpcy5fbmFtZSA9IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAg
ICB0aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOwogICAgIH0KICAgICAKICAgICBnZXQgb3JpZ2lu
KCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlz
Ll9uYW1lOyB9CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0
IHNlbWFudGljKCkgeyByZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KICAgICBnZXQgdmFySXNMVmFs
dWUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKKyAgICAg
ICAgbGV0IHJlc3VsdDsKICAgICAgICAgaWYgKCF0aGlzLm5hbWUpCi0gICAgICAgICAgICByZXR1
cm4gIiIgKyB0aGlzLnR5cGU7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5cGUgKyAiICIgKyB0aGlz
Lm5hbWU7CisgICAgICAgICAgICByZXN1bHQgPSAiIiArIHRoaXMudHlwZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAg
ICAgICBpZiAodGhpcy5zZW1hbnRpYykKKyAgICAgICAgICAgIHJlc3VsdCArPSAiOiAiICsgdGhp
cy5zZW1hbnRpYzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IDY4YjBkZDU3M2ZjMDJl
YTM4NTE3OTU1ZDgzODhhNjQ2YWE5MGE1OTYuLmM0NDRmNTY1ZDNhNDk5ZTc3YWEyZWEyZTA0ZGJj
YTRmNWQwZmQ2ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2lj
cy5qcwpAQCAtMjcyLDYgKzI3Miw3IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAg
ICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbYCR7dGV4dHVy
ZVR5cGV9PCR7dHlwZUFyZ3VtZW50fT5gXSA9IHR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5pc1RleHR1cmUg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1
ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIHt9KTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPD0gNDsg
KytpKSB7CkBAIC0yODAsNiArMjgxLDcgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
W2Ake3RleHR1cmVUeXBlfTwke3R5cGVBcmd1bWVudH0ke2l9PmBdID0gdHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGUuaXNUZXh0dXJlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIu
c2V0KG9mZnNldCwge30pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNo
ZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcwpp
bmRleCBlYjVlZTY5NjljMWQ5MzM2M2FlMTU2NWMxN2RjY2MwYWFiMGExYmMzLi40N2ZkMzJjM2E4
NGQ2M2U2ZGNjNWYzN2M3Y2U0MjM3ZWQyNzQzNzJlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcwpAQCAtMzMsNTUgKzMzLDUgQEAgY2xhc3MgTGF0ZUNo
ZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKCFub2RlLmVsZW1lbnRUeXBlLmlz
UHJpbWl0aXZlKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4u
b3JpZ2luU3RyaW5nLCAiSWxsZWdhbCBwb2ludGVyIHRvIG5vbi1wcmltaXRpdmUgdHlwZTogIiAr
IG5vZGUpOwogICAgIH0KLSAgICAKLSAgICBfY2hlY2tTaGFkZXJUeXBlKG5vZGUpCi0gICAgewot
ICAgICAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGVzZSBjaGVja3MuIEZvciBub3csIHdlIHNob3Vs
ZCBvbmx5IGFjY2VwdCBpbnQzMiwgdWludDMyLCBmbG9hdDMyLCBhbmQgZmxvYXQ2NC4KLSAgICAg
ICAgbGV0IGFzc2VydFByaW1pdGl2ZSA9IHR5cGUgPT4gewotICAgICAgICAgICAgaWYgKCF0eXBl
LmlzUHJpbWl0aXZlKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUu
b3JpZ2luLm9yaWdpblN0cmluZywgIlNoYWRlciBzaWduYXR1cmUgY2Fubm90IGluY2x1ZGUgbm9u
LXByaW1pdGl2ZSB0eXBlOiAiICsgdHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGlmIChub2RlLnNoYWRlclR5cGUgPT0gInZlcnRleCIgfHwgbm9kZS5zaGFkZXJUeXBlID09ICJm
cmFnbWVudCIpIHsKLSAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShub2RlLnJldHVyblR5cGUp
OwotICAgICAgICAgICAgLy8gRklYTUU6IEZyYWdtZW50IHNoYWRlcnMgc2hvdWxkbid0IGhhdmUg
dGhpcyByZXN0cmljdGlvbjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTM4NwotICAgICAgICAgICAgaWYgKCEobm9kZS5yZXR1cm5UeXBlLnVuaWZ5Tm9kZSBpbnN0
YW5jZW9mIFN0cnVjdFR5cGUpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlNoYWRlciAiICsgbm9kZS5uYW1lICsgIiBtdXN0
IHJldHVybiBhIHN0cnVjdC4iKTsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIHN3
aXRjaCAobm9kZS5zaGFkZXJUeXBlKSB7Ci0gICAgICAgIGNhc2UgInZlcnRleCI6Ci0gICAgICAg
ICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUp
Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShwYXJhbWV0ZXIudHlwZSk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoIXBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZS5pc0FycmF5
UmVmKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsIG5vZGUubmFtZSArICIgYWNjZXB0cyBhIHBhcmFtZXRlciAiICsgcGFy
YW1ldGVyLm5hbWUgKyAiIHdoaWNoIGlzbid0IGEgc3RydWN0IGFuZCBpc24ndCBhbiBBcnJheVJl
Zi4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJm
cmFnbWVudCI6Ci0gICAgICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0
ZXJzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5uYW1lID09ICJzdGFnZUluIikg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIShwYXJhbWV0ZXIudHlwZS51bmlmeU5vZGUgaW5z
dGFuY2VvZiBTdHJ1Y3RUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkZyYWdtZW50IGVudHJ5IHBvaW50
cycgc3RhZ2VJbiBwYXJhbWV0ZXIgKG9mICIgKyBub2RlLm5hbWUgKyAiKSBtdXN0IGJlIGEgc3Ry
dWN0IHR5cGUuIik7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShwYXJhbWV0
ZXIudHlwZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFwYXJhbWV0ZXIudHlwZS51bmlmeU5vZGUuaXNBcnJheVJlZikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywg
IkZyYWdtZW50IGVudHJ5IHBvaW50J3MgIiArIHBhcmFtZXRlci5uYW1lICsgIiBwYXJhbWV0ZXIg
aXMgbm90IGFuIGFycmF5IHJlZmVyZW5jZS4iKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAidGVzdCI6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQmFkIHNoYWRlciB0eXBlOiAiICsgbm9kZS5zaGFkZXJUeXBlKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICB2aXNpdEZ1bmNEZWYobm9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChub2Rl
LnNoYWRlclR5cGUpCi0gICAgICAgICAgICB0aGlzLl9jaGVja1NoYWRlclR5cGUobm9kZSk7Ci0g
ICAgICAgIHN1cGVyLnZpc2l0RnVuY0RlZihub2RlKTsKLSAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCmluZGV4IGYwODY1MzQyZjJlZGQ3ZGVj
NDdiZjUyZDE1OTg2MTBjMzI0ZjBmMmMuLjVhZjk0ZmQxMTQ2MjE3OTdkZTY3ZWY5MTZmZWRkNGY2
MGExNDc5MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2
ZUZ1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5q
cwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4
dGVuZHMgRnVuYyB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBw
YXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBu
YW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QpCiAgICAgewotICAgICAgICBzdXBl
cihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlw
ZSk7CisgICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywg
aXNDYXN0KTsKICAgICAgICAgdGhpcy5pc1Jlc3RyaWN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5pbXBsZW1lbnRhdGlvbiA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ltcGxlbWVudGF0aW9uRGF0
YSA9IG51bGw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCmluZGV4IDdkMTM4
MWYyZTNjNWEzMGFkMWUzZDk3ZjYyMzU0N2JjZThiMDQ1ZTYuLjk1YmIwOWYwM2YyMzczZGU0NGNh
ZDZhZDMxZmY3ZjhjMjRkNjk1YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNl
LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBsZXQgbGV4ZXIgPSBuZXcgTGV4
ZXIob3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KTsKIAogICAgIC8v
IFRoZSBoYXJkZXN0IHBhcnQgb2YgZGVhbGluZyB3aXRoIEMtbGlrZSBsYW5ndWFnZXMgaXMgcGFy
c2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgotICAgIC8vIExldCdzIGNvbnNp
ZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRz
IGluIFdTTCB0aGF0IGJlaW5nIHdpdGggYW4KKyAgICAvLyBMZXQncyBjb25zaWRlciBpZiB0aGlz
IGhhcHBlbnMgaW4gV0hMU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRzIGluIFdITFNM
IHRoYXQgYmVpbmcgd2l0aCBhbgogICAgIC8vIGlkZW50aWZpZXIsIGlmIHdlIGFzc3VtZSB0aGF0
IGFueSBleHByZXNzaW9uIGNhbiBiZSBhIHN0YW5kYWxvbmUgc3RhdGVtZW50LgogICAgIC8vCiAg
ICAgLy8gICAgIHg7CkBAIC0xMDg1LDcgKzEwODUsMTMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBp
ZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiB0eXBl
OwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAg
ICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUudGV4
dCA6IG51bGwsIHR5cGUpOworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOworICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiOiIpKSB7CisgICAgICAgICAgICBzZW1hbnRpYyA9IHBhcnNlU2VtYW50
aWMoKTsKKyAgICAgICAgICAgIGlmIChzZW1hbnRpYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWM7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVs
bCwgdHlwZSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVy
cygpCkBAIC0xMTYyLDYgKzExNjgsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBuYW1lOwog
ICAgICAgICBsZXQgaXNDYXN0OwogICAgICAgICBsZXQgc2hhZGVyVHlwZTsKKyAgICAgICAgbGV0
IHNlbWFudGljID0gbnVsbDsKICAgICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1l
KCJvcGVyYXRvciIpOwogICAgICAgICBpZiAob3BlcmF0b3JUb2tlbikgewogICAgICAgICAgICAg
b3JpZ2luID0gb3BlcmF0b3JUb2tlbjsKQEAgLTExNzEsNyArMTE3OCw3IEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgICAgIG5hbWUgPSAib3BlcmF0b3IgY2FzdCI7CiAgICAgICAgICAgICBpc0Nhc3Qg
PSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHRyeUNv
bnN1bWUoInZlcnRleCIsICJmcmFnbWVudCIsICJ0ZXN0Iik7CisgICAgICAgICAgICBzaGFkZXJU
eXBlID0gdHJ5Q29uc3VtZSgidmVydGV4IiwgImZyYWdtZW50IiwgImNvbXB1dGUiLCAidGVzdCIp
OwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwogICAgICAgICAgICAgaWYg
KHJldHVyblR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJldHVyblR5cGU7CkBAIC0xMTgzLDEyICsxMTkwLDE3IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgICAgIG5hbWUgPSBwYXJzZUZ1bmNOYW1lKCk7CiAgICAgICAgICAgICBpZiAobmFtZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgICAgICBzZW1hbnRpYyA9
IHBhcnNlU2VtYW50aWMoKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlzQ2FzdCA9IGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGlmIChwYXJh
bWV0ZXJzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyhvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUs
IHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgRnVu
YyhvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlw
ZSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRnVuY0RlZigpCkBAIC0x
MTk5LDcgKzEyMTEsOTkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5L
aW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxv
Y2soKTsKICAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm4gYm9keTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2lu
LCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5j
LmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1
bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBi
b2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlLCBmdW5jLnNlbWFudGljKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpCisgICAgeworICAgICAg
ICBsZXQgb3JpZ2luID0gY29uc3VtZSgiYXR0cmlidXRlIik7CisgICAgICAgIGlmIChvcmlnaW4g
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgbGV0IGluZGV4ID0gY29uc3VtZUtpbmQoImludExpdGVyYWwiKTsKKyAgICAg
ICAgaWYgKGluZGV4IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IGluZGV4OworICAgICAgICBsZXQgdWludFZlcnNpb24gPSBpbmRleC50ZXh0ID4+PiAwOworICAg
ICAgICBpZiAodWludFZlcnNpb24gIT09IGluZGV4LnRleHQpCisgICAgICAgICAgICByZXR1cm4g
ZmFpbCgiU2VtYW50aWMgIGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIGluZGV4
LnRleHQpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
YXliZUVycm9yOworICAgICAgICByZXR1cm4gbmV3IFN0YWdlSW5PdXRTZW1hbnRpYyhvcmlnaW4s
IHVpbnRWZXJzaW9uKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVJlc291cmNlU2VtYW50
aWMoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInJlZ2lzdGVyIik7Cisg
ICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbGV0IG1vZGUgPSBjb25zdW1lKCJ1IiwgInQi
LCAiYiIsICJzIik7CisgICAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1vZGU7CisgICAgICAgIGxldCBpbmRleCA9IGNvbnN1bWVLaW5k
KCJpbnRMaXRlcmFsIik7CisgICAgICAgIGlmIChpbmRleCBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgbGV0IHVpbnRWZXJzaW9uID0g
aW5kZXgudGV4dCA+Pj4gMDsKKyAgICAgICAgaWYgKHVpbnRWZXJzaW9uICE9PSBpbmRleC50ZXh0
KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlNlbWFudGljICBpcyBub3QgMzItYml0IHVuc2ln
bmVkIGludGVnZXI6ICIgKyBpbmRleC50ZXh0KTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG5ldyBTdGFn
ZUluT3V0U2VtYW50aWMob3JpZ2luLCBtb2RlLnRleHQsIHVpbnRWZXJzaW9uKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpCisgICAg
eworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3BlY2lhbGl6ZWQiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CisgICAgICAgIHJldHVybiBuZXcgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
KG9yaWdpbik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VCdWlsdEluU2VtYW50aWMoKQor
ICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IHRyeUNvbnN1bWUoIlNWX0luc3RhbmNlSUQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfVmVydGV4SUQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUFNJWkUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfUG9zaXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
U1ZfSXNGcm9udEZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfU2Ft
cGxlSW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfSW5uZXJDb3Zl
cmFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9EZXB0aCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Db3ZlcmFnZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJTVl9EaXNwYXRjaFRocmVhZElEIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNWX0dyb3VwSUQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfR3JvdXBJbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTVl9Hcm91cFRocmVhZElEIik7CisgICAgICAgIGlmIChvcmlnaW4pCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IEJ1aWx0SW5TZW1hbnRpYyhvcmlnaW4sIG9yaWdpbi50ZXh0KTsKKyAgICAgICAg
b3JpZ2luID0gY29uc3VtZSgiU1ZfVGFyZ2V0Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBs
ZXQgaW5kZXggPSBjb25zdW1lS2luZCgiaW50TGl0ZXJhbCIpOworICAgICAgICBpZiAoaW5kZXgg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAg
ICAgIGxldCB1aW50VmVyc2lvbiA9IGluZGV4LnRleHQgPj4+IDA7CisgICAgICAgIGlmICh1aW50
VmVyc2lvbiAhPT0gaW5kZXgudGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJTZW1hbnRp
YyAgaXMgbm90IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXgudGV4dCk7CisgICAg
ICAgIHJldHVybiBuZXcgQnVpbHRJblNlbWFudGljKG9yaWdpbiwgb3JpZ2luLnRleHQsIHVpbnRW
ZXJzaW9uKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVNlbWFudGljKCkKKyAgICB7Cisg
ICAgICAgIGlmICh0ZXN0KCJhdHRyaWJ1dGUiKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVN0
YWdlSW5PdXRTZW1hbnRpYygpOworICAgICAgICBlbHNlIGlmICh0ZXN0KCJyZWdpc3RlciIpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVzb3VyY2VTZW1hbnRpYygpOworICAgICAgICBlbHNl
IGlmICh0ZXN0KCJzcGVjaWFsaXplZCIpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNl
RmllbGQoKQpAQCAtMTIxMCwxMCArMTMxNCwxNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBu
YW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKICAgICAgICAgaWYgKG5hbWUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0
IHNlbWFudGljID0gbnVsbDsKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkgeworICAgICAg
ICAgICAgc2VtYW50aWMgPSBwYXJzZVNlbWFudGljKCk7CisgICAgICAgICAgICBpZiAoc2VtYW50
aWMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFu
dGljOworICAgICAgICB9CiAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOwog
ICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAg
ICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5h
bWUudGV4dCwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgRmllbGQobmFtZSwgbmFtZS50ZXh0
LCB0eXBlLCBzZW1hbnRpYyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBl
KCkKQEAgLTEyNDUsNyArMTM1NSw5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCI7Iik7CiAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7Ci0gICAgICAgIHJldHVy
biBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUs
IGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QsIGZ1bmMuc2hhZGVyVHlwZSk7CisgICAgICAg
IGlmIChmdW5jLnNoYWRlclR5cGUgfHwgZnVuYy5zZW1hbnRpYykKKyAgICAgICAgICAgIHJldHVy
biBmYWlsKCJOYXRpdmUgZnVuY3Rpb25zIGNhbid0IGJlIGVudHJ5IHBvaW50cyBvciBoYXZlIHNl
bWFudGljcy4iKTsKKyAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3JpZ2luLCBm
dW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlzQ2FzdCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Jlc291cmNlU2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUyNWE5
ODVhNGI4NGQzOTEzMGVlOGU1ZWE3NDg4NGQyMWVhYmZiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc291cmNlU2VtYW50aWMuanMKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisidXNl
IHN0cmljdCI7CisKK2NsYXNzIFJlc291cmNlU2VtYW50aWMgZXh0ZW5kcyBTZW1hbnRpYyB7Cisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCByZXNvdXJjZU1vZGUsIGluZGV4KQorICAgIHsKKyAgICAg
ICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgICB0aGlzLl9yZXNvdXJjZU1vZGUgPSByZXNvdXJj
ZU1vZGU7CisgICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4OworICAgIH0KKworICAgIGdldCBy
ZXNvdXJjZU1vZGUoKSB7IHJldHVybiB0aGlzLl9yZXNvdXJjZU1vZGU7IH0KKyAgICBnZXQgaW5k
ZXgoKSB7IHJldHVybiB0aGlzLl9pbmRleDsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBl
LCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLnJlc291cmNlTW9kZSkgewor
ICAgICAgICBjYXNlICJiIjoKKyAgICAgICAgICAgIHJldHVybiB0eXBlIGluc3RhbmNlb2YgUHRy
VHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlIHx8IHR5cGUgaW5zdGFuY2VvZiBB
cnJheVR5cGU7CisgICAgICAgIGNhc2UgInUiOgorICAgICAgICBjYXNlICJ0IjoKKyAgICAgICAg
ICAgIHJldHVybiB0eXBlLmlzVGV4dHVyZSB8fCB0eXBlIGluc3RhbmNlb2YgUHRyVHlwZSB8fCB0
eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlIHx8IHR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGU7
CisgICAgICAgIGNhc2UgInMiOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUuZXF1YWxzKHByb2dy
YW0uaW50cmluc2ljcy5zYW1wbGVyKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgVW5rbm93biByZXNvdXJjZSBtb2RlOiAke3RoaXMucmVzb3VyY2VNb2Rl
fWApOworICAgICAgICB9CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShk
aXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09
ICJpbnB1dCI7CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGByZWdpc3Rlcigke3RoaXMucmVzb3VyY2VNb2RlfSR7dGhpcy5pbmRleH0pYDsKKyAgICB9Cit9
CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggMjY3ZTdh
MzMyMzRhZjM3MmYxZTEzNGVlNjNmOTZjYjFjN2Y3ODE2My4uMDExNjJhNTU3NzExOWYyYTc5YjBl
ZTBlZmRkOGVkODQxMTRhZDgwZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanMKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgIAogICAgIHZp
c2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBG
dW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlz
KSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwg
bm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRp
YywgdGhpcykpOwogICAgICAgICB0aGlzLl9tYXBOb2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAg
IHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA1
LDcgKzEwNSw3IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdEZpZWxkKG5vZGUp
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5vZGUub3JpZ2luLCBub2RlLm5hbWUs
IG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAgICAgIHJldHVybiBuZXcgRmllbGQobm9kZS5v
cmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUu
c2VtYW50aWMsIHRoaXMpKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCA4OTE4NjcxMWZm
NWMwMTBmNTcyMGUxNjg4ZmYzY2E1ZGZkZWUyNGVhLi45ZTVmMzI1ZmFhYzU4NGI4ZGZlMmQwMjBj
ZGNmY2NkYjU3ZjhkZTAzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TUElSVi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0
bWwKQEAgLTI5LDYgKzI5LDcgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJCbG9jay5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCdWlsdElu
U2VtYW50aWMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCdWlsdGluTWF0cml4R2V0
dGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeFNldHRlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJ1aWx0aW5WZWN0b3JHZXR0ZXIuanMiPjwv
c2NyaXB0PgpAQCAtMTIxLDEwICsxMjIsMTQgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJSZXNv
bHZlT3ZlcmxvYWRJbXBsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZVBy
b3BlcnRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJSZXNvdXJjZVNlbWFudGljLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUmV0dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJldHVy
bkV4Y2VwdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlNhbXBsZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IlN0YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlN0YXRlbWVudENsb25lci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlN0cnVjdExh
eW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
ZW1hbnRpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTYwZDFmNDIwMjJiYTJjMWEzN2NiNTkzOWI0YmNiZjJj
NzFjYzE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
U2VtYW50aWMuanMKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFNlbWFudGljIGV4dGVuZHMg
Tm9kZSB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKworICAgIGdldCBvcmlnaW4o
KSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KKworICAgIGVxdWFsVG9PdGhlclNlbWFudGljKG90
aGVyU2VtYW50aWMpCisgICAgeworICAgICAgICBjbGFzcyBDb21wYXJlciBleHRlbmRzIFZpc2l0
b3IgeworICAgICAgICAgICAgdmlzaXRCdWlsdEluU2VtYW50aWMobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoIShvdGhlclNlbWFudGljIGluc3RhbmNlb2YgQnVpbHRJ
blNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmIChub2RlLm5hbWUgIT0gb3RoZXJTZW1hbnRpYy5uYW1lKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuZXh0cmFBcmd1
bWVudHMgJiYgb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50cy5sZW5ndGggIT0gb3RoZXJTZW1hbnRpYy5leHRy
YUFyZ3VtZW50cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5leHRyYUFyZ3Vt
ZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuZXh0
cmFBcmd1bWVudHNbaV0gIT0gb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50c1tpXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChub2RlLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbm9kZS5leHRyYUFyZ3VtZW50cy5sZW5ndGggPT0gMDsKKyAgICAgICAgICAg
ICAgICBpZiAob3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG90aGVyU2VtYW50aWMuZXh0cmFBcmd1bWVudHMubGVuZ3RoID09IDA7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0UmVzb3VyY2VTZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmICghKG90aGVyU2VtYW50aWMgaW5zdGFuY2VvZiBSZXNvdXJjZVNlbWFudGljKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBub2Rl
LnJlc291cmNlTW9kZSA9PSBvdGhlclNlbWFudGljLnJlc291cmNlTW9kZSAmJiBub2RlLmluZGV4
ID09IG90aGVyU2VtYW50aWMuaW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9mIFN0YWdlSW5PdXRTZW1hbnRpYykpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZS5pbmRleCA9PSBvdGhlclNlbWFudGljLmluZGV4OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2aXNpdFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdGhpcy52aXNpdChuZXcgQ29tcGFyZXIoKSk7CisgICAgfQorfQorCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyMjA2OTdiOTRlOTYzODAxYWIyMDZl
MTE0YmJhYjhkMGYzNDYzMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1NwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3Ry
aWN0IjsKKworY2xhc3MgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljIGV4dGVuZHMgU2Vt
YW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbikKKyAgICB7CisgICAgICAgIHN1cGVyKG9y
aWdpbik7CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHR5cGUuaXNOdW1iZXI7CisgICAgfQorCisgICAgaXNBY2NlcHRh
YmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gZGlyZWN0aW9uID09ICJpbnB1dCI7CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICJzcGVjaWFsaXplZCI7CisgICAgfQorfQorCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmU5ZWVhOTliZTdkOTdjY2Y1NGZkNjUxNzFhODQ0MDAxOTAwYzg1MgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YWdlSW5PdXRTZW1hbnRp
Yy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3RhZ2VJbk91dFNlbWFudGljIGV4dGVu
ZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgaW5kZXgpCisgICAgeworICAg
ICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAg
fQorCisgICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhpcy5faW5kZXg7IH0KKworICAgIGlzQWNj
ZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlIGlu
c3RhbmNlb2YgRW51bVR5cGUgfHwgdHlwZSBpbnN0YW5jZW9mIEFycmF5VHlwZSB8fCB0eXBlIGlu
c3RhbmNlb2YgVmVjdG9yVHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgTWF0cml4VHlwZSB8fCB0eXBl
LmlzTnVtYmVyOworICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0
aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7Cisg
ICAgICAgIGNhc2UgInZlcnRleCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Y2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAiaW5wdXQi
OworICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY2FzZSAidGVzdCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaGFkZXIgdHlwZTog
JHtzaGFkZXJUeXBlfWApOworICAgICAgICB9CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGBhdHRyaWJ1dGUoJHt0aGlzLmluZGV4fSlgOworICAgIH0KK30K
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xv
bmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpz
CmluZGV4IDBkMDcxNWE5ODU0ZGVmMWJmZDJhODA4Yzc0MDQxMTJiYTFhNGEwYzEuLjc4NTk2NmY4
N2Y4OTEyMzVkZTJkOTMzYWI3MDAzNzZmY2E1MDljZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKQEAgLTQzLDcgKzQzLDcgQEAgY2xh
c3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgbm9kZS5v
cmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlz
KSwKICAgICAgICAgICAgIG5vZGUucGFyYW1ldGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRl
ci52aXNpdCh0aGlzKSksCi0gICAgICAgICAgICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBl
KTsKKyAgICAgICAgICAgIG5vZGUuaXNDYXN0KTsKICAgICAgICAgcmVzdWx0LmlzUmVzdHJpY3Rl
ZCA9IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVBcnJheU9w
ZXJhdG9yTGVuZ3RoLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKaW5kZXggZGU4ZGY1ZDExNDhjNTc4YWYwZGI2ZTI3ZDdi
MDE3OTg5OWYxNWQ0YS4uMWEyODE1OGE4YjQyN2Q3OTE4N2I5MGM1YWQ0NjY4NWMxMDYwNDEzMiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFycmF5
T3BlcmF0b3JMZW5ndGguanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24g
c3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSkKICAgICAgICAgbGV0IG5hdGl2
ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIGFycmF5VHlwZS5vcmlnaW4sICJv
cGVyYXRvci5sZW5ndGgiLCB1aW50LAogICAgICAgICAgICAgWyBuZXcgRnVuY1BhcmFtZXRlcihh
cnJheVR5cGUub3JpZ2luLCBudWxsLCBwYXJhbVR5cGUpIF0sCi0gICAgICAgICAgICBmYWxzZSwg
bnVsbCk7CisgICAgICAgICAgICBmYWxzZSk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2FycmF5XSkgPT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUp
OwogICAgICAgICBwcm9ncmFtLmFkZChuYXRpdmVGdW5jKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9y
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1
Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGNmOThjNDY3YTVjMTJkODQ2MmYxYmIwNzgxYTIwZTBlMmFl
MzVjMzkuLmYzOWVhZWYxZDQ2NDc1NjdlODgzN2Y0ZjU0ZDYxOTczNDU2YzZiZWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVDb3B5Q29uc3RydWN0
b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVz
aXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgZnVuY3Rpb24g
c3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yKHByb2dyYW0pCiAgICAgZm9yIChsZXQg
dHlwZSBvZiB0eXBlcykgewogICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5j
KHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgWwogICAg
ICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3Jh
cCh0eXBlKSkKLSAgICAgICAgXSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIF0sIHRydWUpOwogICAg
ICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFthcmddLCBub2RlKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXplKSwgMCk7
CiAgICAgICAgICAgICByZXN1bHQuY29weUZyb20oYXJnLCB0eXBlLnNpemUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1
Y3Rvck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGRjNTA2NTM4ZDFjNmM3MTA5YjFh
ZDFlY2JhM2NlYzI3OGQwZjdiNWMuLjViYzVkZDkzOWFkNDA0YmMzMThkYzVjODA5NTk1OGZlNDc1
MWQ0ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNp
emVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTYy
LDcgKzYyLDcgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9y
KHByb2dyYW0pCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwogCiAgICAg
Zm9yIChsZXQgdHlwZSBvZiB0eXBlcykgewotICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBO
YXRpdmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBl
KSwgW10sIHRydWUsIG51bGwpOworICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVG
dW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgW10s
IHRydWUpOwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFtdLCBub2RlKSA9
PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5z
aXplKSwgMCk7CiAgICAgICAgICAgICBub2RlLnR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUocmVz
dWx0LmJ1ZmZlciwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TeW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCmluZGV4IDEzN2FjOWZjZDE1ODg3YWY4Yzc2
ZTRmNjRjZGQ1YTIyZDI3Y2FhMTIuLjgyNjZhMThiNjdkODlmNTNkMzBiMjg2NDNiYjcyOWE1Mjc1
NWVmMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNp
emVFbnVtRnVuY3Rpb25zLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5
bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCkBAIC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHN5bnRo
ZXNpemVFbnVtRnVuY3Rpb25zKHByb2dyYW0pCiAKICAgICAgICAgbGV0IG5hdGl2ZUZ1bmM7CiAg
ICAgICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgbGV0IHNoYWRlclR5cGU7CiAKICAg
ICAgICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmln
aW4sICJvcGVyYXRvcj09IiwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sICJib29sIiksCkBAIC00
MCwyOCArMzksMjggQEAgZnVuY3Rpb24gc3ludGhlc2l6ZUVudW1GdW5jdGlvbnMocHJvZ3JhbSkK
ICAgICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbnVsbCwgbmV3
IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSkpLAogICAgICAgICAgICAgICAgIG5ldyBG
dW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwg
dHlwZS5uYW1lKSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBpc0Nhc3QsIHNoYWRlclR5
cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgbmF0aXZlRnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PiBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJp
Z2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgcHJvZ3JhbS5hZGQobmF0aXZlRnVuYyk7CiAKICAg
ICAgICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmln
aW4sICJvcGVyYXRvci52YWx1ZSIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3IFJld3JpdGVyKCkp
LAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcg
VHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAgICAgaXNDYXN0LCBz
aGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5h
dGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAg
ICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIHR5cGUuYmFzZVR5cGUudmlzaXQo
bmV3IFJld3JpdGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3Jp
Z2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAg
ICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAg
IG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAg
IHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0
aXZlRnVuYygKICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIG5ldyBU
eXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFy
YW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCB0eXBlLmJhc2VUeXBlLnZpc2l0KG5ldyBSZXdyaXRl
cigpKSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlz
Q2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4g
dmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNj
ZXNzb3JzLmpzCmluZGV4IDc4NTllZWI0YjRmNWNiNWVmZTZmZDAyZGVhYjYzNzBkYmQ5YjUzOTAu
LjZjN2ZmZDcxODExNWM3OWQ4ZjI3MTA1N2I0MThjMDA5NDFjMGFlZmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vz
c29ycy5qcwpAQCAtNDksMTMgKzQ5LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nl
c3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAgICAgICAgIH0KIAogICAgICAgICBs
ZXQgaXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAgICBsZXQg
bmF0aXZlRnVuYzsKIAogICAgICAgICAvLyBUaGUgZ2V0dGVyOiBvcGVyYXRvci5maWVsZAogICAg
ICAgICBuYXRpdmVGdW5jID0gbmV3IE5hdGl2ZUZ1bmMoCiAgICAgICAgICAgICBmaWVsZC5vcmln
aW4sICJvcGVyYXRvci4iICsgZmllbGQubmFtZSwgZmllbGQudHlwZSwKLSAgICAgICAgICAgIFtu
ZXcgRnVuY1BhcmFtZXRlcihmaWVsZC5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0eXBlKSld
LCBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKGZp
ZWxkLm9yaWdpbiwgbnVsbCwgVHlwZVJlZi53cmFwKHR5cGUpKV0sIGlzQ2FzdCk7CiAgICAgICAg
IHNldHVwSW1wbGVtZW50YXRpb25EYXRhKG5hdGl2ZUZ1bmMsIChbYmFzZV0sIG9mZnNldCwgc3Ry
dWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQ
dHIobmV3IEVCdWZmZXIoZmllbGRTaXplKSwgMCk7CiAgICAgICAgICAgICByZXN1bHQuY29weUZy
b20oYmFzZS5wbHVzKG9mZnNldCksIGZpZWxkU2l6ZSk7CkBAIC03MCw3ICs2OSw3IEBAIGZ1bmN0
aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUp
CiAgICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIoZmllbGQub3JpZ2luLCBudWxsLCBU
eXBlUmVmLndyYXAodHlwZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKGZp
ZWxkLm9yaWdpbiwgbnVsbCwgZmllbGQudHlwZSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgc2V0
dXBJbXBsZW1lbnRhdGlvbkRhdGEobmF0aXZlRnVuYywgKFtiYXNlLCB2YWx1ZV0sIG9mZnNldCwg
c3RydWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3
IEVQdHIobmV3IEVCdWZmZXIoc3RydWN0U2l6ZSksIDApOwogICAgICAgICAgICAgcmVzdWx0LmNv
cHlGcm9tKGJhc2UsIHN0cnVjdFNpemUpOwpAQCAtODksNyArODgsNyBAQCBmdW5jdGlvbiBzeW50
aGVzaXplU3RydWN0QWNjZXNzb3JzRm9yU3RydWN0VHlwZShwcm9ncmFtLCB0eXBlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZmllbGQub3JpZ2luLCBudWxsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFB0clR5cGUoZmllbGQub3JpZ2luLCBhZGRyZXNzU3BhY2UsIFR5cGVSZWYud3Jh
cCh0eXBlKSkpCiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBpc0Nhc3QsIHNo
YWRlclR5cGUpOworICAgICAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgICAgICBzZXR1cElt
cGxlbWVudGF0aW9uRGF0YShuYXRpdmVGdW5jLCAoW2Jhc2VdLCBvZmZzZXQsIHN0cnVjdFNpemUs
IGZpZWxkU2l6ZSkgPT4gewogICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLmxvYWRWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIGlmICghYmFzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuaHRtbAppbmRleCA5OGUzODUxZjE2OTlhYTZjZTY4YmZkNWFiODQ2MWFlOTdkZWVkMWMx
Li41MzBjYTZkNDk5NWYxY2ExMDYzY2Y4Y2JkNDQyYjFkNDdhMWZiYmQ3IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVh
ZD4KLTx0aXRsZT5XU0wgVGVzdDwvdGl0bGU+Cis8dGl0bGU+V0hMU0wgVGVzdDwvdGl0bGU+CiA8
c2NyaXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9zY3JpcHQ+CkBAIC0yMyw2
ICsyMyw3IEBACiA8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCcmVhay5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJCdWlsdGluTWF0cml4R2V0dGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWls
dGluTWF0cml4U2V0dGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluVmVjdG9y
R2V0dGVyLmpzIj48L3NjcmlwdD4KQEAgLTExNSwxMCArMTE2LDE0IEBACiA8c2NyaXB0IHNyYz0i
UmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVBy
b3BlcnRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm5DaGVj
a2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlNhbXBsZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlNl
bWFudGljLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0YWdlSW5PdXRTZW1hbnRpYy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJTdGF0ZW1lbnRDbG9uZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggYjllYTdlNDYzYzRlMDhiZGY4NmZlOTA3NmVhZDQwNTg3
NmQxMTU5Mi4uNTcwNTVmOGRhOTMzNzZhYTlkMWU0ZDRhZWExNzEwOTIyY2U2Zjc0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC0zNiwxMSArMzYsMTMgQEAg
Y2xhc3MgVmlzaXRvciB7CiAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKTsKICAg
ICAgICAgZm9yIChsZXQgcGFyYW1ldGVyIG9mIG5vZGUucGFyYW1ldGVycykKICAgICAgICAgICAg
IHBhcmFtZXRlci52aXNpdCh0aGlzKTsKKyAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFudGlj
LCB0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRGdW5jUGFyYW1ldGVyKG5vZGUpCiAgICAg
ewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQobm9k
ZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RnVuY0RlZihub2RlKQpA
QCAtOTIsNiArOTQsNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAg
ICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQo
bm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RW51bVR5cGUobm9k
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IDA4ZjRlZDVi
MDkzMWI2YmZiM2E0MjI4OTc4MzdlZWY4YTFhYzMyOTAuLmE3NzJjMmFhM2ZlNTdlMDg2YzRkODE0
NjhlMjE5NjQ0ODk3OTI2YzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXgu
aHRtbApAQCAtMjMsNiArMjMsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnJl
YWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQnVpbHRpbk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
QnVpbHRpblZlY3RvckdldHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTUsMTAgKzExNiwxNCBAQAog
PHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZl
VHlwZURlZnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2VtYW50aWMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iUmV0dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0
aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdGFnZUlu
T3V0U2VtYW50aWMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhdGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJTdHJ1Y3RMYXlvdXRCdWlsZGVyLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350493</attachid>
            <date>2018-09-21 21:35:17 -0700</date>
            <delta_ts>2018-09-22 01:43:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189134-20180922133516.patch</filename>
            <type>text/plain</type>
            <size>83781</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uYTQzMzM4N2NkMjE1NjZiNDI4YjJlNDhjMDQwOGYzN2ExNDkzZjZiMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MyBAQAorMjAxOC0wOS0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSFNMXSBJbXBsZW1lbnQgc2VtYW50aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50
aWMuanM6IEFkZGVkLgorICAgICAgICAoQnVpbHRJblNlbWFudGljKToKKyAgICAgICAgKEJ1aWx0
SW5TZW1hbnRpYy5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoQnVpbHRJblNlbWFudGlj
LnByb3RvdHlwZS5nZXQgZXh0cmFBcmd1bWVudHMpOgorICAgICAgICAoQnVpbHRJblNlbWFudGlj
LnByb3RvdHlwZS5pc0FjY2VwdGFibGVUeXBlKToKKyAgICAgICAgKEJ1aWx0SW5TZW1hbnRpYy5w
cm90b3R5cGUuaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChCdWlsdEluU2Vt
YW50aWMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DYWxsRXhwcmVzc2lvbi5qczoKKyAgICAgICAgKENhbGxFeHByZXNzaW9uLnByb3RvdHlw
ZS5fcmVzb2x2ZVdpdGhPcGVyYXRvckFuZGVySW5kZXhlcik6CisgICAgICAgIChDYWxsRXhwcmVz
c2lvbi5wcm90b3R5cGUuX3Jlc29sdmVXaXRoT3BlcmF0b3JMZW5ndGgpOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanM6CisgICAgICAgIChDaGVja2VyKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UHJvZ3JhbSk6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbSk6CisgICAgICAgIChDaGVja2VyLnByb3Rv
dHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbS5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAo
Q2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkl0ZW0ucHJvdG90eXBlLmdldCBzZW1h
bnRpYyk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVy
ZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVy
LnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1h
bnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnNldCBjdXJyZW50U2VtYW50aWMpOgorICAgICAgICAo
Q2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS5nZXQg
Y3VycmVudFNlbWFudGljKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFu
dGljcy5HYXRoZXJlci5wcm90b3R5cGUuZ2V0IHJlc3VsdCk6CisgICAgICAgIChDaGVja2VyLnBy
b3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0RW51bVR5cGUp
OgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnBy
b3RvdHlwZS52aXNpdFZlY3RvclR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdE1hdHJpeFR5cGUpOgorICAgICAg
ICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52
aXNpdE5hdGl2ZVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50
aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdFN0cnVjdFR5cGUpOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdFR5cGVS
ZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLkdhdGhlcmVy
LnByb3RvdHlwZS52aXNpdFB0clR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2VtYW50aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAg
ICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBl
LnZpc2l0QXJyYXlUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFu
dGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVja0R1cGxpY2F0ZVNlbWFudGljcyk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuY2hlY2tTZW1hbnRp
Y1R5cGVzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVj
a1NlbWFudGljRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hl
Y2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6CisgICAgICAg
IChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUu
dmlzaXRBcnJheVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50
aWNzLlBPRENoZWNrZXIucHJvdG90eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRN
YXRyaXhUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5Q
T0RDaGVja2VyLnByb3RvdHlwZS52aXNpdE5hdGl2ZVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5w
cm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLlBPRENoZWNrZXIucHJvdG90eXBlLnZpc2l0UHRyVHlw
ZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tl
ci5wcm90b3R5cGUudmlzaXRBcnJheVJlZlR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5
cGUuX2NoZWNrU2VtYW50aWNzLlBPRENoZWNrZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5w
cm90b3R5cGUudmlzaXRUeXBlUmVmKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVj
a1NlbWFudGljcy5QT0RDaGVja2VyKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVj
a1NlbWFudGljcy5jaGVja1BPRERhdGEpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2No
ZWNrU2VtYW50aWNzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5
cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrT3BlcmF0b3JPdmVybG9hZCk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdEZ1bmNEZWYpOgorICAgICAgICAoQ2hl
Y2tlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlw
ZS52aXNpdEFycmF5VHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdE1ha2VQ
dHJFeHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0TWFrZUFycmF5
UmVmRXhwcmVzc2lvbik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fZmluaXNoVmlzaXRp
bmdQcm9wZXJ0eUFjY2Vzcyk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdEluZGV4
RXhwcmVzc2lvbik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdFJldHVybik6Cisg
ICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdFN3aXRjaFN0YXRlbWVudCk6CisgICAgICAg
IChDaGVja2VyLnByb3RvdHlwZS52aXNpdENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qczoKKyAgICAgICAgKEZpZWxkKToKKyAgICAgICAg
KEZpZWxkLnByb3RvdHlwZS5nZXQgc2VtYW50aWMpOgorICAgICAgICAoRmllbGQucHJvdG90eXBl
LnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzOgor
ICAgICAgICAoRnVuYyk6CisgICAgICAgIChGdW5jLnByb3RvdHlwZS5nZXQgc2VtYW50aWMpOgor
ICAgICAgICAoRnVuYy5wcm90b3R5cGUudG9EZWNsU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzOgorICAgICAgICAoRnVuY0RlZik6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qczoKKyAgICAgICAgKEZ1
bmNQYXJhbWV0ZXIpOgorICAgICAgICAoRnVuY1BhcmFtZXRlci5wcm90b3R5cGUuZ2V0IHNlbWFu
dGljKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzOgorICAgICAgICAoTGF0ZUNoZWNr
ZXIucHJvdG90eXBlLnZpc2l0UmVmZXJlbmNlVHlwZSk6CisgICAgICAgIChMYXRlQ2hlY2tlcik6
CisgICAgICAgIChMYXRlQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6IERlbGV0
ZWQuCisgICAgICAgIChMYXRlQ2hlY2tlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzOgorICAg
ICAgICAoTmF0aXZlRnVuYyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanM6CisgICAgICAgIChwYXJzZVBhcmFtZXRlcik6CisgICAgICAgIChwYXJzZUZ1bmNEZWNs
KToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZVN0YWdlSW5PdXRTZW1h
bnRpYyk6CisgICAgICAgIChwYXJzZVJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAocGFyc2VT
cGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAocGFyc2VCdWlsdEluU2Vt
YW50aWMpOgorICAgICAgICAocGFyc2VTZW1hbnRpYyk6CisgICAgICAgIChwYXJzZUZpZWxkKToK
KyAgICAgICAgKHBhcnNlTmF0aXZlRnVuYyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMpOgorICAg
ICAgICAoUmVzb3VyY2VTZW1hbnRpYy5wcm90b3R5cGUuZ2V0IHJlc291cmNlTW9kZSk6CisgICAg
ICAgIChSZXNvdXJjZVNlbWFudGljLnByb3RvdHlwZS5nZXQgaW5kZXgpOgorICAgICAgICAoUmVz
b3VyY2VTZW1hbnRpYy5wcm90b3R5cGUuaXNBY2NlcHRhYmxlVHlwZSk6CisgICAgICAgIChSZXNv
dXJjZVNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAg
ICAgKFJlc291cmNlU2VtYW50aWMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVyLnByb3Rv
dHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZp
c2l0RmllbGQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU2VtYW50aWMuanM6IEFkZGVkLgor
ICAgICAgICAoU2VtYW50aWMpOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmdldCBvcmln
aW4pOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNv
bXBhcmVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRp
Yy5wcm90b3R5cGUuZXF1YWxUb090aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0
UmVzb3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5wcm90b3R5cGUuZXF1YWxUb090
aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNlbWFudGljKToK
KyAgICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYy5Db21wYXJl
ci5wcm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAg
ICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBhcmVyKToKKyAg
ICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYyk6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcy4K
KyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgor
ICAgICAgICAoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2Vw
dGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N0YWdlSW5PdXRTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYyk6Cisg
ICAgICAgIChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmdldCBpbmRleCk6CisgICAgICAg
IChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAg
ICAoU3RhZ2VJbk91dFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBl
KToKKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczoKKyAgICAg
ICAgKFN0YXRlbWVudENsb25lci5wcm90b3R5cGUudmlzaXROYXRpdmVGdW5jKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5q
czoKKyAgICAgICAgKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3Iu
anM6CisgICAgICAgIChzeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JP
cGVyYXRvci5qczoKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRv
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUVudW1GdW5j
dGlvbnMuanM6CisgICAgICAgIChzeW50aGVzaXplRW51bUZ1bmN0aW9ucyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qczoKKyAg
ICAgICAgKHNldHVwQW5kZXIpOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29yc0Zv
clN0cnVjdFR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRGdW5jKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNp
dEZpZWxkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sOgor
CiAyMDE4LTA5LTIxICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dITFNMXSBMb2NhbCB2YXJpYWJsZXMgc2hvdWxkIGJlIHN0YXRpY2FsbHkgYWxsb2NhdGVk
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggZTI5MTBkNzlkNmMyMzU5Yjc2
MzE2MTk4MDMxNmFmZjA5NDIyNzBmMy4uNDUxOTY5MjMwMDEwZjFmNWY0NWUxMjJkYzQ0ZGY2YTE5
MWZiNjJmNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtNDYsNiArNDYs
NyBAQCBsb2FkKCJBdXRvV3JhcHBlci5qcyIpOwogbG9hZCgiQmxvY2suanMiKTsKIGxvYWQoIkJv
b2xMaXRlcmFsLmpzIik7CiBsb2FkKCJCcmVhay5qcyIpOworbG9hZCgiQnVpbHRJblNlbWFudGlj
LmpzIik7CiBsb2FkKCJCdWlsdGluTWF0cml4R2V0dGVyLmpzIik7CiBsb2FkKCJCdWlsdGluTWF0
cml4U2V0dGVyLmpzIik7CiBsb2FkKCJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIik7CkBAIC0xMzgs
MTAgKzEzOSwxNCBAQCBsb2FkKCJSZXNvbHZlTmFtZXMuanMiKTsKIGxvYWQoIlJlc29sdmVPdmVy
bG9hZEltcGwuanMiKTsKIGxvYWQoIlJlc29sdmVQcm9wZXJ0aWVzLmpzIik7CiBsb2FkKCJSZXNv
bHZlVHlwZURlZnMuanMiKTsKK2xvYWQoIlJlc291cmNlU2VtYW50aWMuanMiKTsKIGxvYWQoIlJl
dHVybi5qcyIpOwogbG9hZCgiUmV0dXJuQ2hlY2tlci5qcyIpOwogbG9hZCgiUmV0dXJuRXhjZXB0
aW9uLmpzIik7CiBsb2FkKCJTYW1wbGVyLmpzIik7Citsb2FkKCJTZW1hbnRpYy5qcyIpOworbG9h
ZCgiU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIik7Citsb2FkKCJTdGFnZUluT3V0
U2VtYW50aWMuanMiKTsKIGxvYWQoIlN0YW5kYXJkTGlicmFyeS5qcyIpOwogbG9hZCgiU3RhdGVt
ZW50Q2xvbmVyLmpzIik7CiBsb2FkKCJTdHJ1Y3RMYXlvdXRCdWlsZGVyLmpzIik7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50aWMuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50aWMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjUzOTMzMjhjZmRlYmEwNGQ0ZTMxZTM3MTZhZDg5MTllOTQxZDRkZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5qcwpA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEJ1aWx0SW5TZW1hbnRpYyBleHRlbmRzIFNlbWFu
dGljIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIC4uLmV4dHJhQXJndW1lbnRzKQor
ICAgIHsKKyAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7
CisgICAgICAgIHRoaXMuX2V4dHJhQXJndW1lbnRzID0gZXh0cmFBcmd1bWVudHM7CisgICAgfQor
CisgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CisgICAgZ2V0IGV4dHJhQXJn
dW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fZXh0cmFBcmd1bWVudHM7IH0KKworICAgIGlzQWNjZXB0
YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIGxldCByZXF1aXJlZFR5cGU7
CisgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgIGNhc2UgIlNWX0luc3RhbmNl
SUQiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfVmVydGV4SUQiOgorICAgICAg
ICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiUFNJWkUiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBl
ID0gcHJvZ3JhbS5pbnRyaW5zaWNzLmZsb2F0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgIlNWX1Bvc2l0aW9uIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0u
aW50cmluc2ljc1sidmVjdG9yPGZsb2F0LCA0PiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgIlNWX0lzRnJvbnRGYWNlIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHBy
b2dyYW0uaW50cmluc2ljcy5ib29sOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
IlNWX1NhbXBsZUluZGV4IjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50
cmluc2ljcy51aW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0lubmVy
Q292ZXJhZ2UiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNz
LnVpbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfVGFyZ2V0IjoKKyAg
ICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljc1sidmVjdG9yPGZsb2F0
LCA0PiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0RlcHRoIjoKKyAg
ICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy5mbG9hdDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9Db3ZlcmFnZSI6CisgICAgICAgICAgICBy
ZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJTVl9EaXNwYXRjaFRocmVhZElEIjoKKyAgICAgICAgICAgIHJlcXVp
cmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljc1sidmVjdG9yPHVpbnQsIDM+Il07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfR3JvdXBJRCI6CisgICAgICAgICAgICByZXF1
aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjx1aW50LCAzPiJdOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0dyb3VwSW5kZXgiOgorICAgICAgICAgICAg
cmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAiU1ZfR3JvdXBUaHJlYWRJRCI6CisgICAgICAgICAgICByZXF1aXJl
ZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjx1aW50LCAzPiJdOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YFVua25vd24gc2VtYW50aWM6ICR7dGhpcy5uYW1lfWApOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHR5cGUuZXF1YWxzKHJlcXVpcmVkVHlwZSk7CisgICAgfQorCisgICAgaXNBY2NlcHRh
YmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAgICAgICBz
d2l0Y2ggKHNoYWRlclR5cGUpIHsKKyAgICAgICAgY2FzZSAidmVydGV4IjoKKyAgICAgICAgICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgICAgICBjYXNlICJpbnB1dCI6CisgICAgICAg
ICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJTVl9J
bnN0YW5jZUlEIjoKKyAgICAgICAgICAgICAgICBjYXNlICJTVl9WZXJ0ZXhJRCI6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlICJvdXRwdXQiOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAiUFNJWkUiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNW
X1Bvc2l0aW9uIjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgorICAg
ICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgImlucHV0IjoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgICAgIGNh
c2UgIlNWX0lzRnJvbnRGYWNlIjoKKyAgICAgICAgICAgICAgICBjYXNlICJTVl9TYW1wbGVJbmRl
eCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfSW5uZXJDb3ZlcmFnZSI6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlICJvdXRwdXQiOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSAiU1ZfVGFyZ2V0IjoKKyAgICAgICAgICAgICAgICBjYXNlICJT
Vl9EZXB0aCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfQ292ZXJhZ2UiOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24g
IT0gImlucHV0IikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBz
d2l0Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgY2FzZSAiU1ZfRGlzcGF0Y2hUaHJlYWRJ
RCI6CisgICAgICAgICAgICBjYXNlICJTVl9Hcm91cElEIjoKKyAgICAgICAgICAgIGNhc2UgIlNW
X0dyb3VwSW5kZXgiOgorICAgICAgICAgICAgY2FzZSAiU1ZfR3JvdXBUaHJlYWRJRCI6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSAidGVzdCI6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaGFkZSB0eXBlOiAke3NoYWRlclR5cGV9YCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICBsZXQgcmVz
dWx0ID0gdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy5leHRyYUFyZ3VtZW50cykKKyAgICAg
ICAgICAgIHJlc3VsdCArPSB0aGlzLmV4dHJhQXJndW1lbnRzLmpvaW4oIiIpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DYWxsRXhwcmVzc2lvbi5qcwppbmRleCA0ZTRkNjVmMDkxMzgwNGY0ZDBlNzBjMDAyYmY2
MzE0MDYwYjBlZTJlLi5iNGMwZGE3ODc3MzBhMWIzODgxMGM4YjU5NDMxNzg0OTA5ZGRiM2UwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcwpA
QCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIENhbGxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lv
biB7CiAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwgIm9w
ZXJhdG9yJltdIiwgdGhpcy5yZXN1bHRUeXBlLCBbCiAgICAgICAgICAgICBuZXcgRnVuY1BhcmFt
ZXRlcih0aGlzLm9yaWdpbiwgbnVsbCwgYXJyYXlSZWZUeXBlKSwKICAgICAgICAgICAgIG5ldyBG
dW5jUGFyYW1ldGVyKHRoaXMub3JpZ2luLCBudWxsLCB1aW50VHlwZSkKLSAgICAgICAgXSwgZmFs
c2UsIG51bGwpOworICAgICAgICBdLCBmYWxzZSk7CiAKICAgICAgICAgYXJyYXlSZWZBY2Nlc3Nv
ci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAg
Y2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAgICAgIGNv
bnN0IGFycmF5VHlwZSA9IHRoaXMuYXJndW1lbnRUeXBlc1swXTsKICAgICAgICAgICAgIGNvbnN0
IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwgIm9wZXJhdG9yLmxlbmd0aCIsIHRo
aXMucmVzdWx0VHlwZSwgWwogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKHRoaXMu
b3JpZ2luLCBudWxsLCBhcnJheVR5cGUpCi0gICAgICAgICAgICBdLCBmYWxzZSwgbnVsbCk7Cisg
ICAgICAgICAgICBdLCBmYWxzZSk7CiAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KGFyZ3MsIG5vZGUpID0+IEVQdHIuYm94KGFycmF5VHlwZS5udW1FbGVtZW50c1ZhbHVlKTsKICAg
ICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXJndW1lbnRU
eXBlc1swXS5pc0FycmF5UmVmKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgQ2FsbEV4cHJl
c3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yTGVu
Z3RoID0gbmV3IE9wZXJhdG9yQXJyYXlSZWZMZW5ndGgoYXJyYXlSZWZUeXBlLnRvU3RyaW5nKCks
IGFkZHJlc3NTcGFjZSk7CiAgICAgICAgICAgICBjb25zdCBmdW5jID0gbmV3IE5hdGl2ZUZ1bmMo
dGhpcy5vcmlnaW4sICJvcGVyYXRvci5sZW5ndGgiLCB0aGlzLnJlc3VsdFR5cGUsIFsKICAgICAg
ICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0aGlzLm9yaWdpbiwgbnVsbCwgYXJyYXlSZWZU
eXBlKQotICAgICAgICAgICAgXSwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgXSwgZmFsc2Up
OwogICAgICAgICAgICAgb3BlcmF0b3JMZW5ndGguaW5zdGFudGlhdGVJbXBsZW1lbnRhdGlvbihm
dW5jKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDVmNTk4YjJlZTc1MjJiYmM4MTA1
NDVjOTQ4ZDc3M2YyZTRmOTk0N2QuLjA3Y2I3OGVmMzZjNDliMzZkNjFlN2U5YmJjY2Y4NDI2MWU1
ODkxNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMzIs
MTUgKzMyLDE2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgdGhp
cy5fY3VycmVudFN0YXRlbWVudCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3ZlcnRleEVudHJ5UG9p
bnRzID0gbmV3IFNldCgpOwogICAgICAgICB0aGlzLl9mcmFnbWVudEVudHJ5UG9pbnRzID0gbmV3
IFNldCgpOworICAgICAgICB0aGlzLl9jb21wdXRlRW50cnlQb2ludHMgPSBuZXcgU2V0KCk7CiAg
ICAgfQotICAgIAorCiAgICAgdmlzaXRQcm9ncmFtKG5vZGUpCiAgICAgewogICAgICAgICBsZXQg
ZG9TdGF0ZW1lbnQgPSBzdGF0ZW1lbnQgPT4gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudFN0
YXRlbWVudCA9IHN0YXRlbWVudDsKICAgICAgICAgICAgIHN0YXRlbWVudC52aXNpdCh0aGlzKTsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlw
ZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKQEAgLTU5
LDEwICs2MCwxOTggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB9
CiAgICAgfQogCisgICAgX2NoZWNrU2VtYW50aWNzKG5vZGUpCisgICAgeworICAgICAgICBjbGFz
cyBJdGVtIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHR5cGUsIHNlbWFudGljKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICAgICAgaWYgKCFz
ZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoIkFuIGVu
dHJ5LXBvaW50IGlucHV0L291dHB1dCBleGlzdHMgd2hpY2ggZG9lc24ndCBoYXZlIGEgc2VtYW50
aWMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICAgICAgICAgIGdldCBzZW1h
bnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CisgICAgICAgIH0KKworICAgICAgICBj
bGFzcyBHYXRoZXJlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgY29uc3RydWN0b3Io
Y3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBz
dXBlcigpOworICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRT
ZW1hbnRpYzsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmVzZXQoY3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1h
bnRpYzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRpYyh2
YWx1ZSkgeyB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSB2YWx1ZTsgfQorICAgICAgICAgICAgZ2V0
IGN1cnJlbnRTZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQorICAg
ICAgICAgICAgZ2V0IHJlc3VsdCgpIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQorCisgICAgICAg
ICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUs
IHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0TWF0cml4VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMu
cmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlz
LmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFN0
cnVjdFR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5j
dXJyZW50U2VtYW50aWMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3IoIlN0cnVjdHMgaW5zaWRlIGVudHJ5IHBvaW50IHNpZ25hdHVyZXMgY2FuJ3QgaGF2
ZSBzZW1hbnRpY3MuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgb2Ygbm9kZS5m
aWVsZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VtYW50aWMgPSBmaWVs
ZC5zZW1hbnRpYzsKKyAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZS52aXNpdCh0aGlzKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlw
ZVJlZihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNp
dCh0aGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRQdHJUeXBlKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRl
bShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2aXNpdEFycmF5UmVmVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMp
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRBcnJheVR5cGUobm9kZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5v
ZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IG5vZGUuc2VtYW50aWM7CisgICAgICAgICAgICAgICAg
bm9kZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgbGV0IGlucHV0R2F0aGVyZXIgPSBuZXcgR2F0aGVyZXIoKTsKKyAgICAgICAgZm9yIChsZXQg
cGFyYW1ldGVyIGluIG5vZGUucGFyYW1ldGVycykgeworICAgICAgICAgICAgaW5wdXRHYXRoZXJl
ci5yZXNldCgpOworICAgICAgICAgICAgaW5wdXRHYXRoZXJlci52aXNpdChwYXJhbWV0ZXIpOwor
ICAgICAgICB9CisgICAgICAgIGxldCBvdXRwdXRHYXRoZXJlciA9IG5ldyBHYXRoZXJlcihub2Rl
LnNlbWFudGljKTsKKyAgICAgICAgbm9kZS5yZXR1cm5UeXBlLnZpc2l0KG91dHB1dEdhdGhlcmVy
KTsKKworICAgICAgICBmdW5jdGlvbiBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhpdGVtcykgewor
ICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBmYXN0ZXIgdGhhbiBPKG5eMikKKyAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBpdGVtcy5sZW5ndGg7ICsraikgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0uc2VtYW50aWMuZXF1YWxUb090aGVyU2VtYW50
aWMoaXRlbXNbal0uc2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3IoYER1cGxpY2F0ZSBzZW1hbnRpYyBmb3VuZCBpbiBlbnRyeSBwb2ludDogJHtp
dGVtc1tpXS5zZW1hbnRpY31gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaW5wdXRHYXRoZXJlci5y
ZXN1bHQpOworICAgICAgICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRHYXRoZXJlci5y
ZXN1bHQpOworCisgICAgICAgIGxldCBwcm9ncmFtID0gdGhpcy5fcHJvZ3JhbTsKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tTZW1hbnRpY1R5cGVzKGl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxl
dCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpdGVtLnNlbWFudGljLmlz
QWNjZXB0YWJsZVR5cGUoaXRlbS50eXBlLCBwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3IoYFNlbWFudGljICR7aXRlbS5zZW1hbnRpY30gaXMgdW5uYWNj
ZXB0YWJsZSB0eXBlICR7aXRlbS50eXBlfWApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNoZWNrU2VtYW50aWNUeXBlcyhpbnB1dEdhdGhlcmVyLnJlc3VsdCk7CisgICAgICAg
IGNoZWNrU2VtYW50aWNUeXBlcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQpOworCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGl0ZW1zLCBkaXJlY3Rpb24pIHsKKyAg
ICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWl0ZW0uc2VtYW50aWMuaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIG5vZGUu
c2hhZGVyVHlwZSkpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKGBT
ZW1hbnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFibGUgYXMgYW4gJHtkaXJlY3Rp
b259IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBlfWApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGlucHV0R2F0aGVy
ZXIucmVzdWx0LCAiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUo
b3V0cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisKKyAgICAgICAgY2xhc3MgUE9EQ2hl
Y2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgdmlzaXRFbnVtVHlwZShub2RlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2aXNpdEFycmF5VHlwZShub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0TmF0aXZl
VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmlz
TnVtYmVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFB0clR5cGUobm9kZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZpc2l0QXJyYXlSZWZUeXBlKG5vZGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBsZXQgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBu
b2RlLmZpZWxkcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIGZpZWxk
LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlwZVJlZihub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2hlY2tQT0REYXRhKGl0ZW1zKSB7CisgICAg
ICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaWYgKChp
dGVtLnR5cGUgaW5zdGFuY2VvZiBQdHJUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2YgQXJy
YXlSZWZUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2YgQXJyYXlUeXBlKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZS5lbGVtZW50VHlwZS52aXNpdChuZXcgUE9EQ2hl
Y2tlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKCJC
dWZmZXIgYXR0YWNoZWQgdG8gZW50cnkgcG9pbnQgbmVlZHMgdG8gb25seSBjb250YWluIFBPRCB0
eXBlcyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjaGVja1BPRERhdGEoaW5wdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAgICBjaGVja1BP
RERhdGEob3V0cHV0R2F0aGVyZXIucmVzdWx0KTspCisgICAgfQorCiAgICAgX2NoZWNrU2hhZGVy
VHlwZShub2RlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFJlbGF4IHRoZXNlIGNoZWNrcyBv
bmNlIHdlIGhhdmUgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgdGV4dHVyZXMgYW5kIHNhbXBsZXJz
LgotICAgICAgICBsZXQgc2hhZGVyRnVuYyA9IG5vZGU7CiAgICAgICAgIHN3aXRjaCAobm9kZS5z
aGFkZXJUeXBlKSB7CiAgICAgICAgIGNhc2UgInZlcnRleCI6CiAgICAgICAgICAgICBpZiAodGhp
cy5fdmVydGV4RW50cnlQb2ludHMuaGFzKG5vZGUubmFtZSkpCkBAIC03NCw2ICsyNjMsMTUgQEAg
Y2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBmcmFnbWVu
dCBlbnRyeSBwb2ludCBuYW1lICIgKyBub2RlLm5hbWUpOwogICAgICAgICAgICAgdGhpcy5fZnJh
Z21lbnRFbnRyeVBvaW50cy5hZGQobm9kZS5uYW1lKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wdXRlRW50cnlQ
b2ludHMuaGFzKG5vZGUubmFtZSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRHVwbGljYXRlIGNvbXB1dGUgZW50cnkgcG9p
bnQgbmFtZSAiICsgbm9kZS5uYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVFbnRyeVBv
aW50cy5hZGQobm9kZS5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJ0
ZXN0IjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgc2hhZGVyIHR5cGU6ICIgKyBub2RlLnNoYWRlclR5cGUpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC04NCw3ICsyODIsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVu
ZHMgVmlzaXRvciB7CiAKICAgICAgICAgaWYgKCFmdW5jLm5hbWUuc3RhcnRzV2l0aCgib3BlcmF0
b3IiKSkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIG9wZXJhdG9yIG92ZXJsb2Fk
IG5hbWU6ICIgKyBmdW5jLm5hbWUpOwotICAgICAgICAKKwogICAgICAgICBsZXQgY2hlY2tHZXR0
ZXIgPSAoa2luZCkgPT4gewogICAgICAgICAgICAgbGV0IG51bUV4cGVjdGVkUGFyYW1ldGVycyA9
IGtpbmQgPT0gImluZGV4IiA/IDIgOiAxOwogICAgICAgICAgICAgaWYgKGZ1bmMucGFyYW1ldGVy
cy5sZW5ndGggIT0gbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzKQpAQCAtOTIsNyArMjkwLDcgQEAgY2xh
c3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgaWYgKGZ1bmMucGFyYW1l
dGVyVHlwZXNbMF0udW5pZnlOb2RlLmlzUHRyKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKGZ1bmMub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCBoYXZlIGdldHRlciBm
b3IgcG9pbnRlciB0eXBlOiAiICsgZnVuYy5wYXJhbWV0ZXJUeXBlc1swXSk7CiAgICAgICAgIH07
Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBjaGVja1NldHRlciA9IChraW5kKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzID0ga2luZCA9PSAiaW5kZXgiID8gMyA6
IDI7CiAgICAgICAgICAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBudW1FeHBlY3Rl
ZFBhcmFtZXRlcnMpCkBAIC0xMTQsNyArMzEyLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZp
c2l0b3IgewogICAgICAgICAgICAgaWYgKCFyZXN1bHRUeXBlLmVxdWFscyh2YWx1ZVR5cGUpKQog
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKGZ1bmMub3JpZ2luLm9yaWdpblN0
cmluZywgIlNldHRlciBhbmQgZ2V0dGVyIG11c3QgYWdyZWUgb24gdmFsdWUgdHlwZSAoZ2V0dGVy
IGF0ICIgKyBvdmVybG9hZC5mdW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcgKyAiIHNheXMgIiArIHJl
c3VsdFR5cGUgKyAiIHdoaWxlIHRoaXMgc2V0dGVyIHNheXMgIiArIHZhbHVlVHlwZSArICIpIik7
CiAgICAgICAgIH07Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBjaGVja0FuZGVyID0gKGtpbmQp
ID0+IHsKICAgICAgICAgICAgIGxldCBudW1FeHBlY3RlZFBhcmFtZXRlcnMgPSBraW5kID09ICJp
bmRleCIgPyAyIDogMTsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlcnMubGVuZ3RoICE9
IG51bUV4cGVjdGVkUGFyYW1ldGVycykKQEAgLTEyNCw3ICszMjIsNyBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICBpZiAoIWZ1bmMucGFyYW1ldGVyVHlwZXNb
MF0udW5pZnlOb2RlLmlzUmVmKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KGZ1bmMub3JpZ2luLm9yaWdpblN0cmluZywgIlBhcmFtZXRlciB0byBhbmRlciBpcyBub3QgYSBy
ZWZlcmVuY2U6ICIgKyBmdW5jLnBhcmFtZXRlclR5cGVzWzBdKTsKICAgICAgICAgfTsKLSAgICAg
ICAgCisKICAgICAgICAgc3dpdGNoIChmdW5jLm5hbWUpIHsKICAgICAgICAgY2FzZSAib3BlcmF0
b3IgY2FzdCI6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4OSw0NCArMzg3LDQ2IEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
UGFyc2VyIGFjY2VwdGVkIHVucmVjb2duaXplZCBvcGVyYXRvcjogIiArIGZ1bmMubmFtZSk7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2aXNpdEZ1bmNEZWYobm9kZSkKICAgICB7Ci0g
ICAgICAgIGlmIChub2RlLnNoYWRlclR5cGUpCisgICAgICAgIGlmIChub2RlLnNoYWRlclR5cGUp
IHsKICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2hhZGVyVHlwZShub2RlKTsKKyAgICAgICAgICAg
IHRoaXMuX2NoZWNrU2VtYW50aWNzKG5vZGUpOworICAgICAgICB9CiAgICAgICAgIHRoaXMuX2No
ZWNrT3BlcmF0b3JPdmVybG9hZChub2RlLCBuYW1lID0+IHRoaXMuX3Byb2dyYW0uZnVuY3Rpb25z
LmdldChuYW1lKSk7CiAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKICAgICB9Ci0gICAg
CisKICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmJhc2VUeXBl
LnZpc2l0KHRoaXMpOwotICAgICAgICAKKwogICAgICAgICBsZXQgYmFzZVR5cGUgPSBub2RlLmJh
c2VUeXBlLnVuaWZ5Tm9kZTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFiYXNlVHlwZS5pc0lu
dCkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0
cmluZywgIkJhc2UgdHlwZSBvZiBlbnVtIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgbm9kZS5iYXNl
VHlwZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IG1lbWJlciBvZiBub2RlLm1lbWJl
cnMpIHsKICAgICAgICAgICAgIGlmICghbWVtYmVyLnZhbHVlKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxldCBtZW1iZXJUeXBlID0gbWVt
YmVyLnZhbHVlLnZpc2l0KHRoaXMpOwogICAgICAgICAgICAgaWYgKCFiYXNlVHlwZS5lcXVhbHNX
aXRoQ29tbWl0KG1lbWJlclR5cGUpKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG1lbWJlci5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiVHlwZSBvZiBlbnVtIG1lbWJlciAiICsg
bWVtYmVyLnZhbHVlLm5hbWUgKyAiIGRvZXMgbm90IHBhdGNoIGVudW0gYmFzZSB0eXBlIChtZW1i
ZXIgdHlwZSBpcyAiICsgbWVtYmVyVHlwZSArICIsIGVudW0gYmFzZSB0eXBlIGlzICIgKyBub2Rl
LmJhc2VUeXBlICsgIikiKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgbmV4
dFZhbHVlID0gYmFzZVR5cGUuZGVmYXVsdFZhbHVlOwogICAgICAgICBmb3IgKGxldCBtZW1iZXIg
b2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAgICBpZiAobWVtYmVyLnZhbHVlKSB7CiAgICAg
ICAgICAgICAgICAgbmV4dFZhbHVlID0gYmFzZVR5cGUuc3VjY2Vzc29yVmFsdWUobWVtYmVyLnZh
bHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSk7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgbWVtYmVy
LnZhbHVlID0gYmFzZVR5cGUuY3JlYXRlTGl0ZXJhbChtZW1iZXIub3JpZ2luLCBuZXh0VmFsdWUp
OwogICAgICAgICAgICAgbmV4dFZhbHVlID0gYmFzZVR5cGUuc3VjY2Vzc29yVmFsdWUobmV4dFZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgbWVtYmVyQXJyYXkgPSBB
cnJheS5mcm9tKG5vZGUubWVtYmVycyk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVt
YmVyQXJyYXkubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBtZW1iZXIgPSBtZW1iZXJB
cnJheVtpXTsKQEAgLTIzNiw3ICs0MzYsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG90aGVyTWVtYmVy
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZW51bSBtZW1iZXIgdmFsdWUgKCIgKyBt
ZW1iZXIubmFtZSArICIgaGFzICIgKyBtZW1iZXIudmFsdWUgKyAiIHdoaWxlICIgKyBvdGhlck1l
bWJlci5uYW1lICsgIiBoYXMgIiArIG90aGVyTWVtYmVyLnZhbHVlICsgIikiKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgZm91bmRaZXJvID0gZmFs
c2U7CiAgICAgICAgIGZvciAobGV0IG1lbWJlciBvZiBub2RlLm1lbWJlcnMpIHsKICAgICAgICAg
ICAgIGlmIChiYXNlVHlwZS52YWx1ZXNFcXVhbChtZW1iZXIudmFsdWUudW5pZnlOb2RlLnZhbHVl
Rm9yU2VsZWN0ZWRUeXBlLCBiYXNlVHlwZS5kZWZhdWx0VmFsdWUpKSB7CkBAIC0yNDcsNyArNDQ3
LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIWZvdW5k
WmVybykKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdp
blN0cmluZywgIkVudW0gZG9lcyBub3QgaGF2ZSBhIG1lbWJlciB3aXRoIHRoZSB2YWx1ZSB6ZXJv
Iik7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewogICAgICAg
ICBpZiAoIW5vZGUudHlwZSkKQEAgLTMwNiwyMCArNTA2LDIwIEBAIGNsYXNzIENoZWNrZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUubnVtQ29sdW1uc1ZhbHVlICE9IDIgJiYg
bm9kZS5udW1Db2x1bW5zVmFsdWUgIT0gMyAmJiBub2RlLm51bUNvbHVtbnNWYWx1ZSAhPSA0KQog
ICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoYCR7bm9kZS50b1N0cmluZygpfTogJHtu
b2RlLm51bUNvbHVtbnNWYWx1ZX0gaXMgbm90IDIsIDMsIG9yIDQuYCk7CiAgICAgfQotICAgIAor
CiAgICAgdmlzaXRBcnJheVR5cGUobm9kZSkKICAgICB7CiAgICAgICAgIG5vZGUuZWxlbWVudFR5
cGUudmlzaXQodGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5udW1FbGVtZW50
cy5pc0NvbnN0ZXhwcikKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3Jp
Z2luLm9yaWdpblN0cmluZywgIkFycmF5IGxlbmd0aCBtdXN0IGJlIGNvbnN0ZXhwciIpOwotICAg
ICAgICAKKwogICAgICAgICBsZXQgdHlwZSA9IG5vZGUubnVtRWxlbWVudHMudmlzaXQodGhpcyk7
Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdHlwZS5lcXVhbHNXaXRoQ29tbWl0KHRoaXMuX3By
b2dyYW0uaW50cmluc2ljcy51aW50KSkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkFycmF5IGxlbmd0aCBtdXN0IGJlIGEgdWludCIp
OwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0VmFyaWFibGVEZWNsKG5vZGUpCiAgICAgewogICAg
ICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CkBAIC0zMzAsNyArNTMwLDcgQEAgY2xhc3MgQ2hl
Y2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgbWlzbWF0Y2ggaW4gdmFyaWFibGUg
aW5pdGlhbGl6YXRpb246ICIgKyBsaHNUeXBlICsgIiB2ZXJzdXMgIiArIHJoc1R5cGUpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpCiAgICAgewog
ICAgICAgICBsZXQgbGhzVHlwZSA9IG5vZGUubGhzLnZpc2l0KHRoaXMpOwpAQCAtMzQyLDEyICs1
NDIsMTIgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBub2RlLnR5
cGUgPSBsaHNUeXBlOwogICAgICAgICByZXR1cm4gbGhzVHlwZTsKICAgICB9Ci0gICAgCisKICAg
ICB2aXNpdElkZW50aXR5RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5v
ZGUudGFyZ2V0LnZpc2l0KHRoaXMpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0IGxoc1R5cGUgPSBub2Rl
LmxWYWx1ZS52aXNpdCh0aGlzKTsKQEAgLTM2MiwxMyArNTYyLDEzIEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHJlYWQtbW9kaWZ5LXdyaXRl
OiAiICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyBuZXdWYWx1ZVR5cGUpOwogICAgICAgICByZXR1
cm4gbm9kZS5yZXN1bHRFeHAudmlzaXQodGhpcyk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRB
bm9ueW1vdXNWYXJpYWJsZShub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnR5cGUpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFub255bW91cyB2YXJpYWJsZSBtdXN0IGtub3cg
dHlwZSBiZWZvcmUgZmlyc3QgYXBwZWFyYW5jZSIpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0
RGVyZWZlcmVuY2VFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IG5v
ZGUucHRyLnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKQEAgLTM4MCwxNiArNTgwLDE2IEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
TnVsbCBhZGRyZXNzIHNwYWNlIGluIHR5cGU6ICIgKyB0eXBlKTsKICAgICAgICAgcmV0dXJuIG5v
ZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE1ha2VQdHJFeHByZXNzaW9uKG5vZGUp
CiAgICAgewogICAgICAgICBsZXQgZWxlbWVudFR5cGUgPSBub2RlLmxWYWx1ZS52aXNpdCh0aGlz
KS51bmlmeU5vZGU7CiAgICAgICAgIGlmICghbm9kZS5sVmFsdWUuaXNMVmFsdWUpCiAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJPcGVy
YW5kIHRvICYgaXMgbm90IGFuIExWYWx1ZTogIiArIG5vZGUubFZhbHVlICsgbm9kZS5sVmFsdWUu
bm90TFZhbHVlUmVhc29uU3RyaW5nKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIG5ldyBQ
dHJUeXBlKG5vZGUub3JpZ2luLCBub2RlLmxWYWx1ZS5hZGRyZXNzU3BhY2UsIGVsZW1lbnRUeXBl
KTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE1ha2VBcnJheVJlZkV4cHJlc3Npb24obm9kZSkK
ICAgICB7CiAgICAgICAgIGxldCBlbGVtZW50VHlwZSA9IG5vZGUubFZhbHVlLnZpc2l0KHRoaXMp
LnVuaWZ5Tm9kZTsKQEAgLTM5NywzNyArNTk3LDM3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgICAgIG5vZGUuYmVjb21lKG5ldyBDb252ZXJ0UHRyVG9BcnJheVJl
ZkV4cHJlc3Npb24obm9kZS5vcmlnaW4sIG5vZGUubFZhbHVlKSk7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IEFycmF5UmVmVHlwZShub2RlLm9yaWdpbiwgZWxlbWVudFR5cGUuYWRkcmVzc1NwYWNl
LCBlbGVtZW50VHlwZS5lbGVtZW50VHlwZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgaWYgKCFub2RlLmxWYWx1ZS5pc0xWYWx1ZSkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIk9wZXJhbmQgdG8gQCBpcyBub3QgYW4g
TFZhbHVlOiAiICsgbm9kZS5sVmFsdWUgKyBub2RlLmxWYWx1ZS5ub3RMVmFsdWVSZWFzb25TdHJp
bmcpOwotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudFR5cGUuaXNBcnJheSkgewogICAg
ICAgICAgICAgbm9kZS5udW1FbGVtZW50cyA9IGVsZW1lbnRUeXBlLm51bUVsZW1lbnRzOwogICAg
ICAgICAgICAgZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZS5lbGVtZW50VHlwZTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBub2RlLm51bUVsZW1lbnRzID0gVWludExpdGVyYWwud2l0aFR5
cGUobm9kZS5vcmlnaW4sIDEsIHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy51aW50KTsKLSAgICAg
ICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgQXJyYXlSZWZUeXBlKG5vZGUub3JpZ2luLCBu
b2RlLmxWYWx1ZS5hZGRyZXNzU3BhY2UsIGVsZW1lbnRUeXBlKTsKICAgICB9Ci0gICAgCisKICAg
ICB2aXNpdENvbnZlcnRUb0FycmF5UmVmRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbm90IGV4aXN0IHlldC4iKTsKICAgICB9Ci0gICAgCisK
ICAgICBfZmluaXNoVmlzaXRpbmdQcm9wZXJ0eUFjY2Vzcyhub2RlLCBiYXNlVHlwZSwgZXh0cmFB
cmdzLCBleHRyYUFyZ1R5cGVzKQogICAgIHsKICAgICAgICAgYmFzZVR5cGUgPSBiYXNlVHlwZS52
aXNpdChuZXcgQXV0b1dyYXBwZXIoKSkKICAgICAgICAgbm9kZS5iYXNlVHlwZSA9IGJhc2VUeXBl
OwotICAgICAgICAKKwogICAgICAgICAvLyBTdWNoIGEgdHlwZSBtdXN0IGV4aXN0LiBUaGlzIG1h
eSB0aHJvdyBpZiBpdCBkb2Vzbid0LgogICAgICAgICBsZXQgdHlwZUZvckFuZCA9IGJhc2VUeXBl
LmFyZ3VtZW50VHlwZUZvckFuZE92ZXJsb2FkKG5vZGUub3JpZ2luKTsKICAgICAgICAgaWYgKCF0
eXBlRm9yQW5kKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZ2V0IHR5cGVG
b3JBbmQiKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGVycm9yRm9yR2V0OwogICAgICAgICBs
ZXQgZXJyb3JGb3JBbmQ7Ci0gICAgICAgIAorCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gQ2FsbEV4cHJlc3Npb24ucmVzb2x2ZSgKICAgICAgICAgICAgICAgICBub2Rl
Lm9yaWdpbiwgbm9kZS5wb3NzaWJsZUdldE92ZXJsb2FkcywKQEAgLTQzOSwxMCArNjM5LDEwIEBA
IGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBl
OwogICAgICAgICAgICAgZXJyb3JGb3JHZXQgPSBlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICBsZXQgYmFzZUZvckFuZCA9IGJhc2VUeXBlLmFyZ3Vt
ZW50Rm9yQW5kT3ZlcmxvYWQobm9kZS5vcmlnaW4sIG5vZGUuYmFzZSk7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IENhbGxFeHByZXNzaW9uLnJlc29sdmUoCiAgICAg
ICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucG9zc2libGVBbmRPdmVybG9hZHMsCiAgICAg
ICAgICAgICAgICAgbm9kZS5hbmRGdW5jTmFtZSwgW2Jhc2VGb3JBbmQsIC4uLmV4dHJhQXJnc10s
IFt0eXBlRm9yQW5kLCAuLi5leHRyYUFyZ1R5cGVzXSwKQEAgLTQ1NCw3ICs2NTQsNyBAQCBjbGFz
cyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAg
ICAgICAgICAgIGVycm9yRm9yQW5kID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAoIW5vZGUucmVzdWx0VHlwZUZvckdldCAmJiAhbm9kZS5yZXN1bHRUeXBlRm9yQW5kKSB7
CiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigKICAgICAgICAgICAgICAgICBub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsCkBAIC00NjMsMTEgKzY2MywxMSBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgImFuZCB0cmllZCBieS1wb2ludGVy
OlxuIiArCiAgICAgICAgICAgICAgICAgZXJyb3JGb3JBbmQudHlwZUVycm9yTWVzc2FnZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKG5vZGUucmVzdWx0VHlwZUZvckdldCAm
JiBub2RlLnJlc3VsdFR5cGVGb3JBbmQKICAgICAgICAgICAgICYmICFub2RlLnJlc3VsdFR5cGVG
b3JHZXQuZXF1YWxzKG5vZGUucmVzdWx0VHlwZUZvckFuZCkpCiAgICAgICAgICAgICB0aHJvdyBu
ZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJSZXN1bHQgdHlwZSByZXNv
bHZlZCBieS12YWx1ZSAoIiArIG5vZGUucmVzdWx0VHlwZUZvckdldCArICIpIGRvZXMgbm90IG1h
dGNoIHJlc3VsdCB0eXBlIHJlc29sdmVkIGJ5LXBvaW50ZXIgKCIgKyBub2RlLnJlc3VsdFR5cGVG
b3JBbmQgKyAiKSIpOwotICAgICAgICAKKwogICAgICAgICB0cnkgewogICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IENhbGxFeHByZXNzaW9uLnJlc29sdmUoCiAgICAgICAgICAgICAgICAgbm9kZS5v
cmlnaW4sIG5vZGUucG9zc2libGVTZXRPdmVybG9hZHMsCkBAIC00ODAsNyArNjgwLDcgQEAgY2xh
c3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgICAgICAgICBub2RlLmVycm9yRm9yU2V0ID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICAvLyBPSywgbm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBhbiBsdmFs
dWUuIFdlIGFyZSBhbiBsdmFsdWUgaWYgd2UgY2FuIGJlIGFzc2lnbmVkIHRvLiBXZSBjYW4KICAg
ICAgICAgLy8gYmUgYXNzaWduZWQgdG8gaWYgd2UgaGF2ZSBhbiBhbmRlciBvciBzZXR0ZXIuIEJ1
dCBpdCdzIHdlaXJkZXIgdGhhbiB0aGF0LiBXZSBhbHNvIG5lZWQgdGhlIGJhc2UgdG8gYmUKICAg
ICAgICAgLy8gYW4gbHZhbHVlLCBleGNlcHQgdW5sZXNzIHRoZSBiYXNlIGlzIGFuIGFycmF5IHJl
ZmVyZW5jZS4KQEAgLTQ5OCwzMSArNjk4LDMxIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgIG5vZGUuaXNMVmFsdWUgPSB0cnVlOwogICAgICAgICAgICAgbm9k
ZS5hZGRyZXNzU3BhY2UgPSBub2RlLmJhc2UuaXNMVmFsdWUgPyBub2RlLmJhc2UuYWRkcmVzc1Nw
YWNlIDogYmFzZVR5cGUuYWRkcmVzc1NwYWNlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJldHVybiBub2RlLnJlc3VsdFR5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXREb3RF
eHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgc3RydWN0VHlwZSA9IG5vZGUuc3Ry
dWN0LnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFZp
c2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgc3RydWN0VHlwZSwgW10sIFtdKTsKICAgICB9Ci0g
ICAgCisKICAgICB2aXNpdEluZGV4RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0
IGFycmF5VHlwZSA9IG5vZGUuYXJyYXkudmlzaXQodGhpcykudW5pZnlOb2RlOwogICAgICAgICBs
ZXQgaW5kZXhUeXBlID0gbm9kZS5pbmRleC52aXNpdCh0aGlzKTsKLSAgICAgICAgCisKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFZpc2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgYXJyYXlU
eXBlLCBbbm9kZS5pbmRleF0sIFtpbmRleFR5cGVdKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNp
dFZhcmlhYmxlUmVmKG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUudmFyaWFibGUudHlw
ZSkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVmFyaWFibGUgaGFzIG5vIHR5cGU6ICIg
KyBub2RlLnZhcmlhYmxlKTsKICAgICAgICAgcmV0dXJuIG5vZGUudmFyaWFibGUudHlwZTsKICAg
ICB9Ci0gICAgCisKICAgICB2aXNpdFJldHVybihub2RlKQogICAgIHsKICAgICAgICAgaWYgKG5v
ZGUudmFsdWUpIHsKQEAgLTUzMywyNiArNzMzLDI2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJUcnlpbmcgdG8gcmV0dXJuICIgKyByZXN1bHRUeXBlICsgIiBpbiBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAiICsgbm9kZS5mdW5jLnJldHVyblR5cGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5m
dW5jLnJldHVyblR5cGUuZXF1YWxzV2l0aENvbW1pdCh0aGlzLl9wcm9ncmFtLmludHJpbnNpY3Mu
dm9pZCkpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJOb24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIik7CiAgICAg
fQotICAgIAorCiAgICAgdmlzaXRHZW5lcmljTGl0ZXJhbChub2RlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE51bGxMaXRlcmFsKG5v
ZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS50eXBlOwogICAgIH0KLSAgICAKKwogICAg
IHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9n
cmFtLmludHJpbnNpY3MuYm9vbDsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdEVudW1MaXRlcmFs
KG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS5tZW1iZXIuZW51bVR5cGU7CkBAIC02
MTQsMTQgKzgxNCwxNCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgdmlz
aXRTd2l0Y2hTdGF0ZW1lbnQobm9kZSkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gbm9kZS52
YWx1ZS52aXNpdCh0aGlzKS5jb21taXQoKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCF0eXBl
LnVuaWZ5Tm9kZS5pc0ludCAmJiAhKHR5cGUudW5pZnlOb2RlIGluc3RhbmNlb2YgRW51bVR5cGUp
KQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiQ2Fubm90IHN3aXRjaCBvbiBub24taW50ZWdlci9ub24tZW51bSB0eXBlOiAiICsgdHlw
ZSk7CiAKICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKLSAgICAgICAgCisKICAgICAgICAgbGV0
IGhhc0RlZmF1bHQgPSBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQgc3dpdGNo
Q2FzZSBvZiBub2RlLnN3aXRjaENhc2VzKSB7CiAgICAgICAgICAgICBzd2l0Y2hDYXNlLmJvZHku
dmlzaXQodGhpcyk7CiAKQEAgLTYyOSwyNiArODI5LDI2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICBoYXNEZWZhdWx0ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoIXN3aXRjaENhc2UudmFsdWUuaXNDb25zdGV4cHIpCiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3Ioc3dpdGNoQ2FzZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU3dp
dGNoIGNhc2Ugbm90IGNvbnN0ZXhwcjogIiArIHN3aXRjaENhc2UudmFsdWUpOwotICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIGxldCBjYXNlVHlwZSA9IHN3aXRjaENhc2UudmFsdWUudmlzaXQo
dGhpcyk7CiAgICAgICAgICAgICBpZiAoIXR5cGUuZXF1YWxzV2l0aENvbW1pdChjYXNlVHlwZSkp
CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc3dpdGNoQ2FzZS5vcmlnaW4u
b3JpZ2luU3RyaW5nLCAiU3dpdGNoIGNhc2UgdHlwZSBkb2VzIG5vdCBtYXRjaCBzd2l0Y2ggdmFs
dWUgdHlwZSAoY2FzZSB0eXBlIGlzICIgKyBjYXNlVHlwZSArICIgYnV0IHN3aXRjaCB2YWx1ZSB0
eXBlIGlzICIgKyB0eXBlICsgIikiKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IG5vZGUuc3dpdGNoQ2FzZXMubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgIGxldCBmaXJzdENhc2UgPSBub2RlLnN3aXRjaENhc2VzW2ldOwogICAgICAgICAgICAg
Zm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbm9kZS5zd2l0Y2hDYXNlcy5sZW5ndGg7ICsraikgewog
ICAgICAgICAgICAgICAgIGxldCBzZWNvbmRDYXNlID0gbm9kZS5zd2l0Y2hDYXNlc1tqXTsKLSAg
ICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENhc2UuaXNEZWZhdWx0
ICE9IHNlY29uZENhc2UuaXNEZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENhc2UuaXNEZWZh
dWx0KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzZWNvbmRDYXNl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZGVmYXVsdCBjYXNlIGluIHN3aXRjaCBz
dGF0ZW1lbnQiKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxldCB2YWx1
ZXNFcXVhbCA9IHR5cGUudW5pZnlOb2RlLnZhbHVlc0VxdWFsKAogICAgICAgICAgICAgICAgICAg
ICBmaXJzdENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2VsZWN0ZWRUeXBlLAogICAgICAg
ICAgICAgICAgICAgICBzZWNvbmRDYXNlLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVk
VHlwZSk7CkBAIC02NTYsMTkgKzg1NiwxOSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHNlY29uZENhc2Uu
b3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBjYXNlIGluIHN3aXRjaCBzdGF0ZW1lbnQg
Zm9yIHZhbHVlICIgKyBmaXJzdENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2VsZWN0ZWRU
eXBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAo
IWhhc0RlZmF1bHQpIHsKICAgICAgICAgICAgIGxldCBpbmNsdWRlZFZhbHVlcyA9IG5ldyBTZXQo
KTsKICAgICAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9kZS5zd2l0Y2hDYXNlcykK
ICAgICAgICAgICAgICAgICBpbmNsdWRlZFZhbHVlcy5hZGQoc3dpdGNoQ2FzZS52YWx1ZS51bmlm
eU5vZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IGZvciAobGV0IHt2YWx1ZSwgbmFtZX0gb2YgdHlwZS51bmlmeU5vZGUuYWxsVmFsdWVzKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVkVmFsdWVzLmhhcyh2YWx1ZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmlu
ZywgIlZhbHVlIG5vdCBoYW5kbGVkIGJ5IHN3aXRjaCBzdGF0ZW1lbnQ6ICIgKyBuYW1lKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHZpc2l0Q29tbWFFeHBy
ZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKQEAgLTY5MSw3
ICs4OTEsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIG5vZGUu
aXNMVmFsdWUgPSBub2RlLmJvZHlFeHByZXNzaW9uLmlzTFZhbHVlICYmIG5vZGUuZWxzZUV4cHJl
c3Npb24uaXNMVmFsdWU7CiAgICAgICAgIHJldHVybiBib2R5VHlwZTsKICAgICB9Ci0gICAgCisK
ICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgYXJndW1l
bnRUeXBlcyA9IG5vZGUuYXJndW1lbnRMaXN0Lm1hcChhcmd1bWVudCA9PiB7CkBAIC03MDAsNyAr
OTAwLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigidmlzaXRvciByZXR1cm5lZCBudWxsIGZvciAiICsgYXJndW1lbnQp
OwogICAgICAgICAgICAgcmV0dXJuIG5ld0FyZ3VtZW50LnZpc2l0KG5ldyBBdXRvV3JhcHBlcigp
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9
IGFyZ3VtZW50VHlwZXM7CiAgICAgICAgIGlmIChub2RlLnJldHVyblR5cGUpCiAgICAgICAgICAg
ICBub2RlLnJldHVyblR5cGUudmlzaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0ZpZWxkLmpzCmluZGV4IDkwZDdlZjhhNjg0MWNiZmU5ZTY5ZDgxNTQ1N2NjZTVhYTdjZWI5ZGUu
LjMxMmIwMGQ5ZTI4Y2IzZTMzNmFlMDlmYzM5NmZkODljMTYwYWIwYTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMCwyNSArMjAsMzAgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
ICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgRmllbGQgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1
Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0
eXBlLCBzZW1hbnRpYyA9IG51bGwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0
aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAg
ICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsK
ICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQog
ICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyBy
ZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3Nl
bWFudGljOyB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMudHlwZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudHlw
ZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgaWYgKHRoaXMuc2VtYW50aWMpCisgICAgICAg
ICAgICByZXN1bHQgKz0gIjogIiArIHRoaXMuc2VtYW50aWM7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKaW5kZXggNGY1
ODkwNjA3YjFhMjkxNzE4MjM0YWZhM2Q2ZTA2NmYxZDk5MDVkNS4uNjY1NjY0YmZjZTBiYmYzYjE4
NzcwYmMxMTI0YjY5NWMzN2VmYjU2OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuYy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5j
LmpzCkBAIC0yNSw3ICsyNSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmMgZXh0ZW5k
cyBOb2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFt
ZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSA9IG51bGwsIHNlbWFu
dGljID0gbnVsbCkKICAgICB7CiAgICAgICAgIGlmICghKG9yaWdpbiBpbnN0YW5jZW9mIExleGVy
VG9rZW4pKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgb3JpZ2luOiAiICsgb3Jp
Z2luKTsKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRnVuYyBleHRlbmRzIE5vZGUgewogICAgICAg
ICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICAgICAgdGhpcy5faXNDYXN0ID0g
aXNDYXN0OwogICAgICAgICB0aGlzLl9zaGFkZXJUeXBlID0gc2hhZGVyVHlwZTsKKyAgICAgICAg
dGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigp
IHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQpAQCAtNTEsNiArNTIsNyBAQCBjbGFzcyBGdW5jIGV4
dGVuZHMgTm9kZSB7CiAgICAgZ2V0IHBhcmFtZXRlclR5cGVzKCkgeyByZXR1cm4gdGhpcy5wYXJh
bWV0ZXJzLm1hcChwYXJhbWV0ZXIgPT4gcGFyYW1ldGVyLnR5cGUpOyB9CiAgICAgZ2V0IGlzQ2Fz
dCgpIHsgcmV0dXJuIHRoaXMuX2lzQ2FzdDsgfQogICAgIGdldCBzaGFkZXJUeXBlKCkgeyByZXR1
cm4gdGhpcy5fc2hhZGVyVHlwZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMu
X3NlbWFudGljOyB9CiAgICAgZ2V0IGlzRW50cnlQb2ludCgpIHsgcmV0dXJuIHRoaXMuc2hhZGVy
VHlwZSAhPSBudWxsOyB9CiAgICAgZ2V0IHJldHVyblR5cGVGb3JPdmVybG9hZFJlc29sdXRpb24o
KSB7IHJldHVybiB0aGlzLmlzQ2FzdCA/IHRoaXMucmV0dXJuVHlwZSA6IG51bGw7IH0KICAgICAK
QEAgLTcwLDcgKzcyLDEwIEBAIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgICAg
IHJlc3VsdCArPSBgb3BlcmF0b3IgJHt0aGlzLnJldHVyblR5cGV9YDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMucmV0dXJuVHlwZX0gJHt0aGlzLm5hbWV9YDsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdCArICIoIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAg
ICAgICAgcmVzdWx0ICs9ICIoIiArIHRoaXMucGFyYW1ldGVycyArICIpIjsKKyAgICAgICAgaWYg
KHRoaXMuc2VtYW50aWMpCisgICAgICAgICAgICByZXN1bHQgKz0gIjogIiArIHRoaXMuc2VtYW50
aWM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHRvU3RyaW5nKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCmluZGV4IDMwMTZiMTMyNTkx
N2RkNzJlYWE3ZGVkODVhNmViMjdlNTgwMjk4YWMuLjUxMzY4NDgyMjhkYWIxNGE3YmJjNTNkMDBj
NDYzMDA4ZGY3MmU1ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNEZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5q
cwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jRGVmIGV4dGVu
ZHMgRnVuYyB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJh
bWV0ZXJzLCBib2R5LCBpc0Nhc3QsIHNoYWRlclR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2lu
LCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBib2R5LCBpc0Nhc3QsIHNoYWRlclR5cGUs
IHNlbWFudGljKQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBl
LCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICBzdXBlcihvcmlnaW4s
IG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSwgc2VtYW50
aWMpOwogICAgICAgICB0aGlzLl9ib2R5ID0gYm9keTsKICAgICAgICAgdGhpcy5pc1Jlc3RyaWN0
ZWQgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9GdW5jUGFyYW1ldGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Y1BhcmFtZXRlci5qcwppbmRleCBkMGJiMWQ2MjMwNGE0ODZjYWI4NTM3NzU3NTlkNGU4ZWQ2N2M4
MzgzLi4wNWNkYjUyZmRlMzkwZGIyNTBlYzZjMjZiYzY3ZTlmNTBiMWYxZjQ3IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDMwICsyMCwzNyBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGdW5jUGFyYW1ldGVy
IGV4dGVuZHMgVmFsdWUgewogICAgIC8vIFRoZSBuYW1lIGlzIG9wdGlvbmFsLiBJdCdzIE9LIGZv
ciBpdCB0byBiZSBudWxsIQotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSkKKyAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKICAgICB7
CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAg
ICAgdGhpcy5fbmFtZSA9IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAg
ICB0aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOwogICAgIH0KICAgICAKICAgICBnZXQgb3JpZ2lu
KCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlz
Ll9uYW1lOyB9CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0
IHNlbWFudGljKCkgeyByZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KICAgICBnZXQgdmFySXNMVmFs
dWUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKKyAgICAg
ICAgbGV0IHJlc3VsdDsKICAgICAgICAgaWYgKCF0aGlzLm5hbWUpCi0gICAgICAgICAgICByZXR1
cm4gIiIgKyB0aGlzLnR5cGU7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5cGUgKyAiICIgKyB0aGlz
Lm5hbWU7CisgICAgICAgICAgICByZXN1bHQgPSAiIiArIHRoaXMudHlwZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAg
ICAgICBpZiAodGhpcy5zZW1hbnRpYykKKyAgICAgICAgICAgIHJlc3VsdCArPSAiOiAiICsgdGhp
cy5zZW1hbnRpYzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmluZGV4IDY4YjBkZDU3M2ZjMDJl
YTM4NTE3OTU1ZDgzODhhNjQ2YWE5MGE1OTYuLmM0NDRmNTY1ZDNhNDk5ZTc3YWEyZWEyZTA0ZGJj
YTRmNWQwZmQ2ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2lj
cy5qcwpAQCAtMjcyLDYgKzI3Miw3IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAg
ICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbYCR7dGV4dHVy
ZVR5cGV9PCR7dHlwZUFyZ3VtZW50fT5gXSA9IHR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5pc1RleHR1cmUg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1
ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIHt9KTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPD0gNDsg
KytpKSB7CkBAIC0yODAsNiArMjgxLDcgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
W2Ake3RleHR1cmVUeXBlfTwke3R5cGVBcmd1bWVudH0ke2l9PmBdID0gdHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGUuaXNUZXh0dXJlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIu
c2V0KG9mZnNldCwge30pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNo
ZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcwpp
bmRleCBlYjVlZTY5NjljMWQ5MzM2M2FlMTU2NWMxN2RjY2MwYWFiMGExYmMzLi40N2ZkMzJjM2E4
NGQ2M2U2ZGNjNWYzN2M3Y2U0MjM3ZWQyNzQzNzJlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qcwpAQCAtMzMsNTUgKzMzLDUgQEAgY2xhc3MgTGF0ZUNo
ZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKCFub2RlLmVsZW1lbnRUeXBlLmlz
UHJpbWl0aXZlKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4u
b3JpZ2luU3RyaW5nLCAiSWxsZWdhbCBwb2ludGVyIHRvIG5vbi1wcmltaXRpdmUgdHlwZTogIiAr
IG5vZGUpOwogICAgIH0KLSAgICAKLSAgICBfY2hlY2tTaGFkZXJUeXBlKG5vZGUpCi0gICAgewot
ICAgICAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGVzZSBjaGVja3MuIEZvciBub3csIHdlIHNob3Vs
ZCBvbmx5IGFjY2VwdCBpbnQzMiwgdWludDMyLCBmbG9hdDMyLCBhbmQgZmxvYXQ2NC4KLSAgICAg
ICAgbGV0IGFzc2VydFByaW1pdGl2ZSA9IHR5cGUgPT4gewotICAgICAgICAgICAgaWYgKCF0eXBl
LmlzUHJpbWl0aXZlKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUu
b3JpZ2luLm9yaWdpblN0cmluZywgIlNoYWRlciBzaWduYXR1cmUgY2Fubm90IGluY2x1ZGUgbm9u
LXByaW1pdGl2ZSB0eXBlOiAiICsgdHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGlmIChub2RlLnNoYWRlclR5cGUgPT0gInZlcnRleCIgfHwgbm9kZS5zaGFkZXJUeXBlID09ICJm
cmFnbWVudCIpIHsKLSAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShub2RlLnJldHVyblR5cGUp
OwotICAgICAgICAgICAgLy8gRklYTUU6IEZyYWdtZW50IHNoYWRlcnMgc2hvdWxkbid0IGhhdmUg
dGhpcyByZXN0cmljdGlvbjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTM4NwotICAgICAgICAgICAgaWYgKCEobm9kZS5yZXR1cm5UeXBlLnVuaWZ5Tm9kZSBpbnN0
YW5jZW9mIFN0cnVjdFR5cGUpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlNoYWRlciAiICsgbm9kZS5uYW1lICsgIiBtdXN0
IHJldHVybiBhIHN0cnVjdC4iKTsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIHN3
aXRjaCAobm9kZS5zaGFkZXJUeXBlKSB7Ci0gICAgICAgIGNhc2UgInZlcnRleCI6Ci0gICAgICAg
ICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUp
Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShwYXJhbWV0ZXIudHlwZSk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoIXBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZS5pc0FycmF5
UmVmKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsIG5vZGUubmFtZSArICIgYWNjZXB0cyBhIHBhcmFtZXRlciAiICsgcGFy
YW1ldGVyLm5hbWUgKyAiIHdoaWNoIGlzbid0IGEgc3RydWN0IGFuZCBpc24ndCBhbiBBcnJheVJl
Zi4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJm
cmFnbWVudCI6Ci0gICAgICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0
ZXJzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5uYW1lID09ICJzdGFnZUluIikg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIShwYXJhbWV0ZXIudHlwZS51bmlmeU5vZGUgaW5z
dGFuY2VvZiBTdHJ1Y3RUeXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkZyYWdtZW50IGVudHJ5IHBvaW50
cycgc3RhZ2VJbiBwYXJhbWV0ZXIgKG9mICIgKyBub2RlLm5hbWUgKyAiKSBtdXN0IGJlIGEgc3Ry
dWN0IHR5cGUuIik7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShwYXJhbWV0
ZXIudHlwZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFwYXJhbWV0ZXIudHlwZS51bmlmeU5vZGUuaXNBcnJheVJlZikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywg
IkZyYWdtZW50IGVudHJ5IHBvaW50J3MgIiArIHBhcmFtZXRlci5uYW1lICsgIiBwYXJhbWV0ZXIg
aXMgbm90IGFuIGFycmF5IHJlZmVyZW5jZS4iKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAidGVzdCI6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQmFkIHNoYWRlciB0eXBlOiAiICsgbm9kZS5zaGFkZXJUeXBlKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICB2aXNpdEZ1bmNEZWYobm9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChub2Rl
LnNoYWRlclR5cGUpCi0gICAgICAgICAgICB0aGlzLl9jaGVja1NoYWRlclR5cGUobm9kZSk7Ci0g
ICAgICAgIHN1cGVyLnZpc2l0RnVuY0RlZihub2RlKTsKLSAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCmluZGV4IGYwODY1MzQyZjJlZGQ3ZGVj
NDdiZjUyZDE1OTg2MTBjMzI0ZjBmMmMuLjVhZjk0ZmQxMTQ2MjE3OTdkZTY3ZWY5MTZmZWRkNGY2
MGExNDc5MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2
ZUZ1bmMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5q
cwpAQCAtMjUsOSArMjUsOSBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRpdmVGdW5jIGV4
dGVuZHMgRnVuYyB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBw
YXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBu
YW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QpCiAgICAgewotICAgICAgICBzdXBl
cihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlw
ZSk7CisgICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywg
aXNDYXN0KTsKICAgICAgICAgdGhpcy5pc1Jlc3RyaWN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5pbXBsZW1lbnRhdGlvbiA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ltcGxlbWVudGF0aW9uRGF0
YSA9IG51bGw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCmluZGV4IDdkMTM4
MWYyZTNjNWEzMGFkMWUzZDk3ZjYyMzU0N2JjZThiMDQ1ZTYuLjk1YmIwOWYwM2YyMzczZGU0NGNh
ZDZhZDMxZmY3ZjhjMjRkNjk1YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNl
LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBsZXQgbGV4ZXIgPSBuZXcgTGV4
ZXIob3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KTsKIAogICAgIC8v
IFRoZSBoYXJkZXN0IHBhcnQgb2YgZGVhbGluZyB3aXRoIEMtbGlrZSBsYW5ndWFnZXMgaXMgcGFy
c2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgotICAgIC8vIExldCdzIGNvbnNp
ZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRz
IGluIFdTTCB0aGF0IGJlaW5nIHdpdGggYW4KKyAgICAvLyBMZXQncyBjb25zaWRlciBpZiB0aGlz
IGhhcHBlbnMgaW4gV0hMU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRzIGluIFdITFNM
IHRoYXQgYmVpbmcgd2l0aCBhbgogICAgIC8vIGlkZW50aWZpZXIsIGlmIHdlIGFzc3VtZSB0aGF0
IGFueSBleHByZXNzaW9uIGNhbiBiZSBhIHN0YW5kYWxvbmUgc3RhdGVtZW50LgogICAgIC8vCiAg
ICAgLy8gICAgIHg7CkBAIC0xMDg1LDcgKzEwODUsMTMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBp
ZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiB0eXBl
OwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAg
ICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUudGV4
dCA6IG51bGwsIHR5cGUpOworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOworICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiOiIpKSB7CisgICAgICAgICAgICBzZW1hbnRpYyA9IHBhcnNlU2VtYW50
aWMoKTsKKyAgICAgICAgICAgIGlmIChzZW1hbnRpYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWM7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVs
bCwgdHlwZSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVy
cygpCkBAIC0xMTYyLDYgKzExNjgsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBuYW1lOwog
ICAgICAgICBsZXQgaXNDYXN0OwogICAgICAgICBsZXQgc2hhZGVyVHlwZTsKKyAgICAgICAgbGV0
IHNlbWFudGljID0gbnVsbDsKICAgICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1l
KCJvcGVyYXRvciIpOwogICAgICAgICBpZiAob3BlcmF0b3JUb2tlbikgewogICAgICAgICAgICAg
b3JpZ2luID0gb3BlcmF0b3JUb2tlbjsKQEAgLTExNzEsNyArMTE3OCw3IEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgICAgIG5hbWUgPSAib3BlcmF0b3IgY2FzdCI7CiAgICAgICAgICAgICBpc0Nhc3Qg
PSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHRyeUNv
bnN1bWUoInZlcnRleCIsICJmcmFnbWVudCIsICJ0ZXN0Iik7CisgICAgICAgICAgICBzaGFkZXJU
eXBlID0gdHJ5Q29uc3VtZSgidmVydGV4IiwgImZyYWdtZW50IiwgImNvbXB1dGUiLCAidGVzdCIp
OwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwogICAgICAgICAgICAgaWYg
KHJldHVyblR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJldHVyblR5cGU7CkBAIC0xMTgzLDEyICsxMTkwLDE3IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgICAgIG5hbWUgPSBwYXJzZUZ1bmNOYW1lKCk7CiAgICAgICAgICAgICBpZiAobmFtZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgICAgICBzZW1hbnRpYyA9
IHBhcnNlU2VtYW50aWMoKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlzQ2FzdCA9IGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7CiAgICAgICAgIGlmIChwYXJh
bWV0ZXJzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyhvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUs
IHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgRnVu
YyhvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlw
ZSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRnVuY0RlZigpCkBAIC0x
MTk5LDcgKzEyMTEsOTkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5L
aW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxv
Y2soKTsKICAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm4gYm9keTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2lu
LCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5j
LmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1
bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBi
b2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlLCBmdW5jLnNlbWFudGljKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpCisgICAgeworICAgICAg
ICBsZXQgb3JpZ2luID0gY29uc3VtZSgiYXR0cmlidXRlIik7CisgICAgICAgIGlmIChvcmlnaW4g
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgbGV0IGluZGV4ID0gY29uc3VtZUtpbmQoImludExpdGVyYWwiKTsKKyAgICAg
ICAgaWYgKGluZGV4IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IGluZGV4OworICAgICAgICBsZXQgdWludFZlcnNpb24gPSBpbmRleC50ZXh0ID4+PiAwOworICAg
ICAgICBpZiAodWludFZlcnNpb24gIT09IGluZGV4LnRleHQpCisgICAgICAgICAgICByZXR1cm4g
ZmFpbCgiU2VtYW50aWMgIGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIGluZGV4
LnRleHQpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
YXliZUVycm9yOworICAgICAgICByZXR1cm4gbmV3IFN0YWdlSW5PdXRTZW1hbnRpYyhvcmlnaW4s
IHVpbnRWZXJzaW9uKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVJlc291cmNlU2VtYW50
aWMoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInJlZ2lzdGVyIik7Cisg
ICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbGV0IG1vZGUgPSBjb25zdW1lKCJ1IiwgInQi
LCAiYiIsICJzIik7CisgICAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1vZGU7CisgICAgICAgIGxldCBpbmRleCA9IGNvbnN1bWVLaW5k
KCJpbnRMaXRlcmFsIik7CisgICAgICAgIGlmIChpbmRleCBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgbGV0IHVpbnRWZXJzaW9uID0g
aW5kZXgudGV4dCA+Pj4gMDsKKyAgICAgICAgaWYgKHVpbnRWZXJzaW9uICE9PSBpbmRleC50ZXh0
KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlNlbWFudGljICBpcyBub3QgMzItYml0IHVuc2ln
bmVkIGludGVnZXI6ICIgKyBpbmRleC50ZXh0KTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG5ldyBTdGFn
ZUluT3V0U2VtYW50aWMob3JpZ2luLCBtb2RlLnRleHQsIHVpbnRWZXJzaW9uKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpCisgICAg
eworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3BlY2lhbGl6ZWQiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CisgICAgICAgIHJldHVybiBuZXcgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
KG9yaWdpbik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VCdWlsdEluU2VtYW50aWMoKQor
ICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IHRyeUNvbnN1bWUoIlNWX0luc3RhbmNlSUQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfVmVydGV4SUQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUFNJWkUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfUG9zaXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
U1ZfSXNGcm9udEZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfU2Ft
cGxlSW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfSW5uZXJDb3Zl
cmFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9EZXB0aCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Db3ZlcmFnZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJTVl9EaXNwYXRjaFRocmVhZElEIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNWX0dyb3VwSUQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfR3JvdXBJbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTVl9Hcm91cFRocmVhZElEIik7CisgICAgICAgIGlmIChvcmlnaW4pCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IEJ1aWx0SW5TZW1hbnRpYyhvcmlnaW4sIG9yaWdpbi50ZXh0KTsKKyAgICAgICAg
b3JpZ2luID0gY29uc3VtZSgiU1ZfVGFyZ2V0Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBs
ZXQgaW5kZXggPSBjb25zdW1lS2luZCgiaW50TGl0ZXJhbCIpOworICAgICAgICBpZiAoaW5kZXgg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAg
ICAgIGxldCB1aW50VmVyc2lvbiA9IGluZGV4LnRleHQgPj4+IDA7CisgICAgICAgIGlmICh1aW50
VmVyc2lvbiAhPT0gaW5kZXgudGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJTZW1hbnRp
YyAgaXMgbm90IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXgudGV4dCk7CisgICAg
ICAgIHJldHVybiBuZXcgQnVpbHRJblNlbWFudGljKG9yaWdpbiwgb3JpZ2luLnRleHQsIHVpbnRW
ZXJzaW9uKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVNlbWFudGljKCkKKyAgICB7Cisg
ICAgICAgIGlmICh0ZXN0KCJhdHRyaWJ1dGUiKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVN0
YWdlSW5PdXRTZW1hbnRpYygpOworICAgICAgICBlbHNlIGlmICh0ZXN0KCJyZWdpc3RlciIpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVzb3VyY2VTZW1hbnRpYygpOworICAgICAgICBlbHNl
IGlmICh0ZXN0KCJzcGVjaWFsaXplZCIpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNl
RmllbGQoKQpAQCAtMTIxMCwxMCArMTMxNCwxNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBu
YW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKICAgICAgICAgaWYgKG5hbWUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0
IHNlbWFudGljID0gbnVsbDsKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkgeworICAgICAg
ICAgICAgc2VtYW50aWMgPSBwYXJzZVNlbWFudGljKCk7CisgICAgICAgICAgICBpZiAoc2VtYW50
aWMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFu
dGljOworICAgICAgICB9CiAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOwog
ICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAg
ICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5h
bWUudGV4dCwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgRmllbGQobmFtZSwgbmFtZS50ZXh0
LCB0eXBlLCBzZW1hbnRpYyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBl
KCkKQEAgLTEyNDUsNyArMTM1NSw5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCI7Iik7CiAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7Ci0gICAgICAgIHJldHVy
biBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUs
IGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QsIGZ1bmMuc2hhZGVyVHlwZSk7CisgICAgICAg
IGlmIChmdW5jLnNoYWRlclR5cGUgfHwgZnVuYy5zZW1hbnRpYykKKyAgICAgICAgICAgIHJldHVy
biBmYWlsKCJOYXRpdmUgZnVuY3Rpb25zIGNhbid0IGJlIGVudHJ5IHBvaW50cyBvciBoYXZlIHNl
bWFudGljcy4iKTsKKyAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3JpZ2luLCBm
dW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlzQ2FzdCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Jlc291cmNlU2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUyNWE5
ODVhNGI4NGQzOTEzMGVlOGU1ZWE3NDg4NGQyMWVhYmZiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc291cmNlU2VtYW50aWMuanMKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisidXNl
IHN0cmljdCI7CisKK2NsYXNzIFJlc291cmNlU2VtYW50aWMgZXh0ZW5kcyBTZW1hbnRpYyB7Cisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCByZXNvdXJjZU1vZGUsIGluZGV4KQorICAgIHsKKyAgICAg
ICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgICB0aGlzLl9yZXNvdXJjZU1vZGUgPSByZXNvdXJj
ZU1vZGU7CisgICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4OworICAgIH0KKworICAgIGdldCBy
ZXNvdXJjZU1vZGUoKSB7IHJldHVybiB0aGlzLl9yZXNvdXJjZU1vZGU7IH0KKyAgICBnZXQgaW5k
ZXgoKSB7IHJldHVybiB0aGlzLl9pbmRleDsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBl
LCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLnJlc291cmNlTW9kZSkgewor
ICAgICAgICBjYXNlICJiIjoKKyAgICAgICAgICAgIHJldHVybiB0eXBlIGluc3RhbmNlb2YgUHRy
VHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlIHx8IHR5cGUgaW5zdGFuY2VvZiBB
cnJheVR5cGU7CisgICAgICAgIGNhc2UgInUiOgorICAgICAgICBjYXNlICJ0IjoKKyAgICAgICAg
ICAgIHJldHVybiB0eXBlLmlzVGV4dHVyZSB8fCB0eXBlIGluc3RhbmNlb2YgUHRyVHlwZSB8fCB0
eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlIHx8IHR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGU7
CisgICAgICAgIGNhc2UgInMiOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUuZXF1YWxzKHByb2dy
YW0uaW50cmluc2ljcy5zYW1wbGVyKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgVW5rbm93biByZXNvdXJjZSBtb2RlOiAke3RoaXMucmVzb3VyY2VNb2Rl
fWApOworICAgICAgICB9CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShk
aXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09
ICJpbnB1dCI7CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGByZWdpc3Rlcigke3RoaXMucmVzb3VyY2VNb2RlfSR7dGhpcy5pbmRleH0pYDsKKyAgICB9Cit9
CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggMjY3ZTdh
MzMyMzRhZjM3MmYxZTEzNGVlNjNmOTZjYjFjN2Y3ODE2My4uMDExNjJhNTU3NzExOWYyYTc5YjBl
ZTBlZmRkOGVkODQxMTRhZDgwZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanMKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgIAogICAgIHZp
c2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBG
dW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlz
KSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwg
bm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRp
YywgdGhpcykpOwogICAgICAgICB0aGlzLl9tYXBOb2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAg
IHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA1
LDcgKzEwNSw3IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdEZpZWxkKG5vZGUp
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5vZGUub3JpZ2luLCBub2RlLm5hbWUs
IG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAgICAgIHJldHVybiBuZXcgRmllbGQobm9kZS5v
cmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUu
c2VtYW50aWMsIHRoaXMpKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCA4OTE4NjcxMWZm
NWMwMTBmNTcyMGUxNjg4ZmYzY2E1ZGZkZWUyNGVhLi45ZTVmMzI1ZmFhYzU4NGI4ZGZlMmQwMjBj
ZGNmY2NkYjU3ZjhkZTAzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TUElSVi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0
bWwKQEAgLTI5LDYgKzI5LDcgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJCbG9jay5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCdWlsdElu
U2VtYW50aWMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCdWlsdGluTWF0cml4R2V0
dGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeFNldHRlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJ1aWx0aW5WZWN0b3JHZXR0ZXIuanMiPjwv
c2NyaXB0PgpAQCAtMTIxLDEwICsxMjIsMTQgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJSZXNv
bHZlT3ZlcmxvYWRJbXBsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZVBy
b3BlcnRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJSZXNvdXJjZVNlbWFudGljLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUmV0dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJldHVy
bkV4Y2VwdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlNhbXBsZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IlN0YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlN0YXRlbWVudENsb25lci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlN0cnVjdExh
eW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
ZW1hbnRpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTYwZDFmNDIwMjJiYTJjMWEzN2NiNTkzOWI0YmNiZjJj
NzFjYzE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
U2VtYW50aWMuanMKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFNlbWFudGljIGV4dGVuZHMg
Tm9kZSB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKworICAgIGdldCBvcmlnaW4o
KSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KKworICAgIGVxdWFsVG9PdGhlclNlbWFudGljKG90
aGVyU2VtYW50aWMpCisgICAgeworICAgICAgICBjbGFzcyBDb21wYXJlciBleHRlbmRzIFZpc2l0
b3IgeworICAgICAgICAgICAgdmlzaXRCdWlsdEluU2VtYW50aWMobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoIShvdGhlclNlbWFudGljIGluc3RhbmNlb2YgQnVpbHRJ
blNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmIChub2RlLm5hbWUgIT0gb3RoZXJTZW1hbnRpYy5uYW1lKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuZXh0cmFBcmd1
bWVudHMgJiYgb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50cy5sZW5ndGggIT0gb3RoZXJTZW1hbnRpYy5leHRy
YUFyZ3VtZW50cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5leHRyYUFyZ3Vt
ZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuZXh0
cmFBcmd1bWVudHNbaV0gIT0gb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50c1tpXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChub2RlLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbm9kZS5leHRyYUFyZ3VtZW50cy5sZW5ndGggPT0gMDsKKyAgICAgICAgICAg
ICAgICBpZiAob3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG90aGVyU2VtYW50aWMuZXh0cmFBcmd1bWVudHMubGVuZ3RoID09IDA7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0UmVzb3VyY2VTZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmICghKG90aGVyU2VtYW50aWMgaW5zdGFuY2VvZiBSZXNvdXJjZVNlbWFudGljKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBub2Rl
LnJlc291cmNlTW9kZSA9PSBvdGhlclNlbWFudGljLnJlc291cmNlTW9kZSAmJiBub2RlLmluZGV4
ID09IG90aGVyU2VtYW50aWMuaW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9mIFN0YWdlSW5PdXRTZW1hbnRpYykpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZS5pbmRleCA9PSBvdGhlclNlbWFudGljLmluZGV4OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2aXNpdFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdGhpcy52aXNpdChuZXcgQ29tcGFyZXIoKSk7CisgICAgfQorfQorCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyMjA2OTdiOTRlOTYzODAxYWIyMDZl
MTE0YmJhYjhkMGYzNDYzMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1NwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3Ry
aWN0IjsKKworY2xhc3MgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljIGV4dGVuZHMgU2Vt
YW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbikKKyAgICB7CisgICAgICAgIHN1cGVyKG9y
aWdpbik7CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHR5cGUuaXNOdW1iZXI7CisgICAgfQorCisgICAgaXNBY2NlcHRh
YmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gZGlyZWN0aW9uID09ICJpbnB1dCI7CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICJzcGVjaWFsaXplZCI7CisgICAgfQorfQorCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmU5ZWVhOTliZTdkOTdjY2Y1NGZkNjUxNzFhODQ0MDAxOTAwYzg1MgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YWdlSW5PdXRTZW1hbnRp
Yy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3RhZ2VJbk91dFNlbWFudGljIGV4dGVu
ZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgaW5kZXgpCisgICAgeworICAg
ICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAg
fQorCisgICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhpcy5faW5kZXg7IH0KKworICAgIGlzQWNj
ZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlIGlu
c3RhbmNlb2YgRW51bVR5cGUgfHwgdHlwZSBpbnN0YW5jZW9mIEFycmF5VHlwZSB8fCB0eXBlIGlu
c3RhbmNlb2YgVmVjdG9yVHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgTWF0cml4VHlwZSB8fCB0eXBl
LmlzTnVtYmVyOworICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0
aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7Cisg
ICAgICAgIGNhc2UgInZlcnRleCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Y2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAiaW5wdXQi
OworICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY2FzZSAidGVzdCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaGFkZXIgdHlwZTog
JHtzaGFkZXJUeXBlfWApOworICAgICAgICB9CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGBhdHRyaWJ1dGUoJHt0aGlzLmluZGV4fSlgOworICAgIH0KK30K
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xv
bmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpz
CmluZGV4IDBkMDcxNWE5ODU0ZGVmMWJmZDJhODA4Yzc0MDQxMTJiYTFhNGEwYzEuLjc4NTk2NmY4
N2Y4OTEyMzVkZTJkOTMzYWI3MDAzNzZmY2E1MDljZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKQEAgLTQzLDcgKzQzLDcgQEAgY2xh
c3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAgbm9kZS5v
cmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlz
KSwKICAgICAgICAgICAgIG5vZGUucGFyYW1ldGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRl
ci52aXNpdCh0aGlzKSksCi0gICAgICAgICAgICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBl
KTsKKyAgICAgICAgICAgIG5vZGUuaXNDYXN0KTsKICAgICAgICAgcmVzdWx0LmlzUmVzdHJpY3Rl
ZCA9IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVBcnJheU9w
ZXJhdG9yTGVuZ3RoLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKaW5kZXggZGU4ZGY1ZDExNDhjNTc4YWYwZGI2ZTI3ZDdi
MDE3OTg5OWYxNWQ0YS4uMWEyODE1OGE4YjQyN2Q3OTE4N2I5MGM1YWQ0NjY4NWMxMDYwNDEzMiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFycmF5
T3BlcmF0b3JMZW5ndGguanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24g
c3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSkKICAgICAgICAgbGV0IG5hdGl2
ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIGFycmF5VHlwZS5vcmlnaW4sICJv
cGVyYXRvci5sZW5ndGgiLCB1aW50LAogICAgICAgICAgICAgWyBuZXcgRnVuY1BhcmFtZXRlcihh
cnJheVR5cGUub3JpZ2luLCBudWxsLCBwYXJhbVR5cGUpIF0sCi0gICAgICAgICAgICBmYWxzZSwg
bnVsbCk7CisgICAgICAgICAgICBmYWxzZSk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2FycmF5XSkgPT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUp
OwogICAgICAgICBwcm9ncmFtLmFkZChuYXRpdmVGdW5jKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9y
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1
Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGNmOThjNDY3YTVjMTJkODQ2MmYxYmIwNzgxYTIwZTBlMmFl
MzVjMzkuLmYzOWVhZWYxZDQ2NDc1NjdlODgzN2Y0ZjU0ZDYxOTczNDU2YzZiZWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVDb3B5Q29uc3RydWN0
b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVz
aXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgZnVuY3Rpb24g
c3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yKHByb2dyYW0pCiAgICAgZm9yIChsZXQg
dHlwZSBvZiB0eXBlcykgewogICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5j
KHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgWwogICAg
ICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3Jh
cCh0eXBlKSkKLSAgICAgICAgXSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIF0sIHRydWUpOwogICAg
ICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFthcmddLCBub2RlKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXplKSwgMCk7
CiAgICAgICAgICAgICByZXN1bHQuY29weUZyb20oYXJnLCB0eXBlLnNpemUpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1
Y3Rvck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGRjNTA2NTM4ZDFjNmM3MTA5YjFh
ZDFlY2JhM2NlYzI3OGQwZjdiNWMuLjViYzVkZDkzOWFkNDA0YmMzMThkYzVjODA5NTk1OGZlNDc1
MWQ0ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNp
emVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTYy
LDcgKzYyLDcgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9y
KHByb2dyYW0pCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwogCiAgICAg
Zm9yIChsZXQgdHlwZSBvZiB0eXBlcykgewotICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBO
YXRpdmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBl
KSwgW10sIHRydWUsIG51bGwpOworICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVG
dW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgW10s
IHRydWUpOwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFtdLCBub2RlKSA9
PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5z
aXplKSwgMCk7CiAgICAgICAgICAgICBub2RlLnR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUocmVz
dWx0LmJ1ZmZlciwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TeW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCmluZGV4IDEzN2FjOWZjZDE1ODg3YWY4Yzc2
ZTRmNjRjZGQ1YTIyZDI3Y2FhMTIuLjgyNjZhMThiNjdkODlmNTNkMzBiMjg2NDNiYjcyOWE1Mjc1
NWVmMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNp
emVFbnVtRnVuY3Rpb25zLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5
bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCkBAIC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHN5bnRo
ZXNpemVFbnVtRnVuY3Rpb25zKHByb2dyYW0pCiAKICAgICAgICAgbGV0IG5hdGl2ZUZ1bmM7CiAg
ICAgICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgbGV0IHNoYWRlclR5cGU7CiAKICAg
ICAgICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmln
aW4sICJvcGVyYXRvcj09IiwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sICJib29sIiksCkBAIC00
MCwyOCArMzksMjggQEAgZnVuY3Rpb24gc3ludGhlc2l6ZUVudW1GdW5jdGlvbnMocHJvZ3JhbSkK
ICAgICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbnVsbCwgbmV3
IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSkpLAogICAgICAgICAgICAgICAgIG5ldyBG
dW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwg
dHlwZS5uYW1lKSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBpc0Nhc3QsIHNoYWRlclR5
cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgbmF0aXZlRnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PiBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJp
Z2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgcHJvZ3JhbS5hZGQobmF0aXZlRnVuYyk7CiAKICAg
ICAgICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmln
aW4sICJvcGVyYXRvci52YWx1ZSIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3IFJld3JpdGVyKCkp
LAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcg
VHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAgICAgaXNDYXN0LCBz
aGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5h
dGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAg
ICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIHR5cGUuYmFzZVR5cGUudmlzaXQo
bmV3IFJld3JpdGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3Jp
Z2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAg
ICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAg
IG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAg
IHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0
aXZlRnVuYygKICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIG5ldyBU
eXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFy
YW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCB0eXBlLmJhc2VUeXBlLnZpc2l0KG5ldyBSZXdyaXRl
cigpKSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlz
Q2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4g
dmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNj
ZXNzb3JzLmpzCmluZGV4IDc4NTllZWI0YjRmNWNiNWVmZTZmZDAyZGVhYjYzNzBkYmQ5YjUzOTAu
LjZjN2ZmZDcxODExNWM3OWQ4ZjI3MTA1N2I0MThjMDA5NDFjMGFlZmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vz
c29ycy5qcwpAQCAtNDksMTMgKzQ5LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nl
c3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAgICAgICAgIH0KIAogICAgICAgICBs
ZXQgaXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAgICBsZXQg
bmF0aXZlRnVuYzsKIAogICAgICAgICAvLyBUaGUgZ2V0dGVyOiBvcGVyYXRvci5maWVsZAogICAg
ICAgICBuYXRpdmVGdW5jID0gbmV3IE5hdGl2ZUZ1bmMoCiAgICAgICAgICAgICBmaWVsZC5vcmln
aW4sICJvcGVyYXRvci4iICsgZmllbGQubmFtZSwgZmllbGQudHlwZSwKLSAgICAgICAgICAgIFtu
ZXcgRnVuY1BhcmFtZXRlcihmaWVsZC5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0eXBlKSld
LCBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKGZp
ZWxkLm9yaWdpbiwgbnVsbCwgVHlwZVJlZi53cmFwKHR5cGUpKV0sIGlzQ2FzdCk7CiAgICAgICAg
IHNldHVwSW1wbGVtZW50YXRpb25EYXRhKG5hdGl2ZUZ1bmMsIChbYmFzZV0sIG9mZnNldCwgc3Ry
dWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQ
dHIobmV3IEVCdWZmZXIoZmllbGRTaXplKSwgMCk7CiAgICAgICAgICAgICByZXN1bHQuY29weUZy
b20oYmFzZS5wbHVzKG9mZnNldCksIGZpZWxkU2l6ZSk7CkBAIC03MCw3ICs2OSw3IEBAIGZ1bmN0
aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUp
CiAgICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIoZmllbGQub3JpZ2luLCBudWxsLCBU
eXBlUmVmLndyYXAodHlwZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKGZp
ZWxkLm9yaWdpbiwgbnVsbCwgZmllbGQudHlwZSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgc2V0
dXBJbXBsZW1lbnRhdGlvbkRhdGEobmF0aXZlRnVuYywgKFtiYXNlLCB2YWx1ZV0sIG9mZnNldCwg
c3RydWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3
IEVQdHIobmV3IEVCdWZmZXIoc3RydWN0U2l6ZSksIDApOwogICAgICAgICAgICAgcmVzdWx0LmNv
cHlGcm9tKGJhc2UsIHN0cnVjdFNpemUpOwpAQCAtODksNyArODgsNyBAQCBmdW5jdGlvbiBzeW50
aGVzaXplU3RydWN0QWNjZXNzb3JzRm9yU3RydWN0VHlwZShwcm9ncmFtLCB0eXBlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZmllbGQub3JpZ2luLCBudWxsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFB0clR5cGUoZmllbGQub3JpZ2luLCBhZGRyZXNzU3BhY2UsIFR5cGVSZWYud3Jh
cCh0eXBlKSkpCiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBpc0Nhc3QsIHNo
YWRlclR5cGUpOworICAgICAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgICAgICBzZXR1cElt
cGxlbWVudGF0aW9uRGF0YShuYXRpdmVGdW5jLCAoW2Jhc2VdLCBvZmZzZXQsIHN0cnVjdFNpemUs
IGZpZWxkU2l6ZSkgPT4gewogICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLmxvYWRWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIGlmICghYmFzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuaHRtbAppbmRleCA5OGUzODUxZjE2OTlhYTZjZTY4YmZkNWFiODQ2MWFlOTdkZWVkMWMx
Li41MzBjYTZkNDk5NWYxY2ExMDYzY2Y4Y2JkNDQyYjFkNDdhMWZiYmQ3IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVh
ZD4KLTx0aXRsZT5XU0wgVGVzdDwvdGl0bGU+Cis8dGl0bGU+V0hMU0wgVGVzdDwvdGl0bGU+CiA8
c2NyaXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9zY3JpcHQ+CkBAIC0yMyw2
ICsyMyw3IEBACiA8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkJvb2xMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCcmVhay5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJCdWlsdGluTWF0cml4R2V0dGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWls
dGluTWF0cml4U2V0dGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluVmVjdG9y
R2V0dGVyLmpzIj48L3NjcmlwdD4KQEAgLTExNSwxMCArMTE2LDE0IEBACiA8c2NyaXB0IHNyYz0i
UmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVBy
b3BlcnRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iUmV0dXJuLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm5DaGVj
a2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlNhbXBsZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlNl
bWFudGljLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0YWdlSW5PdXRTZW1hbnRpYy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJTdGF0ZW1lbnRDbG9uZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggYjllYTdlNDYzYzRlMDhiZGY4NmZlOTA3NmVhZDQwNTg3
NmQxMTU5Mi4uNTcwNTVmOGRhOTMzNzZhYTlkMWU0ZDRhZWExNzEwOTIyY2U2Zjc0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC0zNiwxMSArMzYsMTMgQEAg
Y2xhc3MgVmlzaXRvciB7CiAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKTsKICAg
ICAgICAgZm9yIChsZXQgcGFyYW1ldGVyIG9mIG5vZGUucGFyYW1ldGVycykKICAgICAgICAgICAg
IHBhcmFtZXRlci52aXNpdCh0aGlzKTsKKyAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFudGlj
LCB0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRGdW5jUGFyYW1ldGVyKG5vZGUpCiAgICAg
ewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQobm9k
ZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RnVuY0RlZihub2RlKQpA
QCAtOTIsNiArOTQsNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAg
ICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQo
bm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RW51bVR5cGUobm9k
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IDA4ZjRlZDVi
MDkzMWI2YmZiM2E0MjI4OTc4MzdlZWY4YTFhYzMyOTAuLmE3NzJjMmFhM2ZlNTdlMDg2YzRkODE0
NjhlMjE5NjQ0ODk3OTI2YzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXgu
aHRtbApAQCAtMjMsNiArMjMsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnJl
YWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQnVpbHRpbk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
QnVpbHRpblZlY3RvckdldHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTUsMTAgKzExNiwxNCBAQAog
PHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZl
VHlwZURlZnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2VtYW50aWMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iUmV0dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0
aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdGFnZUlu
T3V0U2VtYW50aWMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhdGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJTdHJ1Y3RMYXlvdXRCdWlsZGVyLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350505</attachid>
            <date>2018-09-22 01:43:05 -0700</date>
            <delta_ts>2018-09-24 15:41:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189134-20180922174303.patch</filename>
            <type>text/plain</type>
            <size>102459</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uNTIxZWQ1YTUyMjlhYWU4MGJkNDY3ZTI2ZDc3NjU4Zjg1MjgyZGJkOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
MSBAQAorMjAxOC0wOS0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSFNMXSBJbXBsZW1lbnQgc2VtYW50aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgcGFyc2luZyBz
dXBwb3J0IGFuZCBhZGRzIHRoZSBjaGVja3MgcmVxdWlyZWQgdG8gc3VwcG9ydCBITFNMLXN0eWxl
IHNlbWFudGljcy4KKworICAgICAgICBUaGVyZSBhcmUgMyBwbGFjZXMgd2hlcmUgc2VtYW50aWNz
IGFyZSBhbGxvd2VkOgorCisgICAgICAgIDEuIEluIGEgZmllbGQgaW4gYSBzdHJ1Y3QuIEUuZy4K
KworICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Q
b3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICB2ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAg
ICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIDIuIEluIGEgcGFyYW1ldGVyIG9mIGEgZnVuY3Rp
b24uIElmIHRoZSBmdW5jdGlvbiBpcyBub3QgYW4gZW50cnkgcG9pbnQsIHRoZSBzZW1hbnRpYyBp
cyBpZ25vcmVkLgorCisgICAgICAgIGNvbXB1dGUgdm9pZCBmb28oZGV2aWNlIGZsb2F0W10gZGF0
YSA6IGJ1ZmZlcih1MCkpIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAgICAg
My4gT24gYSBmdW5jdGlvbi4gVGhpcyBpcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjcmVhdGUgc3Ry
dWN0cyBmb3IgdGhlIHJldHVybiB0eXBlcyBvZiBzaW1wbGUgdmVydGV4IHNoYWRlcnMuCisKKyAg
ICAgICAgdmVydGV4IGZsb2F0NCBmb28oKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIC4u
LgorICAgICAgICB9CisKKyAgICAgICAgVGhlIHNlbWFudGljcyBhcmUgcGFydGl0aW9uZWQgaW50
byA0IHR5cGVzOgorCisgICAgICAgIDEuIEJ1aWx0LWluIHZhcmlhYmxlcy4gRm9yIGV4YW1wbGUs
IDogU1ZfUG9zaXRpb24uCisgICAgICAgIDIuIFJlc291cmNlcy4gRm9yIGV4YW1wbGUsIDogcmVn
aXN0ZXIodTApLgorICAgICAgICAzLiBTdGFnZS1pbiAvIHN0YWdlLW91dCB2YXJpYWJsZXMuIEZv
ciBleGFtcGxlLCA6IGF0dHJpYnV0ZSgwKS4KKyAgICAgICAgNC4gU3BlY2lhbGl6YXRpb24gY29u
c3RhbnRzLiBGb3IgZXhhbXBsZSwgOiBzcGVjaWFsaXplZC4KKworICAgICAgICBUaGUgc2VtYW50
aWNzIGFyZSB2YWxpZGF0ZWQgYWNjb3JkaW5nIHRvIGEgY29sbGVjdGlvbiBvZiBydWxlczoKKwor
ICAgICAgICAtIFRoZSBzYW1lIGVudHJ5IHBvaW50IGNhbid0IGxpc3QgdGhlIHNhbWUgc2VtYW50
aWMgdHdpY2UKKyAgICAgICAgLSBFYWNoIGJ1aWx0LWluIHR5cGUgaGFzIGFuIGFwcHJvcHJpYXRl
IHR5cGUgdGhhdCBpcyBsaXN0ZWQgaW4gdGhlIHNwZWMuIAorICAgICAgICAtIEVhY2ggYnVpbHQt
aW4gaXMgYXBwcm9wcmlhdGUgYXMgZWl0aGVyIGFuIGlucHV0IG9yIGFuIG91dHB1dCBvZiBhIHBh
cnRpY3VsYXIgc2hhZGVyIHN0YWdlCisgICAgICAgIC0gUmVzb3VyY2Ugc2VtYW50aWNzIGhhdmUg
dG8gaGF2ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSAoZS5nLiBjYW4ndCB1c2UgcmVnaXN0ZXIoczAp
IG9uIGEgYnVmZmVyKQorICAgICAgICAtIFJlc291cmNlcyBjYW4ndCBiZSBvdXRwdXQgZnJvbSBl
bnRyeSBwb2ludHMKKyAgICAgICAgLSBUaGUgcmVzb3VyY2Ugc2VtYW50aWMgbW9kZSBtdXN0IG1h
dGNoIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSByZXNvdXJjZQorICAgICAgICAtIFN0YWdlLWlu
IGFuZCBzdGFnZS1vdXQgdmFyaWFibGVzIGhhdmUgdG8gYmUgUE9ECisgICAgICAgIC0gU3BlY2lh
bGl6YXRpb24gY29uc3RhbnRzIGNhbid0IGJlIG91dHB1dCBmcm9tIGVudHJ5IHBvaW50cywgYW5k
IGhhdmUgdG8gYmUgbnVtYmVycworCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRp
Yy5qczogQWRkZWQuCisgICAgICAgIChCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAoQnVpbHRJ
blNlbWFudGljLnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMu
cHJvdG90eXBlLmdldCBleHRyYUFyZ3VtZW50cyk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMu
cHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoQnVpbHRJblNlbWFudGljLnBy
b3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKEJ1aWx0SW5TZW1h
bnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NhbGxFeHByZXNzaW9uLmpzOgorICAgICAgICAoQ2FsbEV4cHJlc3Npb24ucHJvdG90eXBl
Ll9yZXNvbHZlV2l0aE9wZXJhdG9yQW5kZXJJbmRleGVyKToKKyAgICAgICAgKENhbGxFeHByZXNz
aW9uLnByb3RvdHlwZS5fcmVzb2x2ZVdpdGhPcGVyYXRvckxlbmd0aCk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNrZXIpOgorICAg
ICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIu
cHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5JdGVtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90
eXBlLl9jaGVja1NlbWFudGljcy5JdGVtLnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChD
aGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbS5wcm90b3R5cGUuZ2V0IHNlbWFu
dGljKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJl
cik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIu
cHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFu
dGljcy5HYXRoZXJlci5wcm90b3R5cGUuc2V0IGN1cnJlbnRTZW1hbnRpYyk6CisgICAgICAgIChD
aGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLmdldCBj
dXJyZW50U2VtYW50aWMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50
aWNzLkdhdGhlcmVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToKKyAgICAgICAgKENoZWNrZXIucHJv
dG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hl
Y2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0TWF0cml4VHlwZSk6CisgICAgICAg
IChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZp
c2l0TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRp
Y3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0VHlwZVJl
Zik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIu
cHJvdG90eXBlLnZpc2l0UHRyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hl
Y2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0QXJyYXlSZWZUeXBlKToKKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUu
dmlzaXRBcnJheVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50
aWNzLkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAoQ2hl
Y2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrRHVwbGljYXRlU2VtYW50aWNzKToK
KyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVja1NlbWFudGlj
VHlwZXMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNr
U2VtYW50aWNGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVj
a1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52
aXNpdEFycmF5VHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRp
Y3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKENoZWNr
ZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdE1h
dHJpeFR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLlBP
RENoZWNrZXIucHJvdG90eXBlLnZpc2l0TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnBy
b3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQdHJUeXBl
KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2Vy
LnByb3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlw
ZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRTdHJ1Y3RUeXBlKToK
KyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnBy
b3RvdHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNr
U2VtYW50aWNzLlBPRENoZWNrZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNr
U2VtYW50aWNzLmNoZWNrUE9ERGF0YSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hl
Y2tTZW1hbnRpY3MpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlw
ZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tPcGVyYXRvck92ZXJsb2FkKToK
KyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBl
LnZpc2l0QXJyYXlUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0TWFrZVB0
ckV4cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRNYWtlQXJyYXlS
ZWZFeHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9maW5pc2hWaXNpdGlu
Z1Byb3BlcnR5QWNjZXNzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0SW5kZXhF
eHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UmV0dXJuKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLnZpc2l0VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoQ2hl
Y2tlci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRmllbGQuanM6CisgICAgICAgIChGaWVsZCk6CisgICAgICAgIChGaWVs
ZC5wcm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS50b1N0
cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAg
ICAgKEZ1bmMpOgorICAgICAgICAoRnVuYy5wcm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAg
ICAgKEZ1bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRnVuY0RlZi5qczoKKyAgICAgICAgKEZ1bmNEZWYpOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5jUGFy
YW1ldGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBzZW1hbnRpYyk6
CisgICAgICAgIChGdW5jUGFyYW1ldGVyLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qczoKKyAgICAgICAgKExhdGVDaGVja2VyLnBy
b3RvdHlwZS52aXNpdFJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoTGF0ZUNoZWNrZXIpOgorICAg
ICAgICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qczoKKyAgICAgICAg
KE5hdGl2ZUZ1bmMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpz
OgorICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6Cisg
ICAgICAgIChwYXJzZUZ1bmNEZWYpOgorICAgICAgICAocGFyc2VTdGFnZUluT3V0U2VtYW50aWMp
OgorICAgICAgICAocGFyc2VSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKHBhcnNlU3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKHBhcnNlQnVpbHRJblNlbWFudGlj
KToKKyAgICAgICAgKHBhcnNlRmllbGQpOgorICAgICAgICAocGFyc2VOYXRpdmVGdW5jKToKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhp
bmdzUmVtb3ZlZC5qczoKKyAgICAgICAgKHByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGlj
LmpzOiBBZGRlZC4KKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoUmVzb3Vy
Y2VTZW1hbnRpYy5wcm90b3R5cGUuZ2V0IHJlc291cmNlTW9kZSk6CisgICAgICAgIChSZXNvdXJj
ZVNlbWFudGljLnByb3RvdHlwZS5nZXQgaW5kZXgpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRp
Yy5wcm90b3R5cGUuZ2V0IHNwYWNlKToKKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMucHJvdG90
eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5wcm90b3R5
cGUuaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChSZXNvdXJjZVNlbWFudGlj
LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmV3cml0ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1l
dGVyKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAg
KFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChSZXdy
aXRlci5wcm90b3R5cGUudmlzaXRSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS52aXNpdFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRlci5w
cm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAo
UmV3cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU2VtYW50aWMuanM6IEFkZGVkLgor
ICAgICAgICAoU2VtYW50aWMpOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmdldCBvcmln
aW4pOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNv
bXBhcmVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRp
Yy5wcm90b3R5cGUuZXF1YWxUb090aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0
UmVzb3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5wcm90b3R5cGUuZXF1YWxUb090
aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNlbWFudGljKToK
KyAgICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYy5Db21wYXJl
ci5wcm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAg
ICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBhcmVyKToKKyAg
ICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYyk6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
LmpzOiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcy4K
KyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgor
ICAgICAgICAoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2Vw
dGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N0YWdlSW5PdXRTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYyk6Cisg
ICAgICAgIChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmdldCBpbmRleCk6CisgICAgICAg
IChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAg
ICAoU3RhZ2VJbk91dFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBl
KToKKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczoKKyAgICAg
ICAgKFN0YXRlbWVudENsb25lci5wcm90b3R5cGUudmlzaXROYXRpdmVGdW5jKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5q
czoKKyAgICAgICAgKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3Iu
anM6CisgICAgICAgIChzeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JP
cGVyYXRvci5qczoKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRv
cik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUVudW1GdW5j
dGlvbnMuanM6CisgICAgICAgIChzeW50aGVzaXplRW51bUZ1bmN0aW9ucyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qczoKKyAg
ICAgICAgKHNldHVwQW5kZXIpOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29yc0Zv
clN0cnVjdFR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAo
dGVzdHMuc2hhZGVyVHlwZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zp
c2l0b3IuanM6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEZ1bmMpOgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKFZpc2l0
b3IucHJvdG90eXBlLnZpc2l0RmllbGQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlz
aXRCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRSZXNv
dXJjZVNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91
dFNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IpOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIwMTgtMDktMjEgIFRob21hcyBEZW5u
ZXkgIDx0ZGVubmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIExvY2FsIHZhcmlhYmxl
cyBzaG91bGQgYmUgc3RhdGljYWxseSBhbGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcwppbmRleCBlMjkxMGQ3OWQ2YzIzNTliNzYzMTYxOTgwMzE2YWZmMDk0MjI3MGYzLi40
NTFkN2I1MjFlODNlY2M2NDNkYTc1MGNkZjNkNjRkYjlhYzQxYzhkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQWxsLmpzCkBAIC0zNSw2ICszNSw3IEBAIGxvYWQoIkNyZWF0ZUxpdGVyYWwu
anMiKTsKIGxvYWQoIkNyZWF0ZUxpdGVyYWxUeXBlLmpzIik7CiBsb2FkKCJQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uanMiKTsKIGxvYWQoIk5hdGl2ZVR5cGUuanMiKTsKK2xvYWQoIlNlbWFudGlj
LmpzIik7CiAKIGxvYWQoIkFkZHJlc3NTcGFjZS5qcyIpOwogbG9hZCgiQWxsb2NhdGVBdEVudHJ5
UG9pbnRzLmpzIik7CkBAIC00Niw2ICs0Nyw3IEBAIGxvYWQoIkF1dG9XcmFwcGVyLmpzIik7CiBs
b2FkKCJCbG9jay5qcyIpOwogbG9hZCgiQm9vbExpdGVyYWwuanMiKTsKIGxvYWQoIkJyZWFrLmpz
Iik7Citsb2FkKCJCdWlsdEluU2VtYW50aWMuanMiKTsKIGxvYWQoIkJ1aWx0aW5NYXRyaXhHZXR0
ZXIuanMiKTsKIGxvYWQoIkJ1aWx0aW5NYXRyaXhTZXR0ZXIuanMiKTsKIGxvYWQoIkJ1aWx0aW5W
ZWN0b3JHZXR0ZXIuanMiKTsKQEAgLTEzOCwxMCArMTQwLDEzIEBAIGxvYWQoIlJlc29sdmVOYW1l
cy5qcyIpOwogbG9hZCgiUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyIpOwogbG9hZCgiUmVzb2x2ZVBy
b3BlcnRpZXMuanMiKTsKIGxvYWQoIlJlc29sdmVUeXBlRGVmcy5qcyIpOworbG9hZCgiUmVzb3Vy
Y2VTZW1hbnRpYy5qcyIpOwogbG9hZCgiUmV0dXJuLmpzIik7CiBsb2FkKCJSZXR1cm5DaGVja2Vy
LmpzIik7CiBsb2FkKCJSZXR1cm5FeGNlcHRpb24uanMiKTsKIGxvYWQoIlNhbXBsZXIuanMiKTsK
K2xvYWQoIlNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcyIpOworbG9hZCgiU3RhZ2VJ
bk91dFNlbWFudGljLmpzIik7CiBsb2FkKCJTdGFuZGFyZExpYnJhcnkuanMiKTsKIGxvYWQoIlN0
YXRlbWVudENsb25lci5qcyIpOwogbG9hZCgiU3RydWN0TGF5b3V0QnVpbGRlci5qcyIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQnVpbHRJblNlbWFudGljLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQnVpbHRJblNlbWFudGljLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI1MzkzMzI4Y2ZkZWJhMDRkNGUzMWUzNzE2YWQ4OTE5ZTk0MWQ0ZGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdEluU2VtYW50aWMu
anMKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBCdWlsdEluU2VtYW50aWMgZXh0ZW5kcyBT
ZW1hbnRpYyB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCAuLi5leHRyYUFyZ3VtZW50
cykKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgIHRoaXMuX25hbWUgPSBu
YW1lOworICAgICAgICB0aGlzLl9leHRyYUFyZ3VtZW50cyA9IGV4dHJhQXJndW1lbnRzOworICAg
IH0KKworICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQorICAgIGdldCBleHRy
YUFyZ3VtZW50cygpIHsgcmV0dXJuIHRoaXMuX2V4dHJhQXJndW1lbnRzOyB9CisKKyAgICBpc0Fj
Y2VwdGFibGVUeXBlKHR5cGUsIHByb2dyYW0pCisgICAgeworICAgICAgICBsZXQgcmVxdWlyZWRU
eXBlOworICAgICAgICBzd2l0Y2ggKHRoaXMubmFtZSkgeworICAgICAgICBjYXNlICJTVl9JbnN0
YW5jZUlEIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy51
aW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX1ZlcnRleElEIjoKKyAg
ICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy51aW50OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlBTSVpFIjoKKyAgICAgICAgICAgIHJlcXVpcmVk
VHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy5mbG9hdDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICJTVl9Qb3NpdGlvbiI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9n
cmFtLmludHJpbnNpY3NbInZlY3RvcjxmbG9hdCwgND4iXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICJTVl9Jc0Zyb250RmFjZSI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUg
PSBwcm9ncmFtLmludHJpbnNpY3MuYm9vbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJTVl9TYW1wbGVJbmRleCI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFt
LmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9J
bm5lckNvdmVyYWdlIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmlu
c2ljcy51aW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX1RhcmdldCI6
CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjxm
bG9hdCwgND4iXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9EZXB0aCI6
CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MuZmxvYXQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfQ292ZXJhZ2UiOgorICAgICAgICAg
ICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAiU1ZfRGlzcGF0Y2hUaHJlYWRJRCI6CisgICAgICAgICAgICBy
ZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjx1aW50LCAzPiJdOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0dyb3VwSUQiOgorICAgICAgICAgICAg
cmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzWyJ2ZWN0b3I8dWludCwgMz4iXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9Hcm91cEluZGV4IjoKKyAgICAgICAg
ICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy51aW50OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0dyb3VwVGhyZWFkSUQiOgorICAgICAgICAgICAgcmVx
dWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzWyJ2ZWN0b3I8dWludCwgMz4iXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBVbmtub3duIHNlbWFudGljOiAke3RoaXMubmFtZX1gKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiB0eXBlLmVxdWFscyhyZXF1aXJlZFR5cGUpOworICAgIH0KKworICAgIGlzQWNj
ZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7CisgICAgICAgIGNhc2UgInZlcnRleCI6CisgICAgICAg
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgorICAg
ICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAi
U1ZfSW5zdGFuY2VJRCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfVmVydGV4SUQiOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSAib3V0cHV0IjoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubmFt
ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgIlBTSVpFIjoKKyAgICAgICAgICAgICAgICBjYXNl
ICJTVl9Qb3NpdGlvbiI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgImZyYWdtZW50IjoK
KyAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgICAgICBjYXNlICJpbnB1
dCI6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICJTVl9Jc0Zyb250RmFjZSI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfU2FtcGxl
SW5kZXgiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNWX0lubmVyQ292ZXJhZ2UiOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSAib3V0cHV0IjoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubmFtZSkg
eworICAgICAgICAgICAgICAgIGNhc2UgIlNWX1RhcmdldCI6CisgICAgICAgICAgICAgICAgY2Fz
ZSAiU1ZfRGVwdGgiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNWX0NvdmVyYWdlIjoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSAiY29tcHV0ZSI6CisgICAgICAgICAgICBpZiAoZGlyZWN0
aW9uICE9ICJpbnB1dCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgIlNWX0Rpc3BhdGNoVGhy
ZWFkSUQiOgorICAgICAgICAgICAgY2FzZSAiU1ZfR3JvdXBJRCI6CisgICAgICAgICAgICBjYXNl
ICJTVl9Hcm91cEluZGV4IjoKKyAgICAgICAgICAgIGNhc2UgIlNWX0dyb3VwVGhyZWFkSUQiOgor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgInRl
c3QiOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2hhZGUgdHlwZTogJHtzaGFkZXJUeXBlfWAp
OworICAgICAgICB9CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgbGV0
IHJlc3VsdCA9IHRoaXMubmFtZTsKKyAgICAgICAgaWYgKHRoaXMuZXh0cmFBcmd1bWVudHMpCisg
ICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5leHRyYUFyZ3VtZW50cy5qb2luKCIiKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMKaW5kZXggNGU0ZDY1ZjA5MTM4MDRmNGQwZTcwYzAw
MmJmNjMxNDA2MGIwZWUyZS4uYjRjMGRhNzg3NzMwYTFiMzg4MTBjOGI1OTQzMTc4NDkwOWRkYjNl
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Np
b24uanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24u
anMKQEAgLTEyOSw3ICsxMjksNyBAQCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJl
c3Npb24gewogICAgICAgICBjb25zdCBmdW5jID0gbmV3IE5hdGl2ZUZ1bmModGhpcy5vcmlnaW4s
ICJvcGVyYXRvciZbXSIsIHRoaXMucmVzdWx0VHlwZSwgWwogICAgICAgICAgICAgbmV3IEZ1bmNQ
YXJhbWV0ZXIodGhpcy5vcmlnaW4sIG51bGwsIGFycmF5UmVmVHlwZSksCiAgICAgICAgICAgICBu
ZXcgRnVuY1BhcmFtZXRlcih0aGlzLm9yaWdpbiwgbnVsbCwgdWludFR5cGUpCi0gICAgICAgIF0s
IGZhbHNlLCBudWxsKTsKKyAgICAgICAgXSwgZmFsc2UpOwogCiAgICAgICAgIGFycmF5UmVmQWNj
ZXNzb3IuaW5zdGFudGlhdGVJbXBsZW1lbnRhdGlvbihmdW5jKTsKIApAQCAtMTQ0LDcgKzE0NCw3
IEBAIGNsYXNzIENhbGxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAgICAgICAg
ICBjb25zdCBhcnJheVR5cGUgPSB0aGlzLmFyZ3VtZW50VHlwZXNbMF07CiAgICAgICAgICAgICBj
b25zdCBmdW5jID0gbmV3IE5hdGl2ZUZ1bmModGhpcy5vcmlnaW4sICJvcGVyYXRvci5sZW5ndGgi
LCB0aGlzLnJlc3VsdFR5cGUsIFsKICAgICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0
aGlzLm9yaWdpbiwgbnVsbCwgYXJyYXlUeXBlKQotICAgICAgICAgICAgXSwgZmFsc2UsIG51bGwp
OworICAgICAgICAgICAgXSwgZmFsc2UpOwogICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChhcmdzLCBub2RlKSA9PiBFUHRyLmJveChhcnJheVR5cGUubnVtRWxlbWVudHNWYWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm4gZnVuYzsKICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFyZ3Vt
ZW50VHlwZXNbMF0uaXNBcnJheVJlZikgewpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIENhbGxF
eHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAgICAgICAgICBjb25zdCBvcGVyYXRv
ckxlbmd0aCA9IG5ldyBPcGVyYXRvckFycmF5UmVmTGVuZ3RoKGFycmF5UmVmVHlwZS50b1N0cmlu
ZygpLCBhZGRyZXNzU3BhY2UpOwogICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBOYXRpdmVG
dW5jKHRoaXMub3JpZ2luLCAib3BlcmF0b3IubGVuZ3RoIiwgdGhpcy5yZXN1bHRUeXBlLCBbCiAg
ICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodGhpcy5vcmlnaW4sIG51bGwsIGFycmF5
UmVmVHlwZSkKLSAgICAgICAgICAgIF0sIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgIF0sIGZh
bHNlKTsKICAgICAgICAgICAgIG9wZXJhdG9yTGVuZ3RoLmluc3RhbnRpYXRlSW1wbGVtZW50YXRp
b24oZnVuYyk7CiAgICAgICAgICAgICByZXR1cm4gZnVuYzsKICAgICAgICAgfSBlbHNlCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwppbmRleCA1ZjU5OGIyZWU3NTIyYmJj
ODEwNTQ1Yzk0OGQ3NzNmMmU0Zjk5NDdkLi5mODM2NGQ0NDI5ZmM3YzYwYTdiNWFlYzEyZTlhOGNh
M2JlNWNlOWY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVj
a2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKQEAg
LTMyLDE1ICszMiwxNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
IHRoaXMuX2N1cnJlbnRTdGF0ZW1lbnQgPSBudWxsOwogICAgICAgICB0aGlzLl92ZXJ0ZXhFbnRy
eVBvaW50cyA9IG5ldyBTZXQoKTsKICAgICAgICAgdGhpcy5fZnJhZ21lbnRFbnRyeVBvaW50cyA9
IG5ldyBTZXQoKTsKKyAgICAgICAgdGhpcy5fY29tcHV0ZUVudHJ5UG9pbnRzID0gbmV3IFNldCgp
OwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0UHJvZ3JhbShub2RlKQogICAgIHsKICAgICAgICAg
bGV0IGRvU3RhdGVtZW50ID0gc3RhdGVtZW50ID0+IHsKICAgICAgICAgICAgIHRoaXMuX2N1cnJl
bnRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7CiAgICAgICAgICAgICBzdGF0ZW1lbnQudmlzaXQodGhp
cyk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBub2Rl
LnR5cGVzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCkBA
IC01OSwxMCArNjAsMTk3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAg
ICAgfQogICAgIH0KIAorICAgIF9jaGVja1NlbWFudGljcyhub2RlKQorICAgIHsKKyAgICAgICAg
Y2xhc3MgSXRlbSB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcih0eXBlLCBzZW1hbnRpYykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlICE9ICJ0ZXN0
IiAmJiAhc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkFuIGVudHJ5LXBvaW50IGlucHV0L291dHB1dCBl
eGlzdHMgd2hpY2ggZG9lc24ndCBoYXZlIGEgc2VtYW50aWMiKTsKKyAgICAgICAgICAgICAgICB0
aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZW1hbnRpYyA9IHNlbWFu
dGljOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRo
aXMuX3R5cGU7IH0KKyAgICAgICAgICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3Nl
bWFudGljOyB9CisgICAgICAgIH0KKworICAgICAgICBjbGFzcyBHYXRoZXJlciBleHRlbmRzIFZp
c2l0b3IgeworICAgICAgICAgICAgY29uc3RydWN0b3IoY3VycmVudFNlbWFudGljID0gbnVsbCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgICAg
IHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1hbnRpYzsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzZXQo
Y3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0
aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1hbnRpYzsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRpYyh2YWx1ZSkgeyB0aGlzLl9jdXJyZW50U2Vt
YW50aWMgPSB2YWx1ZTsgfQorICAgICAgICAgICAgZ2V0IGN1cnJlbnRTZW1hbnRpYygpIHsgcmV0
dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQorICAgICAgICAgICAgZ2V0IHJlc3VsdCgpIHsg
cmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQorCisgICAgICAgICAgICB2aXNpdEVudW1UeXBlKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRl
bShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0TWF0cml4VHlwZShub2RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9k
ZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmlzaXROYXRpdmVUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhp
cy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VtYW50aWMgIT0gbnVsbCkK
KyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCAiU3RydWN0cyBpbnNpZGUgZW50cnkgcG9pbnQgc2lnbmF0dXJlcyBjYW4ndCBo
YXZlIHNlbWFudGljcy4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBub2Rl
LmZpZWxkcykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGZp
ZWxkLnNlbWFudGljOworICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlLnZpc2l0KHRoaXMp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRU
eXBlUmVmKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbm9kZS50eXBlLnZp
c2l0KHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFB0clR5cGUobm9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJ
dGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZpc2l0QXJyYXlSZWZUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRp
YykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdEFycmF5VHlwZShub2RlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0o
bm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmlzaXRGdW5jUGFyYW1ldGVyKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fY3VycmVudFNlbWFudGljID0gbm9kZS5zZW1hbnRpYzsKKyAgICAgICAgICAgICAg
ICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBsZXQgaW5wdXRHYXRoZXJlciA9IG5ldyBHYXRoZXJlcigpOworICAgICAgICBmb3IgKGxl
dCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICBpbnB1dEdhdGhl
cmVyLnJlc2V0KCk7CisgICAgICAgICAgICBwYXJhbWV0ZXIudmlzaXQoaW5wdXRHYXRoZXJlcik7
CisgICAgICAgIH0KKyAgICAgICAgbGV0IG91dHB1dEdhdGhlcmVyID0gbmV3IEdhdGhlcmVyKG5v
ZGUuc2VtYW50aWMpOworICAgICAgICBub2RlLnJldHVyblR5cGUudmlzaXQob3V0cHV0R2F0aGVy
ZXIpOworCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlU2VtYW50aWNzKGl0ZW1zKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGZhc3RlciB0aGFuIE8obl4yKQorICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGl0ZW1zLmxlbmd0aDsgKytqKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpdGVtc1tpXS5zZW1hbnRpYyAmJiBpdGVtc1tpXS5zZW1h
bnRpYy5lcXVhbFRvT3RoZXJTZW1hbnRpYyhpdGVtc1tqXS5zZW1hbnRpYykpCisgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJp
bmcsIGBEdXBsaWNhdGUgc2VtYW50aWMgZm91bmQgaW4gZW50cnkgcG9pbnQ6ICR7aXRlbXNbaV0u
c2VtYW50aWN9YCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGNoZWNrRHVwbGljYXRlU2VtYW50aWNzKGlucHV0R2F0aGVyZXIucmVzdWx0KTsK
KyAgICAgICAgY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3Mob3V0cHV0R2F0aGVyZXIucmVzdWx0KTsK
KworICAgICAgICBsZXQgcHJvZ3JhbSA9IHRoaXMuX3Byb2dyYW07CisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrU2VtYW50aWNUeXBlcyhpdGVtcykgeworICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBv
ZiBpdGVtcykgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNl
bWFudGljLmlzQWNjZXB0YWJsZVR5cGUoaXRlbS50eXBlLCBwcm9ncmFtKSkKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCBg
U2VtYW50aWMgJHtpdGVtLnNlbWFudGljfSBpcyB1bm5hY2NlcHRhYmxlIHR5cGUgJHtpdGVtLnR5
cGV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tTZW1hbnRpY1R5
cGVzKGlucHV0R2F0aGVyZXIucmVzdWx0KTsKKyAgICAgICAgY2hlY2tTZW1hbnRpY1R5cGVzKG91
dHB1dEdhdGhlcmVyLnJlc3VsdCk7CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tTZW1hbnRpY0Zv
clNoYWRlclR5cGUoaXRlbXMsIGRpcmVjdGlvbikgeworICAgICAgICAgICAgZm9yIChsZXQgaXRl
bSBvZiBpdGVtcykgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVt
LnNlbWFudGljLmlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBub2RlLnNoYWRl
clR5cGUpKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9y
aWdpbi5vcmlnaW5TdHJpbmcsIGBTZW1hbnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2Vw
dGFibGUgYXMgYW4gJHtkaXJlY3Rpb259IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBl
fWApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JT
aGFkZXJUeXBlKGlucHV0R2F0aGVyZXIucmVzdWx0LCAiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tT
ZW1hbnRpY0ZvclNoYWRlclR5cGUob3V0cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisK
KyAgICAgICAgY2xhc3MgUE9EQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAg
dmlzaXRFbnVtVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdEFycmF5VHlwZShub2Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmVsZW1lbnRUeXBl
LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5
cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlLmlzTnVtYmVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2aXNpdFB0clR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0QXJyYXlSZWZUeXBl
KG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBmaWVsZCBvZiBub2RlLmZpZWxkcykKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gcmVzdWx0ICYmIGZpZWxkLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlwZVJlZihub2Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUudmlzaXQo
dGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2hlY2tQ
T0REYXRhKGl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKChpdGVtLnR5cGUgaW5zdGFuY2VvZiBQdHJUeXBlKSB8fCAoaXRl
bS50eXBlIGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2Yg
QXJyYXlUeXBlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZS5lbGVtZW50
VHlwZS52aXNpdChuZXcgUE9EQ2hlY2tlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkJ1ZmZlciBhdHRh
Y2hlZCB0byBlbnRyeSBwb2ludCBuZWVkcyB0byBvbmx5IGNvbnRhaW4gUE9EIHR5cGVzIik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNoZWNr
UE9ERGF0YShpbnB1dEdhdGhlcmVyLnJlc3VsdCk7CisgICAgICAgIGNoZWNrUE9ERGF0YShvdXRw
dXRHYXRoZXJlci5yZXN1bHQpOworICAgIH0KKwogICAgIF9jaGVja1NoYWRlclR5cGUobm9kZSkK
ICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBSZWxheCB0aGVzZSBjaGVja3Mgb25jZSB3ZSBoYXZl
IGltcGxlbWVudGVkIHN1cHBvcnQgZm9yIHRleHR1cmVzIGFuZCBzYW1wbGVycy4KLSAgICAgICAg
bGV0IHNoYWRlckZ1bmMgPSBub2RlOwogICAgICAgICBzd2l0Y2ggKG5vZGUuc2hhZGVyVHlwZSkg
ewogICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgogICAgICAgICAgICAgaWYgKHRoaXMuX3ZlcnRleEVu
dHJ5UG9pbnRzLmhhcyhub2RlLm5hbWUpKQpAQCAtNzQsNiArMjYyLDE1IEBAIGNsYXNzIENoZWNr
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJv
cihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZnJhZ21lbnQgZW50cnkgcG9p
bnQgbmFtZSAiICsgbm9kZS5uYW1lKTsKICAgICAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQ
b2ludHMuYWRkKG5vZGUubmFtZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
Y29tcHV0ZSI6CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcHV0ZUVudHJ5UG9pbnRzLmhhcyhu
b2RlLm5hbWUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3Jp
Z2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBjb21wdXRlIGVudHJ5IHBvaW50IG5hbWUgIiAr
IG5vZGUubmFtZSk7CisgICAgICAgICAgICB0aGlzLl9jb21wdXRlRW50cnlQb2ludHMuYWRkKG5v
ZGUubmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIHNoYWRlciB0eXBlOiAiICsgbm9kZS5zaGFkZXJUeXBlKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtODQsNyArMjgxLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Ig
ewogCiAgICAgICAgIGlmICghZnVuYy5uYW1lLnN0YXJ0c1dpdGgoIm9wZXJhdG9yIikpCiAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvcGVyYXRvciBvdmVybG9hZCBuYW1lOiAiICsg
ZnVuYy5uYW1lKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGNoZWNrR2V0dGVyID0gKGtpbmQp
ID0+IHsKICAgICAgICAgICAgIGxldCBudW1FeHBlY3RlZFBhcmFtZXRlcnMgPSBraW5kID09ICJp
bmRleCIgPyAyIDogMTsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlcnMubGVuZ3RoICE9
IG51bUV4cGVjdGVkUGFyYW1ldGVycykKQEAgLTkyLDcgKzI4OSw3IEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlclR5cGVzWzBd
LnVuaWZ5Tm9kZS5pc1B0cikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihm
dW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJDYW5ub3QgaGF2ZSBnZXR0ZXIgZm9yIHBvaW50ZXIg
dHlwZTogIiArIGZ1bmMucGFyYW1ldGVyVHlwZXNbMF0pOwogICAgICAgICB9OwotICAgICAgICAK
KwogICAgICAgICBsZXQgY2hlY2tTZXR0ZXIgPSAoa2luZCkgPT4gewogICAgICAgICAgICAgbGV0
IG51bUV4cGVjdGVkUGFyYW1ldGVycyA9IGtpbmQgPT0gImluZGV4IiA/IDMgOiAyOwogICAgICAg
ICAgICAgaWYgKGZ1bmMucGFyYW1ldGVycy5sZW5ndGggIT0gbnVtRXhwZWN0ZWRQYXJhbWV0ZXJz
KQpAQCAtMTE0LDcgKzMxMSw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAg
ICAgICAgICAgIGlmICghcmVzdWx0VHlwZS5lcXVhbHModmFsdWVUeXBlKSkKICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTZXR0
ZXIgYW5kIGdldHRlciBtdXN0IGFncmVlIG9uIHZhbHVlIHR5cGUgKGdldHRlciBhdCAiICsgb3Zl
cmxvYWQuZnVuYy5vcmlnaW4ub3JpZ2luU3RyaW5nICsgIiBzYXlzICIgKyByZXN1bHRUeXBlICsg
IiB3aGlsZSB0aGlzIHNldHRlciBzYXlzICIgKyB2YWx1ZVR5cGUgKyAiKSIpOwogICAgICAgICB9
OwotICAgICAgICAKKwogICAgICAgICBsZXQgY2hlY2tBbmRlciA9IChraW5kKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzID0ga2luZCA9PSAiaW5kZXgiID8gMiA6
IDE7CiAgICAgICAgICAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBudW1FeHBlY3Rl
ZFBhcmFtZXRlcnMpCkBAIC0xMjQsNyArMzIxLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZp
c2l0b3IgewogICAgICAgICAgICAgaWYgKCFmdW5jLnBhcmFtZXRlclR5cGVzWzBdLnVuaWZ5Tm9k
ZS5pc1JlZikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJQYXJhbWV0ZXIgdG8gYW5kZXIgaXMgbm90IGEgcmVmZXJlbmNlOiAi
ICsgZnVuYy5wYXJhbWV0ZXJUeXBlc1swXSk7CiAgICAgICAgIH07Ci0gICAgICAgIAorCiAgICAg
ICAgIHN3aXRjaCAoZnVuYy5uYW1lKSB7CiAgICAgICAgIGNhc2UgIm9wZXJhdG9yIGNhc3QiOgog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xODksNDQgKzM4Niw0NiBAQCBjbGFzcyBDaGVja2VyIGV4
dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNlciBhY2Nl
cHRlZCB1bnJlY29nbml6ZWQgb3BlcmF0b3I6ICIgKyBmdW5jLm5hbWUpOwogICAgICAgICB9CiAg
ICAgfQotICAgIAorCiAgICAgdmlzaXRGdW5jRGVmKG5vZGUpCiAgICAgewotICAgICAgICBpZiAo
bm9kZS5zaGFkZXJUeXBlKQorICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlKSB7CiAgICAgICAg
ICAgICB0aGlzLl9jaGVja1NoYWRlclR5cGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9jaGVj
a1NlbWFudGljcyhub2RlKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLl9jaGVja09wZXJhdG9y
T3ZlcmxvYWQobm9kZSwgbmFtZSA9PiB0aGlzLl9wcm9ncmFtLmZ1bmN0aW9ucy5nZXQobmFtZSkp
OwogICAgICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7CiAgICAgfQotICAgIAorCiAgICAgdmlz
aXRFbnVtVHlwZShub2RlKQogICAgIHsKICAgICAgICAgbm9kZS5iYXNlVHlwZS52aXNpdCh0aGlz
KTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGJhc2VUeXBlID0gbm9kZS5iYXNlVHlwZS51bmlm
eU5vZGU7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghYmFzZVR5cGUuaXNJbnQpCiAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJCYXNl
IHR5cGUgb2YgZW51bSBpcyBub3QgYW4gaW50ZWdlcjogIiArIG5vZGUuYmFzZVR5cGUpOwotICAg
ICAgICAKKwogICAgICAgICBmb3IgKGxldCBtZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAg
ICAgICAgICBpZiAoIW1lbWJlci52YWx1ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICBsZXQgbWVtYmVyVHlwZSA9IG1lbWJlci52YWx1ZS52
aXNpdCh0aGlzKTsKICAgICAgICAgICAgIGlmICghYmFzZVR5cGUuZXF1YWxzV2l0aENvbW1pdCht
ZW1iZXJUeXBlKSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihtZW1iZXIu
b3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgb2YgZW51bSBtZW1iZXIgIiArIG1lbWJlci52YWx1
ZS5uYW1lICsgIiBkb2VzIG5vdCBwYXRjaCBlbnVtIGJhc2UgdHlwZSAobWVtYmVyIHR5cGUgaXMg
IiArIG1lbWJlclR5cGUgKyAiLCBlbnVtIGJhc2UgdHlwZSBpcyAiICsgbm9kZS5iYXNlVHlwZSAr
ICIpIik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0IG5leHRWYWx1ZSA9IGJh
c2VUeXBlLmRlZmF1bHRWYWx1ZTsKICAgICAgICAgZm9yIChsZXQgbWVtYmVyIG9mIG5vZGUubWVt
YmVycykgewogICAgICAgICAgICAgaWYgKG1lbWJlci52YWx1ZSkgewogICAgICAgICAgICAgICAg
IG5leHRWYWx1ZSA9IGJhc2VUeXBlLnN1Y2Nlc3NvclZhbHVlKG1lbWJlci52YWx1ZS51bmlmeU5v
ZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIG1lbWJlci52YWx1ZSA9IGJh
c2VUeXBlLmNyZWF0ZUxpdGVyYWwobWVtYmVyLm9yaWdpbiwgbmV4dFZhbHVlKTsKICAgICAgICAg
ICAgIG5leHRWYWx1ZSA9IGJhc2VUeXBlLnN1Y2Nlc3NvclZhbHVlKG5leHRWYWx1ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0IG1lbWJlckFycmF5ID0gQXJyYXkuZnJvbShu
b2RlLm1lbWJlcnMpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbWJlckFycmF5Lmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyQXJyYXlbaV07CkBA
IC0yMzYsNyArNDM1LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihvdGhlck1lbWJlci5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCAiRHVwbGljYXRlIGVudW0gbWVtYmVyIHZhbHVlICgiICsgbWVtYmVyLm5hbWUg
KyAiIGhhcyAiICsgbWVtYmVyLnZhbHVlICsgIiB3aGlsZSAiICsgb3RoZXJNZW1iZXIubmFtZSAr
ICIgaGFzICIgKyBvdGhlck1lbWJlci52YWx1ZSArICIpIik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0IGZvdW5kWmVybyA9IGZhbHNlOwogICAgICAg
ICBmb3IgKGxldCBtZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAgICBpZiAoYmFz
ZVR5cGUudmFsdWVzRXF1YWwobWVtYmVyLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVk
VHlwZSwgYmFzZVR5cGUuZGVmYXVsdFZhbHVlKSkgewpAQCAtMjQ3LDcgKzQ0Niw3IEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKCFmb3VuZFplcm8pCiAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJF
bnVtIGRvZXMgbm90IGhhdmUgYSBtZW1iZXIgd2l0aCB0aGUgdmFsdWUgemVybyIpOwogICAgIH0K
LSAgICAKKwogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2Rl
LnR5cGUpCkBAIC0zMDYsMjAgKzUwNSwyMCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgICAgIGlmIChub2RlLm51bUNvbHVtbnNWYWx1ZSAhPSAyICYmIG5vZGUubnVtQ29s
dW1uc1ZhbHVlICE9IDMgJiYgbm9kZS5udW1Db2x1bW5zVmFsdWUgIT0gNCkKICAgICAgICAgICAg
IHRocm93IG5ldyBXVHlwZUVycm9yKGAke25vZGUudG9TdHJpbmcoKX06ICR7bm9kZS5udW1Db2x1
bW5zVmFsdWV9IGlzIG5vdCAyLCAzLCBvciA0LmApOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0
QXJyYXlUeXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRo
aXMpOwotICAgICAgICAKKwogICAgICAgICBpZiAoIW5vZGUubnVtRWxlbWVudHMuaXNDb25zdGV4
cHIpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5T
dHJpbmcsICJBcnJheSBsZW5ndGggbXVzdCBiZSBjb25zdGV4cHIiKTsKLSAgICAgICAgCisKICAg
ICAgICAgbGV0IHR5cGUgPSBub2RlLm51bUVsZW1lbnRzLnZpc2l0KHRoaXMpOwotICAgICAgICAK
KwogICAgICAgICBpZiAoIXR5cGUuZXF1YWxzV2l0aENvbW1pdCh0aGlzLl9wcm9ncmFtLmludHJp
bnNpY3MudWludCkpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJBcnJheSBsZW5ndGggbXVzdCBiZSBhIHVpbnQiKTsKICAgICB9Ci0g
ICAgCisKICAgICB2aXNpdFZhcmlhYmxlRGVjbChub2RlKQogICAgIHsKICAgICAgICAgbm9kZS50
eXBlLnZpc2l0KHRoaXMpOwpAQCAtMzMwLDcgKzUyOSw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9y
aWdpbi5vcmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHZhcmlhYmxlIGluaXRpYWxpemF0
aW9uOiAiICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyByaHNUeXBlKTsKICAgICAgICAgfQogICAg
IH0KLSAgICAKKwogICAgIHZpc2l0QXNzaWdubWVudChub2RlKQogICAgIHsKICAgICAgICAgbGV0
IGxoc1R5cGUgPSBub2RlLmxocy52aXNpdCh0aGlzKTsKQEAgLTM0MiwxMiArNTQxLDEyIEBAIGNs
YXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgbm9kZS50eXBlID0gbGhzVHlw
ZTsKICAgICAgICAgcmV0dXJuIGxoc1R5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRJZGVu
dGl0eUV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLnRhcmdldC52
aXNpdCh0aGlzKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBsaHNUeXBlID0gbm9kZS5sVmFsdWUudmlz
aXQodGhpcyk7CkBAIC0zNjIsMTMgKzU2MSwxMyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlz
aXRvciB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCAiVHlwZSBtaXNtYXRjaCBpbiByZWFkLW1vZGlmeS13cml0ZTogIiArIGxoc1R5
cGUgKyAiIHZlcnN1cyAiICsgbmV3VmFsdWVUeXBlKTsKICAgICAgICAgcmV0dXJuIG5vZGUucmVz
dWx0RXhwLnZpc2l0KHRoaXMpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0QW5vbnltb3VzVmFy
aWFibGUobm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS50eXBlKQogICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJBbm9ueW1vdXMgdmFyaWFibGUgbXVzdCBrbm93IHR5cGUgYmVmb3Jl
IGZpcnN0IGFwcGVhcmFuY2UiKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdERlcmVmZXJlbmNl
RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUgPSBub2RlLnB0ci52aXNp
dCh0aGlzKS51bmlmeU5vZGU7CkBAIC0zODAsMTYgKzU3OSwxNiBAQCBjbGFzcyBDaGVja2VyIGV4
dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk51bGwgYWRkcmVz
cyBzcGFjZSBpbiB0eXBlOiAiICsgdHlwZSk7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7CiAg
ICAgfQotICAgIAorCiAgICAgdmlzaXRNYWtlUHRyRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAg
ICAgICAgbGV0IGVsZW1lbnRUeXBlID0gbm9kZS5sVmFsdWUudmlzaXQodGhpcykudW5pZnlOb2Rl
OwogICAgICAgICBpZiAoIW5vZGUubFZhbHVlLmlzTFZhbHVlKQogICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiT3BlcmFuZCB0byAmIGlz
IG5vdCBhbiBMVmFsdWU6ICIgKyBub2RlLmxWYWx1ZSArIG5vZGUubFZhbHVlLm5vdExWYWx1ZVJl
YXNvblN0cmluZyk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgUHRyVHlwZShub2Rl
Lm9yaWdpbiwgbm9kZS5sVmFsdWUuYWRkcmVzc1NwYWNlLCBlbGVtZW50VHlwZSk7CiAgICAgfQot
ICAgIAorCiAgICAgdmlzaXRNYWtlQXJyYXlSZWZFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAg
ICAgICBsZXQgZWxlbWVudFR5cGUgPSBub2RlLmxWYWx1ZS52aXNpdCh0aGlzKS51bmlmeU5vZGU7
CkBAIC0zOTcsMzcgKzU5NiwzNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgICAgICBub2RlLmJlY29tZShuZXcgQ29udmVydFB0clRvQXJyYXlSZWZFeHByZXNzaW9u
KG5vZGUub3JpZ2luLCBub2RlLmxWYWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJh
eVJlZlR5cGUobm9kZS5vcmlnaW4sIGVsZW1lbnRUeXBlLmFkZHJlc3NTcGFjZSwgZWxlbWVudFR5
cGUuZWxlbWVudFR5cGUpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9k
ZS5sVmFsdWUuaXNMVmFsdWUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJPcGVyYW5kIHRvIEAgaXMgbm90IGFuIExWYWx1ZTogIiAr
IG5vZGUubFZhbHVlICsgbm9kZS5sVmFsdWUubm90TFZhbHVlUmVhc29uU3RyaW5nKTsKLSAgICAg
ICAgCisKICAgICAgICAgaWYgKGVsZW1lbnRUeXBlLmlzQXJyYXkpIHsKICAgICAgICAgICAgIG5v
ZGUubnVtRWxlbWVudHMgPSBlbGVtZW50VHlwZS5udW1FbGVtZW50czsKICAgICAgICAgICAgIGVs
ZW1lbnRUeXBlID0gZWxlbWVudFR5cGUuZWxlbWVudFR5cGU7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgbm9kZS5udW1FbGVtZW50cyA9IFVpbnRMaXRlcmFsLndpdGhUeXBlKG5vZGUub3Jp
Z2luLCAxLCB0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MudWludCk7Ci0gICAgICAgICAgICAKKwog
ICAgICAgICByZXR1cm4gbmV3IEFycmF5UmVmVHlwZShub2RlLm9yaWdpbiwgbm9kZS5sVmFsdWUu
YWRkcmVzc1NwYWNlLCBlbGVtZW50VHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRDb252
ZXJ0VG9BcnJheVJlZkV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiU2hvdWxkIG5vdCBleGlzdCB5ZXQuIik7CiAgICAgfQotICAgIAorCiAgICAgX2Zpbmlz
aFZpc2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgYmFzZVR5cGUsIGV4dHJhQXJncywgZXh0cmFB
cmdUeXBlcykKICAgICB7CiAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGUudmlzaXQobmV3IEF1
dG9XcmFwcGVyKCkpCiAgICAgICAgIG5vZGUuYmFzZVR5cGUgPSBiYXNlVHlwZTsKLSAgICAgICAg
CisKICAgICAgICAgLy8gU3VjaCBhIHR5cGUgbXVzdCBleGlzdC4gVGhpcyBtYXkgdGhyb3cgaWYg
aXQgZG9lc24ndC4KICAgICAgICAgbGV0IHR5cGVGb3JBbmQgPSBiYXNlVHlwZS5hcmd1bWVudFR5
cGVGb3JBbmRPdmVybG9hZChub2RlLm9yaWdpbik7CiAgICAgICAgIGlmICghdHlwZUZvckFuZCkK
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGdldCB0eXBlRm9yQW5kIik7Ci0g
ICAgICAgIAorCiAgICAgICAgIGxldCBlcnJvckZvckdldDsKICAgICAgICAgbGV0IGVycm9yRm9y
QW5kOwotICAgICAgICAKKwogICAgICAgICB0cnkgewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IENhbGxFeHByZXNzaW9uLnJlc29sdmUoCiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5v
ZGUucG9zc2libGVHZXRPdmVybG9hZHMsCkBAIC00MzksMTAgKzYzOCwxMCBAQCBjbGFzcyBDaGVj
a2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAg
ICAgIGVycm9yRm9yR2V0ID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0cnkg
ewogICAgICAgICAgICAgbGV0IGJhc2VGb3JBbmQgPSBiYXNlVHlwZS5hcmd1bWVudEZvckFuZE92
ZXJsb2FkKG5vZGUub3JpZ2luLCBub2RlLmJhc2UpOwotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGxldCByZXN1bHQgPSBDYWxsRXhwcmVzc2lvbi5yZXNvbHZlKAogICAgICAgICAgICAgICAg
IG5vZGUub3JpZ2luLCBub2RlLnBvc3NpYmxlQW5kT3ZlcmxvYWRzLAogICAgICAgICAgICAgICAg
IG5vZGUuYW5kRnVuY05hbWUsIFtiYXNlRm9yQW5kLCAuLi5leHRyYUFyZ3NdLCBbdHlwZUZvckFu
ZCwgLi4uZXh0cmFBcmdUeXBlc10sCkBAIC00NTQsNyArNjUzLDcgQEAgY2xhc3MgQ2hlY2tlciBl
eHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICAgICBl
cnJvckZvckFuZCA9IGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFub2Rl
LnJlc3VsdFR5cGVGb3JHZXQgJiYgIW5vZGUucmVzdWx0VHlwZUZvckFuZCkgewogICAgICAgICAg
ICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4ub3Jp
Z2luU3RyaW5nLApAQCAtNDYzLDExICs2NjIsMTEgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZp
c2l0b3IgewogICAgICAgICAgICAgICAgICJhbmQgdHJpZWQgYnktcG9pbnRlcjpcbiIgKwogICAg
ICAgICAgICAgICAgIGVycm9yRm9yQW5kLnR5cGVFcnJvck1lc3NhZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIGlmIChub2RlLnJlc3VsdFR5cGVGb3JHZXQgJiYgbm9kZS5yZXN1
bHRUeXBlRm9yQW5kCiAgICAgICAgICAgICAmJiAhbm9kZS5yZXN1bHRUeXBlRm9yR2V0LmVxdWFs
cyhub2RlLnJlc3VsdFR5cGVGb3JBbmQpKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiUmVzdWx0IHR5cGUgcmVzb2x2ZWQgYnktdmFs
dWUgKCIgKyBub2RlLnJlc3VsdFR5cGVGb3JHZXQgKyAiKSBkb2VzIG5vdCBtYXRjaCByZXN1bHQg
dHlwZSByZXNvbHZlZCBieS1wb2ludGVyICgiICsgbm9kZS5yZXN1bHRUeXBlRm9yQW5kICsgIiki
KTsKLSAgICAgICAgCisKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSBD
YWxsRXhwcmVzc2lvbi5yZXNvbHZlKAogICAgICAgICAgICAgICAgIG5vZGUub3JpZ2luLCBub2Rl
LnBvc3NpYmxlU2V0T3ZlcmxvYWRzLApAQCAtNDgwLDcgKzY3OSw3IEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAg
bm9kZS5lcnJvckZvclNldCA9IGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgLy8g
T0ssIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgYW4gbHZhbHVlLiBXZSBhcmUg
YW4gbHZhbHVlIGlmIHdlIGNhbiBiZSBhc3NpZ25lZCB0by4gV2UgY2FuCiAgICAgICAgIC8vIGJl
IGFzc2lnbmVkIHRvIGlmIHdlIGhhdmUgYW4gYW5kZXIgb3Igc2V0dGVyLiBCdXQgaXQncyB3ZWly
ZGVyIHRoYW4gdGhhdC4gV2UgYWxzbyBuZWVkIHRoZSBiYXNlIHRvIGJlCiAgICAgICAgIC8vIGFu
IGx2YWx1ZSwgZXhjZXB0IHVubGVzcyB0aGUgYmFzZSBpcyBhbiBhcnJheSByZWZlcmVuY2UuCkBA
IC00OTgsMzEgKzY5NywzMSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAg
ICAgICAgICBub2RlLmlzTFZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgIG5vZGUuYWRkcmVzc1Nw
YWNlID0gbm9kZS5iYXNlLmlzTFZhbHVlID8gbm9kZS5iYXNlLmFkZHJlc3NTcGFjZSA6IGJhc2VU
eXBlLmFkZHJlc3NTcGFjZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXR1cm4g
bm9kZS5yZXN1bHRUeXBlOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0RG90RXhwcmVzc2lvbihu
b2RlKQogICAgIHsKICAgICAgICAgbGV0IHN0cnVjdFR5cGUgPSBub2RlLnN0cnVjdC52aXNpdCh0
aGlzKS51bmlmeU5vZGU7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hWaXNpdGluZ1Byb3Bl
cnR5QWNjZXNzKG5vZGUsIHN0cnVjdFR5cGUsIFtdLCBbXSk7CiAgICAgfQotICAgIAorCiAgICAg
dmlzaXRJbmRleEV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBhcnJheVR5cGUg
PSBub2RlLmFycmF5LnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKICAgICAgICAgbGV0IGluZGV4VHlw
ZSA9IG5vZGUuaW5kZXgudmlzaXQodGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0
aGlzLl9maW5pc2hWaXNpdGluZ1Byb3BlcnR5QWNjZXNzKG5vZGUsIGFycmF5VHlwZSwgW25vZGUu
aW5kZXhdLCBbaW5kZXhUeXBlXSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRWYXJpYWJsZVJl
Zihub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlLnR5cGUpCiAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIlZhcmlhYmxlIGhhcyBubyB0eXBlOiAiICsgbm9kZS52YXJp
YWJsZSk7CiAgICAgICAgIHJldHVybiBub2RlLnZhcmlhYmxlLnR5cGU7CiAgICAgfQotICAgIAor
CiAgICAgdmlzaXRSZXR1cm4obm9kZSkKICAgICB7CiAgICAgICAgIGlmIChub2RlLnZhbHVlKSB7
CkBAIC01MzMsMjYgKzczMiwyNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiVHJ5aW5nIHRvIHJldHVybiAiICsgcmVzdWx0VHlwZSArICIgaW4gYSBmdW5jdGlvbiB0
aGF0IHJldHVybnMgIiArIG5vZGUuZnVuYy5yZXR1cm5UeXBlKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIW5vZGUuZnVuYy5yZXR1cm5U
eXBlLmVxdWFsc1dpdGhDb21taXQodGhpcy5fcHJvZ3JhbS5pbnRyaW5zaWNzLnZvaWQpKQogICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAi
Tm9uLXZvaWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIpOwogICAgIH0KLSAgICAKKwog
ICAgIHZpc2l0R2VuZXJpY0xpdGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2Rl
LnR5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXROdWxsTGl0ZXJhbChub2RlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdEJvb2xM
aXRlcmFsKG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvZ3JhbS5pbnRyaW5z
aWNzLmJvb2w7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRFbnVtTGl0ZXJhbChub2RlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG5vZGUubWVtYmVyLmVudW1UeXBlOwpAQCAtNjE0LDE0ICs4MTMs
MTQgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0U3dpdGNoU3Rh
dGVtZW50KG5vZGUpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IG5vZGUudmFsdWUudmlzaXQo
dGhpcykuY29tbWl0KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdHlwZS51bmlmeU5vZGUu
aXNJbnQgJiYgISh0eXBlLnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIEVudW1UeXBlKSkKICAgICAgICAg
ICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5v
dCBzd2l0Y2ggb24gbm9uLWludGVnZXIvbm9uLWVudW0gdHlwZTogIiArIHR5cGUpOwogCiAgICAg
ICAgIG5vZGUudHlwZSA9IHR5cGU7Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBoYXNEZWZhdWx0
ID0gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9k
ZS5zd2l0Y2hDYXNlcykgewogICAgICAgICAgICAgc3dpdGNoQ2FzZS5ib2R5LnZpc2l0KHRoaXMp
OwogCkBAIC02MjksMjYgKzgyOCwyNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgICAgICAgICAgICAgaGFzRGVmYXVsdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKCFz
d2l0Y2hDYXNlLnZhbHVlLmlzQ29uc3RleHByKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKHN3aXRjaENhc2Uub3JpZ2luLm9yaWdpblN0cmluZywgIlN3aXRjaCBjYXNlIG5v
dCBjb25zdGV4cHI6ICIgKyBzd2l0Y2hDYXNlLnZhbHVlKTsKLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBsZXQgY2FzZVR5cGUgPSBzd2l0Y2hDYXNlLnZhbHVlLnZpc2l0KHRoaXMpOwogICAg
ICAgICAgICAgaWYgKCF0eXBlLmVxdWFsc1dpdGhDb21taXQoY2FzZVR5cGUpKQogICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHN3aXRjaENhc2Uub3JpZ2luLm9yaWdpblN0cmlu
ZywgIlN3aXRjaCBjYXNlIHR5cGUgZG9lcyBub3QgbWF0Y2ggc3dpdGNoIHZhbHVlIHR5cGUgKGNh
c2UgdHlwZSBpcyAiICsgY2FzZVR5cGUgKyAiIGJ1dCBzd2l0Y2ggdmFsdWUgdHlwZSBpcyAiICsg
dHlwZSArICIpIik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBub2RlLnN3aXRjaENhc2VzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQg
Zmlyc3RDYXNlID0gbm9kZS5zd2l0Y2hDYXNlc1tpXTsKICAgICAgICAgICAgIGZvciAobGV0IGog
PSBpICsgMTsgaiA8IG5vZGUuc3dpdGNoQ2FzZXMubGVuZ3RoOyArK2opIHsKICAgICAgICAgICAg
ICAgICBsZXQgc2Vjb25kQ2FzZSA9IG5vZGUuc3dpdGNoQ2FzZXNbal07Ci0gICAgICAgICAgICAg
ICAgCisKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDYXNlLmlzRGVmYXVsdCAhPSBzZWNvbmRD
YXNlLmlzRGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDYXNlLmlzRGVmYXVsdCkKICAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc2Vjb25kQ2FzZS5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCAiRHVwbGljYXRlIGRlZmF1bHQgY2FzZSBpbiBzd2l0Y2ggc3RhdGVtZW50Iik7
Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBsZXQgdmFsdWVzRXF1YWwgPSB0
eXBlLnVuaWZ5Tm9kZS52YWx1ZXNFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgZmlyc3RDYXNl
LnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgc2Vjb25kQ2FzZS52YWx1ZS51bmlmeU5vZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwpAQCAt
NjU2LDE5ICs4NTUsMTkgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzZWNvbmRDYXNlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJEdXBsaWNhdGUgY2FzZSBpbiBzd2l0Y2ggc3RhdGVtZW50IGZvciB2YWx1ZSAi
ICsgZmlyc3RDYXNlLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFoYXNEZWZhdWx0
KSB7CiAgICAgICAgICAgICBsZXQgaW5jbHVkZWRWYWx1ZXMgPSBuZXcgU2V0KCk7CiAgICAgICAg
ICAgICBmb3IgKGxldCBzd2l0Y2hDYXNlIG9mIG5vZGUuc3dpdGNoQ2FzZXMpCiAgICAgICAgICAg
ICAgICAgaW5jbHVkZWRWYWx1ZXMuYWRkKHN3aXRjaENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVl
Rm9yU2VsZWN0ZWRUeXBlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBmb3IgKGxldCB7
dmFsdWUsIG5hbWV9IG9mIHR5cGUudW5pZnlOb2RlLmFsbFZhbHVlcygpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFpbmNsdWRlZFZhbHVlcy5oYXModmFsdWUpKQogICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJWYWx1ZSBu
b3QgaGFuZGxlZCBieSBzd2l0Y2ggc3RhdGVtZW50OiAiICsgbmFtZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2Rl
KQogICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CkBAIC02ODcsMTEgKzg4NiwxMSBA
QCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIGlmICghZWxzZVR5cGUp
CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlcm5hcnkgZXhwcmVzc2lvbiBlbHNlIGhh
cyBubyB0eXBlOiAiICsgbm9kZS5lbHNlRXhwcmVzc2lvbik7CiAgICAgICAgIGlmICghYm9keVR5
cGUuZXF1YWxzV2l0aENvbW1pdChlbHNlVHlwZSkpCi0gICAgICAgICAgICB0aHJvdyBuZXcgV1R5
cGVFcnJvcigiQm9keSBhbmQgZWxzZSBjbGF1c2Ugb2YgdGVybmFyeSBzdGF0ZW1lbnQgZG9uJ3Qg
aGF2ZSB0aGUgc2FtZSB0eXBlOiAiICsgbm9kZSk7CisgICAgICAgICAgICB0aHJvdyBuZXcgV1R5
cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJCb2R5IGFuZCBlbHNlIGNsYXVzZSBv
ZiB0ZXJuYXJ5IHN0YXRlbWVudCBkb24ndCBoYXZlIHRoZSBzYW1lIHR5cGU6ICIgKyBub2RlKTsK
ICAgICAgICAgbm9kZS5pc0xWYWx1ZSA9IG5vZGUuYm9keUV4cHJlc3Npb24uaXNMVmFsdWUgJiYg
bm9kZS5lbHNlRXhwcmVzc2lvbi5pc0xWYWx1ZTsKICAgICAgICAgcmV0dXJuIGJvZHlUeXBlOwog
ICAgIH0KLSAgICAKKwogICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAg
ICAgIGxldCBhcmd1bWVudFR5cGVzID0gbm9kZS5hcmd1bWVudExpc3QubWFwKGFyZ3VtZW50ID0+
IHsKQEAgLTcwMCw3ICs4OTksNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ2aXNpdG9yIHJldHVybmVkIG51bGwgZm9y
ICIgKyBhcmd1bWVudCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3QXJndW1lbnQudmlzaXQobmV3
IEF1dG9XcmFwcGVyKCkpOwogICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgbm9kZS5h
cmd1bWVudFR5cGVzID0gYXJndW1lbnRUeXBlczsKICAgICAgICAgaWYgKG5vZGUucmV0dXJuVHlw
ZSkKICAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKaW5kZXggOTBkN2VmOGE2ODQxY2JmZTllNjlkODE1NDU3
Y2NlNWFhN2NlYjlkZS4uMzEyYjAwZDllMjhjYjNlMzM2YWUwOWZjMzk2ZmQ4OWMxNjBhYjBhOSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDI1ICsyMCwzMCBAQAogICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGaWVsZCBleHRlbmRzIE5vZGUg
ewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSkKKyAgICBjb25zdHJ1Y3Rvcihv
cmlnaW4sIG5hbWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKICAgICB7CiAgICAgICAgIHN1cGVy
KCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9zZW1hbnRp
YyA9IHNlbWFudGljOwogICAgIH0KICAgICAKICAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhp
cy5fb3JpZ2luOyB9CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAg
Z2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IHNlbWFudGljKCkgeyBy
ZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAg
ICAgICByZXR1cm4gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAgICAgICBsZXQgcmVz
dWx0ID0gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy5zZW1h
bnRpYykKKyAgICAgICAgICAgIHJlc3VsdCArPSAiOiAiICsgdGhpcy5zZW1hbnRpYzsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Yy5qcwppbmRleCA0ZjU4OTA2MDdiMWEyOTE3MTgyMzRhZmEzZDZlMDY2ZjFkOTkwNWQ1Li42NjU2
NjRiZmNlMGJiZjNiMTg3NzBiYzExMjRiNjk1YzM3ZWZiNTY4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Z1bmMuanMKQEAgLTI1LDcgKzI1LDcgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xh
c3MgRnVuYyBleHRlbmRzIE5vZGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0
dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlKQorICAgIGNvbnN0cnVjdG9y
KG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBl
ID0gbnVsbCwgc2VtYW50aWMgPSBudWxsKQogICAgIHsKICAgICAgICAgaWYgKCEob3JpZ2luIGlu
c3RhbmNlb2YgTGV4ZXJUb2tlbikpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBv
cmlnaW46ICIgKyBvcmlnaW4pOwpAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMg
Tm9kZSB7CiAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwogICAgICAgICB0
aGlzLl9pc0Nhc3QgPSBpc0Nhc3Q7CiAgICAgICAgIHRoaXMuX3NoYWRlclR5cGUgPSBzaGFkZXJU
eXBlOworICAgICAgICB0aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOwogICAgIH0KICAgICAKICAg
ICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CkBAIC01MSw2ICs1Miw3IEBA
IGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICBnZXQgcGFyYW1ldGVyVHlwZXMoKSB7IHJl
dHVybiB0aGlzLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudHlwZSk7IH0K
ICAgICBnZXQgaXNDYXN0KCkgeyByZXR1cm4gdGhpcy5faXNDYXN0OyB9CiAgICAgZ2V0IHNoYWRl
clR5cGUoKSB7IHJldHVybiB0aGlzLl9zaGFkZXJUeXBlOyB9CisgICAgZ2V0IHNlbWFudGljKCkg
eyByZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KICAgICBnZXQgaXNFbnRyeVBvaW50KCkgeyByZXR1
cm4gdGhpcy5zaGFkZXJUeXBlICE9IG51bGw7IH0KICAgICBnZXQgcmV0dXJuVHlwZUZvck92ZXJs
b2FkUmVzb2x1dGlvbigpIHsgcmV0dXJuIHRoaXMuaXNDYXN0ID8gdGhpcy5yZXR1cm5UeXBlIDog
bnVsbDsgfQogICAgIApAQCAtNzAsNyArNzIsMTAgQEAgY2xhc3MgRnVuYyBleHRlbmRzIE5vZGUg
ewogICAgICAgICAgICAgcmVzdWx0ICs9IGBvcGVyYXRvciAke3RoaXMucmV0dXJuVHlwZX1gOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy5yZXR1cm5UeXBlfSAk
e3RoaXMubmFtZX1gOwotICAgICAgICByZXR1cm4gcmVzdWx0ICsgIigiICsgdGhpcy5wYXJhbWV0
ZXJzICsgIikiOworICAgICAgICByZXN1bHQgKz0gIigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIiki
OworICAgICAgICBpZiAodGhpcy5zZW1hbnRpYykKKyAgICAgICAgICAgIHJlc3VsdCArPSAiOiAi
ICsgdGhpcy5zZW1hbnRpYzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAg
ICAgdG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RnVuY0RlZi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMKaW5k
ZXggMzAxNmIxMzI1OTE3ZGQ3MmVhYTdkZWQ4NWE2ZWIyN2U1ODAyOThhYy4uNTEzNjg0ODIyOGRh
YjE0YTdiYmM1M2QwMGM0NjMwMDhkZjcyZTVmYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9GdW5jRGVmLmpzCkBAIC0yNSw5ICsyNSw5IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNz
IEZ1bmNEZWYgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJl
dHVyblR5cGUsIHBhcmFtZXRlcnMsIGJvZHksIGlzQ2FzdCwgc2hhZGVyVHlwZSkKKyAgICBjb25z
dHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGJvZHksIGlzQ2Fz
dCwgc2hhZGVyVHlwZSwgc2VtYW50aWMpCiAgICAgewotICAgICAgICBzdXBlcihvcmlnaW4sIG5h
bWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSk7CisgICAgICAg
IHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFk
ZXJUeXBlLCBzZW1hbnRpYyk7CiAgICAgICAgIHRoaXMuX2JvZHkgPSBib2R5OwogICAgICAgICB0
aGlzLmlzUmVzdHJpY3RlZCA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzCmluZGV4IGQwYmIxZDYyMzA0YTQ4NmNhYjg1Mzc3
NTc1OWQ0ZThlZDY3YzgzODMuLjA1Y2RiNTJmZGUzOTBkYjI1MGVjNmMyNmJjNjdlOWY1MGIxZjFm
NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0
ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAs
MzAgKzIwLDM3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAidXNlIHN0cmljdCI7CiAKIGNsYXNz
IEZ1bmNQYXJhbWV0ZXIgZXh0ZW5kcyBWYWx1ZSB7CiAgICAgLy8gVGhlIG5hbWUgaXMgb3B0aW9u
YWwuIEl0J3MgT0sgZm9yIGl0IHRvIGJlIG51bGwhCi0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBu
YW1lLCB0eXBlKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgc2VtYW50aWMg
PSBudWxsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0g
b3JpZ2luOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7CisgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50aWM7CiAgICAgfQogICAgIAog
ICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KICAgICBnZXQgbmFtZSgp
IHsgcmV0dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5
cGU7IH0KKyAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQogICAg
IGdldCB2YXJJc0xWYWx1ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB0b1N0cmluZygp
CiAgICAgeworICAgICAgICBsZXQgcmVzdWx0OwogICAgICAgICBpZiAoIXRoaXMubmFtZSkKLSAg
ICAgICAgICAgIHJldHVybiAiIiArIHRoaXMudHlwZTsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlw
ZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICIiICsgdGhpcy50eXBl
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnR5cGUgKyAiICIgKyB0
aGlzLm5hbWU7CisgICAgICAgIGlmICh0aGlzLnNlbWFudGljKQorICAgICAgICAgICAgcmVzdWx0
ICs9ICI6ICIgKyB0aGlzLnNlbWFudGljOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2lj
cy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXgg
NjhiMGRkNTczZmMwMmVhMzg1MTc5NTVkODM4OGE2NDZhYTkwYTU5Ni4uYzQ0NGY1NjVkM2E0OTll
NzdhYTJlYTJlMDRkYmNhNGY1ZDBmZDY4MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9JbnRyaW5zaWNzLmpzCkBAIC0yNzIsNiArMjcyLDcgQEAgY2xhc3MgSW50cmluc2ljcyB7
CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAg
dGhpc1tgJHt0ZXh0dXJlVHlwZX08JHt0eXBlQXJndW1lbnR9PmBdID0gdHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlLmlzVGV4dHVyZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLnBvcHVs
YXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwg
e30pOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBp
ID0gMjsgaSA8PSA0OyArK2kpIHsKQEAgLTI4MCw2ICsyODEsNyBAQCBjbGFzcyBJbnRyaW5zaWNz
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXNbYCR7dGV4dHVyZVR5cGV9PCR7dHlwZUFyZ3VtZW50fSR7aX0+YF0gPSB0
eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZS5pc1RleHR1cmUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZz
ZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9MYXRlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xh
dGVDaGVja2VyLmpzCmluZGV4IGViNWVlNjk2OWMxZDkzMzYzYWUxNTY1YzE3ZGNjYzBhYWIwYTFi
YzMuLjQ3ZmQzMmMzYTg0ZDYzZTZkY2M1ZjM3YzdjZTQyMzdlZDI3NDM3MmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCkBAIC0zMyw1NSArMzMsNSBA
QCBjbGFzcyBMYXRlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIW5vZGUu
ZWxlbWVudFR5cGUuaXNQcmltaXRpdmUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJv
cihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJJbGxlZ2FsIHBvaW50ZXIgdG8gbm9uLXByaW1p
dGl2ZSB0eXBlOiAiICsgbm9kZSk7CiAgICAgfQotICAgIAotICAgIF9jaGVja1NoYWRlclR5cGUo
bm9kZSkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZXNlIGNoZWNrcy4gRm9y
IG5vdywgd2Ugc2hvdWxkIG9ubHkgYWNjZXB0IGludDMyLCB1aW50MzIsIGZsb2F0MzIsIGFuZCBm
bG9hdDY0LgotICAgICAgICBsZXQgYXNzZXJ0UHJpbWl0aXZlID0gdHlwZSA9PiB7Ci0gICAgICAg
ICAgICBpZiAoIXR5cGUuaXNQcmltaXRpdmUpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyIHNpZ25hdHVyZSBjYW5u
b3QgaW5jbHVkZSBub24tcHJpbWl0aXZlIHR5cGU6ICIgKyB0eXBlKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSA9PSAidmVydGV4IiB8fCBub2RlLnNo
YWRlclR5cGUgPT0gImZyYWdtZW50IikgewotICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZlKG5v
ZGUucmV0dXJuVHlwZSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRnJhZ21lbnQgc2hhZGVycyBz
aG91bGRuJ3QgaGF2ZSB0aGlzIHJlc3RyaWN0aW9uOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg5Mzg3Ci0gICAgICAgICAgICBpZiAoIShub2RlLnJldHVyblR5cGUu
dW5pZnlOb2RlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpCi0gICAgICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyICIgKyBub2Rl
Lm5hbWUgKyAiIG11c3QgcmV0dXJuIGEgc3RydWN0LiIpOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgc3dpdGNoIChub2RlLnNoYWRlclR5cGUpIHsKLSAgICAgICAgY2FzZSAidmVy
dGV4IjoKLSAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFtZXRlcnMp
IHsKLSAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLnR5cGUudW5pZnlOb2RlIGluc3RhbmNl
b2YgU3RydWN0VHlwZSkKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZlKHBhcmFt
ZXRlci50eXBlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghcGFyYW1ldGVyLnR5cGUudW5p
ZnlOb2RlLmlzQXJyYXlSZWYpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgbm9kZS5uYW1lICsgIiBhY2NlcHRzIGEgcGFy
YW1ldGVyICIgKyBwYXJhbWV0ZXIubmFtZSArICIgd2hpY2ggaXNuJ3QgYSBzdHJ1Y3QgYW5kIGlz
bid0IGFuIEFycmF5UmVmLiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgImZyYWdtZW50IjoKLSAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBv
ZiBub2RlLnBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLm5hbWUg
PT0gInN0YWdlSW4iKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKHBhcmFtZXRlci50eXBl
LnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRnJhZ21l
bnQgZW50cnkgcG9pbnRzJyBzdGFnZUluIHBhcmFtZXRlciAob2YgIiArIG5vZGUubmFtZSArICIp
IG11c3QgYmUgYSBzdHJ1Y3QgdHlwZS4iKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0UHJp
bWl0aXZlKHBhcmFtZXRlci50eXBlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZS5pc0FycmF5UmVmKQot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4u
b3JpZ2luU3RyaW5nLCAiRnJhZ21lbnQgZW50cnkgcG9pbnQncyAiICsgcGFyYW1ldGVyLm5hbWUg
KyAiIHBhcmFtZXRlciBpcyBub3QgYW4gYXJyYXkgcmVmZXJlbmNlLiIpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ0
ZXN0IjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgc2hhZGVyIHR5cGU6ICIgKyBub2RlLnNoYWRlclR5cGUpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZpc2l0RnVuY0RlZihub2RlKQotICAgIHsKLSAg
ICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSkKLSAgICAgICAgICAgIHRoaXMuX2NoZWNrU2hhZGVy
VHlwZShub2RlKTsKLSAgICAgICAgc3VwZXIudmlzaXRGdW5jRGVmKG5vZGUpOwotICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZUZ1bmMuanMKaW5kZXggZjA4
NjUzNDJmMmVkZDdkZWM0N2JmNTJkMTU5ODYxMGMzMjRmMGYyYy4uNWFmOTRmZDExNDYyMTc5N2Rl
NjdlZjkxNmZlZGQ0ZjYwYTE0NzkyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVGdW5jLmpzCkBAIC0yNSw5ICsyNSw5IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNz
IE5hdGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSkKKyAgICBjb25zdHJ1
Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCkKICAgICB7
Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXND
YXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBl
LCBwYXJhbWV0ZXJzLCBpc0Nhc3QpOwogICAgICAgICB0aGlzLmlzUmVzdHJpY3RlZCA9IGZhbHNl
OwogICAgICAgICB0aGlzLmltcGxlbWVudGF0aW9uID0gbnVsbDsKICAgICAgICAgdGhpcy5faW1w
bGVtZW50YXRpb25EYXRhID0gbnVsbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2Uu
anMKaW5kZXggN2QxMzgxZjJlM2M1YTMwYWQxZTNkOTdmNjIzNTQ3YmNlOGIwNDVlNi4uNmExZjAz
ZGFiZGJhZWZjZGIzYjgwYTEyMzRjNjY1NjA5ZjEzZDk3OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUGFyc2UuanMKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIGxldCBs
ZXhlciA9IG5ldyBMZXhlcihvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRl
eHQpOwogCiAgICAgLy8gVGhlIGhhcmRlc3QgcGFydCBvZiBkZWFsaW5nIHdpdGggQy1saWtlIGxh
bmd1YWdlcyBpcyBwYXJzaW5nIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVudHMuCi0gICAg
Ly8gTGV0J3MgY29uc2lkZXIgaWYgdGhpcyBoYXBwZW5zIGluIFdTTC4gSGVyZSBhcmUgdGhlIHZh
bGlkIHN0YXRlbWVudHMgaW4gV1NMIHRoYXQgYmVpbmcgd2l0aCBhbgorICAgIC8vIExldCdzIGNv
bnNpZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXSExTTC4gSGVyZSBhcmUgdGhlIHZhbGlkIHN0YXRl
bWVudHMgaW4gV0hMU0wgdGhhdCBiZWluZyB3aXRoIGFuCiAgICAgLy8gaWRlbnRpZmllciwgaWYg
d2UgYXNzdW1lIHRoYXQgYW55IGV4cHJlc3Npb24gY2FuIGJlIGEgc3RhbmRhbG9uZSBzdGF0ZW1l
bnQuCiAgICAgLy8KICAgICAvLyAgICAgeDsKQEAgLTEwODUsNyArMTA4NSwxMyBAQCBmdW5jdGlv
biBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRl
eHQpCiAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAg
ICAgcmV0dXJuIHR5cGU7CiAgICAgICAgIGxldCBuYW1lID0gdHJ5Q29uc3VtZUtpbmQoImlkZW50
aWZpZXIiKTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBu
YW1lID8gbmFtZS50ZXh0IDogbnVsbCwgdHlwZSk7CisgICAgICAgIGxldCBzZW1hbnRpYyA9IG51
bGw7CisgICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgIHNlbWFudGlj
ID0gcGFyc2VTZW1hbnRpYygpOworICAgICAgICAgICAgaWYgKHNlbWFudGljIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG5hbWUgPyBu
YW1lLnRleHQgOiBudWxsLCB0eXBlLCBzZW1hbnRpYyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cGFyc2VQYXJhbWV0ZXJzKCkKQEAgLTExNjIsNiArMTE2OCw3IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgbGV0IG5hbWU7CiAgICAgICAgIGxldCBpc0Nhc3Q7CiAgICAgICAgIGxldCBzaGFkZXJUeXBl
OworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOwogICAgICAgICBsZXQgb3BlcmF0b3JUb2tl
biA9IHRyeUNvbnN1bWUoIm9wZXJhdG9yIik7CiAgICAgICAgIGlmIChvcGVyYXRvclRva2VuKSB7
CiAgICAgICAgICAgICBvcmlnaW4gPSBvcGVyYXRvclRva2VuOwpAQCAtMTE3MSw3ICsxMTc4LDcg
QEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVy
T2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgbmFtZSA9ICJvcGVyYXRvciBjYXN0IjsKICAgICAg
ICAgICAgIGlzQ2FzdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaGFk
ZXJUeXBlID0gdHJ5Q29uc3VtZSgidmVydGV4IiwgImZyYWdtZW50IiwgInRlc3QiKTsKKyAgICAg
ICAgICAgIHNoYWRlclR5cGUgPSB0cnlDb25zdW1lKCJ2ZXJ0ZXgiLCAiZnJhZ21lbnQiLCAiY29t
cHV0ZSIsICJ0ZXN0Iik7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CiAg
ICAgICAgICAgICBpZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTsKQEAgLTExODgsNyArMTE5NSwxMiBAQCBmdW5j
dGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQs
IHRleHQpCiAgICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7CiAgICAg
ICAgIGlmIChwYXJhbWV0ZXJzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAg
cmV0dXJuIHBhcmFtZXRlcnM7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuYyhvcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSk7CisgICAgICAgIGlm
ICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgIHNlbWFudGljID0gcGFyc2VTZW1hbnRp
YygpOworICAgICAgICAgICAgaWYgKHNlbWFudGljIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbmV3IEZ1bmMob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3Qs
IHNoYWRlclR5cGUsIHNlbWFudGljKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNE
ZWYoKQpAQCAtMTE5OSw3ICsxMjExLDExNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmln
aW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBib2R5
ID0gcGFyc2VCbG9jaygpOwogICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKICAgICAgICAgICAgIHJldHVybiBib2R5OwotICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYo
ZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMs
IGJvZHksIGZ1bmMuaXNDYXN0LCBmdW5jLnNoYWRlclR5cGUpOworICAgICAgICByZXR1cm4gbmV3
IEZ1bmNEZWYoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBh
cmFtZXRlcnMsIGJvZHksIGZ1bmMuaXNDYXN0LCBmdW5jLnNoYWRlclR5cGUsIGZ1bmMuc2VtYW50
aWMpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlU3RhZ2VJbk91dFNlbWFudGljKCkKKyAg
ICB7CisgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJhdHRyaWJ1dGUiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBtYXliZUVycm9yOworICAgICAgICBsZXQgaW5kZXggPSBjb25zdW1lS2luZCgiaW50TGl0ZXJh
bCIpOworICAgICAgICBpZiAoaW5kZXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIGxldCB1aW50VmVyc2lvbiA9IGluZGV4LnRleHQg
Pj4+IDA7CisgICAgICAgIGlmICh1aW50VmVyc2lvbi50b1N0cmluZygpICE9PSBpbmRleC50ZXh0
KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlNlbWFudGljICBpcyBub3QgMzItYml0IHVuc2ln
bmVkIGludGVnZXI6ICIgKyBpbmRleC50ZXh0KTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG5ldyBTdGFn
ZUluT3V0U2VtYW50aWMob3JpZ2luLCB1aW50VmVyc2lvbik7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcGFyc2VSZXNvdXJjZVNlbWFudGljKCkKKyAgICB7CisgICAgICAgIGxldCBvcmlnaW4gPSBj
b25zdW1lKCJyZWdpc3RlciIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIGxldCBt
b2RlID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG1vZGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbW9kZTsKKyAgICAgICAgbW9k
ZSA9IG1vZGUudGV4dDsKKyAgICAgICAgaWYgKG1vZGVbMF0gIT0gInUiICYmIG1vZGVbMF0gIT0g
InQiICYmIG1vZGVbMF0gIT0gImIiICYmIG1vZGVbMF0gIT0gInMiKQorICAgICAgICAgICAgcmV0
dXJuIGZhaWwoInJlZ2lzdGVyIG5lZWRzIHRvIGJlIGVpdGhlciB1LCB0LCBiLCBvciBzIik7Cisg
ICAgICAgIGxldCBpbmRleFRleHQgPSBtb2RlLnN1YnN0cmluZygxKTsKKyAgICAgICAgbW9kZSA9
IG1vZGVbMF07CisgICAgICAgIGxldCB1aW50VmVyc2lvbiA9IGluZGV4VGV4dCA+Pj4gMDsKKyAg
ICAgICAgaWYgKHVpbnRWZXJzaW9uLnRvU3RyaW5nKCkgIT09IGluZGV4VGV4dCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWlsKCJSZWdpc3RlciBpbmRleCBpcyBub3QgMzItYml0IHVuc2lnbmVkIGlu
dGVnZXI6ICIgKyBpbmRleFRleHQpOworICAgICAgICBsZXQgc3BhY2UgPSAwOworICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiLCIpKSB7CisgICAgICAgICAgICBzcGFjZSA9IGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIik7CisgICAgICAgICAgICBpZiAoc3BhY2UgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwYWNlOworICAgICAgICAgICAgc3BhY2UgPSBz
cGFjZS50ZXh0OworICAgICAgICAgICAgaWYgKHNwYWNlLnN1YnN0cmluZygwLCAic3BhY2UiLmxl
bmd0aCkgIT0gInNwYWNlIikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiU2Vjb25kIGFy
Z3VtZW50IHRvIHJlZ2lzdGVyKCkgbmVlZHMgdG8gYmUgb2YgdGhlIGZvcm0gXCJzcGFjZTBcIiIp
OworICAgICAgICAgICAgbGV0IHNwYWNlVGV4dCA9IHNwYWNlLnN1YnN0cmluZygic3BhY2UiLmxl
bmd0aCk7CisgICAgICAgICAgICBsZXQgdWludFZlcnNpb24gPSBzcGFjZVRleHQgPj4+IDA7Cisg
ICAgICAgICAgICBpZiAodWludFZlcnNpb24udG9TdHJpbmcoKSAhPT0gc3BhY2VUZXh0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWlsKCJSZWdpc3RlciBpbmRleCBpcyBub3QgMzItYml0IHVu
c2lnbmVkIGludGVnZXI6ICIgKyBzcGFjZVRleHQpOworICAgICAgICAgICAgc3BhY2UgPSB1aW50
VmVyc2lvbjsKKyAgICAgICAgfQorICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOwor
ICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlU2VtYW50
aWMob3JpZ2luLCBtb2RlLCB1aW50VmVyc2lvbiwgc3BhY2UpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCkKKyAgICB7CisgICAgICAg
IGxldCBvcmlnaW4gPSBjb25zdW1lKCJzcGVjaWFsaXplZCIpOworICAgICAgICBpZiAob3JpZ2lu
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAg
ICAgICAgcmV0dXJuIG5ldyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMob3JpZ2luKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygpCisgICAgeworICAg
ICAgICBsZXQgb3JpZ2luID0gdHJ5Q29uc3VtZSgiU1ZfSW5zdGFuY2VJRCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJTVl9WZXJ0ZXhJRCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJQU0laRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJT
Vl9Qb3NpdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Jc0Zyb250
RmFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9TYW1wbGVJbmRleCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Jbm5lckNvdmVyYWdlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNWX0RlcHRoIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNWX0NvdmVyYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlNWX0Rpc3BhdGNoVGhyZWFkSUQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfR3JvdXBJRCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJT
Vl9Hcm91cEluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNWX0dyb3Vw
VGhyZWFkSUQiKTsKKyAgICAgICAgaWYgKG9yaWdpbikKKyAgICAgICAgICAgIHJldHVybiBuZXcg
QnVpbHRJblNlbWFudGljKG9yaWdpbiwgb3JpZ2luLnRleHQpOworICAgICAgICBvcmlnaW4gPSBj
b25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgaWYgKG9y
aWdpbi50ZXh0LnN1YnN0cmluZygwLCAiU1ZfVGFyZ2V0Ii5sZW5ndGgpID09ICJTVl9UYXJnZXQi
KSB7CisgICAgICAgICAgICBsZXQgaW5kZXhTdHJpbmcgPSBvcmlnaW4udGV4dC5zdWJzdHJpbmco
IlNWX1RhcmdldCIubGVuZ3RoKTsKKyAgICAgICAgICAgIGxldCB1aW50VmVyc2lvbiA9IGluZGV4
U3RyaW5nID4+PiAwOworICAgICAgICAgICAgaWYgKHVpbnRWZXJzaW9uLnRvU3RyaW5nKCkgIT09
IGluZGV4U3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJTZW1hbnRpYyAgaXMg
bm90IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXhTdHJpbmcpOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBCdWlsdEluU2VtYW50aWMob3JpZ2luLCAiU1ZfVGFyZ2V0IiwgdWludFZl
cnNpb24pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWlsKGBVbmtub3du
IHNlbWFudGljOiAke29yaWdpbi50ZXh0fWApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNl
U2VtYW50aWMoKQorICAgIHsKKyAgICAgICAgaWYgKHRlc3QoImF0dHJpYnV0ZSIpKQorICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlU3RhZ2VJbk91dFNlbWFudGljKCk7CisgICAgICAgIGVsc2UgaWYg
KHRlc3QoInJlZ2lzdGVyIikpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VSZXNvdXJjZVNlbWFu
dGljKCk7CisgICAgICAgIGVsc2UgaWYgKHRlc3QoInNwZWNpYWxpemVkIikpCisgICAgICAgICAg
ICByZXR1cm4gcGFyc2VTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlQnVpbHRJblNlbWFudGljKCk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VGaWVsZCgpCkBAIC0xMjEwLDEwICsxMzMxLDE2IEBAIGZ1bmN0
aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwg
dGV4dCkKICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwogICAg
ICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVy
biBuYW1lOworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOworICAgICAgICBpZiAodHJ5Q29u
c3VtZSgiOiIpKSB7CisgICAgICAgICAgICBzZW1hbnRpYyA9IHBhcnNlU2VtYW50aWMoKTsKKyAg
ICAgICAgICAgIGlmIChzZW1hbnRpYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VtYW50aWM7CisgICAgICAgIH0KICAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCI7Iik7CiAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7Ci0gICAgICAgIHJldHVy
biBuZXcgRmllbGQobmFtZSwgbmFtZS50ZXh0LCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBG
aWVsZChuYW1lLCBuYW1lLnRleHQsIHR5cGUsIHNlbWFudGljKTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBwYXJzZVN0cnVjdFR5cGUoKQpAQCAtMTI0NSw3ICsxMzcyLDkgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKICAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKLSAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3JpZ2luLCBmdW5jLm5h
bWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlzQ2FzdCwgZnVuYy5z
aGFkZXJUeXBlKTsKKyAgICAgICAgaWYgKGZ1bmMuc2hhZGVyVHlwZSB8fCBmdW5jLnNlbWFudGlj
KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoIk5hdGl2ZSBmdW5jdGlvbnMgY2FuJ3QgYmUgZW50
cnkgcG9pbnRzIG9yIGhhdmUgc2VtYW50aWNzLiIpOworICAgICAgICByZXR1cm4gbmV3IE5hdGl2
ZUZ1bmMoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFt
ZXRlcnMsIGZ1bmMuaXNDYXN0KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZSgp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVu
bmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCmluZGV4IGMzMjg4OTJiZmYx
NmI3NWFlZTVhZmZiNGYzNzJmZTI0YTQxOGNiNzEuLjg2NTdjN2Y0ZmIwODJlZWNlNDA1ZjFlYTg4
NmIxN2FmNTVmNjBmMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpz
CkBAIC00MSw2ICs0MSwxMCBAQCBmdW5jdGlvbiBwcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdz
UmVtb3ZlZChwcm9ncmFtKQogICAgIG5hbWVGaW5kZXIuYWRkKCJ2b2lkIik7CiAgICAgbmFtZUZp
bmRlci5hZGQoImJvb2wiKTsKICAgICBuYW1lRmluZGVyLmFkZCgiaW50Iik7CisgICAgbmFtZUZp
bmRlci5hZGQoInVpbnQiKTsKKyAgICBuYW1lRmluZGVyLmFkZCgiZmxvYXQiKTsKKyAgICBuYW1l
RmluZGVyLmFkZCgidmVjdG9yIik7CisgICAgbmFtZUZpbmRlci5hZGQoInNhbXBsZXIiKTsKICAg
ICAKICAgICAvLyBQdWxsIGluIHRoaW5ncyBhcyBuZWNlc3NhcnkuCiAgICAgd2hpbGUgKG5hbWVG
aW5kZXIud29ya2xpc3QubGVuZ3RoKSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWEyOGEzY2FkMmZiNmY3ZjNm
ZGQxNjFiMGE5YzMwNmE3MDVmMmFlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKwor
Y2xhc3MgUmVzb3VyY2VTZW1hbnRpYyBleHRlbmRzIFNlbWFudGljIHsKKyAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIHJlc291cmNlTW9kZSwgaW5kZXgsIHNwYWNlKQorICAgIHsKKyAgICAgICAgIHN1
cGVyKG9yaWdpbik7CisgICAgICAgICB0aGlzLl9yZXNvdXJjZU1vZGUgPSByZXNvdXJjZU1vZGU7
CisgICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4OworICAgICAgICAgdGhpcy5fc3BhY2UgPSBz
cGFjZTsKKyAgICB9CisKKyAgICBnZXQgcmVzb3VyY2VNb2RlKCkgeyByZXR1cm4gdGhpcy5fcmVz
b3VyY2VNb2RlOyB9CisgICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhpcy5faW5kZXg7IH0KKyAg
ICBnZXQgc3BhY2UoKSB7IHJldHVybiB0aGlzLl9zcGFjZTsgfQorCisgICAgaXNBY2NlcHRhYmxl
VHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLnJlc291cmNl
TW9kZSkgeworICAgICAgICBjYXNlICJiIjoKKyAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgUmVmZXJlbmNlVHlwZSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLmFkZHJlc3NT
cGFjZSA9PSAiY29uc3RhbnQiOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
cmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGU7CisgICAgICAgIGNhc2UgInUiOgorICAg
ICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VUeXBlKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHR5cGUuYWRkcmVzc1NwYWNlID09ICJjb25zdGFudCIgfHwgdHlwZS5hZGRy
ZXNzU3BhY2UgPT0gImRldmljZSI7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHlwZS5pc1RleHR1cmUgfHwgdHlwZSBpbnN0YW5jZW9mIEFycmF5VHlwZTsKKyAg
ICAgICAgY2FzZSAidCI6CisgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFJlZmVyZW5j
ZVR5cGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5hZGRyZXNzU3BhY2UgPT0gImNv
bnN0YW50IjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
LmlzVGV4dHVyZSB8fCB0eXBlIGluc3RhbmNlb2YgQXJyYXlUeXBlOworICAgICAgICBjYXNlICJz
IjoKKyAgICAgICAgICAgIHJldHVybiB0eXBlLmVxdWFscyhwcm9ncmFtLmludHJpbnNpY3Muc2Ft
cGxlcik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVu
a25vd24gcmVzb3VyY2UgbW9kZTogJHt0aGlzLnJlc291cmNlTW9kZX1gKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBzaGFkZXJU
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAiaW5wdXQiOworICAgIH0K
KworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBgcmVnaXN0ZXIoJHt0aGlz
LnJlc291cmNlTW9kZX0ke3RoaXMuaW5kZXh9LCBzcGFjZSR7dGhpcy5zcGFjZX0pYDsKKyAgICB9
Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVy
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggMjY3
ZTdhMzMyMzRhZjM3MmYxZTEzNGVlNjNmOTZjYjFjN2Y3ODE2My4uOTdhNGY3MDVkYjM0Njk2NDc2
MzE0MjdlNDMzNjczZTM4N2JmNDcwYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmV3cml0ZXIuanMKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgIAogICAg
IHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5l
dyBGdW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0
aGlzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9yaWdp
biwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQobm9kZS5zZW1h
bnRpYywgdGhpcykpOwogICAgICAgICB0aGlzLl9tYXBOb2RlKG5vZGUsIHJlc3VsdCk7CiAgICAg
ICAgIHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
MTA1LDcgKzEwNSw3IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdEZpZWxkKG5v
ZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5vZGUub3JpZ2luLCBub2RlLm5h
bWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAgICAgIHJldHVybiBuZXcgRmllbGQobm9k
ZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5v
ZGUuc2VtYW50aWMsIHRoaXMpKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRFbnVtTWVtYmVyKG5v
ZGUpCkBAIC00MDIsNSArNDAyLDI1IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAgICAgY29uc3Qg
bWF0VHlwZSA9IG5ldyBNYXRyaXhUeXBlKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlw
ZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpKTsKICAgICAg
ICAgcmV0dXJuIG1hdFR5cGU7CiAgICAgfQorCisgICAgdmlzaXRCdWlsdEluU2VtYW50aWMobm9k
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQnVpbHRJblNlbWFudGljKG5vZGUub3JpZ2lu
LCBub2RlLm5hbWUsIC4uLm5vZGUuZXh0cmFBcmd1bWVudHMpOworICAgIH0KKworICAgIHZpc2l0
UmVzb3VyY2VTZW1hbnRpYyhub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJj
ZVNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLnJlc291cmNlTW9kZSwgbm9kZS5pbmRleCwgbm9k
ZS5zcGFjZSk7CisgICAgfQorCisgICAgdmlzaXRTdGFnZUluT3V0U2VtYW50aWMobm9kZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgU3RhZ2VJbk91dFNlbWFudGljKG5vZGUub3JpZ2luLCBu
b2RlLmluZGV4KTsKKyAgICB9CisKKyAgICB2aXNpdFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYyhub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMobm9kZS5vcmlnaW4pOworICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggODkxODY3MTFmZjVjMDEwZjU3MjBlMTY4OGZmM2Nh
NWRmZGVlMjRlYS4uYzQ2MDJiNDY3NTVmNDU2NjFiNzMzMzEyYWZmYWE3NzY4NTFjNzk3NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAorKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC0xOCw2ICsxOCw3IEBA
IHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJOYXRpdmVUeXBlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iU2VtYW50aWMuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkFkZHJlc3NTcGFj
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkFsbG9jYXRlQXRFbnRyeVBvaW50cy5q
cyI+PC9zY3JpcHQ+CkBAIC0yOSw2ICszMCw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQmxv
Y2suanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iQnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQnVpbHRp
bk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJ1aWx0aW5NYXRy
aXhTZXR0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCdWlsdGluVmVjdG9yR2V0
dGVyLmpzIj48L3NjcmlwdD4KQEAgLTEyMSwxMCArMTIzLDEzIEBAIHRkIHsKICAgICA8c2NyaXB0
IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2
ZVR5cGVEZWZzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUmVzb3VyY2VTZW1hbnRp
Yy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlJldHVybkNoZWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJTYW1w
bGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iU3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iU3RhZ2VJbk91dFNlbWFu
dGljLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RhdGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iU3RydWN0TGF5b3V0QnVpbGRlci5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TZW1hbnRpYy5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NlbWFudGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNzhjZjEw
NWZkMmE2YjIwMDg3NGI4MDBjZmI0YWM0MzUzZjVkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TZW1hbnRpYy5qcwpAQCAtMCwwICsxLDgzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsK
KworY2xhc3MgU2VtYW50aWMgZXh0ZW5kcyBOb2RlIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4p
CisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47
CisgICAgfQorCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorCisg
ICAgZXF1YWxUb090aGVyU2VtYW50aWMob3RoZXJTZW1hbnRpYykKKyAgICB7CisgICAgICAgIGNs
YXNzIENvbXBhcmVyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgICAgICAgICB2aXNpdEJ1aWx0SW5T
ZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghKG90aGVy
U2VtYW50aWMgaW5zdGFuY2VvZiBCdWlsdEluU2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUubmFtZSAhPSBvdGhlclNl
bWFudGljLm5hbWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50cyAmJiBvdGhlclNlbWFudGljLmV4dHJhQXJn
dW1lbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmV4dHJhQXJndW1lbnRzLmxl
bmd0aCAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50c1tpXSAhPSBvdGhlclNlbWFudGlj
LmV4dHJhQXJndW1lbnRzW2ldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuZXh0cmFB
cmd1bWVudHMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmV4dHJhQXJndW1lbnRz
Lmxlbmd0aCA9PSAwOworICAgICAgICAgICAgICAgIGlmIChvdGhlclNlbWFudGljLmV4dHJhQXJn
dW1lbnRzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJTZW1hbnRpYy5leHRyYUFy
Z3VtZW50cy5sZW5ndGggPT0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRSZXNvdXJjZVNlbWFudGljKG5vZGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9m
IFJlc291cmNlU2VtYW50aWMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUucmVzb3VyY2VNb2RlID09IG90aGVyU2VtYW50aWMu
cmVzb3VyY2VNb2RlICYmIG5vZGUuaW5kZXggPT0gb3RoZXJTZW1hbnRpYy5pbmRleCAmJiBub2Rl
LnNwYWNlID09IG90aGVyU2VtYW50aWMuc3BhY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpc2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9mIFN0YWdlSW5PdXRTZW1hbnRp
YykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9kZS5pbmRleCA9PSBvdGhlclNlbWFudGljLmluZGV4OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2aXNpdFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdGhpcy52aXNpdChuZXcgQ29tcGFyZXIoKSk7CisgICAgfQorfQorCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyMjA2OTdiOTRlOTYzODAx
YWIyMDZlMTE0YmJhYjhkMGYzNDYzMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1NwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcwpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1
c2Ugc3RyaWN0IjsKKworY2xhc3MgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljIGV4dGVu
ZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbikKKyAgICB7CisgICAgICAgIHN1
cGVyKG9yaWdpbik7CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUuaXNOdW1iZXI7CisgICAgfQorCisgICAgaXNB
Y2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIHNoYWRlclR5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gZGlyZWN0aW9uID09ICJpbnB1dCI7CisgICAgfQorCisgICAgdG9TdHJpbmco
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICJzcGVjaWFsaXplZCI7CisgICAgfQorfQorCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFnZUluT3V0U2VtYW50aWMu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmU5ZWVhOTliZTdkOTdjY2Y1NGZkNjUxNzFhODQ0MDAxOTAwYzg1MgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YWdlSW5PdXRT
ZW1hbnRpYy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3RhZ2VJbk91dFNlbWFudGlj
IGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgaW5kZXgpCisgICAg
eworICAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7
CisgICAgfQorCisgICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhpcy5faW5kZXg7IH0KKworICAg
IGlzQWNjZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
eXBlIGluc3RhbmNlb2YgRW51bVR5cGUgfHwgdHlwZSBpbnN0YW5jZW9mIEFycmF5VHlwZSB8fCB0
eXBlIGluc3RhbmNlb2YgVmVjdG9yVHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgTWF0cml4VHlwZSB8
fCB0eXBlLmlzTnVtYmVyOworICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUo
ZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzaGFkZXJUeXBl
KSB7CisgICAgICAgIGNhc2UgInZlcnRleCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgY2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAi
aW5wdXQiOworICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaGFkZXIg
dHlwZTogJHtzaGFkZXJUeXBlfWApOworICAgICAgICB9CisgICAgfQorCisgICAgdG9TdHJpbmco
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGBhdHRyaWJ1dGUoJHt0aGlzLmluZGV4fSlgOworICAg
IH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVt
ZW50Q2xvbmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xv
bmVyLmpzCmluZGV4IDBkMDcxNWE5ODU0ZGVmMWJmZDJhODA4Yzc0MDQxMTJiYTFhNGEwYzEuLjc4
NTk2NmY4N2Y4OTEyMzVkZTJkOTMzYWI3MDAzNzZmY2E1MDljZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKQEAgLTQzLDcgKzQzLDcg
QEAgY2xhc3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMgUmV3cml0ZXIgewogICAgICAgICAgICAg
bm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNp
dCh0aGlzKSwKICAgICAgICAgICAgIG5vZGUucGFyYW1ldGVycy5tYXAocGFyYW1ldGVyID0+IHBh
cmFtZXRlci52aXNpdCh0aGlzKSksCi0gICAgICAgICAgICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFk
ZXJUeXBlKTsKKyAgICAgICAgICAgIG5vZGUuaXNDYXN0KTsKICAgICAgICAgcmVzdWx0LmlzUmVz
dHJpY3RlZCA9IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVB
cnJheU9wZXJhdG9yTGVuZ3RoLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKaW5kZXggZGU4ZGY1ZDExNDhjNTc4YWYwZGI2
ZTI3ZDdiMDE3OTg5OWYxNWQ0YS4uMWEyODE1OGE4YjQyN2Q3OTE4N2I5MGM1YWQ0NjY4NWMxMDYw
NDEzMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvU3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVu
Y3Rpb24gc3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSkKICAgICAgICAgbGV0
IG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIGFycmF5VHlwZS5vcmln
aW4sICJvcGVyYXRvci5sZW5ndGgiLCB1aW50LAogICAgICAgICAgICAgWyBuZXcgRnVuY1BhcmFt
ZXRlcihhcnJheVR5cGUub3JpZ2luLCBudWxsLCBwYXJhbVR5cGUpIF0sCi0gICAgICAgICAgICBm
YWxzZSwgbnVsbCk7CisgICAgICAgICAgICBmYWxzZSk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2FycmF5XSkgPT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRz
VmFsdWUpOwogICAgICAgICBwcm9ncmFtLmFkZChuYXRpdmVGdW5jKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9w
ZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlD
b25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGNmOThjNDY3YTVjMTJkODQ2MmYxYmIwNzgxYTIw
ZTBlMmFlMzVjMzkuLmYzOWVhZWYxZDQ2NDc1NjdlODgzN2Y0ZjU0ZDYxOTczNDU2YzZiZWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVDb3B5Q29u
c3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgZnVu
Y3Rpb24gc3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yKHByb2dyYW0pCiAgICAgZm9y
IChsZXQgdHlwZSBvZiB0eXBlcykgewogICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRp
dmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwg
WwogICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG51bGwsIFR5cGVS
ZWYud3JhcCh0eXBlKSkKLSAgICAgICAgXSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIF0sIHRydWUp
OwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFthcmddLCBub2RlKSA9PiB7
CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXpl
KSwgMCk7CiAgICAgICAgICAgICByZXN1bHQuY29weUZyb20oYXJnLCB0eXBlLnNpemUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRD
b25zdHJ1Y3Rvck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGRjNTA2NTM4ZDFjNmM3
MTA5YjFhZDFlY2JhM2NlYzI3OGQwZjdiNWMuLjViYzVkZDkzOWFkNDA0YmMzMThkYzVjODA5NTk1
OGZlNDc1MWQ0ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5
bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMK
QEAgLTYyLDcgKzYyLDcgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9w
ZXJhdG9yKHByb2dyYW0pCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwog
CiAgICAgZm9yIChsZXQgdHlwZSBvZiB0eXBlcykgewotICAgICAgICBsZXQgbmF0aXZlRnVuYyA9
IG5ldyBOYXRpdmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3Jh
cCh0eXBlKSwgW10sIHRydWUsIG51bGwpOworICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBO
YXRpdmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBl
KSwgW10sIHRydWUpOwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFtdLCBu
b2RlKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIo
dHlwZS5zaXplKSwgMCk7CiAgICAgICAgICAgICBub2RlLnR5cGUucG9wdWxhdGVEZWZhdWx0VmFs
dWUocmVzdWx0LmJ1ZmZlciwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TeW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCmluZGV4IDEzN2FjOWZjZDE1ODg3
YWY4Yzc2ZTRmNjRjZGQ1YTIyZDI3Y2FhMTIuLjgyNjZhMThiNjdkODlmNTNkMzBiMjg2NDNiYjcy
OWE1Mjc1NWVmMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5
bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCkBAIC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9u
IHN5bnRoZXNpemVFbnVtRnVuY3Rpb25zKHByb2dyYW0pCiAKICAgICAgICAgbGV0IG5hdGl2ZUZ1
bmM7CiAgICAgICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgbGV0IHNoYWRlclR5cGU7
CiAKICAgICAgICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlw
ZS5vcmlnaW4sICJvcGVyYXRvcj09IiwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sICJib29sIiks
CkBAIC00MCwyOCArMzksMjggQEAgZnVuY3Rpb24gc3ludGhlc2l6ZUVudW1GdW5jdGlvbnMocHJv
Z3JhbSkKICAgICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbnVs
bCwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSkpLAogICAgICAgICAgICAgICAg
IG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9y
aWdpbiwgdHlwZS5uYW1lKSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBpc0Nhc3QsIHNo
YWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgbmF0aXZlRnVuYy5pbXBs
ZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PiBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgp
ID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgcHJvZ3JhbS5hZGQobmF0aXZlRnVuYyk7
CiAKICAgICAgICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlw
ZS5vcmlnaW4sICJvcGVyYXRvci52YWx1ZSIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3IFJld3Jp
dGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxs
LCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAgICAgaXND
YXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1
bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0u
YWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygK
ICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIHR5cGUuYmFzZVR5cGUu
dmlzaXQobmV3IFJld3JpdGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5
cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAot
ICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAg
ICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAg
ICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBu
ZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIs
IG5ldyBUeXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpLAogICAgICAgICAgICAgW25ldyBG
dW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCB0eXBlLmJhc2VUeXBlLnZpc2l0KG5ldyBS
ZXdyaXRlcigpKSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAg
ICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVl
XSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RB
Y2Nlc3NvcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3Ry
dWN0QWNjZXNzb3JzLmpzCmluZGV4IDc4NTllZWI0YjRmNWNiNWVmZTZmZDAyZGVhYjYzNzBkYmQ5
YjUzOTAuLjZjN2ZmZDcxODExNWM3OWQ4ZjI3MTA1N2I0MThjMDA5NDFjMGFlZmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVj
dEFjY2Vzc29ycy5qcwpAQCAtNDksMTMgKzQ5LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1
Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAgICAgICAgIH0KIAogICAg
ICAgICBsZXQgaXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAg
ICBsZXQgbmF0aXZlRnVuYzsKIAogICAgICAgICAvLyBUaGUgZ2V0dGVyOiBvcGVyYXRvci5maWVs
ZAogICAgICAgICBuYXRpdmVGdW5jID0gbmV3IE5hdGl2ZUZ1bmMoCiAgICAgICAgICAgICBmaWVs
ZC5vcmlnaW4sICJvcGVyYXRvci4iICsgZmllbGQubmFtZSwgZmllbGQudHlwZSwKLSAgICAgICAg
ICAgIFtuZXcgRnVuY1BhcmFtZXRlcihmaWVsZC5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0
eXBlKSldLCBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1l
dGVyKGZpZWxkLm9yaWdpbiwgbnVsbCwgVHlwZVJlZi53cmFwKHR5cGUpKV0sIGlzQ2FzdCk7CiAg
ICAgICAgIHNldHVwSW1wbGVtZW50YXRpb25EYXRhKG5hdGl2ZUZ1bmMsIChbYmFzZV0sIG9mZnNl
dCwgc3RydWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0g
bmV3IEVQdHIobmV3IEVCdWZmZXIoZmllbGRTaXplKSwgMCk7CiAgICAgICAgICAgICByZXN1bHQu
Y29weUZyb20oYmFzZS5wbHVzKG9mZnNldCksIGZpZWxkU2l6ZSk7CkBAIC03MCw3ICs2OSw3IEBA
IGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0s
IHR5cGUpCiAgICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIoZmllbGQub3JpZ2luLCBu
dWxsLCBUeXBlUmVmLndyYXAodHlwZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1l
dGVyKGZpZWxkLm9yaWdpbiwgbnVsbCwgZmllbGQudHlwZSkKICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICBpc0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAg
ICAgc2V0dXBJbXBsZW1lbnRhdGlvbkRhdGEobmF0aXZlRnVuYywgKFtiYXNlLCB2YWx1ZV0sIG9m
ZnNldCwgc3RydWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0
ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIoc3RydWN0U2l6ZSksIDApOwogICAgICAgICAgICAgcmVz
dWx0LmNvcHlGcm9tKGJhc2UsIHN0cnVjdFNpemUpOwpAQCAtODksNyArODgsNyBAQCBmdW5jdGlv
biBzeW50aGVzaXplU3RydWN0QWNjZXNzb3JzRm9yU3RydWN0VHlwZShwcm9ncmFtLCB0eXBlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQub3JpZ2luLCBudWxsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFB0clR5cGUoZmllbGQub3JpZ2luLCBhZGRyZXNzU3BhY2UsIFR5cGVS
ZWYud3JhcCh0eXBlKSkpCiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBpc0Nh
c3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgICAgICBz
ZXR1cEltcGxlbWVudGF0aW9uRGF0YShuYXRpdmVGdW5jLCAoW2Jhc2VdLCBvZmZzZXQsIHN0cnVj
dFNpemUsIGZpZWxkU2l6ZSkgPT4gewogICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLmxvYWRW
YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuaHRtbAppbmRleCA5OGUzODUxZjE2OTlhYTZjZTY4YmZkNWFiODQ2MWFlOTdk
ZWVkMWMxLi41ZDEwMGE2NzI0ZmYwNWNjYTg4M2I5MDZlZjhmY2M4ZjE4NDg1YjRmIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+
CiA8aGVhZD4KLTx0aXRsZT5XU0wgVGVzdDwvdGl0bGU+Cis8dGl0bGU+V0hMU0wgVGVzdDwvdGl0
bGU+CiA8c2NyaXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9zY3JpcHQ+CkBA
IC0xMiw2ICsxMiw3IEBACiA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5cGUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iTmF0aXZlVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU2Vt
YW50aWMuanMiPjwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iQWRkcmVzc1NwYWNlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJBbGxvY2F0ZUF0RW50cnlQb2ludHMuanMiPjwvc2NyaXB0PgpA
QCAtMjMsNiArMjQsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnJlYWsuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iQnVpbHRpbk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRp
blZlY3RvckdldHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTUsMTAgKzExNywxMyBAQAogPHNjcmlw
dCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJl
c29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURl
ZnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2VtYW50aWMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0
dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlN0YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3Rh
bmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGF0ZW1lbnRDbG9uZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2Ny
aXB0PgpAQCAtMTY3LDcgKzE3Miw3IEBAIGZ1bmN0aW9uIGRvVGVzdEluQnJvd3NlcigpCiAgICAg
ICAgICAgICBpZiAodGVzdGVyLm5leHQoKS5kb25lKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiAiICsgZS5t
ZXNzYWdlKTsKKyAgICAgICAgICAgIHByaW50KCJFUlJPUjogIiArIChlLnBheWxvYWQgPyBlLnBh
eWxvYWQgOiBlLm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHByaW50KGUuc3RhY2spOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5q
cwppbmRleCBiZjlmNTVlMzE1Mzc4NGI2ZDAwNzRiZTFiOWE5MTQ4YmEyZTQyNDllLi41YWZlMWM5
MjNlNDliNmY2MmY5NDlmYjM1YTIyMTk3MWE2MzAzMGJkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuanMKQEAgLTMxMTAsMTMzICszMTEwLDI2MSBAQCB0ZXN0cy50eXBlZGVmQXJy
YXkgPSBmdW5jdGlvbigpCiAKIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogeworICAg
IGRvUHJlcChgCisgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKCkgOiBTVl9Qb3NpdGlvbiB7Cisg
ICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDAsIDEsIDIsIDMpOworICAgICAgICB9YCk7CisgICAg
ZG9QcmVwKGAKKyAgICAgICAgc3RydWN0IFIgeworICAgICAgICAgICAgZmxvYXQ0IHggOiBTVl9Q
b3NpdGlvbjsKKyAgICAgICAgICAgIGludDQgeSA6IGF0dHJpYnV0ZSgxKTsKKyAgICAgICAgfQor
ICAgICAgICB2ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICBSIHo7CisgICAgICAgICAgICB6
LnggPSBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgICAgICB6LnkgPSBpbnQ0KDUsIDYsIDcs
IDgpOworICAgICAgICAgICAgcmV0dXJuIHo7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAor
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgeCA6IFNWX1Bvc2l0aW9uOwor
ICAgICAgICAgICAgaW50NCB5IDogYXR0cmlidXRlKDEpOworICAgICAgICB9CisgICAgICAgIHN0
cnVjdCBTIHsKKyAgICAgICAgICAgIFIgcjsKKyAgICAgICAgICAgIGZsb2F0MyB6IDogYXR0cmli
dXRlKDIpOworICAgICAgICB9CisgICAgICAgIHZlcnRleCBTIGZvbygpIHsKKyAgICAgICAgICAg
IFMgdzsKKyAgICAgICAgICAgIHcuci54ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAg
ICAgdy5yLnkgPSBpbnQ0KDUsIDYsIDcsIDgpOworICAgICAgICAgICAgdy56ID0gZmxvYXQzKDks
IDEwLCAxMSk7CisgICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgfWApOworICAgIGRvUHJl
cChgCisgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiBy
ZWdpc3RlcihiMCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgq
YnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRv
UHJlcChgCisgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIg
OiByZWdpc3RlcihiMCwgc3BhY2UwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICByZXR1
cm4gZmxvYXQ0KCpidWZmZXIsICpidWZmZXIsICpidWZmZXIsICpidWZmZXIpOworICAgICAgICB9
YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oY29uc3RhbnQgZmxv
YXQqIGJ1ZmZlciA6IHJlZ2lzdGVyKGIwLCBzcGFjZTEpKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAg
ICAgICAgIHJldHVybiBmbG9hdDQoKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlcik7
CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhj
b25zdGFudCBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7Cisg
ICAgICAgICAgICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZmZXJbMl0s
IGJ1ZmZlclszXSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXgg
ZmxvYXQ0IGZvbyhmbG9hdFs1XSBidWZmZXIgOiByZWdpc3RlcihiMCkpIDogU1ZfUG9zaXRpb24g
eworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NChidWZmZXJbMF0sIGJ1ZmZlclsxXSwgYnVmZmVy
WzJdLCBidWZmZXJbM10pOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgdmVy
dGV4IGZsb2F0NCBmb28oZGV2aWNlIGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcih1MCkpIDogU1Zf
UG9zaXRpb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAqYnVmZmVyLCAq
YnVmZmVyLCAqYnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAgICAgIHZl
cnRleCBmbG9hdDQgZm9vKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSkgOiBT
Vl9Qb3NpdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVy
WzFdLCBidWZmZXJbMl0sIGJ1ZmZlclszXSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAor
ICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyh1aW50IHggOiBTVl9JbnN0YW5jZUlEKSA6IFNWX1Bv
c2l0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBm
bG9hdCh4KSwgZmxvYXQoeCkpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAg
ZnJhZ21lbnQgZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSkgOiBTVl9UYXJnZXQw
IHsKKyAgICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgIH1gKTsK
KyAgICBkb1ByZXAoYAorICAgICAgICBmcmFnbWVudCBmbG9hdDQgZm9vKGludCB4IDogc3BlY2lh
bGl6ZWQpIDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMs
IDQpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQgZmxvYXQ0
IGZvbyhUZXh0dXJlMUQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHMgOiByZWdp
c3RlcihzMCkpIDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gU2FtcGxlKHQsIHMs
IDAuNCk7CisgICAgICAgIH1gKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJl
cChgCi0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsK
KyAgICAgICAgICAgIHZlcnRleCB2b2lkIGZvbygpIDogU1ZfUG9zaXRpb24gewogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnggPSBmbG9hdDQo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBgKSwKKyAgICAgICAg
ZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAo
KSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCA6IFBT
SVpFKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KHgsIHgs
IHgsIHgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgRm9vIGZvbygpIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYmFyKCk7CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFu
Y2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChg
CisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhpbnQgeCA6IFNWX0luc3RhbmNlSUQpIDog
U1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZs
b2F0KHgpLCBmbG9hdCh4KSwgZmxvYXQoeCkpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwK
LSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBl
IGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBk
b1ByZXAoYAotICAgICAgICAgICAgdmVydGV4IGZsb2F0IGJhcigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIDQuOworICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
ZmxvYXQgeCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCh4
LCB4LCB4LCB4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBl
IGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBl
RXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAg
ICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAg
ZnJhZ21lbnQgZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSwgYm9vbCB5IDogU1Zf
SXNGcm9udEZhY2UpIDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0
NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZlcnRleCBGb28gYmFy
KGRldmljZSBGb28qIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZv
bygpOworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3Ry
dWN0IFIgeworICAgICAgICAgICAgICAgIGZsb2F0NCB4IDogU1ZfVGFyZ2V0MDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGZyYWdtZW50IFIgZm9vKGJvb2wgeCA6IFNWX0lzRnJvbnRGYWNl
KSA6IFNWX0RlcHRoIHsKKyAgICAgICAgICAgICAgICBSIHk7CisgICAgICAgICAgICAgICAgeS54
ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiB5OwogICAgICAg
ICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVy
cm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tG
YWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0g
ICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAg
ICAgICAgICAgYm9vbCB4IDogU1ZfSXNGcm9udEZhY2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAg
ICAgICBkZXZpY2UgQm9vKiB5OworICAgICAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhSIHgg
OiBTVl9TYW1wbGVJbmRleCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmVydGV4IEZv
byBiYXIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAg
ICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNo
ZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBSIHsK
KyAgICAgICAgICAgICAgICBib29sIHggOiBTVl9Jc0Zyb250RmFjZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHN0cnVjdCBTIHsKKyAgICAgICAgICAgICAgICBSIHI7CisgICAgICAgICAg
ICAgICAgYm9vbCB5IDogU1ZfSXNGcm9udEZhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBmcmFnbWVudCBmbG9hdDQgZm9vKFMgeCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwK
LSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBl
IGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBk
b1ByZXAoYAotICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0
IHg7CisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA6IFNW
X0lzRnJvbnRGYWNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0g
ICAgICAgICAgICAgICAgZGV2aWNlIEZvbyogeTsKKyAgICAgICAgICAgIGZyYWdtZW50IGZsb2F0
NCBmb28oUiB4KSA6IFNWX1RhcmdldDAgeworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQo
MSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihC
b28gYikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAg
ICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVj
a0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUiB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRGYWNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgdmVydGV4IHVpbnQgZm9vKCkgOiBTVl9WZXJ0ZXhJRCB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIDc7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAoZSkg
PT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBX
VHlwZUVycm9yKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAg
ICAgIHR5cGVkZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0
IGZvbyhkZXZpY2UgQVtdIHggOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24geworICAgICAg
ICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vKiB4KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBp
bnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9Q
cmVwKGAKKyAgICAgICAgICAgIHR5cGVkZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAg
ICB2ZXJ0ZXggZmxvYXQ0IGZvbyhkZXZpY2UgQSogeCA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3Np
dGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVF
cnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNr
RmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewot
ICAgICAgICAgICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgdHlwZWRlZiBBID0gdGhyZWFk
IGZsb2F0KjsKKyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKEFbNF0geCA6IHJlZ2lzdGVy
KHUwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAy
LCAzLCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoRm9v
IGZvbykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAg
ICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVj
a0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBlbnVtIEZvbyB7Cisg
ICAgICAgICAgICAgICAgZiwgZworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4IGZs
b2F0NCBmb28oRm9vIHggOiBzcGVjaWFsaXplZCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
YCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUg
PT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkg
PT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIGZs
b2F0NCB4OworICAgICAgICAgICAgY29tcHV0ZSBmbG9hdCBmb28oKSA6IGF0dHJpYnV0ZSgwKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIDU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
cmFnbWVudCBGb28gYmFyKGRldmljZSBGb28qIHN0YWdlSW4pCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGlu
c3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1By
ZXAoYAorICAgICAgICAgICAgZnJhZ21lbnQgZmxvYXQgZm9vKCkgOiBhdHRyaWJ1dGUoMCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiA1OwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAg
ICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGlu
c3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1By
ZXAoYAotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7
CisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQgZm9vKGRldmljZSBmbG9hdCogeCA6IGF0dHJpYnV0
ZSgwKSkgOiBhdHRyaWJ1dGUoMCkgeworICAgICAgICAgICAgICAgIHJldHVybiA1OwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0
IHg7Ci0gICAgICAgICAgICAgICAgZGV2aWNlIEJvbyogeTsKKyAgICAgICAgYCksCisgICAgICAg
IGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAg
KCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGRldmljZSBmbG9h
dCogeCA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdt
ZW50IEJvbyBiYXIoRm9vIHN0YWdlSW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEJvbygpOworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5
cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAg
ICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3Np
dGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVF
cnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNr
RmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBCb28gewot
ICAgICAgICAgICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
ZGV2aWNlIGZsb2F0KiB4IDogcmVnaXN0ZXIodDApKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlIEJvbyogeTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5j
ZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAK
KyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKFRleHR1cmUyRDxmbG9hdD4geCA6IHJlZ2lz
dGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgx
LCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIo
Qm9vIHN0YWdlSW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZvbygp
OworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Cisg
ICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVydGV4
IGZsb2F0NCBmb28oY29uc3RhbnQgZmxvYXRbXSB4IDogcmVnaXN0ZXIoczApKSA6IFNWX1Bvc2l0
aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAg
ICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVy
cm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiB9CiAKIHRlc3Rz
LnZlY3RvclR5cGVTeW50YXggPSBmdW5jdGlvbigpCkBAIC04MDI4LDcgKzgxNTYsNyBAQCB0ZXN0
cy5ldmFsdWF0aW9uT3JkZXJGb3JBcmd1bWVudHMgPSAoKSA9PiB7CiAKIHRlc3RzLmNhbm5vdENh
bGxBbm90aGVyRW50cnlQb2ludCA9ICgpID0+IHsKICAgICBjaGVja0ZhaWwoKCkgPT4gZG9QcmVw
KGAKLSAgICAgICAgc3RydWN0IEZvbyB7IGludCB4OyB9CisgICAgICAgIHN0cnVjdCBGb28geyBp
bnQgeCA6IGF0dHJpYnV0ZSgwKTsgfQogICAgICAgICB2ZXJ0ZXggRm9vIGZvbygpIHsgcmV0dXJu
IGJhcigpOyB9CiAgICAgICAgIHZlcnRleCBGb28gYmFyKCkgeyByZXR1cm4gRm9vKCk7IH0KICAg
ICBgKSwgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhPZigi
aXQgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBleGlzdGluZyBzaGFkZXIiKSAhPT0g
LTEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggYjllYTdl
NDYzYzRlMDhiZGY4NmZlOTA3NmVhZDQwNTg3NmQxMTU5Mi4uYmYxYzg3YjRkZTQ1ZDc4YTk0OWI5
MzhkM2ZkMjAzNzcwMWVkOWIwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNp
dG9yLmpzCkBAIC0zNiwxMSArMzYsMTMgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgICAgIG5vZGUu
cmV0dXJuVHlwZS52aXNpdCh0aGlzKTsKICAgICAgICAgZm9yIChsZXQgcGFyYW1ldGVyIG9mIG5v
ZGUucGFyYW1ldGVycykKICAgICAgICAgICAgIHBhcmFtZXRlci52aXNpdCh0aGlzKTsKKyAgICAg
ICAgTm9kZS52aXNpdChub2RlLnNlbWFudGljLCB0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlz
aXRGdW5jUGFyYW1ldGVyKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhp
cyk7CisgICAgICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAg
IAogICAgIHZpc2l0RnVuY0RlZihub2RlKQpAQCAtOTIsNiArOTQsNyBAQCBjbGFzcyBWaXNpdG9y
IHsKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQo
dGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQog
ICAgIAogICAgIHZpc2l0RW51bVR5cGUobm9kZSkKQEAgLTM0Nyw1ICszNTAsMjEgQEAgY2xhc3Mg
VmlzaXRvciB7CiAgICAgICAgIG5vZGUubnVtUm93cy52aXNpdCh0aGlzKTsKICAgICAgICAgbm9k
ZS5udW1Db2x1bW5zLnZpc2l0KHRoaXMpOwogICAgIH0KKworICAgIHZpc2l0QnVpbHRJblNlbWFu
dGljKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHZpc2l0UmVzb3VyY2VTZW1hbnRpYyhub2Rl
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXNpdFN0YWdlSW5PdXRTZW1hbnRpYyhub2RlKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXNpdFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2Rl
KQorICAgIHsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5o
dG1sCmluZGV4IDA4ZjRlZDViMDkzMWI2YmZiM2E0MjI4OTc4MzdlZWY4YTFhYzMyOTAuLmE0OGI3
YzdjY2M2MDhkMmQ5NDE5NGFmZDIwYWYzNWZmZDFjNjBiYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMTIsNiArMTIsNyBAQAogPHNjcmlwdCBzcmM9IkNy
ZWF0ZUxpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik5hdGl2ZVR5cGUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlNlbWFudGljLmpzIj48L3NjcmlwdD4KIAogPHNjcmlwdCBz
cmM9IkFkZHJlc3NTcGFjZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQWxsb2NhdGVBdEVu
dHJ5UG9pbnRzLmpzIj48L3NjcmlwdD4KQEAgLTIzLDYgKzI0LDcgQEAKIDxzY3JpcHQgc3JjPSJC
bG9jay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQm9vbExpdGVyYWwuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCdWlsdElu
U2VtYW50aWMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkJ1aWx0aW5NYXRyaXhHZXR0ZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkJ1aWx0aW5NYXRyaXhTZXR0ZXIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IkJ1aWx0aW5WZWN0b3JHZXR0ZXIuanMiPjwvc2NyaXB0PgpAQCAt
MTE1LDEwICsxMTcsMTMgQEAKIDxzY3JpcHQgc3JjPSJSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlUHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iUmVzb2x2ZVR5cGVEZWZzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJS
ZXNvdXJjZVNlbWFudGljLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm4uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlJldHVybkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlJldHVybkV4Y2VwdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU2FtcGxl
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTdGFnZUluT3V0U2VtYW50aWMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0YW5kYXJkTGlicmFyeS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iU3RhdGVtZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdHJ1
Y3RMYXlvdXRCdWlsZGVyLmpzIj48L3NjcmlwdD4K
</data>
<flag name="review"
          id="367952"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350740</attachid>
            <date>2018-09-24 23:48:57 -0700</date>
            <delta_ts>2018-09-25 13:44:04 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-189134-20180924234856.patch</filename>
            <type>text/plain</type>
            <size>102238</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjk5MzYxODcxNTBkNGYwZGYxOWQ5MzI4MzA5YWNmZmY1
NGM2NzYyOC4uNWU0MzUyNTM4MTMwZmQxMzZlYjY3NmZmMTdlOTliNjljMDkwM2RjNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
MSBAQAorMjAxOC0wOS0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSFNMXSBJbXBsZW1lbnQgc2VtYW50aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgcGFyc2luZyBzdXBw
b3J0IGFuZCBhZGRzIHRoZSBjaGVja3MgcmVxdWlyZWQgdG8gc3VwcG9ydCBITFNMLXN0eWxlIHNl
bWFudGljcy4KKworICAgICAgICBUaGVyZSBhcmUgMyBwbGFjZXMgd2hlcmUgc2VtYW50aWNzIGFy
ZSBhbGxvd2VkOgorCisgICAgICAgIDEuIEluIGEgZmllbGQgaW4gYSBzdHJ1Y3QuIEUuZy4KKwor
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbjsKKyAgICAgICAgfQorICAgICAgICB2ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICAu
Li4KKyAgICAgICAgfQorCisgICAgICAgIDIuIEluIGEgcGFyYW1ldGVyIG9mIGEgZnVuY3Rpb24u
IElmIHRoZSBmdW5jdGlvbiBpcyBub3QgYW4gZW50cnkgcG9pbnQsIHRoZSBzZW1hbnRpYyBpcyBp
Z25vcmVkLgorCisgICAgICAgIGNvbXB1dGUgdm9pZCBmb28oZGV2aWNlIGZsb2F0W10gZGF0YSA6
IGJ1ZmZlcih1MCkpIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAgICAgMy4g
T24gYSBmdW5jdGlvbi4gVGhpcyBpcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjcmVhdGUgc3RydWN0
cyBmb3IgdGhlIHJldHVybiB0eXBlcyBvZiBzaW1wbGUgdmVydGV4IHNoYWRlcnMuCisKKyAgICAg
ICAgdmVydGV4IGZsb2F0NCBmb28oKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIC4uLgor
ICAgICAgICB9CisKKyAgICAgICAgVGhlIHNlbWFudGljcyBhcmUgcGFydGl0aW9uZWQgaW50byA0
IHR5cGVzOgorCisgICAgICAgIDEuIEJ1aWx0LWluIHZhcmlhYmxlcy4gRm9yIGV4YW1wbGUsIDog
U1ZfUG9zaXRpb24uCisgICAgICAgIDIuIFJlc291cmNlcy4gRm9yIGV4YW1wbGUsIDogcmVnaXN0
ZXIodTApLgorICAgICAgICAzLiBTdGFnZS1pbiAvIHN0YWdlLW91dCB2YXJpYWJsZXMuIEZvciBl
eGFtcGxlLCA6IGF0dHJpYnV0ZSgwKS4KKyAgICAgICAgNC4gU3BlY2lhbGl6YXRpb24gY29uc3Rh
bnRzLiBGb3IgZXhhbXBsZSwgOiBzcGVjaWFsaXplZC4KKworICAgICAgICBUaGUgc2VtYW50aWNz
IGFyZSB2YWxpZGF0ZWQgYWNjb3JkaW5nIHRvIGEgY29sbGVjdGlvbiBvZiBydWxlczoKKworICAg
ICAgICAtIFRoZSBzYW1lIGVudHJ5IHBvaW50IGNhbid0IGxpc3QgdGhlIHNhbWUgc2VtYW50aWMg
dHdpY2UKKyAgICAgICAgLSBFYWNoIGJ1aWx0LWluIHR5cGUgaGFzIGFuIGFwcHJvcHJpYXRlIHR5
cGUgdGhhdCBpcyBsaXN0ZWQgaW4gdGhlIHNwZWMuIAorICAgICAgICAtIEVhY2ggYnVpbHQtaW4g
aXMgYXBwcm9wcmlhdGUgYXMgZWl0aGVyIGFuIGlucHV0IG9yIGFuIG91dHB1dCBvZiBhIHBhcnRp
Y3VsYXIgc2hhZGVyIHN0YWdlCisgICAgICAgIC0gUmVzb3VyY2Ugc2VtYW50aWNzIGhhdmUgdG8g
aGF2ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSAoZS5nLiBjYW4ndCB1c2UgcmVnaXN0ZXIoczApIG9u
IGEgYnVmZmVyKQorICAgICAgICAtIFJlc291cmNlcyBjYW4ndCBiZSBvdXRwdXQgZnJvbSBlbnRy
eSBwb2ludHMKKyAgICAgICAgLSBUaGUgcmVzb3VyY2Ugc2VtYW50aWMgbW9kZSBtdXN0IG1hdGNo
IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSByZXNvdXJjZQorICAgICAgICAtIFN0YWdlLWluIGFu
ZCBzdGFnZS1vdXQgdmFyaWFibGVzIGhhdmUgdG8gYmUgUE9ECisgICAgICAgIC0gU3BlY2lhbGl6
YXRpb24gY29uc3RhbnRzIGNhbid0IGJlIG91dHB1dCBmcm9tIGVudHJ5IHBvaW50cywgYW5kIGhh
dmUgdG8gYmUgbnVtYmVycworCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxs
LmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5q
czogQWRkZWQuCisgICAgICAgIChCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAoQnVpbHRJblNl
bWFudGljLnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMucHJv
dG90eXBlLmdldCBleHRyYUFyZ3VtZW50cyk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMucHJv
dG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoQnVpbHRJblNlbWFudGljLnByb3Rv
dHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKEJ1aWx0SW5TZW1hbnRp
Yy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxFeHByZXNzaW9uLmpzOgorICAgICAgICAoQ2FsbEV4cHJlc3Npb24ucHJvdG90eXBlLl9y
ZXNvbHZlV2l0aE9wZXJhdG9yQW5kZXJJbmRleGVyKToKKyAgICAgICAgKENhbGxFeHByZXNzaW9u
LnByb3RvdHlwZS5fcmVzb2x2ZVdpdGhPcGVyYXRvckxlbmd0aCk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNrZXIpOgorICAgICAg
ICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIucHJv
dG90eXBlLl9jaGVja1NlbWFudGljcy5JdGVtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBl
Ll9jaGVja1NlbWFudGljcy5JdGVtLnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbS5wcm90b3R5cGUuZ2V0IHNlbWFudGlj
KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlcik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnJlc2V0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGlj
cy5HYXRoZXJlci5wcm90b3R5cGUuc2V0IGN1cnJlbnRTZW1hbnRpYyk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLmdldCBjdXJy
ZW50U2VtYW50aWMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNz
LkdhdGhlcmVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90
eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6Cisg
ICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90
eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0TWF0cml4VHlwZSk6CisgICAgICAgIChD
aGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0
TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3Mu
R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6CisgICAgICAgIChDaGVja2VyLnBy
b3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0VHlwZVJlZik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnZpc2l0UHRyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0QXJyYXlSZWZUeXBlKToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlz
aXRBcnJheVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNz
LkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrRHVwbGljYXRlU2VtYW50aWNzKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVja1NlbWFudGljVHlw
ZXMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrU2Vt
YW50aWNGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1Nl
bWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNp
dEFycmF5VHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3Mu
UE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKENoZWNrZXIu
cHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdE1hdHJp
eFR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLlBPRENo
ZWNrZXIucHJvdG90eXBlLnZpc2l0TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3Rv
dHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQdHJUeXBlKToK
KyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnBy
b3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5f
Y2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRTdHJ1Y3RUeXBlKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3Rv
dHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2Vt
YW50aWNzLlBPRENoZWNrZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2Vt
YW50aWNzLmNoZWNrUE9ERGF0YSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tPcGVyYXRvck92ZXJsb2FkKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZp
c2l0QXJyYXlUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0TWFrZVB0ckV4
cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRNYWtlQXJyYXlSZWZF
eHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9maW5pc2hWaXNpdGluZ1By
b3BlcnR5QWNjZXNzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0SW5kZXhFeHBy
ZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UmV0dXJuKToKKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLnZpc2l0VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRmllbGQuanM6CisgICAgICAgIChGaWVsZCk6CisgICAgICAgIChGaWVsZC5w
cm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAgICAg
KEZ1bmMpOgorICAgICAgICAoRnVuYy5wcm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAg
KEZ1bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY0RlZi5qczoKKyAgICAgICAgKEZ1bmNEZWYpOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5jUGFyYW1l
dGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBzZW1hbnRpYyk6Cisg
ICAgICAgIChGdW5jUGFyYW1ldGVyLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qczoKKyAgICAgICAgKExhdGVDaGVja2VyLnByb3Rv
dHlwZS52aXNpdFJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoTGF0ZUNoZWNrZXIpOgorICAgICAg
ICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUpOiBEZWxldGVkLgorICAg
ICAgICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qczoKKyAgICAgICAgKE5h
dGl2ZUZ1bmMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgor
ICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6CisgICAg
ICAgIChwYXJzZUZ1bmNEZWYpOgorICAgICAgICAocGFyc2VTdGFnZUluT3V0U2VtYW50aWMpOgor
ICAgICAgICAocGFyc2VSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKHBhcnNlU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKHBhcnNlQnVpbHRJblNlbWFudGljKToK
KyAgICAgICAgKHBhcnNlRmllbGQpOgorICAgICAgICAocGFyc2VOYXRpdmVGdW5jKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdz
UmVtb3ZlZC5qczoKKyAgICAgICAgKHByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVk
KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpz
OiBBZGRlZC4KKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoUmVzb3VyY2VT
ZW1hbnRpYy5wcm90b3R5cGUuZ2V0IHJlc291cmNlTW9kZSk6CisgICAgICAgIChSZXNvdXJjZVNl
bWFudGljLnByb3RvdHlwZS5nZXQgaW5kZXgpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5w
cm90b3R5cGUuZ2V0IHNwYWNlKToKKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMucHJvdG90eXBl
LmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5wcm90b3R5cGUu
aXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChSZXNvdXJjZVNlbWFudGljLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVy
KToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFJl
d3JpdGVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRl
ci5wcm90b3R5cGUudmlzaXRSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKFJld3JpdGVyLnBy
b3RvdHlwZS52aXNpdFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRlci5wcm90
b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAoUmV3
cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU2VtYW50aWMuanM6IEFkZGVkLgorICAg
ICAgICAoU2VtYW50aWMpOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmdldCBvcmlnaW4p
OgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBh
cmVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5w
cm90b3R5cGUuZXF1YWxUb090aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0UmVz
b3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5wcm90b3R5cGUuZXF1YWxUb090aGVy
U2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNlbWFudGljKToKKyAg
ICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYy5Db21wYXJlci5w
cm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAo
U2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBhcmVyKToKKyAgICAg
ICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpz
OiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcy4KKyAg
ICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAg
ICAgICAoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFi
bGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1N0YWdlSW5PdXRTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAg
ICAgIChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmdldCBpbmRleCk6CisgICAgICAgIChT
dGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAo
U3RhZ2VJbk91dFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToK
KyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczoKKyAgICAgICAg
KFN0YXRlbWVudENsb25lci5wcm90b3R5cGUudmlzaXROYXRpdmVGdW5jKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5qczoK
KyAgICAgICAgKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanM6
CisgICAgICAgIChzeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVy
YXRvci5qczoKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvcik6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUVudW1GdW5jdGlv
bnMuanM6CisgICAgICAgIChzeW50aGVzaXplRW51bUZ1bmN0aW9ucyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qczoKKyAgICAg
ICAgKHNldHVwQW5kZXIpOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29yc0ZvclN0
cnVjdFR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAodGVz
dHMuc2hhZGVyVHlwZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanM6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEZ1bmMpOgorICAgICAgICAo
VmlzaXRvci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKFZpc2l0b3Iu
cHJvdG90eXBlLnZpc2l0RmllbGQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRC
dWlsdEluU2VtYW50aWMpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRSZXNvdXJj
ZVNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNl
bWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IpOgorICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIwMTgtMDktMjQgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIE5vdCBhbGwgZnVu
Y3Rpb25zIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBpbiBhbGwgc2hhZGVyIHN0YWdlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IDkwNDZlZDRmMjk5NjFjYTBjNWE5ZWExMTAz
NTFlYjc5MzM1ZDUwNTguLjcwMzkyNTJmMjA4MzNhYTY4MWIwNmJhYjU1Njc5MjU5ZGI5MWM2ODMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTM1LDYgKzM1LDcgQEAgbG9h
ZCgiQ3JlYXRlTGl0ZXJhbC5qcyIpOwogbG9hZCgiQ3JlYXRlTGl0ZXJhbFR5cGUuanMiKTsKIGxv
YWQoIlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiTmF0aXZlVHlwZS5qcyIp
OworbG9hZCgiU2VtYW50aWMuanMiKTsKIAogbG9hZCgiQWRkcmVzc1NwYWNlLmpzIik7CiBsb2Fk
KCJBbGxvY2F0ZUF0RW50cnlQb2ludHMuanMiKTsKQEAgLTQ2LDYgKzQ3LDcgQEAgbG9hZCgiQXV0
b1dyYXBwZXIuanMiKTsKIGxvYWQoIkJsb2NrLmpzIik7CiBsb2FkKCJCb29sTGl0ZXJhbC5qcyIp
OwogbG9hZCgiQnJlYWsuanMiKTsKK2xvYWQoIkJ1aWx0SW5TZW1hbnRpYy5qcyIpOwogbG9hZCgi
QnVpbHRpbk1hdHJpeEdldHRlci5qcyIpOwogbG9hZCgiQnVpbHRpbk1hdHJpeFNldHRlci5qcyIp
OwogbG9hZCgiQnVpbHRpblZlY3RvckdldHRlci5qcyIpOwpAQCAtMTQxLDEwICsxNDMsMTMgQEAg
bG9hZCgiUmVzb2x2ZU5hbWVzLmpzIik7CiBsb2FkKCJSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIik7
CiBsb2FkKCJSZXNvbHZlUHJvcGVydGllcy5qcyIpOwogbG9hZCgiUmVzb2x2ZVR5cGVEZWZzLmpz
Iik7Citsb2FkKCJSZXNvdXJjZVNlbWFudGljLmpzIik7CiBsb2FkKCJSZXR1cm4uanMiKTsKIGxv
YWQoIlJldHVybkNoZWNrZXIuanMiKTsKIGxvYWQoIlJldHVybkV4Y2VwdGlvbi5qcyIpOwogbG9h
ZCgiU2FtcGxlci5qcyIpOworbG9hZCgiU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpz
Iik7Citsb2FkKCJTdGFnZUluT3V0U2VtYW50aWMuanMiKTsKIGxvYWQoIlN0YW5kYXJkTGlicmFy
eS5qcyIpOwogbG9hZCgiU3RhdGVtZW50Q2xvbmVyLmpzIik7CiBsb2FkKCJTdHJ1Y3RMYXlvdXRC
dWlsZGVyLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9C
dWlsdEluU2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9CdWlsdElu
U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUzOTMzMjhjZmRlYmEwNGQ0ZTMxZTM3MTZhZDg5MTll
OTQxZDRkZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0J1aWx0SW5TZW1hbnRpYy5qcwpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEJ1aWx0SW5T
ZW1hbnRpYyBleHRlbmRzIFNlbWFudGljIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IC4uLmV4dHJhQXJndW1lbnRzKQorICAgIHsKKyAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAg
ICAgdGhpcy5fbmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuX2V4dHJhQXJndW1lbnRzID0gZXh0
cmFBcmd1bWVudHM7CisgICAgfQorCisgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1l
OyB9CisgICAgZ2V0IGV4dHJhQXJndW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fZXh0cmFBcmd1bWVu
dHM7IH0KKworICAgIGlzQWNjZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkKKyAgICB7CisgICAg
ICAgIGxldCByZXF1aXJlZFR5cGU7CisgICAgICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAg
ICAgIGNhc2UgIlNWX0luc3RhbmNlSUQiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJv
Z3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
U1ZfVmVydGV4SUQiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5z
aWNzLnVpbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiUFNJWkUiOgorICAg
ICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLmZsb2F0OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX1Bvc2l0aW9uIjoKKyAgICAgICAgICAgIHJl
cXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljc1sidmVjdG9yPGZsb2F0LCA0PiJdOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0lzRnJvbnRGYWNlIjoKKyAgICAgICAg
ICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy5ib29sOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgIlNWX1NhbXBsZUluZGV4IjoKKyAgICAgICAgICAgIHJlcXVp
cmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljcy51aW50OworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgIlNWX0lubmVyQ292ZXJhZ2UiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBl
ID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAiU1ZfVGFyZ2V0IjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50
cmluc2ljc1sidmVjdG9yPGZsb2F0LCA0PiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgIlNWX0RlcHRoIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50
cmluc2ljcy5mbG9hdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9Db3Zl
cmFnZSI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWlu
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9EaXNwYXRjaFRocmVhZElE
IjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dyYW0uaW50cmluc2ljc1sidmVjdG9y
PHVpbnQsIDM+Il07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfR3JvdXBJ
RCI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rv
cjx1aW50LCAzPiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlNWX0dyb3Vw
SW5kZXgiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVp
bnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfR3JvdXBUaHJlYWRJRCI6
CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3NbInZlY3Rvcjx1
aW50LCAzPiJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2VtYW50aWM6ICR7dGhpcy5uYW1lfWApOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHR5cGUuZXF1YWxzKHJlcXVpcmVkVHlwZSk7Cisg
ICAgfQorCisgICAgaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24sIHNoYWRlclR5
cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHNoYWRlclR5cGUpIHsKKyAgICAgICAgY2FzZSAi
dmVydGV4IjoKKyAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgICAgICBj
YXNlICJpbnB1dCI6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlICJTVl9JbnN0YW5jZUlEIjoKKyAgICAgICAgICAgICAgICBjYXNlICJT
Vl9WZXJ0ZXhJRCI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlICJvdXRwdXQiOgorICAgICAgICAgICAgICAg
IHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAiUFNJWkUiOgorICAg
ICAgICAgICAgICAgIGNhc2UgIlNWX1Bvc2l0aW9uIjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAg
ICAgICAgIGNhc2UgImlucHV0IjoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubmFtZSkg
eworICAgICAgICAgICAgICAgIGNhc2UgIlNWX0lzRnJvbnRGYWNlIjoKKyAgICAgICAgICAgICAg
ICBjYXNlICJTVl9TYW1wbGVJbmRleCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfSW5uZXJD
b3ZlcmFnZSI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlICJvdXRwdXQiOgorICAgICAgICAgICAgICAgIHN3
aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfVGFyZ2V0IjoKKyAg
ICAgICAgICAgICAgICBjYXNlICJTVl9EZXB0aCI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1Zf
Q292ZXJhZ2UiOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gIT0gImlucHV0IikKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgY2Fz
ZSAiU1ZfRGlzcGF0Y2hUaHJlYWRJRCI6CisgICAgICAgICAgICBjYXNlICJTVl9Hcm91cElEIjoK
KyAgICAgICAgICAgIGNhc2UgIlNWX0dyb3VwSW5kZXgiOgorICAgICAgICAgICAgY2FzZSAiU1Zf
R3JvdXBUaHJlYWRJRCI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzaGFkZSB0eXBl
OiAke3NoYWRlclR5cGV9YCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0b1N0cmluZygpCisg
ICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy5l
eHRyYUFyZ3VtZW50cykKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmV4dHJhQXJndW1lbnRz
LmpvaW4oIiIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcwppbmRleCA0ZTRkNjVm
MDkxMzgwNGY0ZDBlNzBjMDAyYmY2MzE0MDYwYjBlZTJlLi5iNGMwZGE3ODc3MzBhMWIzODgxMGM4
YjU5NDMxNzg0OTA5ZGRiM2UwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DYWxsRXhwcmVzc2lvbi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DYWxsRXhwcmVzc2lvbi5qcwpAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIENhbGxFeHByZXNz
aW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgTmF0aXZl
RnVuYyh0aGlzLm9yaWdpbiwgIm9wZXJhdG9yJltdIiwgdGhpcy5yZXN1bHRUeXBlLCBbCiAgICAg
ICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0aGlzLm9yaWdpbiwgbnVsbCwgYXJyYXlSZWZUeXBl
KSwKICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKHRoaXMub3JpZ2luLCBudWxsLCB1aW50
VHlwZSkKLSAgICAgICAgXSwgZmFsc2UsIG51bGwpOworICAgICAgICBdLCBmYWxzZSk7CiAKICAg
ICAgICAgYXJyYXlSZWZBY2Nlc3Nvci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpOwog
CkBAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNz
aW9uIHsKICAgICAgICAgICAgIGNvbnN0IGFycmF5VHlwZSA9IHRoaXMuYXJndW1lbnRUeXBlc1sw
XTsKICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwg
Im9wZXJhdG9yLmxlbmd0aCIsIHRoaXMucmVzdWx0VHlwZSwgWwogICAgICAgICAgICAgICAgIG5l
dyBGdW5jUGFyYW1ldGVyKHRoaXMub3JpZ2luLCBudWxsLCBhcnJheVR5cGUpCi0gICAgICAgICAg
ICBdLCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICBdLCBmYWxzZSk7CiAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKGFyZ3MsIG5vZGUpID0+IEVQdHIuYm94KGFycmF5VHlwZS5u
dW1FbGVtZW50c1ZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuYXJndW1lbnRUeXBlc1swXS5pc0FycmF5UmVmKSB7CkBAIC0xNTMsNyArMTUz
LDcgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAg
ICAgIGNvbnN0IG9wZXJhdG9yTGVuZ3RoID0gbmV3IE9wZXJhdG9yQXJyYXlSZWZMZW5ndGgoYXJy
YXlSZWZUeXBlLnRvU3RyaW5nKCksIGFkZHJlc3NTcGFjZSk7CiAgICAgICAgICAgICBjb25zdCBm
dW5jID0gbmV3IE5hdGl2ZUZ1bmModGhpcy5vcmlnaW4sICJvcGVyYXRvci5sZW5ndGgiLCB0aGlz
LnJlc3VsdFR5cGUsIFsKICAgICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0aGlzLm9y
aWdpbiwgbnVsbCwgYXJyYXlSZWZUeXBlKQotICAgICAgICAgICAgXSwgZmFsc2UsIG51bGwpOwor
ICAgICAgICAgICAgXSwgZmFsc2UpOwogICAgICAgICAgICAgb3BlcmF0b3JMZW5ndGguaW5zdGFu
dGlhdGVJbXBsZW1lbnRhdGlvbihmdW5jKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jOwogICAg
ICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0No
ZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4
IDE0ZjlkMmI0ZjdhMmViYjVkMjEwMzY2NTMyNzdiOTVhNDBkODZkMmQuLjIzZTg3OGYyZWNkMzgx
ODAyYWVmZDlkYWNlMTBmZGFlMGY0ZWMyNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tlci5qcwpAQCAtMzIsMTUgKzMyLDE2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKICAgICAgICAgdGhpcy5fY3VycmVudFN0YXRlbWVudCA9IG51bGw7CiAgICAgICAg
IHRoaXMuX3ZlcnRleEVudHJ5UG9pbnRzID0gbmV3IFNldCgpOwogICAgICAgICB0aGlzLl9mcmFn
bWVudEVudHJ5UG9pbnRzID0gbmV3IFNldCgpOworICAgICAgICB0aGlzLl9jb21wdXRlRW50cnlQ
b2ludHMgPSBuZXcgU2V0KCk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRQcm9ncmFtKG5vZGUp
CiAgICAgewogICAgICAgICBsZXQgZG9TdGF0ZW1lbnQgPSBzdGF0ZW1lbnQgPT4gewogICAgICAg
ICAgICAgdGhpcy5fY3VycmVudFN0YXRlbWVudCA9IHN0YXRlbWVudDsKICAgICAgICAgICAgIHN0
YXRlbWVudC52aXNpdCh0aGlzKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBmb3Ig
KGxldCB0eXBlIG9mIG5vZGUudHlwZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICh0eXBl
IGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb25zdGl0dWVu
dFR5cGUgb2YgdHlwZSkKQEAgLTU5LDEwICs2MCwxOTcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRz
IFZpc2l0b3IgewogICAgICAgICB9CiAgICAgfQogCisgICAgX2NoZWNrU2VtYW50aWNzKG5vZGUp
CisgICAgeworICAgICAgICBjbGFzcyBJdGVtIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHR5
cGUsIHNlbWFudGljKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChub2RlLnNo
YWRlclR5cGUgIT0gInRlc3QiICYmICFzZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiQW4gZW50cnktcG9p
bnQgaW5wdXQvb3V0cHV0IGV4aXN0cyB3aGljaCBkb2Vzbid0IGhhdmUgYSBzZW1hbnRpYyIpOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICAgICAgICAgIHRoaXMu
X3NlbWFudGljID0gc2VtYW50aWM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCB0
eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgICAgICAgICAgZ2V0IHNlbWFudGljKCkg
eyByZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KKyAgICAgICAgfQorCisgICAgICAgIGNsYXNzIEdh
dGhlcmVyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihjdXJyZW50
U2VtYW50aWMgPSBudWxsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN1cGVyKCk7
CisgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlbWFudGljID0gY3VycmVudFNlbWFudGlj
OworICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IFtdOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXNldChjdXJyZW50U2VtYW50aWMgPSBudWxsKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbWFudGljID0gY3VycmVudFNlbWFudGljOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXQgY3VycmVudFNlbWFudGljKHZhbHVlKSB7
IHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IHZhbHVlOyB9CisgICAgICAgICAgICBnZXQgY3VycmVu
dFNlbWFudGljKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFNlbWFudGljOyB9CisgICAgICAgICAg
ICBnZXQgcmVzdWx0KCkgeyByZXR1cm4gdGhpcy5fcmVzdWx0OyB9CisKKyAgICAgICAgICAgIHZp
c2l0RW51bVR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJl
c3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0VmVjdG9yVHlwZShub2RlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5j
dXJyZW50U2VtYW50aWMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRNYXRy
aXhUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQu
cHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2aXNpdE5hdGl2ZVR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVu
dFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0U3RydWN0VHlw
ZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRT
ZW1hbnRpYyAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJv
cihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTdHJ1Y3RzIGluc2lkZSBlbnRyeSBwb2ludCBz
aWduYXR1cmVzIGNhbid0IGhhdmUgc2VtYW50aWNzLiIpOworICAgICAgICAgICAgICAgIGZvciAo
bGV0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3Vy
cmVudFNlbWFudGljID0gZmllbGQuc2VtYW50aWM7CisgICAgICAgICAgICAgICAgICAgIGZpZWxk
LnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2aXNpdFR5cGVSZWYobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpc2l0UHRyVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMu
cmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRBcnJheVJlZlR5cGUobm9kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRo
aXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0
QXJyYXlUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXN1
bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSBub2RlLnNlbWFudGlj
OworICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGxldCBpbnB1dEdhdGhlcmVyID0gbmV3IEdhdGhlcmVyKCk7
CisgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFtZXRlcnMpIHsKKyAgICAg
ICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsKKyAgICAgICAgICAgIHBhcmFtZXRlci52aXNp
dChpbnB1dEdhdGhlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBsZXQgb3V0cHV0R2F0aGVyZXIg
PSBuZXcgR2F0aGVyZXIobm9kZS5zZW1hbnRpYyk7CisgICAgICAgIG5vZGUucmV0dXJuVHlwZS52
aXNpdChvdXRwdXRHYXRoZXJlcik7CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVT
ZW1hbnRpY3MoaXRlbXMpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgZmFzdGVy
IHRoYW4gTyhuXjIpCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgaXRlbXMu
bGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLnNlbWFudGlj
ICYmIGl0ZW1zW2ldLnNlbWFudGljLmVxdWFsVG9PdGhlclNlbWFudGljKGl0ZW1zW2pdLnNlbWFu
dGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUu
b3JpZ2luLm9yaWdpblN0cmluZywgYER1cGxpY2F0ZSBzZW1hbnRpYyBmb3VuZCBpbiBlbnRyeSBw
b2ludDogJHtpdGVtc1tpXS5zZW1hbnRpY31gKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaW5wdXRH
YXRoZXJlci5yZXN1bHQpOworICAgICAgICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRH
YXRoZXJlci5yZXN1bHQpOworCisgICAgICAgIGxldCBwcm9ncmFtID0gdGhpcy5fcHJvZ3JhbTsK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tTZW1hbnRpY1R5cGVzKGl0ZW1zKSB7CisgICAgICAgICAg
ICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc2Vt
YW50aWMgJiYgIWl0ZW0uc2VtYW50aWMuaXNBY2NlcHRhYmxlVHlwZShpdGVtLnR5cGUsIHByb2dy
YW0pKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsIGBTZW1hbnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFi
bGUgdHlwZSAke2l0ZW0udHlwZX1gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjaGVja1NlbWFudGljVHlwZXMoaW5wdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAgICBjaGVj
a1NlbWFudGljVHlwZXMob3V0cHV0R2F0aGVyZXIucmVzdWx0KTsKKworICAgICAgICBmdW5jdGlv
biBjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZShpdGVtcywgZGlyZWN0aW9uKSB7CisgICAgICAg
ICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW0u
c2VtYW50aWMgJiYgIWl0ZW0uc2VtYW50aWMuaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJl
Y3Rpb24sIG5vZGUuc2hhZGVyVHlwZSkpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgYFNlbWFudGljICR7aXRlbS5zZW1h
bnRpY30gaXMgdW5uYWNjZXB0YWJsZSBhcyBhbiAke2RpcmVjdGlvbn0gb2Ygc2hhZGVyIHR5cGUg
JHtub2RlLnNoYWRlclR5cGV9YCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUoaW5wdXRHYXRoZXJlci5yZXN1bHQsICJpbnB1dCIp
OworICAgICAgICBjaGVja1NlbWFudGljRm9yU2hhZGVyVHlwZShvdXRwdXRHYXRoZXJlci5yZXN1
bHQsICJvdXRwdXQiKTsKKworICAgICAgICBjbGFzcyBQT0RDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CisgICAgICAgICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
c2l0QXJyYXlUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGUuZWxlbWVudFR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpc2l0VmVjdG9yVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdE1hdHJpeFR5
cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuaXNOdW1iZXI7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZpc2l0UHRyVHlwZShub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmlzaXRBcnJheVJlZlR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0U3RydWN0VHlw
ZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIG5vZGUuZmllbGRzKQorICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgZmllbGQudmlzaXQodGhpcyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmlzaXRUeXBlUmVmKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGUudHlwZS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBmdW5jdGlvbiBjaGVja1BPRERhdGEoaXRlbXMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGl0
ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGl0ZW0udHlwZSBpbnN0YW5jZW9m
IFB0clR5cGUpIHx8IChpdGVtLnR5cGUgaW5zdGFuY2VvZiBBcnJheVJlZlR5cGUpIHx8IChpdGVt
LnR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
aXRlbS50eXBlLmVsZW1lbnRUeXBlLnZpc2l0KG5ldyBQT0RDaGVja2VyKCkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiQnVmZmVyIGF0dGFjaGVkIHRvIGVudHJ5IHBvaW50IG5lZWRzIHRvIG9ubHkgY29udGFp
biBQT0QgdHlwZXMiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2hlY2tQT0REYXRhKGlucHV0R2F0aGVyZXIucmVzdWx0KTsKKyAgICAgICAg
Y2hlY2tQT0REYXRhKG91dHB1dEdhdGhlcmVyLnJlc3VsdCk7CisgICAgfQorCiAgICAgX2NoZWNr
U2hhZGVyVHlwZShub2RlKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFJlbGF4IHRoZXNlIGNo
ZWNrcyBvbmNlIHdlIGhhdmUgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgdGV4dHVyZXMgYW5kIHNh
bXBsZXJzLgotICAgICAgICBsZXQgc2hhZGVyRnVuYyA9IG5vZGU7CiAgICAgICAgIHN3aXRjaCAo
bm9kZS5zaGFkZXJUeXBlKSB7CiAgICAgICAgIGNhc2UgInZlcnRleCI6CiAgICAgICAgICAgICBp
ZiAodGhpcy5fdmVydGV4RW50cnlQb2ludHMuaGFzKG5vZGUubmFtZSkpCkBAIC03NCw2ICsyNjIs
MTUgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBm
cmFnbWVudCBlbnRyeSBwb2ludCBuYW1lICIgKyBub2RlLm5hbWUpOwogICAgICAgICAgICAgdGhp
cy5fZnJhZ21lbnRFbnRyeVBvaW50cy5hZGQobm9kZS5uYW1lKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJjb21wdXRlIjoKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wdXRl
RW50cnlQb2ludHMuaGFzKG5vZGUubmFtZSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRHVwbGljYXRlIGNvbXB1dGUgZW50
cnkgcG9pbnQgbmFtZSAiICsgbm9kZS5uYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVF
bnRyeVBvaW50cy5hZGQobm9kZS5uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJ0ZXN0IjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgc2hhZGVyIHR5cGU6ICIgKyBub2RlLnNoYWRlclR5
cGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04NCw3ICsyODEsNyBAQCBjbGFzcyBDaGVja2Vy
IGV4dGVuZHMgVmlzaXRvciB7CiAKICAgICAgICAgaWYgKCFmdW5jLm5hbWUuc3RhcnRzV2l0aCgi
b3BlcmF0b3IiKSkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIG9wZXJhdG9yIG92
ZXJsb2FkIG5hbWU6ICIgKyBmdW5jLm5hbWUpOwotICAgICAgICAKKwogICAgICAgICBsZXQgY2hl
Y2tHZXR0ZXIgPSAoa2luZCkgPT4gewogICAgICAgICAgICAgbGV0IG51bUV4cGVjdGVkUGFyYW1l
dGVycyA9IGtpbmQgPT0gImluZGV4IiA/IDIgOiAxOwogICAgICAgICAgICAgaWYgKGZ1bmMucGFy
YW1ldGVycy5sZW5ndGggIT0gbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzKQpAQCAtOTIsNyArMjg5LDcg
QEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgaWYgKGZ1bmMu
cGFyYW1ldGVyVHlwZXNbMF0udW5pZnlOb2RlLmlzUHRyKQogICAgICAgICAgICAgICAgIHRocm93
IG5ldyBXVHlwZUVycm9yKGZ1bmMub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCBoYXZlIGdl
dHRlciBmb3IgcG9pbnRlciB0eXBlOiAiICsgZnVuYy5wYXJhbWV0ZXJUeXBlc1swXSk7CiAgICAg
ICAgIH07Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBjaGVja1NldHRlciA9IChraW5kKSA9PiB7
CiAgICAgICAgICAgICBsZXQgbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzID0ga2luZCA9PSAiaW5kZXgi
ID8gMyA6IDI7CiAgICAgICAgICAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBudW1F
eHBlY3RlZFBhcmFtZXRlcnMpCkBAIC0xMTQsNyArMzExLDcgQEAgY2xhc3MgQ2hlY2tlciBleHRl
bmRzIFZpc2l0b3IgewogICAgICAgICAgICAgaWYgKCFyZXN1bHRUeXBlLmVxdWFscyh2YWx1ZVR5
cGUpKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKGZ1bmMub3JpZ2luLm9y
aWdpblN0cmluZywgIlNldHRlciBhbmQgZ2V0dGVyIG11c3QgYWdyZWUgb24gdmFsdWUgdHlwZSAo
Z2V0dGVyIGF0ICIgKyBvdmVybG9hZC5mdW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcgKyAiIHNheXMg
IiArIHJlc3VsdFR5cGUgKyAiIHdoaWxlIHRoaXMgc2V0dGVyIHNheXMgIiArIHZhbHVlVHlwZSAr
ICIpIik7CiAgICAgICAgIH07Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBjaGVja0FuZGVyID0g
KGtpbmQpID0+IHsKICAgICAgICAgICAgIGxldCBudW1FeHBlY3RlZFBhcmFtZXRlcnMgPSBraW5k
ID09ICJpbmRleCIgPyAyIDogMTsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlcnMubGVu
Z3RoICE9IG51bUV4cGVjdGVkUGFyYW1ldGVycykKQEAgLTEyNCw3ICszMjEsNyBAQCBjbGFzcyBD
aGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICBpZiAoIWZ1bmMucGFyYW1ldGVy
VHlwZXNbMF0udW5pZnlOb2RlLmlzUmVmKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKGZ1bmMub3JpZ2luLm9yaWdpblN0cmluZywgIlBhcmFtZXRlciB0byBhbmRlciBpcyBu
b3QgYSByZWZlcmVuY2U6ICIgKyBmdW5jLnBhcmFtZXRlclR5cGVzWzBdKTsKICAgICAgICAgfTsK
LSAgICAgICAgCisKICAgICAgICAgc3dpdGNoIChmdW5jLm5hbWUpIHsKICAgICAgICAgY2FzZSAi
b3BlcmF0b3IgY2FzdCI6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4OSw0NCArMzg2LDQ2IEBA
IGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiUGFyc2VyIGFjY2VwdGVkIHVucmVjb2duaXplZCBvcGVyYXRvcjogIiArIGZ1bmMubmFt
ZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2aXNpdEZ1bmNEZWYobm9kZSkKICAg
ICB7Ci0gICAgICAgIGlmIChub2RlLnNoYWRlclR5cGUpCisgICAgICAgIGlmIChub2RlLnNoYWRl
clR5cGUpIHsKICAgICAgICAgICAgIHRoaXMuX2NoZWNrU2hhZGVyVHlwZShub2RlKTsKKyAgICAg
ICAgICAgIHRoaXMuX2NoZWNrU2VtYW50aWNzKG5vZGUpOworICAgICAgICB9CiAgICAgICAgIHRo
aXMuX2NoZWNrT3BlcmF0b3JPdmVybG9hZChub2RlLCBuYW1lID0+IHRoaXMuX3Byb2dyYW0uZnVu
Y3Rpb25zLmdldChuYW1lKSk7CiAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKICAgICB9
Ci0gICAgCisKICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmJh
c2VUeXBlLnZpc2l0KHRoaXMpOwotICAgICAgICAKKwogICAgICAgICBsZXQgYmFzZVR5cGUgPSBu
b2RlLmJhc2VUeXBlLnVuaWZ5Tm9kZTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFiYXNlVHlw
ZS5pc0ludCkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9y
aWdpblN0cmluZywgIkJhc2UgdHlwZSBvZiBlbnVtIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgbm9k
ZS5iYXNlVHlwZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IG1lbWJlciBvZiBub2Rl
Lm1lbWJlcnMpIHsKICAgICAgICAgICAgIGlmICghbWVtYmVyLnZhbHVlKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxldCBtZW1iZXJUeXBl
ID0gbWVtYmVyLnZhbHVlLnZpc2l0KHRoaXMpOwogICAgICAgICAgICAgaWYgKCFiYXNlVHlwZS5l
cXVhbHNXaXRoQ29tbWl0KG1lbWJlclR5cGUpKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG1lbWJlci5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiVHlwZSBvZiBlbnVtIG1lbWJl
ciAiICsgbWVtYmVyLnZhbHVlLm5hbWUgKyAiIGRvZXMgbm90IHBhdGNoIGVudW0gYmFzZSB0eXBl
IChtZW1iZXIgdHlwZSBpcyAiICsgbWVtYmVyVHlwZSArICIsIGVudW0gYmFzZSB0eXBlIGlzICIg
KyBub2RlLmJhc2VUeXBlICsgIikiKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBs
ZXQgbmV4dFZhbHVlID0gYmFzZVR5cGUuZGVmYXVsdFZhbHVlOwogICAgICAgICBmb3IgKGxldCBt
ZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAgICBpZiAobWVtYmVyLnZhbHVlKSB7
CiAgICAgICAgICAgICAgICAgbmV4dFZhbHVlID0gYmFzZVR5cGUuc3VjY2Vzc29yVmFsdWUobWVt
YmVyLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSk7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
bWVtYmVyLnZhbHVlID0gYmFzZVR5cGUuY3JlYXRlTGl0ZXJhbChtZW1iZXIub3JpZ2luLCBuZXh0
VmFsdWUpOwogICAgICAgICAgICAgbmV4dFZhbHVlID0gYmFzZVR5cGUuc3VjY2Vzc29yVmFsdWUo
bmV4dFZhbHVlKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgbWVtYmVyQXJy
YXkgPSBBcnJheS5mcm9tKG5vZGUubWVtYmVycyk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgbWVtYmVyQXJyYXkubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBtZW1iZXIgPSBt
ZW1iZXJBcnJheVtpXTsKQEAgLTIzNiw3ICs0MzUsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG90aGVy
TWVtYmVyLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZW51bSBtZW1iZXIgdmFsdWUg
KCIgKyBtZW1iZXIubmFtZSArICIgaGFzICIgKyBtZW1iZXIudmFsdWUgKyAiIHdoaWxlICIgKyBv
dGhlck1lbWJlci5uYW1lICsgIiBoYXMgIiArIG90aGVyTWVtYmVyLnZhbHVlICsgIikiKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgZm91bmRaZXJv
ID0gZmFsc2U7CiAgICAgICAgIGZvciAobGV0IG1lbWJlciBvZiBub2RlLm1lbWJlcnMpIHsKICAg
ICAgICAgICAgIGlmIChiYXNlVHlwZS52YWx1ZXNFcXVhbChtZW1iZXIudmFsdWUudW5pZnlOb2Rl
LnZhbHVlRm9yU2VsZWN0ZWRUeXBlLCBiYXNlVHlwZS5kZWZhdWx0VmFsdWUpKSB7CkBAIC0yNDcs
NyArNDQ2LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAo
IWZvdW5kWmVybykKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2lu
Lm9yaWdpblN0cmluZywgIkVudW0gZG9lcyBub3QgaGF2ZSBhIG1lbWJlciB3aXRoIHRoZSB2YWx1
ZSB6ZXJvIik7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewog
ICAgICAgICBpZiAoIW5vZGUudHlwZSkKQEAgLTMwNiwyMCArNTA1LDIwIEBAIGNsYXNzIENoZWNr
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKG5vZGUubnVtQ29sdW1uc1ZhbHVlICE9
IDIgJiYgbm9kZS5udW1Db2x1bW5zVmFsdWUgIT0gMyAmJiBub2RlLm51bUNvbHVtbnNWYWx1ZSAh
PSA0KQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoYCR7bm9kZS50b1N0cmluZygp
fTogJHtub2RlLm51bUNvbHVtbnNWYWx1ZX0gaXMgbm90IDIsIDMsIG9yIDQuYCk7CiAgICAgfQot
ICAgIAorCiAgICAgdmlzaXRBcnJheVR5cGUobm9kZSkKICAgICB7CiAgICAgICAgIG5vZGUuZWxl
bWVudFR5cGUudmlzaXQodGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5udW1F
bGVtZW50cy5pc0NvbnN0ZXhwcikKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5v
ZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkFycmF5IGxlbmd0aCBtdXN0IGJlIGNvbnN0ZXhwciIp
OwotICAgICAgICAKKwogICAgICAgICBsZXQgdHlwZSA9IG5vZGUubnVtRWxlbWVudHMudmlzaXQo
dGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdHlwZS5lcXVhbHNXaXRoQ29tbWl0KHRo
aXMuX3Byb2dyYW0uaW50cmluc2ljcy51aW50KSkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkFycmF5IGxlbmd0aCBtdXN0IGJlIGEg
dWludCIpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0VmFyaWFibGVEZWNsKG5vZGUpCiAgICAg
ewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CkBAIC0zMzAsNyArNTI5LDcgQEAgY2xh
c3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgbWlzbWF0Y2ggaW4gdmFy
aWFibGUgaW5pdGlhbGl6YXRpb246ICIgKyBsaHNUeXBlICsgIiB2ZXJzdXMgIiArIHJoc1R5cGUp
OwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpCiAg
ICAgewogICAgICAgICBsZXQgbGhzVHlwZSA9IG5vZGUubGhzLnZpc2l0KHRoaXMpOwpAQCAtMzQy
LDEyICs1NDEsMTIgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBu
b2RlLnR5cGUgPSBsaHNUeXBlOwogICAgICAgICByZXR1cm4gbGhzVHlwZTsKICAgICB9Ci0gICAg
CisKICAgICB2aXNpdElkZW50aXR5RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5vZGUudGFyZ2V0LnZpc2l0KHRoaXMpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0IGxoc1R5cGUg
PSBub2RlLmxWYWx1ZS52aXNpdCh0aGlzKTsKQEAgLTM2MiwxMyArNTYxLDEzIEBAIGNsYXNzIENo
ZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgV1R5cGVFcnJv
cihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHJlYWQtbW9kaWZ5
LXdyaXRlOiAiICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyBuZXdWYWx1ZVR5cGUpOwogICAgICAg
ICByZXR1cm4gbm9kZS5yZXN1bHRFeHAudmlzaXQodGhpcyk7CiAgICAgfQotICAgIAorCiAgICAg
dmlzaXRBbm9ueW1vdXNWYXJpYWJsZShub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnR5
cGUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFub255bW91cyB2YXJpYWJsZSBtdXN0
IGtub3cgdHlwZSBiZWZvcmUgZmlyc3QgYXBwZWFyYW5jZSIpOwogICAgIH0KLSAgICAKKwogICAg
IHZpc2l0RGVyZWZlcmVuY2VFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgdHlw
ZSA9IG5vZGUucHRyLnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKQEAgLTM4MCwxNiArNTc5LDE2IEBA
IGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiTnVsbCBhZGRyZXNzIHNwYWNlIGluIHR5cGU6ICIgKyB0eXBlKTsKICAgICAgICAgcmV0
dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE1ha2VQdHJFeHByZXNzaW9u
KG5vZGUpCiAgICAgewogICAgICAgICBsZXQgZWxlbWVudFR5cGUgPSBub2RlLmxWYWx1ZS52aXNp
dCh0aGlzKS51bmlmeU5vZGU7CiAgICAgICAgIGlmICghbm9kZS5sVmFsdWUuaXNMVmFsdWUpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcs
ICJPcGVyYW5kIHRvICYgaXMgbm90IGFuIExWYWx1ZTogIiArIG5vZGUubFZhbHVlICsgbm9kZS5s
VmFsdWUubm90TFZhbHVlUmVhc29uU3RyaW5nKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJu
IG5ldyBQdHJUeXBlKG5vZGUub3JpZ2luLCBub2RlLmxWYWx1ZS5hZGRyZXNzU3BhY2UsIGVsZW1l
bnRUeXBlKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE1ha2VBcnJheVJlZkV4cHJlc3Npb24o
bm9kZSkKICAgICB7CiAgICAgICAgIGxldCBlbGVtZW50VHlwZSA9IG5vZGUubFZhbHVlLnZpc2l0
KHRoaXMpLnVuaWZ5Tm9kZTsKQEAgLTM5NywzNyArNTk2LDM3IEBAIGNsYXNzIENoZWNrZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIG5vZGUuYmVjb21lKG5ldyBDb252ZXJ0UHRyVG9B
cnJheVJlZkV4cHJlc3Npb24obm9kZS5vcmlnaW4sIG5vZGUubFZhbHVlKSk7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IEFycmF5UmVmVHlwZShub2RlLm9yaWdpbiwgZWxlbWVudFR5cGUuYWRkcmVz
c1NwYWNlLCBlbGVtZW50VHlwZS5lbGVtZW50VHlwZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgaWYgKCFub2RlLmxWYWx1ZS5pc0xWYWx1ZSkKICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIk9wZXJhbmQgdG8gQCBpcyBu
b3QgYW4gTFZhbHVlOiAiICsgbm9kZS5sVmFsdWUgKyBub2RlLmxWYWx1ZS5ub3RMVmFsdWVSZWFz
b25TdHJpbmcpOwotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudFR5cGUuaXNBcnJheSkg
ewogICAgICAgICAgICAgbm9kZS5udW1FbGVtZW50cyA9IGVsZW1lbnRUeXBlLm51bUVsZW1lbnRz
OwogICAgICAgICAgICAgZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZS5lbGVtZW50VHlwZTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBub2RlLm51bUVsZW1lbnRzID0gVWludExpdGVyYWwu
d2l0aFR5cGUobm9kZS5vcmlnaW4sIDEsIHRoaXMuX3Byb2dyYW0uaW50cmluc2ljcy51aW50KTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgQXJyYXlSZWZUeXBlKG5vZGUub3Jp
Z2luLCBub2RlLmxWYWx1ZS5hZGRyZXNzU3BhY2UsIGVsZW1lbnRUeXBlKTsKICAgICB9Ci0gICAg
CisKICAgICB2aXNpdENvbnZlcnRUb0FycmF5UmVmRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbm90IGV4aXN0IHlldC4iKTsKICAgICB9Ci0g
ICAgCisKICAgICBfZmluaXNoVmlzaXRpbmdQcm9wZXJ0eUFjY2Vzcyhub2RlLCBiYXNlVHlwZSwg
ZXh0cmFBcmdzLCBleHRyYUFyZ1R5cGVzKQogICAgIHsKICAgICAgICAgYmFzZVR5cGUgPSBiYXNl
VHlwZS52aXNpdChuZXcgQXV0b1dyYXBwZXIoKSkKICAgICAgICAgbm9kZS5iYXNlVHlwZSA9IGJh
c2VUeXBlOwotICAgICAgICAKKwogICAgICAgICAvLyBTdWNoIGEgdHlwZSBtdXN0IGV4aXN0LiBU
aGlzIG1heSB0aHJvdyBpZiBpdCBkb2Vzbid0LgogICAgICAgICBsZXQgdHlwZUZvckFuZCA9IGJh
c2VUeXBlLmFyZ3VtZW50VHlwZUZvckFuZE92ZXJsb2FkKG5vZGUub3JpZ2luKTsKICAgICAgICAg
aWYgKCF0eXBlRm9yQW5kKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZ2V0
IHR5cGVGb3JBbmQiKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGVycm9yRm9yR2V0OwogICAg
ICAgICBsZXQgZXJyb3JGb3JBbmQ7Ci0gICAgICAgIAorCiAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICBsZXQgcmVzdWx0ID0gQ2FsbEV4cHJlc3Npb24ucmVzb2x2ZSgKICAgICAgICAgICAgICAg
ICBub2RlLm9yaWdpbiwgbm9kZS5wb3NzaWJsZUdldE92ZXJsb2FkcywKQEAgLTQzOSwxMCArNjM4
LDEwIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0
aHJvdyBlOwogICAgICAgICAgICAgZXJyb3JGb3JHZXQgPSBlOwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBsZXQgYmFzZUZvckFuZCA9IGJhc2VUeXBl
LmFyZ3VtZW50Rm9yQW5kT3ZlcmxvYWQobm9kZS5vcmlnaW4sIG5vZGUuYmFzZSk7Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IENhbGxFeHByZXNzaW9uLnJlc29sdmUo
CiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucG9zc2libGVBbmRPdmVybG9hZHMs
CiAgICAgICAgICAgICAgICAgbm9kZS5hbmRGdW5jTmFtZSwgW2Jhc2VGb3JBbmQsIC4uLmV4dHJh
QXJnc10sIFt0eXBlRm9yQW5kLCAuLi5leHRyYUFyZ1R5cGVzXSwKQEAgLTQ1NCw3ICs2NTMsNyBA
QCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgdGhyb3cg
ZTsKICAgICAgICAgICAgIGVycm9yRm9yQW5kID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBpZiAoIW5vZGUucmVzdWx0VHlwZUZvckdldCAmJiAhbm9kZS5yZXN1bHRUeXBlRm9y
QW5kKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigKICAgICAgICAgICAgICAg
ICBub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsCkBAIC00NjMsMTEgKzY2MiwxMSBAQCBjbGFzcyBD
aGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgImFuZCB0cmllZCBieS1w
b2ludGVyOlxuIiArCiAgICAgICAgICAgICAgICAgZXJyb3JGb3JBbmQudHlwZUVycm9yTWVzc2Fn
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKG5vZGUucmVzdWx0VHlwZUZv
ckdldCAmJiBub2RlLnJlc3VsdFR5cGVGb3JBbmQKICAgICAgICAgICAgICYmICFub2RlLnJlc3Vs
dFR5cGVGb3JHZXQuZXF1YWxzKG5vZGUucmVzdWx0VHlwZUZvckFuZCkpCiAgICAgICAgICAgICB0
aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJSZXN1bHQgdHlw
ZSByZXNvbHZlZCBieS12YWx1ZSAoIiArIG5vZGUucmVzdWx0VHlwZUZvckdldCArICIpIGRvZXMg
bm90IG1hdGNoIHJlc3VsdCB0eXBlIHJlc29sdmVkIGJ5LXBvaW50ZXIgKCIgKyBub2RlLnJlc3Vs
dFR5cGVGb3JBbmQgKyAiKSIpOwotICAgICAgICAKKwogICAgICAgICB0cnkgewogICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9IENhbGxFeHByZXNzaW9uLnJlc29sdmUoCiAgICAgICAgICAgICAgICAg
bm9kZS5vcmlnaW4sIG5vZGUucG9zc2libGVTZXRPdmVybG9hZHMsCkBAIC00ODAsNyArNjc5LDcg
QEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93
IGU7CiAgICAgICAgICAgICBub2RlLmVycm9yRm9yU2V0ID0gZTsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICAvLyBPSywgbm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBh
biBsdmFsdWUuIFdlIGFyZSBhbiBsdmFsdWUgaWYgd2UgY2FuIGJlIGFzc2lnbmVkIHRvLiBXZSBj
YW4KICAgICAgICAgLy8gYmUgYXNzaWduZWQgdG8gaWYgd2UgaGF2ZSBhbiBhbmRlciBvciBzZXR0
ZXIuIEJ1dCBpdCdzIHdlaXJkZXIgdGhhbiB0aGF0LiBXZSBhbHNvIG5lZWQgdGhlIGJhc2UgdG8g
YmUKICAgICAgICAgLy8gYW4gbHZhbHVlLCBleGNlcHQgdW5sZXNzIHRoZSBiYXNlIGlzIGFuIGFy
cmF5IHJlZmVyZW5jZS4KQEAgLTQ5OCwzMSArNjk3LDMxIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgIG5vZGUuaXNMVmFsdWUgPSB0cnVlOwogICAgICAgICAg
ICAgbm9kZS5hZGRyZXNzU3BhY2UgPSBub2RlLmJhc2UuaXNMVmFsdWUgPyBub2RlLmJhc2UuYWRk
cmVzc1NwYWNlIDogYmFzZVR5cGUuYWRkcmVzc1NwYWNlOwogICAgICAgICB9Ci0gICAgICAgIAor
CiAgICAgICAgIHJldHVybiBub2RlLnJlc3VsdFR5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlz
aXREb3RFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgc3RydWN0VHlwZSA9IG5v
ZGUuc3RydWN0LnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zp
bmlzaFZpc2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgc3RydWN0VHlwZSwgW10sIFtdKTsKICAg
ICB9Ci0gICAgCisKICAgICB2aXNpdEluZGV4RXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAg
ICAgbGV0IGFycmF5VHlwZSA9IG5vZGUuYXJyYXkudmlzaXQodGhpcykudW5pZnlOb2RlOwogICAg
ICAgICBsZXQgaW5kZXhUeXBlID0gbm9kZS5pbmRleC52aXNpdCh0aGlzKTsKLSAgICAgICAgCisK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFZpc2l0aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwg
YXJyYXlUeXBlLCBbbm9kZS5pbmRleF0sIFtpbmRleFR5cGVdKTsKICAgICB9Ci0gICAgCisKICAg
ICB2aXNpdFZhcmlhYmxlUmVmKG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUudmFyaWFi
bGUudHlwZSkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVmFyaWFibGUgaGFzIG5vIHR5
cGU6ICIgKyBub2RlLnZhcmlhYmxlKTsKICAgICAgICAgcmV0dXJuIG5vZGUudmFyaWFibGUudHlw
ZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdFJldHVybihub2RlKQogICAgIHsKICAgICAgICAg
aWYgKG5vZGUudmFsdWUpIHsKQEAgLTUzMywyNiArNzMyLDI2IEBAIGNsYXNzIENoZWNrZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJUcnlpbmcgdG8gcmV0dXJuICIgKyByZXN1bHRUeXBlICsg
IiBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAiICsgbm9kZS5mdW5jLnJldHVyblR5cGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICgh
bm9kZS5mdW5jLnJldHVyblR5cGUuZXF1YWxzV2l0aENvbW1pdCh0aGlzLl9wcm9ncmFtLmludHJp
bnNpY3Mudm9pZCkpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJOb24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIik7
CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRHZW5lcmljTGl0ZXJhbChub2RlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdE51bGxMaXRl
cmFsKG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS50eXBlOwogICAgIH0KLSAgICAK
KwogICAgIHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9wcm9ncmFtLmludHJpbnNpY3MuYm9vbDsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdEVudW1M
aXRlcmFsKG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS5tZW1iZXIuZW51bVR5cGU7
CkBAIC02MTQsMTQgKzgxMywxNCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgdmlzaXRTd2l0Y2hTdGF0ZW1lbnQobm9kZSkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0g
bm9kZS52YWx1ZS52aXNpdCh0aGlzKS5jb21taXQoKTsKLSAgICAgICAgCisKICAgICAgICAgaWYg
KCF0eXBlLnVuaWZ5Tm9kZS5pc0ludCAmJiAhKHR5cGUudW5pZnlOb2RlIGluc3RhbmNlb2YgRW51
bVR5cGUpKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCAiQ2Fubm90IHN3aXRjaCBvbiBub24taW50ZWdlci9ub24tZW51bSB0eXBlOiAi
ICsgdHlwZSk7CiAKICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKLSAgICAgICAgCisKICAgICAg
ICAgbGV0IGhhc0RlZmF1bHQgPSBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQg
c3dpdGNoQ2FzZSBvZiBub2RlLnN3aXRjaENhc2VzKSB7CiAgICAgICAgICAgICBzd2l0Y2hDYXNl
LmJvZHkudmlzaXQodGhpcyk7CiAKQEAgLTYyOSwyNiArODI4LDI2IEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICBoYXNEZWZhdWx0ID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAg
ICAgICAgICAgICBpZiAoIXN3aXRjaENhc2UudmFsdWUuaXNDb25zdGV4cHIpCiAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc3dpdGNoQ2FzZS5vcmlnaW4ub3JpZ2luU3RyaW5n
LCAiU3dpdGNoIGNhc2Ugbm90IGNvbnN0ZXhwcjogIiArIHN3aXRjaENhc2UudmFsdWUpOwotICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIGxldCBjYXNlVHlwZSA9IHN3aXRjaENhc2UudmFsdWUu
dmlzaXQodGhpcyk7CiAgICAgICAgICAgICBpZiAoIXR5cGUuZXF1YWxzV2l0aENvbW1pdChjYXNl
VHlwZSkpCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc3dpdGNoQ2FzZS5v
cmlnaW4ub3JpZ2luU3RyaW5nLCAiU3dpdGNoIGNhc2UgdHlwZSBkb2VzIG5vdCBtYXRjaCBzd2l0
Y2ggdmFsdWUgdHlwZSAoY2FzZSB0eXBlIGlzICIgKyBjYXNlVHlwZSArICIgYnV0IHN3aXRjaCB2
YWx1ZSB0eXBlIGlzICIgKyB0eXBlICsgIikiKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuc3dpdGNoQ2FzZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIGxldCBmaXJzdENhc2UgPSBub2RlLnN3aXRjaENhc2VzW2ldOwogICAgICAg
ICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbm9kZS5zd2l0Y2hDYXNlcy5sZW5ndGg7ICsr
aikgewogICAgICAgICAgICAgICAgIGxldCBzZWNvbmRDYXNlID0gbm9kZS5zd2l0Y2hDYXNlc1tq
XTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENhc2UuaXNE
ZWZhdWx0ICE9IHNlY29uZENhc2UuaXNEZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENhc2Uu
aXNEZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzZWNv
bmRDYXNlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZGVmYXVsdCBjYXNlIGluIHN3
aXRjaCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGxl
dCB2YWx1ZXNFcXVhbCA9IHR5cGUudW5pZnlOb2RlLnZhbHVlc0VxdWFsKAogICAgICAgICAgICAg
ICAgICAgICBmaXJzdENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2VsZWN0ZWRUeXBlLAog
ICAgICAgICAgICAgICAgICAgICBzZWNvbmRDYXNlLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNl
bGVjdGVkVHlwZSk7CkBAIC02NTYsMTkgKzg1NSwxOSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHNlY29u
ZENhc2Uub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBjYXNlIGluIHN3aXRjaCBzdGF0
ZW1lbnQgZm9yIHZhbHVlICIgKyBmaXJzdENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2Vs
ZWN0ZWRUeXBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAoIWhhc0RlZmF1bHQpIHsKICAgICAgICAgICAgIGxldCBpbmNsdWRlZFZhbHVlcyA9IG5l
dyBTZXQoKTsKICAgICAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9kZS5zd2l0Y2hD
YXNlcykKICAgICAgICAgICAgICAgICBpbmNsdWRlZFZhbHVlcy5hZGQoc3dpdGNoQ2FzZS52YWx1
ZS51bmlmeU5vZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGZvciAobGV0IHt2YWx1ZSwgbmFtZX0gb2YgdHlwZS51bmlmeU5vZGUuYWxsVmFsdWVz
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVkVmFsdWVzLmhhcyh2YWx1ZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdp
blN0cmluZywgIlZhbHVlIG5vdCBoYW5kbGVkIGJ5IHN3aXRjaCBzdGF0ZW1lbnQ6ICIgKyBuYW1l
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHZpc2l0Q29t
bWFFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKQEAg
LTY4Nyw3ICs4ODYsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
IGlmICghZWxzZVR5cGUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRlcm5hcnkgZXhw
cmVzc2lvbiBlbHNlIGhhcyBubyB0eXBlOiAiICsgbm9kZS5lbHNlRXhwcmVzc2lvbik7CiAgICAg
ICAgIGlmICghYm9keVR5cGUuZXF1YWxzV2l0aENvbW1pdChlbHNlVHlwZSkpCi0gICAgICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiQm9keSBhbmQgZWxzZSBjbGF1c2Ugb2YgdGVybmFyeSBz
dGF0ZW1lbnQgZG9uJ3QgaGF2ZSB0aGUgc2FtZSB0eXBlOiAiICsgbm9kZSk7CisgICAgICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJCb2R5IGFu
ZCBlbHNlIGNsYXVzZSBvZiB0ZXJuYXJ5IHN0YXRlbWVudCBkb24ndCBoYXZlIHRoZSBzYW1lIHR5
cGU6ICIgKyBub2RlKTsKICAgICAgICAgcmV0dXJuIGJvZHlUeXBlOwogICAgIH0KICAgICAKQEAg
LTY5OSw3ICs4OTgsNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ2aXNpdG9yIHJldHVybmVkIG51bGwgZm9yICIgKyBh
cmd1bWVudCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3QXJndW1lbnQudmlzaXQobmV3IEF1dG9X
cmFwcGVyKCkpOwogICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgbm9kZS5hcmd1bWVu
dFR5cGVzID0gYXJndW1lbnRUeXBlczsKICAgICAgICAgaWYgKG5vZGUucmV0dXJuVHlwZSkKICAg
ICAgICAgICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRmllbGQuanMKaW5kZXggOTBkN2VmOGE2ODQxY2JmZTllNjlkODE1NDU3Y2NlNWFh
N2NlYjlkZS4uMzEyYjAwZDllMjhjYjNlMzM2YWUwOWZjMzk2ZmQ4OWMxNjBhYjBhOSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDI1ICsyMCwzMCBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBGaWVsZCBleHRlbmRzIE5vZGUgewotICAg
IGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4s
IG5hbWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAg
ICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7
CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9zZW1hbnRpYyA9IHNl
bWFudGljOwogICAgIH0KICAgICAKICAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3Jp
Z2luOyB9CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAgZ2V0IHR5
cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IHNlbWFudGljKCkgeyByZXR1cm4g
dGhpcy5fc2VtYW50aWM7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAgICAgICBsZXQgcmVzdWx0ID0g
dGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy5zZW1hbnRpYykK
KyAgICAgICAgICAgIHJlc3VsdCArPSAiOiAiICsgdGhpcy5zZW1hbnRpYzsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GdW5jLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwpp
bmRleCA1NmIxZDJjYzc4Y2ZhMDUzYmU3YzkxYjc4YjBlN2E2Yzk5OTdlMzI4Li5lMDZiNDM4Mjkw
Mjc2ODE4MTczNjc2ODRmNWU2ODVjZWFkMTM5YzhmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0Z1bmMuanMKQEAgLTI1LDcgKzI1LDcgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgRnVu
YyBleHRlbmRzIE5vZGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlw
ZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlLCBhdHRyaWJ1dGVCbG9jayA9IG51bGwp
CisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBp
c0Nhc3QsIHNoYWRlclR5cGUgPSBudWxsLCBzZW1hbnRpYyA9IG51bGwsIGF0dHJpYnV0ZUJsb2Nr
ID0gbnVsbCkKICAgICB7CiAgICAgICAgIGlmICghKG9yaWdpbiBpbnN0YW5jZW9mIExleGVyVG9r
ZW4pKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgb3JpZ2luOiAiICsgb3JpZ2lu
KTsKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRnVuYyBleHRlbmRzIE5vZGUgewogICAgICAgICB0
aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICAgICAgdGhpcy5faXNDYXN0ID0gaXND
YXN0OwogICAgICAgICB0aGlzLl9zaGFkZXJUeXBlID0gc2hhZGVyVHlwZTsKKyAgICAgICAgdGhp
cy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlQmxvY2sgPSBh
dHRyaWJ1dGVCbG9jazsKICAgICB9CiAgICAgCkBAIC01Miw2ICs1Myw3IEBAIGNsYXNzIEZ1bmMg
ZXh0ZW5kcyBOb2RlIHsKICAgICBnZXQgcGFyYW1ldGVyVHlwZXMoKSB7IHJldHVybiB0aGlzLnBh
cmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudHlwZSk7IH0KICAgICBnZXQgaXND
YXN0KCkgeyByZXR1cm4gdGhpcy5faXNDYXN0OyB9CiAgICAgZ2V0IHNoYWRlclR5cGUoKSB7IHJl
dHVybiB0aGlzLl9zaGFkZXJUeXBlOyB9CisgICAgZ2V0IHNlbWFudGljKCkgeyByZXR1cm4gdGhp
cy5fc2VtYW50aWM7IH0KICAgICBnZXQgYXR0cmlidXRlQmxvY2soKSB7IHJldHVybiB0aGlzLl9h
dHRyaWJ1dGVCbG9jazsgfQogICAgIGdldCBpc0VudHJ5UG9pbnQoKSB7IHJldHVybiB0aGlzLnNo
YWRlclR5cGUgIT0gbnVsbDsgfQogICAgIGdldCByZXR1cm5UeXBlRm9yT3ZlcmxvYWRSZXNvbHV0
aW9uKCkgeyByZXR1cm4gdGhpcy5pc0Nhc3QgPyB0aGlzLnJldHVyblR5cGUgOiBudWxsOyB9CkBA
IC03Miw3ICs3NCwxMCBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgICAgICAgICBy
ZXN1bHQgKz0gYG9wZXJhdG9yICR7dGhpcy5yZXR1cm5UeXBlfWA7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHJlc3VsdCArPSBgJHt0aGlzLnJldHVyblR5cGV9ICR7dGhpcy5uYW1lfWA7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQgKyAiKCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CisgICAg
ICAgIHJlc3VsdCArPSAiKCIgKyB0aGlzLnBhcmFtZXRlcnMgKyAiKSI7CisgICAgICAgIGlmICh0
aGlzLnNlbWFudGljKQorICAgICAgICAgICAgcmVzdWx0ICs9ICI6ICIgKyB0aGlzLnNlbWFudGlj
OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcwppbmRleCBjMmQxMWYzMjYzY2My
MDNiZDcyYzMwZmMxM2RiYzE4NGFiOWQzNjQ1Li5lZjM0Y2U0MDcxZjM2NmYyNzJhODAxYmJmNjUz
YzE0NzYyYjk0OTFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9G
dW5jRGVmLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNEZWYuanMK
QEAgLTI1LDkgKzI1LDkgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgRnVuY0RlZiBleHRlbmRz
IEZ1bmMgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1l
dGVycywgYm9keSwgaXNDYXN0LCBzaGFkZXJUeXBlLCBhdHRyaWJ1dGVCbG9jayA9IG51bGwpCisg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBib2R5
LCBpc0Nhc3QsIHNoYWRlclR5cGUgPSAiIiwgc2VtYW50aWMgPSBudWxsLCBhdHRyaWJ1dGVCbG9j
ayA9IG51bGwpCiAgICAgewotICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUs
IHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSwgYXR0cmlidXRlQmxvY2spOworICAgICAg
ICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hh
ZGVyVHlwZSwgc2VtYW50aWMsIGF0dHJpYnV0ZUJsb2NrKTsKICAgICAgICAgdGhpcy5fYm9keSA9
IGJvZHk7CiAgICAgICAgIHRoaXMuaXNSZXN0cmljdGVkID0gZmFsc2U7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMKaW5kZXggZDBiYjFk
NjIzMDRhNDg2Y2FiODUzNzc1NzU5ZDRlOGVkNjdjODM4My4uMDVjZGI1MmZkZTM5MGRiMjUwZWM2
YzI2YmM2N2U5ZjUwYjFmMWY0NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRnVuY1BhcmFtZXRlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9GdW5jUGFyYW1ldGVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMCwzMCArMjAsMzcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICJ1c2Ug
c3RyaWN0IjsKIAogY2xhc3MgRnVuY1BhcmFtZXRlciBleHRlbmRzIFZhbHVlIHsKICAgICAvLyBU
aGUgbmFtZSBpcyBvcHRpb25hbC4gSXQncyBPSyBmb3IgaXQgdG8gYmUgbnVsbCEKLSAgICBjb25z
dHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1l
LCB0eXBlLCBzZW1hbnRpYyA9IG51bGwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAg
ICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAg
ICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRp
YzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsg
fQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCB0eXBlKCkg
eyByZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMu
X3NlbWFudGljOyB9CiAgICAgZ2V0IHZhcklzTFZhbHVlKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IAogICAgIHRvU3RyaW5nKCkKICAgICB7CisgICAgICAgIGxldCByZXN1bHQ7CiAgICAgICAgIGlm
ICghdGhpcy5uYW1lKQotICAgICAgICAgICAgcmV0dXJuICIiICsgdGhpcy50eXBlOwotICAgICAg
ICByZXR1cm4gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAgICAgICAgICAgcmVzdWx0
ID0gIiIgKyB0aGlzLnR5cGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHRo
aXMudHlwZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgaWYgKHRoaXMuc2VtYW50aWMpCisg
ICAgICAgICAgICByZXN1bHQgKz0gIjogIiArIHRoaXMuc2VtYW50aWM7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9JbnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50
cmluc2ljcy5qcwppbmRleCAwNGU0Yjc4MjZlMzQ3MTAwMDgyMmJjNDQzOTQ3ZDg5NDhhZjE3NjY0
Li45ZWQ2NTQ2NjY0YmQ2N2U2Yjg2N2MxNmEwZjU3OWNhZDRkYjRmZDZiIDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTI3Niw2ICsyNzYsNyBAQCBj
bGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PiB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzW2Ake3RleHR1cmVUeXBlfTwke3R5cGVBcmd1bWVudH0+YF0g
PSB0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUuaXNUZXh0dXJlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1
ZmZlci5zZXQob2Zmc2V0LCB7fSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAyOyBpIDw9IDQ7ICsraSkgewpAQCAtMjg0LDYgKzI4NSw3IEBA
IGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tgJHt0ZXh0dXJlVHlwZX08JHt0eXBlQXJn
dW1lbnR9JHtpfT5gXSA9IHR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5z
aXplID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLmlzVGV4dHVyZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1
ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIHt9KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrZXIuanMKaW5kZXggZTU0YzdmM2M0ODFjNGI2YzliYzg5
NzIxMTFjOGYwN2M2NTRmOGQyNS4uNDdmZDMyYzNhODRkNjNlNmRjYzVmMzdjN2NlNDIzN2VkMjc0
MzcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNr
ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrZXIuanMK
QEAgLTMzLDU5ICszMyw1IEBAIGNsYXNzIExhdGVDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIGlmICghbm9kZS5lbGVtZW50VHlwZS5pc1ByaW1pdGl2ZSkKICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIklsbGVnYWwgcG9p
bnRlciB0byBub24tcHJpbWl0aXZlIHR5cGU6ICIgKyBub2RlKTsKICAgICB9Ci0gICAgCi0gICAg
X2NoZWNrU2hhZGVyVHlwZShub2RlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFRpZ2h0ZW4g
dGhlc2UgY2hlY2tzLiBGb3Igbm93LCB3ZSBzaG91bGQgb25seSBhY2NlcHQgaW50MzIsIHVpbnQz
MiwgZmxvYXQzMiwgYW5kIGZsb2F0NjQuCi0gICAgICAgIGxldCBhc3NlcnRQcmltaXRpdmUgPSB0
eXBlID0+IHsKLSAgICAgICAgICAgIGlmICghdHlwZS5pc1ByaW1pdGl2ZSkKLSAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTaGFk
ZXIgc2lnbmF0dXJlIGNhbm5vdCBpbmNsdWRlIG5vbi1wcmltaXRpdmUgdHlwZTogIiArIHR5cGUp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlID09ICJ2
ZXJ0ZXgiIHx8IG5vZGUuc2hhZGVyVHlwZSA9PSAiZnJhZ21lbnQiKSB7Ci0gICAgICAgICAgICBh
c3NlcnRQcmltaXRpdmUobm9kZS5yZXR1cm5UeXBlKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBG
cmFnbWVudCBzaGFkZXJzIHNob3VsZG4ndCBoYXZlIHRoaXMgcmVzdHJpY3Rpb246IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzODcKLSAgICAgICAgICAgIGlmICgh
KG5vZGUucmV0dXJuVHlwZS51bmlmeU5vZGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBlKSkKLSAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcs
ICJTaGFkZXIgIiArIG5vZGUubmFtZSArICIgbXVzdCByZXR1cm4gYSBzdHJ1Y3QuIik7Ci0gICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBzd2l0Y2ggKG5vZGUuc2hhZGVyVHlwZSkgewot
ICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgotICAgICAgICAgICAgZm9yIChsZXQgcGFyYW1ldGVyIG9m
IG5vZGUucGFyYW1ldGVycykgewotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIudHlwZS51
bmlmeU5vZGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBlKQotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRQcmltaXRpdmUocGFyYW1ldGVyLnR5cGUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFw
YXJhbWV0ZXIudHlwZS51bmlmeU5vZGUuaXNBcnJheVJlZikKLSAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCBub2RlLm5hbWUg
KyAiIGFjY2VwdHMgYSBwYXJhbWV0ZXIgIiArIHBhcmFtZXRlci5uYW1lICsgIiB3aGljaCBpc24n
dCBhIHN0cnVjdCBhbmQgaXNuJ3QgYW4gQXJyYXlSZWYuIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgotICAgICAgICAgICAgZm9y
IChsZXQgcGFyYW1ldGVyIG9mIG5vZGUucGFyYW1ldGVycykgewotICAgICAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXIubmFtZSA9PSAic3RhZ2VJbiIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCEocGFyYW1ldGVyLnR5cGUudW5pZnlOb2RlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJGcmFnbWVudCBlbnRyeSBwb2ludHMnIHN0YWdlSW4gcGFyYW1ldGVyIChvZiAi
ICsgbm9kZS5uYW1lICsgIikgbXVzdCBiZSBhIHN0cnVjdCB0eXBlLiIpOwotICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRQcmltaXRpdmUocGFyYW1ldGVyLnR5cGUpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLnR5cGUudW5pZnlO
b2RlLmlzQXJyYXlSZWYpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJGcmFnbWVudCBlbnRyeSBwb2ludCdzICIg
KyBwYXJhbWV0ZXIubmFtZSArICIgcGFyYW1ldGVyIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2Uu
Iik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgImNvbXB1dGUiOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgImNvbXB1dGUiOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgInRlc3QiOgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBzaGFkZXIgdHlwZTogIiArIG5vZGUuc2hhZGVyVHlwZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgdmlzaXRGdW5jRGVmKG5vZGUpCi0gICAgewotICAgICAgICBp
ZiAobm9kZS5zaGFkZXJUeXBlKQotICAgICAgICAgICAgdGhpcy5fY2hlY2tTaGFkZXJUeXBlKG5v
ZGUpOwotICAgICAgICBzdXBlci52aXNpdEZ1bmNEZWYobm9kZSk7Ci0gICAgfQogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcwppbmRleCA1YjA2OTE4NWY1
OGM0M2Y0MDM0MzFiMzViYzI3YTcwNzJjY2U2MjU2Li5iYmYwMjg1MWIzNzkwZjdlMjc1MjYxMDE5
Mzk0NzkxOWRmNTk3YWU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVGdW5jLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2
ZUZ1bmMuanMKQEAgLTI1LDkgKzI1LDkgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgTmF0aXZl
RnVuYyBleHRlbmRzIEZ1bmMgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlLCBzdGFnZSA9IG51bGwpCisgICAg
Y29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3Qs
IHN0YWdlID0gbnVsbCkKICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgc3VwZXIob3Jp
Z2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QpOwogICAgICAgICB0aGlz
Ll9zdGFnZSA9IHN0YWdlOwogICAgICAgICB0aGlzLmlzUmVzdHJpY3RlZCA9IGZhbHNlOwogICAg
ICAgICB0aGlzLmltcGxlbWVudGF0aW9uID0gbnVsbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUGFyc2UuanMKaW5kZXggNGE3YTI0MDBiZWEyZThlMjhkZTExM2UxYjkwZGNiMDNlYjVhNWM5
Zi4uZDQyMmViODg5MmE5NTg1MTZlODZhZjUzMDljN2U5OTg0MzhiZWJmMSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgIGxldCBsZXhlciA9IG5ldyBMZXhlcihvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpOwogCiAgICAgLy8gVGhlIGhhcmRlc3QgcGFydCBvZiBkZWFsaW5nIHdpdGgg
Qy1saWtlIGxhbmd1YWdlcyBpcyBwYXJzaW5nIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVu
dHMuCi0gICAgLy8gTGV0J3MgY29uc2lkZXIgaWYgdGhpcyBoYXBwZW5zIGluIFdTTC4gSGVyZSBh
cmUgdGhlIHZhbGlkIHN0YXRlbWVudHMgaW4gV1NMIHRoYXQgYmVpbmcgd2l0aCBhbgorICAgIC8v
IExldCdzIGNvbnNpZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXSExTTC4gSGVyZSBhcmUgdGhlIHZh
bGlkIHN0YXRlbWVudHMgaW4gV0hMU0wgdGhhdCBiZWluZyB3aXRoIGFuCiAgICAgLy8gaWRlbnRp
ZmllciwgaWYgd2UgYXNzdW1lIHRoYXQgYW55IGV4cHJlc3Npb24gY2FuIGJlIGEgc3RhbmRhbG9u
ZSBzdGF0ZW1lbnQuCiAgICAgLy8KICAgICAvLyAgICAgeDsKQEAgLTEwODUsNyArMTA4NSwxMyBA
QCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgICAgIGxldCBuYW1lID0gdHJ5Q29uc3VtZUtp
bmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUu
b3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVsbCwgdHlwZSk7CisgICAgICAgIGxldCBzZW1h
bnRpYyA9IG51bGw7CisgICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAg
IHNlbWFudGljID0gcGFyc2VTZW1hbnRpYygpOworICAgICAgICAgICAgaWYgKHNlbWFudGljIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4s
IG5hbWUgPyBuYW1lLnRleHQgOiBudWxsLCB0eXBlLCBzZW1hbnRpYyk7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXJzKCkKQEAgLTEyMDUsNyArMTIxMSw4IEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4
dCkKICAgICAgICAgbGV0IHJldHVyblR5cGU7CiAgICAgICAgIGxldCBuYW1lOwogICAgICAgICBs
ZXQgaXNDYXN0OwotICAgICAgICBsZXQgc2hhZGVyVHlwZTsKKyAgICAgICAgbGV0IHNoYWRlclR5
cGUgPSBudWxsOworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOwogICAgICAgICBsZXQgYXR0
cmlidXRlQmxvY2sgPSBudWxsOwogICAgICAgICBsZXQgb3BlcmF0b3JUb2tlbiA9IHRyeUNvbnN1
bWUoIm9wZXJhdG9yIik7CiAgICAgICAgIGlmIChvcGVyYXRvclRva2VuKSB7CkBAIC0xMjQxLDcg
KzEyNDgsMTIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBs
aW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgcGFyYW1ldGVycyA9IHBhcnNlUGFy
YW1ldGVycygpOwogICAgICAgICBpZiAocGFyYW1ldGVycyBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOwotICAgICAgICByZXR1cm4gbmV3IEZ1
bmMob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5
cGUsIGF0dHJpYnV0ZUJsb2NrKTsKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkgeworICAg
ICAgICAgICAgc2VtYW50aWMgPSBwYXJzZVNlbWFudGljKCk7CisgICAgICAgICAgICBpZiAoc2Vt
YW50aWMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bWFudGljOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgRnVuYyhvcmlnaW4sIG5hbWUs
IHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSwgc2VtYW50aWMpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRnVuY0RlZigpCkBAIC0xMjUyLDcgKzEyNjQsMTE2
IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJl
ck9mZnNldCwgdGV4dCkKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZUJsb2NrKCk7CiAgICAgICAg
IGlmIChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGJv
ZHk7Ci0gICAgICAgIHJldHVybiBuZXcgRnVuY0RlZihmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBm
dW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1ldGVycywgYm9keSwgZnVuYy5pc0Nhc3QsIGZ1bmMu
c2hhZGVyVHlwZSwgZnVuYy5hdHRyaWJ1dGVCbG9jayk7CisgICAgICAgIHJldHVybiBuZXcgRnVu
Y0RlZihmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1l
dGVycywgYm9keSwgZnVuYy5pc0Nhc3QsIGZ1bmMuc2hhZGVyVHlwZSwgZnVuYy5zZW1hbnRpYywg
ZnVuYy5hdHRyaWJ1dGVCbG9jayk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VTdGFnZUlu
T3V0U2VtYW50aWMoKQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImF0dHJp
YnV0ZSIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIGxldCBpbmRleCA9IGNvbnN1
bWVLaW5kKCJpbnRMaXRlcmFsIik7CisgICAgICAgIGlmIChpbmRleCBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgbGV0IHVpbnRWZXJz
aW9uID0gaW5kZXgudGV4dCA+Pj4gMDsKKyAgICAgICAgaWYgKHVpbnRWZXJzaW9uLnRvU3RyaW5n
KCkgIT09IGluZGV4LnRleHQpCisgICAgICAgICAgICByZXR1cm4gZmFpbCgiU2VtYW50aWMgIGlz
IG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIGluZGV4LnRleHQpOworICAgICAgICBt
YXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAg
ICByZXR1cm4gbmV3IFN0YWdlSW5PdXRTZW1hbnRpYyhvcmlnaW4sIHVpbnRWZXJzaW9uKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVJlc291cmNlU2VtYW50aWMoKQorICAgIHsKKyAgICAg
ICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInJlZ2lzdGVyIik7CisgICAgICAgIGlmIChvcmlnaW4g
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgbGV0IG1vZGUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAg
ICBpZiAobW9kZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
b2RlOworICAgICAgICBtb2RlID0gbW9kZS50ZXh0OworICAgICAgICBpZiAobW9kZVswXSAhPSAi
dSIgJiYgbW9kZVswXSAhPSAidCIgJiYgbW9kZVswXSAhPSAiYiIgJiYgbW9kZVswXSAhPSAicyIp
CisgICAgICAgICAgICByZXR1cm4gZmFpbCgicmVnaXN0ZXIgbmVlZHMgdG8gYmUgZWl0aGVyIHUs
IHQsIGIsIG9yIHMiKTsKKyAgICAgICAgbGV0IGluZGV4VGV4dCA9IG1vZGUuc3Vic3RyaW5nKDEp
OworICAgICAgICBtb2RlID0gbW9kZVswXTsKKyAgICAgICAgbGV0IHVpbnRWZXJzaW9uID0gaW5k
ZXhUZXh0ID4+PiAwOworICAgICAgICBpZiAodWludFZlcnNpb24udG9TdHJpbmcoKSAhPT0gaW5k
ZXhUZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlJlZ2lzdGVyIGluZGV4IGlzIG5vdCAz
Mi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIGluZGV4VGV4dCk7CisgICAgICAgIGxldCBzcGFj
ZSA9IDA7CisgICAgICAgIGlmICh0cnlDb25zdW1lKCIsIikpIHsKKyAgICAgICAgICAgIHNwYWNl
ID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIGlmIChzcGFjZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CisgICAg
ICAgICAgICBzcGFjZSA9IHNwYWNlLnRleHQ7CisgICAgICAgICAgICBpZiAoc3BhY2Uuc3Vic3Ry
aW5nKDAsICJzcGFjZSIubGVuZ3RoKSAhPSAic3BhY2UiKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWlsKCJTZWNvbmQgYXJndW1lbnQgdG8gcmVnaXN0ZXIoKSBuZWVkcyB0byBiZSBvZiB0aGUg
Zm9ybSBcInNwYWNlMFwiIik7CisgICAgICAgICAgICBsZXQgc3BhY2VUZXh0ID0gc3BhY2Uuc3Vi
c3RyaW5nKCJzcGFjZSIubGVuZ3RoKTsKKyAgICAgICAgICAgIGxldCB1aW50VmVyc2lvbiA9IHNw
YWNlVGV4dCA+Pj4gMDsKKyAgICAgICAgICAgIGlmICh1aW50VmVyc2lvbi50b1N0cmluZygpICE9
PSBzcGFjZVRleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlJlZ2lzdGVyIGluZGV4
IGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIHNwYWNlVGV4dCk7CisgICAgICAg
ICAgICBzcGFjZSA9IHVpbnRWZXJzaW9uOworICAgICAgICB9CisgICAgICAgIG1heWJlRXJyb3Ig
PSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIHJldHVybiBu
ZXcgUmVzb3VyY2VTZW1hbnRpYyhvcmlnaW4sIG1vZGUsIHVpbnRWZXJzaW9uLCBzcGFjZSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMo
KQorICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInNwZWNpYWxpemVkIik7Cisg
ICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luOworICAgICAgICByZXR1cm4gbmV3IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYyhvcmlnaW4pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlQnVpbHRJblNlbWFu
dGljKCkKKyAgICB7CisgICAgICAgIGxldCBvcmlnaW4gPSB0cnlDb25zdW1lKCJTVl9JbnN0YW5j
ZUlEIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNWX1ZlcnRleElEIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBTSVpFIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNWX1Bvc2l0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlNWX0lzRnJvbnRGYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlNWX1NhbXBsZUluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNWX0lu
bmVyQ292ZXJhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfRGVwdGgi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfQ292ZXJhZ2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfRGlzcGF0Y2hUaHJlYWRJRCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Hcm91cElEIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlNWX0dyb3VwSW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfR3JvdXBUaHJlYWRJRCIpOworICAgICAgICBpZiAob3JpZ2luKQorICAgICAg
ICAgICAgcmV0dXJuIG5ldyBCdWlsdEluU2VtYW50aWMob3JpZ2luLCBvcmlnaW4udGV4dCk7Cisg
ICAgICAgIG9yaWdpbiA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChv
cmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2lu
OworICAgICAgICBpZiAob3JpZ2luLnRleHQuc3Vic3RyaW5nKDAsICJTVl9UYXJnZXQiLmxlbmd0
aCkgPT0gIlNWX1RhcmdldCIpIHsKKyAgICAgICAgICAgIGxldCBpbmRleFN0cmluZyA9IG9yaWdp
bi50ZXh0LnN1YnN0cmluZygiU1ZfVGFyZ2V0Ii5sZW5ndGgpOworICAgICAgICAgICAgbGV0IHVp
bnRWZXJzaW9uID0gaW5kZXhTdHJpbmcgPj4+IDA7CisgICAgICAgICAgICBpZiAodWludFZlcnNp
b24udG9TdHJpbmcoKSAhPT0gaW5kZXhTdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
aWwoIlNlbWFudGljICBpcyBub3QgMzItYml0IHVuc2lnbmVkIGludGVnZXI6ICIgKyBpbmRleFN0
cmluZyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IEJ1aWx0SW5TZW1hbnRpYyhvcmlnaW4sICJT
Vl9UYXJnZXQiLCB1aW50VmVyc2lvbik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0
dXJuIGZhaWwoYFVua25vd24gc2VtYW50aWM6ICR7b3JpZ2luLnRleHR9YCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcGFyc2VTZW1hbnRpYygpCisgICAgeworICAgICAgICBpZiAodGVzdCgiYXR0
cmlidXRlIikpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VTdGFnZUluT3V0U2VtYW50aWMoKTsK
KyAgICAgICAgZWxzZSBpZiAodGVzdCgicmVnaXN0ZXIiKSkKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZVJlc291cmNlU2VtYW50aWMoKTsKKyAgICAgICAgZWxzZSBpZiAodGVzdCgic3BlY2lhbGl6
ZWQiKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gcGFyc2VCdWlsdEluU2Vt
YW50aWMoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUZpZWxkKCkKQEAgLTEyNjMsMTAg
KzEzODQsMTYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBs
aW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIik7CiAgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIGxldCBzZW1hbnRpYyA9IG51bGw7Cisg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgIHNlbWFudGljID0gcGFy
c2VTZW1hbnRpYygpOworICAgICAgICAgICAgaWYgKHNlbWFudGljIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAgICAgICAgfQogICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKICAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKLSAgICAgICAgcmV0dXJuIG5ldyBGaWVsZChuYW1lLCBuYW1lLnRleHQsIHR5cGUpOworICAg
ICAgICByZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgc2VtYW50aWMpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlU3RydWN0VHlwZSgpCkBAIC0xMzAwLDcgKzE0Mjcs
OSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOwog
ICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAg
ICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUZ1bmMoZnVu
Yy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGZ1
bmMuaXNDYXN0LCBmdW5jLnNoYWRlclR5cGUsIHN0YWdlKTsKKyAgICAgICAgaWYgKGZ1bmMuc2hh
ZGVyVHlwZSB8fCBmdW5jLnNlbWFudGljKQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoIk5hdGl2
ZSBmdW5jdGlvbnMgY2FuJ3QgYmUgZW50cnkgcG9pbnRzIG9yIGhhdmUgc2VtYW50aWNzLiIpOwor
ICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUZ1bmMoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVu
Yy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGZ1bmMuaXNDYXN0KTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBwYXJzZU5hdGl2ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkLmpzCmluZGV4IGMzMjg4OTJiZmYxNmI3NWFlZTVhZmZiNGYzNzJmZTI0YTQxOGNiNzEuLjg2
NTdjN2Y0ZmIwODJlZWNlNDA1ZjFlYTg4NmIxN2FmNTVmNjBmMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5u
ZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCkBAIC00MSw2ICs0MSwxMCBAQCBmdW5jdGlvbiBwcm9n
cmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZChwcm9ncmFtKQogICAgIG5hbWVGaW5kZXIu
YWRkKCJ2b2lkIik7CiAgICAgbmFtZUZpbmRlci5hZGQoImJvb2wiKTsKICAgICBuYW1lRmluZGVy
LmFkZCgiaW50Iik7CisgICAgbmFtZUZpbmRlci5hZGQoInVpbnQiKTsKKyAgICBuYW1lRmluZGVy
LmFkZCgiZmxvYXQiKTsKKyAgICBuYW1lRmluZGVyLmFkZCgidmVjdG9yIik7CisgICAgbmFtZUZp
bmRlci5hZGQoInNhbXBsZXIiKTsKICAgICAKICAgICAvLyBQdWxsIGluIHRoaW5ncyBhcyBuZWNl
c3NhcnkuCiAgICAgd2hpbGUgKG5hbWVGaW5kZXIud29ya2xpc3QubGVuZ3RoKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OWEyOGEzY2FkMmZiNmY3ZjNmZGQxNjFiMGE5YzMwNmE3MDVmMmFlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5q
cwpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgUmVzb3VyY2VTZW1hbnRpYyBleHRlbmRzIFNl
bWFudGljIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIHJlc291cmNlTW9kZSwgaW5kZXgsIHNw
YWNlKQorICAgIHsKKyAgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgICB0aGlzLl9yZXNv
dXJjZU1vZGUgPSByZXNvdXJjZU1vZGU7CisgICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4Owor
ICAgICAgICAgdGhpcy5fc3BhY2UgPSBzcGFjZTsKKyAgICB9CisKKyAgICBnZXQgcmVzb3VyY2VN
b2RlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VNb2RlOyB9CisgICAgZ2V0IGluZGV4KCkgeyBy
ZXR1cm4gdGhpcy5faW5kZXg7IH0KKyAgICBnZXQgc3BhY2UoKSB7IHJldHVybiB0aGlzLl9zcGFj
ZTsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0aGlzLnJlc291cmNlTW9kZSkgeworICAgICAgICBjYXNlICJiIjoKKyAgICAg
ICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgUmVmZXJlbmNlVHlwZSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiB0eXBlLmFkZHJlc3NTcGFjZSA9PSAiY29uc3RhbnQiOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGU7
CisgICAgICAgIGNhc2UgInUiOgorICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBSZWZl
cmVuY2VUeXBlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuYWRkcmVzc1NwYWNlID09
ICJjb25zdGFudCIgfHwgdHlwZS5hZGRyZXNzU3BhY2UgPT0gImRldmljZSI7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5pc1RleHR1cmUgfHwgdHlwZSBp
bnN0YW5jZW9mIEFycmF5VHlwZTsKKyAgICAgICAgY2FzZSAidCI6CisgICAgICAgICAgICBpZiAo
dHlwZSBpbnN0YW5jZW9mIFJlZmVyZW5jZVR5cGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHlwZS5hZGRyZXNzU3BhY2UgPT0gImNvbnN0YW50IjsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiB0eXBlLmlzVGV4dHVyZSB8fCB0eXBlIGluc3RhbmNlb2YgQXJy
YXlUeXBlOworICAgICAgICBjYXNlICJzIjoKKyAgICAgICAgICAgIHJldHVybiB0eXBlLmVxdWFs
cyhwcm9ncmFtLmludHJpbnNpY3Muc2FtcGxlcik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVzb3VyY2UgbW9kZTogJHt0aGlzLnJlc291
cmNlTW9kZX1gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRl
clR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpcmVj
dGlvbiA9PSAiaW5wdXQiOworICAgIH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBgcmVnaXN0ZXIoJHt0aGlzLnJlc291cmNlTW9kZX0ke3RoaXMuaW5kZXh9LCBzcGFj
ZSR7dGhpcy5zcGFjZX0pYDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanMKaW5kZXggM2ExNGJkYThjZGQxOWQ2ZWMzYTlmYjgxNjIyY2VmY2UxYjZh
MTc0YS4uNDhjNjk3ODhlYzY4OThlYzA3M2ZjMjE1ZjNhYTEzNzUwYmVjMDg1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgUmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBGdW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBub2Rl
Lm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
RnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhp
cyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcykpOwogICAgICAgICB0aGlzLl9tYXBO
b2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIFJld3JpdGVyIHsK
ICAgICAKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEZp
ZWxkKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAg
ICAgIHJldHVybiBuZXcgRmllbGQobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZp
c2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsKICAgICB9CiAgICAg
CiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUpCkBAIC00MDAsNSArNDAwLDI1IEBAIGNsYXNzIFJl
d3JpdGVyIHsKICAgICAgICAgY29uc3QgbWF0VHlwZSA9IG5ldyBNYXRyaXhUeXBlKG5vZGUub3Jp
Z2luLCBub2RlLm5hbWUsIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1l
bnQudmlzaXQodGhpcykpKTsKICAgICAgICAgcmV0dXJuIG1hdFR5cGU7CiAgICAgfQorCisgICAg
dmlzaXRCdWlsdEluU2VtYW50aWMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQnVp
bHRJblNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIC4uLm5vZGUuZXh0cmFBcmd1bWVu
dHMpOworICAgIH0KKworICAgIHZpc2l0UmVzb3VyY2VTZW1hbnRpYyhub2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZVNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLnJlc291
cmNlTW9kZSwgbm9kZS5pbmRleCwgbm9kZS5zcGFjZSk7CisgICAgfQorCisgICAgdmlzaXRTdGFn
ZUluT3V0U2VtYW50aWMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU3RhZ2VJbk91
dFNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLmluZGV4KTsKKyAgICB9CisKKyAgICB2aXNpdFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMobm9kZS5vcmlnaW4pOworICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRt
bCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggYmE2MTcw
YjMyYmU5YTI2YTllY2YxNmRlMjE0MGNmMTRmNDNiMmFjNi4uNmY2ZDZjMDBkYTVlMzQ2MDRjODg0
YTdhNWJhMTA1Yjk5OTBlM2MzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElS
Vi5odG1sCkBAIC0xOCw2ICsxOCw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0
ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJOYXRpdmVUeXBlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iU2VtYW50aWMuanMiPjwvc2NyaXB0PgogCiAgICAg
PHNjcmlwdCBzcmM9IkFkZHJlc3NTcGFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkFsbG9jYXRlQXRFbnRyeVBvaW50cy5qcyI+PC9zY3JpcHQ+CkBAIC0yOSw2ICszMCw3IEBAIHRk
IHsKICAgICA8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJ1aWx0aW5NYXRyaXhTZXR0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIj48L3NjcmlwdD4KQEAgLTEyNCwxMCArMTI2
LDEzIEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZVR5cGVEZWZzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJldHVybi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJldHVybkNoZWNrZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iU3RhZ2VJbk91dFNlbWFudGljLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RhdGVt
ZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RydWN0TGF5b3V0QnVp
bGRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NlbWFudGlj
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmExNzhjZjEwNWZkMmE2YjIwMDg3NGI4MDBjZmI0YWM0MzUzZjVkMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TZW1hbnRp
Yy5qcwpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU2VtYW50aWMgZXh0ZW5kcyBOb2RlIHsK
KyAgICBjb25zdHJ1Y3RvcihvcmlnaW4pCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAg
ICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgfQorCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0
dXJuIHRoaXMuX29yaWdpbjsgfQorCisgICAgZXF1YWxUb090aGVyU2VtYW50aWMob3RoZXJTZW1h
bnRpYykKKyAgICB7CisgICAgICAgIGNsYXNzIENvbXBhcmVyIGV4dGVuZHMgVmlzaXRvciB7Cisg
ICAgICAgICAgICB2aXNpdEJ1aWx0SW5TZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICghKG90aGVyU2VtYW50aWMgaW5zdGFuY2VvZiBCdWlsdEluU2VtYW50
aWMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKG5vZGUubmFtZSAhPSBvdGhlclNlbWFudGljLm5hbWUpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50cyAm
JiBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aCAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1l
bnRzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmV4dHJhQXJndW1lbnRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3Vt
ZW50c1tpXSAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzW2ldKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUuZXh0cmFBcmd1bWVudHMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aCA9PSAwOworICAgICAgICAgICAgICAgIGlm
IChvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cy5sZW5ndGggPT0gMDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRSZXNv
dXJjZVNlbWFudGljKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEo
b3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9mIFJlc291cmNlU2VtYW50aWMpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUucmVzb3Vy
Y2VNb2RlID09IG90aGVyU2VtYW50aWMucmVzb3VyY2VNb2RlICYmIG5vZGUuaW5kZXggPT0gb3Ro
ZXJTZW1hbnRpYy5pbmRleCAmJiBub2RlLnNwYWNlID09IG90aGVyU2VtYW50aWMuc3BhY2U7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0
YW5jZW9mIFN0YWdlSW5PdXRTZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5pbmRleCA9PSBvdGhlclNlbWFudGlj
LmluZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBvdGhlciBpbnN0YW5jZW9mIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy52aXNpdChuZXcgQ29t
cGFyZXIoKSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQyMjA2OTdiOTRlOTYzODAxYWIyMDZlMTE0YmJhYjhkMGYzNDYzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9y
aWdpbikKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgfQorCisgICAgaXNBY2Nl
cHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUuaXNO
dW1iZXI7CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24s
IHNoYWRlclR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09ICJpbnB1dCI7
CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJzcGVjaWFs
aXplZCI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFnZUluT3V0U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU5ZWVhOTliZTdkOTdjY2Y1NGZk
NjUxNzFhODQ0MDAxOTAwYzg1MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YWdlSW5PdXRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKwor
Y2xhc3MgU3RhZ2VJbk91dFNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVj
dG9yKG9yaWdpbiwgaW5kZXgpCisgICAgeworICAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAg
ICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAgfQorCisgICAgZ2V0IGluZGV4KCkgeyByZXR1
cm4gdGhpcy5faW5kZXg7IH0KKworICAgIGlzQWNjZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0eXBlIGluc3RhbmNlb2YgRW51bVR5cGUgfHwgdHlwZSBp
bnN0YW5jZW9mIEFycmF5VHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgVmVjdG9yVHlwZSB8fCB0eXBl
IGluc3RhbmNlb2YgTWF0cml4VHlwZSB8fCB0eXBlLmlzTnVtYmVyOworICAgIH0KKworICAgIGlz
QWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7CisgICAgICAgIGNhc2UgInZlcnRleCI6CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAg
ICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAiaW5wdXQiOworICAgICAgICBjYXNlICJjb21wdXRlIjoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgVW5rbm93biBzaGFkZXIgdHlwZTogJHtzaGFkZXJUeXBlfWApOworICAgICAgICB9
CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGBhdHRyaWJ1
dGUoJHt0aGlzLmluZGV4fSlgOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCmluZGV4IGM0YmRkYzkxNjE5NGVjMzMzYTYw
MTFmZDZhMjgxYjY2MjJjOGQ5MWYuLmVjYTY5NmU0ZGJmMmFkNjk0ZWY2YzlhNTBmNzMwYzMzNTY3
N2Q2YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVu
dENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRD
bG9uZXIuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMg
UmV3cml0ZXIgewogICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAg
ICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwKICAgICAgICAgICAgIG5vZGUucGFyYW1l
dGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRlci52aXNpdCh0aGlzKSksCi0gICAgICAgICAg
ICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBlLCBub2RlLnN0YWdlKTsKKyAgICAgICAgICAg
IG5vZGUuaXNDYXN0LCBub2RlLnN0YWdlKTsKICAgICAgICAgcmVzdWx0LmlzUmVzdHJpY3RlZCA9
IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVBcnJheU9wZXJh
dG9yTGVuZ3RoLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFy
cmF5T3BlcmF0b3JMZW5ndGguanMKaW5kZXggZGU4ZGY1ZDExNDhjNTc4YWYwZGI2ZTI3ZDdiMDE3
OTg5OWYxNWQ0YS4uMWEyODE1OGE4YjQyN2Q3OTE4N2I5MGM1YWQ0NjY4NWMxMDYwNDEzMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFycmF5T3Bl
cmF0b3JMZW5ndGguanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhl
c2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gc3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSkKICAgICAgICAgbGV0IG5hdGl2ZUZ1
bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIGFycmF5VHlwZS5vcmlnaW4sICJvcGVy
YXRvci5sZW5ndGgiLCB1aW50LAogICAgICAgICAgICAgWyBuZXcgRnVuY1BhcmFtZXRlcihhcnJh
eVR5cGUub3JpZ2luLCBudWxsLCBwYXJhbVR5cGUpIF0sCi0gICAgICAgICAgICBmYWxzZSwgbnVs
bCk7CisgICAgICAgICAgICBmYWxzZSk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2FycmF5XSkgPT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUpOwog
ICAgICAgICBwcm9ncmFtLmFkZChuYXRpdmVGdW5jKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rv
ck9wZXJhdG9yLmpzCmluZGV4IGNmOThjNDY3YTVjMTJkODQ2MmYxYmIwNzgxYTIwZTBlMmFlMzVj
MzkuLmYzOWVhZWYxZDQ2NDc1NjdlODgzN2Y0ZjU0ZDYxOTczNDU2YzZiZWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVDb3B5Q29uc3RydWN0b3JP
cGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXpl
Q29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgZnVuY3Rpb24gc3lu
dGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yKHByb2dyYW0pCiAgICAgZm9yIChsZXQgdHlw
ZSBvZiB0eXBlcykgewogICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKHR5
cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgWwogICAgICAg
ICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0
eXBlKSkKLSAgICAgICAgXSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIF0sIHRydWUpOwogICAgICAg
ICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFthcmddLCBub2RlKSA9PiB7CiAgICAgICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXplKSwgMCk7CiAg
ICAgICAgICAgICByZXN1bHQuY29weUZyb20oYXJnLCB0eXBlLnNpemUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rv
ck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURl
ZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGRjNTA2NTM4ZDFjNmM3MTA5YjFhZDFl
Y2JhM2NlYzI3OGQwZjdiNWMuLjViYzVkZDkzOWFkNDA0YmMzMThkYzVjODA5NTk1OGZlNDc1MWQ0
ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVE
ZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTYyLDcg
KzYyLDcgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yKHBy
b2dyYW0pCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwogCiAgICAgZm9y
IChsZXQgdHlwZSBvZiB0eXBlcykgewotICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRp
dmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwg
W10sIHRydWUsIG51bGwpOworICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5j
KHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgW10sIHRy
dWUpOwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFtdLCBub2RlKSA9PiB7
CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXpl
KSwgMCk7CiAgICAgICAgICAgICBub2RlLnR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUocmVzdWx0
LmJ1ZmZlciwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCmluZGV4IDEzN2FjOWZjZDE1ODg3YWY4Yzc2ZTRm
NjRjZGQ1YTIyZDI3Y2FhMTIuLjgyNjZhMThiNjdkODlmNTNkMzBiMjg2NDNiYjcyOWE1Mjc1NWVm
MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVF
bnVtRnVuY3Rpb25zLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRo
ZXNpemVFbnVtRnVuY3Rpb25zLmpzCkBAIC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHN5bnRoZXNp
emVFbnVtRnVuY3Rpb25zKHByb2dyYW0pCiAKICAgICAgICAgbGV0IG5hdGl2ZUZ1bmM7CiAgICAg
ICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgbGV0IHNoYWRlclR5cGU7CiAKICAgICAg
ICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmlnaW4s
ICJvcGVyYXRvcj09IiwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sICJib29sIiksCkBAIC00MCwy
OCArMzksMjggQEAgZnVuY3Rpb24gc3ludGhlc2l6ZUVudW1GdW5jdGlvbnMocHJvZ3JhbSkKICAg
ICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbnVsbCwgbmV3IFR5
cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5j
UGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlw
ZS5uYW1lKSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBpc0Nhc3QsIHNoYWRlclR5cGUp
OworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgbmF0aXZlRnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PiBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgcHJvZ3JhbS5hZGQobmF0aXZlRnVuYyk7CiAKICAgICAg
ICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmlnaW4s
ICJvcGVyYXRvci52YWx1ZSIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3IFJld3JpdGVyKCkpLAog
ICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlw
ZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFk
ZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2
ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAg
ICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3
IFJld3JpdGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2lu
LCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAg
ICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5h
dGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHBy
b2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZl
RnVuYygKICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIG5ldyBUeXBl
UmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1l
dGVyKHR5cGUub3JpZ2luLCBudWxsLCB0eXBlLmJhc2VUeXBlLnZpc2l0KG5ldyBSZXdyaXRlcigp
KSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2Fz
dCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFs
dWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNjZXNz
b3JzLmpzCmluZGV4IDc4NTllZWI0YjRmNWNiNWVmZTZmZDAyZGVhYjYzNzBkYmQ5YjUzOTAuLjZj
N2ZmZDcxODExNWM3OWQ4ZjI3MTA1N2I0MThjMDA5NDFjMGFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29y
cy5qcwpAQCAtNDksMTMgKzQ5LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAgICAgICAgIH0KIAogICAgICAgICBsZXQg
aXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAgICBsZXQgbmF0
aXZlRnVuYzsKIAogICAgICAgICAvLyBUaGUgZ2V0dGVyOiBvcGVyYXRvci5maWVsZAogICAgICAg
ICBuYXRpdmVGdW5jID0gbmV3IE5hdGl2ZUZ1bmMoCiAgICAgICAgICAgICBmaWVsZC5vcmlnaW4s
ICJvcGVyYXRvci4iICsgZmllbGQubmFtZSwgZmllbGQudHlwZSwKLSAgICAgICAgICAgIFtuZXcg
RnVuY1BhcmFtZXRlcihmaWVsZC5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0eXBlKSldLCBp
c0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKGZpZWxk
Lm9yaWdpbiwgbnVsbCwgVHlwZVJlZi53cmFwKHR5cGUpKV0sIGlzQ2FzdCk7CiAgICAgICAgIHNl
dHVwSW1wbGVtZW50YXRpb25EYXRhKG5hdGl2ZUZ1bmMsIChbYmFzZV0sIG9mZnNldCwgc3RydWN0
U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIo
bmV3IEVCdWZmZXIoZmllbGRTaXplKSwgMCk7CiAgICAgICAgICAgICByZXN1bHQuY29weUZyb20o
YmFzZS5wbHVzKG9mZnNldCksIGZpZWxkU2l6ZSk7CkBAIC03MCw3ICs2OSw3IEBAIGZ1bmN0aW9u
IHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAg
ICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIoZmllbGQub3JpZ2luLCBudWxsLCBUeXBl
UmVmLndyYXAodHlwZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKGZpZWxk
Lm9yaWdpbiwgbnVsbCwgZmllbGQudHlwZSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBp
c0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgc2V0dXBJ
bXBsZW1lbnRhdGlvbkRhdGEobmF0aXZlRnVuYywgKFtiYXNlLCB2YWx1ZV0sIG9mZnNldCwgc3Ry
dWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQ
dHIobmV3IEVCdWZmZXIoc3RydWN0U2l6ZSksIDApOwogICAgICAgICAgICAgcmVzdWx0LmNvcHlG
cm9tKGJhc2UsIHN0cnVjdFNpemUpOwpAQCAtODksNyArODgsNyBAQCBmdW5jdGlvbiBzeW50aGVz
aXplU3RydWN0QWNjZXNzb3JzRm9yU3RydWN0VHlwZShwcm9ncmFtLCB0eXBlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGQub3JpZ2luLCBudWxsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFB0clR5cGUoZmllbGQub3JpZ2luLCBhZGRyZXNzU3BhY2UsIFR5cGVSZWYud3JhcCh0
eXBlKSkpCiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBpc0Nhc3QsIHNoYWRl
clR5cGUpOworICAgICAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgICAgICBzZXR1cEltcGxl
bWVudGF0aW9uRGF0YShuYXRpdmVGdW5jLCAoW2Jhc2VdLCBvZmZzZXQsIHN0cnVjdFNpemUsIGZp
ZWxkU2l6ZSkgPT4gewogICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLmxvYWRWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgIGlmICghYmFzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAppbmRleCAwMjg1ZmJlZjRhZTIxZTE5NjY5YzFiZjY3NDljNWY5YzI1OGUwYTE5Li5j
ZDNiZGEwYzBiODMyYmYwN2JjMjMwNjhkZGJlOTlhMTE0ZjgzYWI4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVhZD4K
LTx0aXRsZT5XU0wgVGVzdDwvdGl0bGU+Cis8dGl0bGU+V0hMU0wgVGVzdDwvdGl0bGU+CiA8c2Ny
aXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMiw2ICsx
Miw3IEBACiA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iTmF0aXZlVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU2VtYW50aWMuanMi
Pjwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iQWRkcmVzc1NwYWNlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJBbGxvY2F0ZUF0RW50cnlQb2ludHMuanMiPjwvc2NyaXB0PgpAQCAtMjMsNiAr
MjQsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJC
b29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRp
bk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpblZlY3Rvckdl
dHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTgsMTAgKzEyMCwxMyBAQAogPHNjcmlwdCBzcmM9IlJl
c29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9w
ZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2VtYW50aWMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0
YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJy
YXJ5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGF0ZW1lbnRDbG9uZXIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpAQCAt
MTcwLDcgKzE3NSw3IEBAIGZ1bmN0aW9uIGRvVGVzdEluQnJvd3NlcigpCiAgICAgICAgICAgICBp
ZiAodGVzdGVyLm5leHQoKS5kb25lKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiAiICsgZS5tZXNzYWdlKTsK
KyAgICAgICAgICAgIHByaW50KCJFUlJPUjogIiArIChlLnBheWxvYWQgPyBlLnBheWxvYWQgOiBl
Lm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHByaW50KGUuc3RhY2spOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBj
OTRiMzUyOWY2Yzg4ODkwZmU2NGI3OTA5ZTQ0ODRiNjhkYjhiZjc0Li5hNWU4Y2ZhNGIyYTc4NTE4
MDQ5YjQzNzJhZjJjNzA4MjIwNTAwMDA1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuanMKQEAgLTMxMDcsMTMzICszMTA3LDI2MSBAQCB0ZXN0cy50eXBlZGVmQXJyYXkgPSBmdW5j
dGlvbigpCiAKIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogeworICAgIGRvUHJlcChg
CisgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KDAsIDEsIDIsIDMpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAK
KyAgICAgICAgc3RydWN0IFIgeworICAgICAgICAgICAgZmxvYXQ0IHggOiBTVl9Qb3NpdGlvbjsK
KyAgICAgICAgICAgIGludDQgeSA6IGF0dHJpYnV0ZSgxKTsKKyAgICAgICAgfQorICAgICAgICB2
ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICBSIHo7CisgICAgICAgICAgICB6LnggPSBmbG9h
dDQoMSwgMiwgMywgNCk7CisgICAgICAgICAgICB6LnkgPSBpbnQ0KDUsIDYsIDcsIDgpOworICAg
ICAgICAgICAgcmV0dXJuIHo7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICBz
dHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgeCA6IFNWX1Bvc2l0aW9uOworICAgICAgICAg
ICAgaW50NCB5IDogYXR0cmlidXRlKDEpOworICAgICAgICB9CisgICAgICAgIHN0cnVjdCBTIHsK
KyAgICAgICAgICAgIFIgcjsKKyAgICAgICAgICAgIGZsb2F0MyB6IDogYXR0cmlidXRlKDIpOwor
ICAgICAgICB9CisgICAgICAgIHZlcnRleCBTIGZvbygpIHsKKyAgICAgICAgICAgIFMgdzsKKyAg
ICAgICAgICAgIHcuci54ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgdy5yLnkg
PSBpbnQ0KDUsIDYsIDcsIDgpOworICAgICAgICAgICAgdy56ID0gZmxvYXQzKDksIDEwLCAxMSk7
CisgICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAg
ICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcihi
MCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAq
YnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisg
ICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiByZWdpc3Rl
cihiMCwgc3BhY2UwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0
KCpidWZmZXIsICpidWZmZXIsICpidWZmZXIsICpidWZmZXIpOworICAgICAgICB9YCk7CisgICAg
ZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oY29uc3RhbnQgZmxvYXQqIGJ1ZmZl
ciA6IHJlZ2lzdGVyKGIwLCBzcGFjZTEpKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIHJl
dHVybiBmbG9hdDQoKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlcik7CisgICAgICAg
IH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhjb25zdGFudCBm
bG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZmZXJbMl0sIGJ1ZmZlclsz
XSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZv
byhmbG9hdFs1XSBidWZmZXIgOiByZWdpc3RlcihiMCkpIDogU1ZfUG9zaXRpb24geworICAgICAg
ICAgICAgcmV0dXJuIGZsb2F0NChidWZmZXJbMF0sIGJ1ZmZlclsxXSwgYnVmZmVyWzJdLCBidWZm
ZXJbM10pOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0
NCBmb28oZGV2aWNlIGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24g
eworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyLCAq
YnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAgICAgIHZlcnRleCBmbG9h
dDQgZm9vKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3NpdGlv
biB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZm
ZXJbMl0sIGJ1ZmZlclszXSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2
ZXJ0ZXggZmxvYXQ0IGZvbyh1aW50IHggOiBTVl9JbnN0YW5jZUlEKSA6IFNWX1Bvc2l0aW9uIHsK
KyAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBmbG9hdCh4KSwg
ZmxvYXQoeCkpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSkgOiBTVl9UYXJnZXQwIHsKKyAgICAg
ICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgIH1gKTsKKyAgICBkb1By
ZXAoYAorICAgICAgICBmcmFnbWVudCBmbG9hdDQgZm9vKGludCB4IDogc3BlY2lhbGl6ZWQpIDog
U1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAg
ICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhUZXh0
dXJlMUQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHMgOiByZWdpc3RlcihzMCkp
IDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gU2FtcGxlKHQsIHMsIDAuNCk7Cisg
ICAgICAgIH1gKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAg
ICAgIHZlcnRleCB2b2lkIGZvbygpIDogU1ZfUG9zaXRpb24gewogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnggPSBmbG9hdDQoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGlu
c3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1By
ZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCA6IFBTSVpFKSA6IFNW
X1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KHgsIHgsIHgsIHgpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgRm9vIGZvbygpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gYmFyKCk7CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAg
ICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhpbnQgeCA6IFNWX0luc3RhbmNlSUQpIDogU1ZfUG9zaXRp
b24geworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBm
bG9hdCh4KSwgZmxvYXQoeCkpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgdmVydGV4IGZsb2F0IGJhcigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIDQuOworICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCkg
OiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCh4LCB4LCB4LCB4
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwog
ICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSwgYm9vbCB5IDogU1ZfSXNGcm9udEZh
Y2UpIDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAz
LCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZlcnRleCBGb28gYmFyKGRldmljZSBG
b28qIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAg
ICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hl
Y2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0IFIgewor
ICAgICAgICAgICAgICAgIGZsb2F0NCB4IDogU1ZfVGFyZ2V0MDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZyYWdtZW50IFIgZm9vKGJvb2wgeCA6IFNWX0lzRnJvbnRGYWNlKSA6IFNWX0Rl
cHRoIHsKKyAgICAgICAgICAgICAgICBSIHk7CisgICAgICAgICAgICAgICAgeS54ID0gZmxvYXQ0
KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiB5OwogICAgICAgICAgICAgfQog
ICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAg
ICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAg
ICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAg
ICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAg
Ym9vbCB4IDogU1ZfSXNGcm9udEZhY2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZp
Y2UgQm9vKiB5OworICAgICAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhSIHggOiBTVl9TYW1w
bGVJbmRleCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEs
IDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCks
CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgK
KyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBSIHsKKyAgICAgICAg
ICAgICAgICBib29sIHggOiBTVl9Jc0Zyb250RmFjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0cnVjdCBTIHsKKyAgICAgICAgICAgICAgICBSIHI7CisgICAgICAgICAgICAgICAgYm9v
bCB5IDogU1ZfSXNGcm9udEZhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFnbWVu
dCBmbG9hdDQgZm9vKFMgeCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAg
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRG
YWNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlIEZvbyogeTsKKyAgICAgICAgICAgIGZyYWdtZW50IGZsb2F0NCBmb28oUiB4
KSA6IFNWX1RhcmdldDAgeworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywg
NCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihCb28gYikKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAor
ICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAg
ICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRGYWNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmVydGV4IHVpbnQgZm9vKCkgOiBTVl9WZXJ0ZXhJRCB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDc7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIHR5cGVk
ZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhkZXZp
Y2UgQVtdIHggOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAg
IHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vKiB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9m
IFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAg
ICAgICAgICAgIHR5cGVkZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXgg
ZmxvYXQ0IGZvbyhkZXZpY2UgQSogeCA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3NpdGlvbiB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Cisg
ICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAg
ICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAg
ICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgdHlwZWRlZiBBID0gdGhyZWFkIGZsb2F0KjsK
KyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKEFbNF0geCA6IHJlZ2lzdGVyKHUwKSkgOiBT
Vl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoRm9vIGZvbykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAor
ICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBlbnVtIEZvbyB7CisgICAgICAgICAg
ICAgICAgZiwgZworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
Rm9vIHggOiBzcGVjaWFsaXplZCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAg
ICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVw
KGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4Owor
ICAgICAgICAgICAgY29tcHV0ZSBmbG9hdCBmb28oKSA6IGF0dHJpYnV0ZSgwKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIDU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmcmFnbWVudCBG
b28gYmFyKGRldmljZSBGb28qIHN0YWdlSW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZvbygpOworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAg
ICAgICAgICAgZnJhZ21lbnQgZmxvYXQgZm9vKCkgOiBhdHRyaWJ1dGUoMCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiA1OwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAgKGUp
ID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAg
ICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAgICAg
ICAgICB2ZXJ0ZXggZmxvYXQgZm9vKGRldmljZSBmbG9hdCogeCA6IGF0dHJpYnV0ZSgwKSkgOiBh
dHRyaWJ1dGUoMCkgeworICAgICAgICAgICAgICAgIHJldHVybiA1OwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7Ci0gICAg
ICAgICAgICAgICAgZGV2aWNlIEJvbyogeTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBp
bnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9Q
cmVwKGAKKyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGRldmljZSBmbG9hdCogeCA6IHJl
Z2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0
NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEJvbyBi
YXIoRm9vIHN0YWdlSW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJv
bygpOworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVy
dGV4IGZsb2F0NCBmb28oZmxvYXQgeCA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Cisg
ICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAg
ICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBCb28gewotICAgICAgICAg
ICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZGV2aWNlIGZs
b2F0KiB4IDogcmVnaXN0ZXIodDApKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Ry
dWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7Ci0gICAgICAgICAgICAgICAgZGV2
aWNlIEJvbyogeTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBl
RXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAg
ICAgIHZlcnRleCBmbG9hdDQgZm9vKFRleHR1cmUyRDxmbG9hdD4geCA6IHJlZ2lzdGVyKGIwKSkg
OiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoQm9vIHN0YWdl
SW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAgICAg
ICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tG
YWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBm
b28oY29uc3RhbnQgZmxvYXRbXSB4IDogcmVnaXN0ZXIoczApKSA6IFNWX1Bvc2l0aW9uIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQog
ICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAg
ICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiB9CiAKIHRlc3RzLnZlY3RvclR5
cGVTeW50YXggPSBmdW5jdGlvbigpCkBAIC05MDU5LDcgKzkxODcsNyBAQCB0ZXN0cy5ldmFsdWF0
aW9uT3JkZXJGb3JBcmd1bWVudHMgPSAoKSA9PiB7CiAKIHRlc3RzLmNhbm5vdENhbGxBbm90aGVy
RW50cnlQb2ludCA9ICgpID0+IHsKICAgICBjaGVja0ZhaWwoKCkgPT4gZG9QcmVwKGAKLSAgICAg
ICAgc3RydWN0IEZvbyB7IGludCB4OyB9CisgICAgICAgIHN0cnVjdCBGb28geyBpbnQgeCA6IGF0
dHJpYnV0ZSgwKTsgfQogICAgICAgICB2ZXJ0ZXggRm9vIGZvbygpIHsgcmV0dXJuIGJhcigpOyB9
CiAgICAgICAgIHZlcnRleCBGb28gYmFyKCkgeyByZXR1cm4gRm9vKCk7IH0KICAgICBgKSwgZSA9
PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhPZigiaXQgY2Fubm90
IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBleGlzdGluZyBzaGFkZXIiKSAhPT0gLTEpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggYjhmNGRiY2M0ODdjOWU4
MDcyMjBjYjQwMTE5YmU1OWQyZDZlNjVjNi4uNGVhMWI5ZWU0ZmEwNGQwYTUzZWY2ZTJiMDVhYTUz
OGRlODNmMmZhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBA
IC00MCwxMSArNDAsMTMgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgICAgICAgICBmb3IgKGxldCBh
dHRyaWJ1dGUgb2Ygbm9kZS5hdHRyaWJ1dGVCbG9jaykKICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUudmlzaXQodGhpcyk7CiAgICAgICAgIH0KKyAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFu
dGljLCB0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRGdW5jUGFyYW1ldGVyKG5vZGUpCiAg
ICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQo
bm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RnVuY0RlZihub2Rl
KQpAQCAtOTYsNiArOTgsNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZpZWxkKG5vZGUp
CiAgICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlz
aXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RW51bVR5cGUo
bm9kZSkKQEAgLTM1NSw1ICszNTgsMjEgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgdmlzaXRGdW5j
TnVtVGhyZWFkc0F0dHJpYnV0ZShub2RlKQogICAgIHsKICAgICB9CisKKyAgICB2aXNpdEJ1aWx0
SW5TZW1hbnRpYyhub2RlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXNpdFJlc291cmNlU2VtYW50
aWMobm9kZSkKKyAgICB7CisgICAgfQorCisgICAgdmlzaXRTdGFnZUluT3V0U2VtYW50aWMobm9k
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMobm9kZSkKKyAgICB7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
aW5kZXguaHRtbAppbmRleCBhZTAxMTAwNzA3M2QzZWUyNjE0YjYwYTQxMzgwOGE5MzUzMmRmYmEw
Li5iMzU1NjI0NWNhMmI1NDFkYTFkY2JjOWIzYmJlNzM1Y2FiOTE4YzRhIDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKQEAgLTEyLDYgKzEyLDcgQEAKIDxzY3JpcHQg
c3JjPSJDcmVhdGVMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJOYXRpdmVUeXBl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAKIDxz
Y3JpcHQgc3JjPSJBZGRyZXNzU3BhY2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkFsbG9j
YXRlQXRFbnRyeVBvaW50cy5qcyI+PC9zY3JpcHQ+CkBAIC0yMyw2ICsyNCw3IEBACiA8c2NyaXB0
IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkJvb2xMaXRlcmFsLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCcmVhay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
QnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluTWF0cml4
R2V0dGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluTWF0cml4U2V0dGVyLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIj48L3Njcmlw
dD4KQEAgLTExOCwxMCArMTIwLDEzIEBACiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJu
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm5DaGVja2VyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlNhbXBsZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3RhZ2VJbk91dFNlbWFudGlj
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGFuZGFyZExpYnJhcnkuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IlN0YXRlbWVudENsb25lci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iU3RydWN0TGF5b3V0QnVpbGRlci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350782</attachid>
            <date>2018-09-25 13:43:12 -0700</date>
            <delta_ts>2018-09-25 13:54:16 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-189134-20180925134310.patch</filename>
            <type>text/plain</type>
            <size>105014</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDcxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODNiYjNhMmUwMTkzYmQ0YWQwN2NmODJjZTI5OWMyNjlk
ZTlhNzJjMC4uMjczYmZiNmM2ZWI2ODNiOTY4NTJiZDRmNzg4MjlkZDVhMzM0Y2IzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
MSBAQAorMjAxOC0wOS0yNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSFNMXSBJbXBsZW1lbnQgc2VtYW50aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgcGFyc2luZyBzdXBw
b3J0IGFuZCBhZGRzIHRoZSBjaGVja3MgcmVxdWlyZWQgdG8gc3VwcG9ydCBITFNMLXN0eWxlIHNl
bWFudGljcy4KKworICAgICAgICBUaGVyZSBhcmUgMyBwbGFjZXMgd2hlcmUgc2VtYW50aWNzIGFy
ZSBhbGxvd2VkOgorCisgICAgICAgIDEuIEluIGEgZmllbGQgaW4gYSBzdHJ1Y3QuIEUuZy4KKwor
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbjsKKyAgICAgICAgfQorICAgICAgICB2ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICAu
Li4KKyAgICAgICAgfQorCisgICAgICAgIDIuIEluIGEgcGFyYW1ldGVyIG9mIGEgZnVuY3Rpb24u
IElmIHRoZSBmdW5jdGlvbiBpcyBub3QgYW4gZW50cnkgcG9pbnQsIHRoZSBzZW1hbnRpYyBpcyBp
Z25vcmVkLgorCisgICAgICAgIGNvbXB1dGUgdm9pZCBmb28oZGV2aWNlIGZsb2F0W10gZGF0YSA6
IGJ1ZmZlcih1MCkpIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAgICAgMy4g
T24gYSBmdW5jdGlvbi4gVGhpcyBpcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjcmVhdGUgc3RydWN0
cyBmb3IgdGhlIHJldHVybiB0eXBlcyBvZiBzaW1wbGUgdmVydGV4IHNoYWRlcnMuCisKKyAgICAg
ICAgdmVydGV4IGZsb2F0NCBmb28oKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIC4uLgor
ICAgICAgICB9CisKKyAgICAgICAgVGhlIHNlbWFudGljcyBhcmUgcGFydGl0aW9uZWQgaW50byA0
IHR5cGVzOgorCisgICAgICAgIDEuIEJ1aWx0LWluIHZhcmlhYmxlcy4gRm9yIGV4YW1wbGUsIDog
U1ZfUG9zaXRpb24uCisgICAgICAgIDIuIFJlc291cmNlcy4gRm9yIGV4YW1wbGUsIDogcmVnaXN0
ZXIodTApLgorICAgICAgICAzLiBTdGFnZS1pbiAvIHN0YWdlLW91dCB2YXJpYWJsZXMuIEZvciBl
eGFtcGxlLCA6IGF0dHJpYnV0ZSgwKS4KKyAgICAgICAgNC4gU3BlY2lhbGl6YXRpb24gY29uc3Rh
bnRzLiBGb3IgZXhhbXBsZSwgOiBzcGVjaWFsaXplZC4KKworICAgICAgICBUaGUgc2VtYW50aWNz
IGFyZSB2YWxpZGF0ZWQgYWNjb3JkaW5nIHRvIGEgY29sbGVjdGlvbiBvZiBydWxlczoKKworICAg
ICAgICAtIFRoZSBzYW1lIGVudHJ5IHBvaW50IGNhbid0IGxpc3QgdGhlIHNhbWUgc2VtYW50aWMg
dHdpY2UKKyAgICAgICAgLSBFYWNoIGJ1aWx0LWluIHR5cGUgaGFzIGFuIGFwcHJvcHJpYXRlIHR5
cGUgdGhhdCBpcyBsaXN0ZWQgaW4gdGhlIHNwZWMuIAorICAgICAgICAtIEVhY2ggYnVpbHQtaW4g
aXMgYXBwcm9wcmlhdGUgYXMgZWl0aGVyIGFuIGlucHV0IG9yIGFuIG91dHB1dCBvZiBhIHBhcnRp
Y3VsYXIgc2hhZGVyIHN0YWdlCisgICAgICAgIC0gUmVzb3VyY2Ugc2VtYW50aWNzIGhhdmUgdG8g
aGF2ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSAoZS5nLiBjYW4ndCB1c2UgcmVnaXN0ZXIoczApIG9u
IGEgYnVmZmVyKQorICAgICAgICAtIFJlc291cmNlcyBjYW4ndCBiZSBvdXRwdXQgZnJvbSBlbnRy
eSBwb2ludHMKKyAgICAgICAgLSBUaGUgcmVzb3VyY2Ugc2VtYW50aWMgbW9kZSBtdXN0IG1hdGNo
IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSByZXNvdXJjZQorICAgICAgICAtIFN0YWdlLWluIGFu
ZCBzdGFnZS1vdXQgdmFyaWFibGVzIGhhdmUgdG8gYmUgUE9ECisgICAgICAgIC0gU3BlY2lhbGl6
YXRpb24gY29uc3RhbnRzIGNhbid0IGJlIG91dHB1dCBmcm9tIGVudHJ5IHBvaW50cywgYW5kIGhh
dmUgdG8gYmUgbnVtYmVycworCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxs
LmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5q
czogQWRkZWQuCisgICAgICAgIChCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAoQnVpbHRJblNl
bWFudGljLnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMucHJv
dG90eXBlLmdldCBleHRyYUFyZ3VtZW50cyk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMucHJv
dG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoQnVpbHRJblNlbWFudGljLnByb3Rv
dHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKEJ1aWx0SW5TZW1hbnRp
Yy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxFeHByZXNzaW9uLmpzOgorICAgICAgICAoQ2FsbEV4cHJlc3Npb24ucHJvdG90eXBlLl9y
ZXNvbHZlV2l0aE9wZXJhdG9yQW5kZXJJbmRleGVyKToKKyAgICAgICAgKENhbGxFeHByZXNzaW9u
LnByb3RvdHlwZS5fcmVzb2x2ZVdpdGhPcGVyYXRvckxlbmd0aCk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNrZXIpOgorICAgICAg
ICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIucHJv
dG90eXBlLl9jaGVja1NlbWFudGljcy5JdGVtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBl
Ll9jaGVja1NlbWFudGljcy5JdGVtLnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbS5wcm90b3R5cGUuZ2V0IHNlbWFudGlj
KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlcik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnJlc2V0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGlj
cy5HYXRoZXJlci5wcm90b3R5cGUuc2V0IGN1cnJlbnRTZW1hbnRpYyk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLmdldCBjdXJy
ZW50U2VtYW50aWMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNz
LkdhdGhlcmVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90
eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6Cisg
ICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90
eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0TWF0cml4VHlwZSk6CisgICAgICAgIChD
aGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0
TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3Mu
R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6CisgICAgICAgIChDaGVja2VyLnBy
b3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0VHlwZVJlZik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnZpc2l0UHRyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0QXJyYXlSZWZUeXBlKToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlz
aXRBcnJheVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNz
LkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrRHVwbGljYXRlU2VtYW50aWNzKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVja1NlbWFudGljVHlw
ZXMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrU2Vt
YW50aWNGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1Nl
bWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNp
dEFycmF5VHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3Mu
UE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKENoZWNrZXIu
cHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdE1hdHJp
eFR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLlBPRENo
ZWNrZXIucHJvdG90eXBlLnZpc2l0TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3Rv
dHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQdHJUeXBlKToK
KyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnBy
b3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5f
Y2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRTdHJ1Y3RUeXBlKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3Rv
dHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2Vt
YW50aWNzLlBPRENoZWNrZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2Vt
YW50aWNzLmNoZWNrUE9ERGF0YSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tPcGVyYXRvck92ZXJsb2FkKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZp
c2l0QXJyYXlUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0TWFrZVB0ckV4
cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRNYWtlQXJyYXlSZWZF
eHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9maW5pc2hWaXNpdGluZ1By
b3BlcnR5QWNjZXNzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0SW5kZXhFeHBy
ZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UmV0dXJuKToKKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLnZpc2l0VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRmllbGQuanM6CisgICAgICAgIChGaWVsZCk6CisgICAgICAgIChGaWVsZC5w
cm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAgICAg
KEZ1bmMpOgorICAgICAgICAoRnVuYy5wcm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAg
KEZ1bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY0RlZi5qczoKKyAgICAgICAgKEZ1bmNEZWYpOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5jUGFyYW1l
dGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBzZW1hbnRpYyk6Cisg
ICAgICAgIChGdW5jUGFyYW1ldGVyLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qczoKKyAgICAgICAgKExhdGVDaGVja2VyLnByb3Rv
dHlwZS52aXNpdFJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoTGF0ZUNoZWNrZXIpOgorICAgICAg
ICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUpOiBEZWxldGVkLgorICAg
ICAgICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qczoKKyAgICAgICAgKE5h
dGl2ZUZ1bmMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgor
ICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6CisgICAg
ICAgIChwYXJzZUZ1bmNEZWYpOgorICAgICAgICAocGFyc2VTdGFnZUluT3V0U2VtYW50aWMpOgor
ICAgICAgICAocGFyc2VSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKHBhcnNlU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKHBhcnNlQnVpbHRJblNlbWFudGljKToK
KyAgICAgICAgKHBhcnNlRmllbGQpOgorICAgICAgICAocGFyc2VOYXRpdmVGdW5jKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdz
UmVtb3ZlZC5qczoKKyAgICAgICAgKHByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVk
KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpz
OiBBZGRlZC4KKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoUmVzb3VyY2VT
ZW1hbnRpYy5wcm90b3R5cGUuZ2V0IHJlc291cmNlTW9kZSk6CisgICAgICAgIChSZXNvdXJjZVNl
bWFudGljLnByb3RvdHlwZS5nZXQgaW5kZXgpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5w
cm90b3R5cGUuZ2V0IHNwYWNlKToKKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMucHJvdG90eXBl
LmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5wcm90b3R5cGUu
aXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChSZXNvdXJjZVNlbWFudGljLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVy
KToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFJl
d3JpdGVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRl
ci5wcm90b3R5cGUudmlzaXRSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKFJld3JpdGVyLnBy
b3RvdHlwZS52aXNpdFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRlci5wcm90
b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAoUmV3
cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU2VtYW50aWMuanM6IEFkZGVkLgorICAg
ICAgICAoU2VtYW50aWMpOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmdldCBvcmlnaW4p
OgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBh
cmVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5w
cm90b3R5cGUuZXF1YWxUb090aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0UmVz
b3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5wcm90b3R5cGUuZXF1YWxUb090aGVy
U2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNlbWFudGljKToKKyAg
ICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYy5Db21wYXJlci5w
cm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAo
U2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBhcmVyKToKKyAgICAg
ICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpz
OiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcy4KKyAg
ICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAg
ICAgICAoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFi
bGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1N0YWdlSW5PdXRTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAg
ICAgIChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmdldCBpbmRleCk6CisgICAgICAgIChT
dGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAo
U3RhZ2VJbk91dFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToK
KyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczoKKyAgICAgICAg
KFN0YXRlbWVudENsb25lci5wcm90b3R5cGUudmlzaXROYXRpdmVGdW5jKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5qczoK
KyAgICAgICAgKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanM6
CisgICAgICAgIChzeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVy
YXRvci5qczoKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvcik6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUVudW1GdW5jdGlv
bnMuanM6CisgICAgICAgIChzeW50aGVzaXplRW51bUZ1bmN0aW9ucyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qczoKKyAgICAg
ICAgKHNldHVwQW5kZXIpOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29yc0ZvclN0
cnVjdFR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAodGVz
dHMuc2hhZGVyVHlwZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanM6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEZ1bmMpOgorICAgICAgICAo
VmlzaXRvci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKFZpc2l0b3Iu
cHJvdG90eXBlLnZpc2l0RmllbGQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRC
dWlsdEluU2VtYW50aWMpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRSZXNvdXJj
ZVNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNl
bWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IpOgorICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIwMTgtMDktMjUgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZp
eCBhZnRlciByMjM2NDU1CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggOTA0
NmVkNGYyOTk2MWNhMGM1YTllYTExMDM1MWViNzkzMzVkNTA1OC4uNzAzOTI1MmYyMDgzM2FhNjgx
YjA2YmFiNTU2NzkyNTlkYjkxYzY4MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5q
cwpAQCAtMzUsNiArMzUsNyBAQCBsb2FkKCJDcmVhdGVMaXRlcmFsLmpzIik7CiBsb2FkKCJDcmVh
dGVMaXRlcmFsVHlwZS5qcyIpOwogbG9hZCgiUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmpzIik7
CiBsb2FkKCJOYXRpdmVUeXBlLmpzIik7Citsb2FkKCJTZW1hbnRpYy5qcyIpOwogCiBsb2FkKCJB
ZGRyZXNzU3BhY2UuanMiKTsKIGxvYWQoIkFsbG9jYXRlQXRFbnRyeVBvaW50cy5qcyIpOwpAQCAt
NDYsNiArNDcsNyBAQCBsb2FkKCJBdXRvV3JhcHBlci5qcyIpOwogbG9hZCgiQmxvY2suanMiKTsK
IGxvYWQoIkJvb2xMaXRlcmFsLmpzIik7CiBsb2FkKCJCcmVhay5qcyIpOworbG9hZCgiQnVpbHRJ
blNlbWFudGljLmpzIik7CiBsb2FkKCJCdWlsdGluTWF0cml4R2V0dGVyLmpzIik7CiBsb2FkKCJC
dWlsdGluTWF0cml4U2V0dGVyLmpzIik7CiBsb2FkKCJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIik7
CkBAIC0xNDEsMTAgKzE0MywxMyBAQCBsb2FkKCJSZXNvbHZlTmFtZXMuanMiKTsKIGxvYWQoIlJl
c29sdmVPdmVybG9hZEltcGwuanMiKTsKIGxvYWQoIlJlc29sdmVQcm9wZXJ0aWVzLmpzIik7CiBs
b2FkKCJSZXNvbHZlVHlwZURlZnMuanMiKTsKK2xvYWQoIlJlc291cmNlU2VtYW50aWMuanMiKTsK
IGxvYWQoIlJldHVybi5qcyIpOwogbG9hZCgiUmV0dXJuQ2hlY2tlci5qcyIpOwogbG9hZCgiUmV0
dXJuRXhjZXB0aW9uLmpzIik7CiBsb2FkKCJTYW1wbGVyLmpzIik7Citsb2FkKCJTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuanMiKTsKK2xvYWQoIlN0YWdlSW5PdXRTZW1hbnRpYy5qcyIp
OwogbG9hZCgiU3RhbmRhcmRMaWJyYXJ5LmpzIik7CiBsb2FkKCJTdGF0ZW1lbnRDbG9uZXIuanMi
KTsKIGxvYWQoIlN0cnVjdExheW91dEJ1aWxkZXIuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTM5MzMyOGNm
ZGViYTA0ZDRlMzFlMzcxNmFkODkxOWU5NDFkNGRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQnVpbHRJblNlbWFudGljLmpzCkBAIC0wLDAgKzEsMTYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3Ry
aWN0IjsKKworY2xhc3MgQnVpbHRJblNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNv
bnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgLi4uZXh0cmFBcmd1bWVudHMpCisgICAgeworICAgICAg
ICBzdXBlcihvcmlnaW4pOworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgdGhp
cy5fZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKKyAgICB9CisKKyAgICBnZXQgbmFt
ZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH0KKyAgICBnZXQgZXh0cmFBcmd1bWVudHMoKSB7IHJl
dHVybiB0aGlzLl9leHRyYUFyZ3VtZW50czsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBl
LCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgbGV0IHJlcXVpcmVkVHlwZTsKKyAgICAgICAgc3dp
dGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgY2FzZSAiU1ZfSW5zdGFuY2VJRCI6CisgICAgICAg
ICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICJTVl9WZXJ0ZXhJRCI6CisgICAgICAgICAgICByZXF1aXJl
ZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICJQU0laRSI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmlu
dHJpbnNpY3MuZmxvYXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfUG9z
aXRpb24iOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzWyJ2
ZWN0b3I8ZmxvYXQsIDQ+Il07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1Zf
SXNGcm9udEZhY2UiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5z
aWNzLmJvb2w7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfU2FtcGxlSW5k
ZXgiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfSW5uZXJDb3ZlcmFnZSI6Cisg
ICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9UYXJnZXQiOgorICAgICAgICAgICAgcmVx
dWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzWyJ2ZWN0b3I8ZmxvYXQsIDQ+Il07CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfRGVwdGgiOgorICAgICAgICAgICAgcmVx
dWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLmZsb2F0OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgIlNWX0NvdmVyYWdlIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9
IHByb2dyYW0uaW50cmluc2ljcy51aW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgIlNWX0Rpc3BhdGNoVGhyZWFkSUQiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJv
Z3JhbS5pbnRyaW5zaWNzWyJ2ZWN0b3I8dWludCwgMz4iXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICJTVl9Hcm91cElEIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHBy
b2dyYW0uaW50cmluc2ljc1sidmVjdG9yPHVpbnQsIDM+Il07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAiU1ZfR3JvdXBJbmRleCI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUg
PSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJTVl9Hcm91cFRocmVhZElEIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dy
YW0uaW50cmluc2ljc1sidmVjdG9yPHVpbnQsIDM+Il07CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzZW1h
bnRpYzogJHt0aGlzLm5hbWV9YCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHlwZS5l
cXVhbHMocmVxdWlyZWRUeXBlKTsKKyAgICB9CisKKyAgICBpc0FjY2VwdGFibGVGb3JTaGFkZXJU
eXBlKGRpcmVjdGlvbiwgc2hhZGVyVHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc2hhZGVy
VHlwZSkgeworICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgorICAgICAgICAgICAgc3dpdGNoIChkaXJl
Y3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgImlucHV0IjoKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgIlNWX0luc3RhbmNlSUQiOgor
ICAgICAgICAgICAgICAgIGNhc2UgIlNWX1ZlcnRleElEIjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgIm91
dHB1dCI6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlICJQU0laRSI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfUG9zaXRpb24iOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICBjYXNlICJmcmFnbWVudCI6CisgICAgICAgICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgeworICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgorICAgICAgICAgICAg
ICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfSXNGcm9u
dEZhY2UiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNWX1NhbXBsZUluZGV4IjoKKyAgICAgICAg
ICAgICAgICBjYXNlICJTVl9Jbm5lckNvdmVyYWdlIjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgIm91dHB1
dCI6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICJTVl9UYXJnZXQiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNWX0RlcHRoIjoKKyAg
ICAgICAgICAgICAgICBjYXNlICJTVl9Db3ZlcmFnZSI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IGNhc2UgImNvbXB1dGUiOgorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSAiaW5wdXQiKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHN3aXRjaCAodGhpcy5u
YW1lKSB7CisgICAgICAgICAgICBjYXNlICJTVl9EaXNwYXRjaFRocmVhZElEIjoKKyAgICAgICAg
ICAgIGNhc2UgIlNWX0dyb3VwSUQiOgorICAgICAgICAgICAgY2FzZSAiU1ZfR3JvdXBJbmRleCI6
CisgICAgICAgICAgICBjYXNlICJTVl9Hcm91cFRocmVhZElEIjoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlICJ0ZXN0IjoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBVbmtub3duIHNoYWRlIHR5cGU6ICR7c2hhZGVyVHlwZX1gKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm5h
bWU7CisgICAgICAgIGlmICh0aGlzLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgcmVzdWx0
ICs9IHRoaXMuZXh0cmFBcmd1bWVudHMuam9pbigiIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
YWxsRXhwcmVzc2lvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHBy
ZXNzaW9uLmpzCmluZGV4IDRlNGQ2NWYwOTEzODA0ZjRkMGU3MGMwMDJiZjYzMTQwNjBiMGVlMmUu
LmI0YzBkYTc4NzczMGExYjM4ODEwYzhiNTk0MzE3ODQ5MDlkZGIzZTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCkBAIC0xMjksNyArMTI5
LDcgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAg
Y29uc3QgZnVuYyA9IG5ldyBOYXRpdmVGdW5jKHRoaXMub3JpZ2luLCAib3BlcmF0b3ImW10iLCB0
aGlzLnJlc3VsdFR5cGUsIFsKICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKHRoaXMub3Jp
Z2luLCBudWxsLCBhcnJheVJlZlR5cGUpLAogICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIo
dGhpcy5vcmlnaW4sIG51bGwsIHVpbnRUeXBlKQotICAgICAgICBdLCBmYWxzZSwgbnVsbCk7Cisg
ICAgICAgIF0sIGZhbHNlKTsKIAogICAgICAgICBhcnJheVJlZkFjY2Vzc29yLmluc3RhbnRpYXRl
SW1wbGVtZW50YXRpb24oZnVuYyk7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBDYWxsRXhw
cmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24gewogICAgICAgICAgICAgY29uc3QgYXJyYXlUeXBl
ID0gdGhpcy5hcmd1bWVudFR5cGVzWzBdOwogICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBO
YXRpdmVGdW5jKHRoaXMub3JpZ2luLCAib3BlcmF0b3IubGVuZ3RoIiwgdGhpcy5yZXN1bHRUeXBl
LCBbCiAgICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodGhpcy5vcmlnaW4sIG51bGws
IGFycmF5VHlwZSkKLSAgICAgICAgICAgIF0sIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgIF0s
IGZhbHNlKTsKICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoYXJncywgbm9kZSkg
PT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUpOwogICAgICAgICAgICAgcmV0
dXJuIGZ1bmM7CiAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcmd1bWVudFR5cGVzWzBdLmlzQXJy
YXlSZWYpIHsKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRz
IEV4cHJlc3Npb24gewogICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3JMZW5ndGggPSBuZXcgT3Bl
cmF0b3JBcnJheVJlZkxlbmd0aChhcnJheVJlZlR5cGUudG9TdHJpbmcoKSwgYWRkcmVzc1NwYWNl
KTsKICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwg
Im9wZXJhdG9yLmxlbmd0aCIsIHRoaXMucmVzdWx0VHlwZSwgWwogICAgICAgICAgICAgICAgIG5l
dyBGdW5jUGFyYW1ldGVyKHRoaXMub3JpZ2luLCBudWxsLCBhcnJheVJlZlR5cGUpCi0gICAgICAg
ICAgICBdLCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICBdLCBmYWxzZSk7CiAgICAgICAgICAg
ICBvcGVyYXRvckxlbmd0aC5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpOwogICAgICAg
ICAgICAgcmV0dXJuIGZ1bmM7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NoZWNrZXIuanMKaW5kZXggMTRmOWQyYjRmN2EyZWJiNWQyMTAzNjY1MzI3N2I5NWE0
MGQ4NmQyZC4uODY1NWNmMzc4MzU2ZTQ3N2RiMmViMDVkZDM0MzViNTlkODdkNDNiMiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC0zMiwxNSArMzIsMTYgQEAg
Y2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB0aGlzLl9jdXJyZW50U3Rh
dGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmVydGV4RW50cnlQb2ludHMgPSBuZXcgU2V0
KCk7CiAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMgPSBuZXcgU2V0KCk7CisgICAg
ICAgIHRoaXMuX2NvbXB1dGVFbnRyeVBvaW50cyA9IG5ldyBTZXQoKTsKICAgICB9Ci0gICAgCisK
ICAgICB2aXNpdFByb2dyYW0obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBkb1N0YXRlbWVudCA9
IHN0YXRlbWVudCA9PiB7CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGVtZW50ID0gc3Rh
dGVtZW50OwogICAgICAgICAgICAgc3RhdGVtZW50LnZpc2l0KHRoaXMpOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IHR5cGUgb2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkg
ewogICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgewogICAgICAgICAgICAg
ICAgIGZvciAobGV0IGNvbnN0aXR1ZW50VHlwZSBvZiB0eXBlKQpAQCAtNTksMTAgKzYwLDIwMSBA
QCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBfY2hlY2tTZW1hbnRpY3Mobm9kZSkKKyAgICB7CisgICAgICAgIGNsYXNzIEl0ZW0geworICAg
ICAgICAgICAgY29uc3RydWN0b3IodHlwZSwgc2VtYW50aWMpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSAhPSAidGVzdCIgJiYgIXNlbWFudGljKQor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJBbiBlbnRyeS1wb2ludCBpbnB1dC9vdXRwdXQgZXhpc3RzIHdoaWNoIGRvZXNu
J3QgaGF2ZSBhIHNlbWFudGljIik7CisgICAgICAgICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7
CisgICAgICAgICAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAg
ICAgICAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQorICAgICAg
ICB9CisKKyAgICAgICAgbGV0IHByb2dyYW0gPSB0aGlzLl9wcm9ncmFtOworICAgICAgICBjbGFz
cyBHYXRoZXJlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgY29uc3RydWN0b3IoY3Vy
cmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdXBl
cigpOworICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1h
bnRpYzsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmVzZXQoY3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1hbnRp
YzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRpYyh2YWx1
ZSkgeyB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSB2YWx1ZTsgfQorICAgICAgICAgICAgZ2V0IGN1
cnJlbnRTZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQorICAgICAg
ICAgICAgZ2V0IHJlc3VsdCgpIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQorCisgICAgICAgICAg
ICB2aXNpdEVudW1UeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhp
cy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRo
aXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0
TWF0cml4VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMucmVz
dWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHByb2dyYW0uaW50cmluc2ljcy52b2lkLmVxdWFscyhub2Rl
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VtYW50aWMpCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJWb2lkIGNhbid0IGhhdmUgYSBzZW1hbnRpYyIpOworICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5v
ZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpc2l0U3RydWN0VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmN1cnJlbnRTZW1hbnRpYyAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTdHJ1Y3RzIGluc2lk
ZSBlbnRyeSBwb2ludCBzaWduYXR1cmVzIGNhbid0IGhhdmUgc2VtYW50aWNzLiIpOworICAgICAg
ICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuY3VycmVudFNlbWFudGljID0gZmllbGQuc2VtYW50aWM7CisgICAgICAgICAg
ICAgICAgICAgIGZpZWxkLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFR5cGVSZWYobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZpc2l0UHRyVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2Vt
YW50aWMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRBcnJheVJlZlR5cGUo
bm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5l
dyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZpc2l0QXJyYXlUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRp
YykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VtYW50aWMg
PSBub2RlLnNlbWFudGljOworICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBpbnB1dEdhdGhlcmVyID0g
bmV3IEdhdGhlcmVyKCk7CisgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFt
ZXRlcnMpIHsKKyAgICAgICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsKKyAgICAgICAgICAg
IHBhcmFtZXRlci52aXNpdChpbnB1dEdhdGhlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBsZXQg
b3V0cHV0R2F0aGVyZXIgPSBuZXcgR2F0aGVyZXIobm9kZS5zZW1hbnRpYyk7CisgICAgICAgIG5v
ZGUucmV0dXJuVHlwZS52aXNpdChvdXRwdXRHYXRoZXJlcik7CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaXRlbXMpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBN
YWtlIHRoaXMgZmFzdGVyIHRoYW4gTyhuXjIpCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkg
KyAxOyBqIDwgaXRlbXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0
ZW1zW2ldLnNlbWFudGljICYmIGl0ZW1zW2ldLnNlbWFudGljLmVxdWFsVG9PdGhlclNlbWFudGlj
KGl0ZW1zW2pdLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgYER1cGxpY2F0ZSBzZW1hbnRpYyBm
b3VuZCBpbiBlbnRyeSBwb2ludDogJHtpdGVtc1tpXS5zZW1hbnRpY31gKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tEdXBsaWNhdGVT
ZW1hbnRpY3MoaW5wdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAgICBjaGVja0R1cGxpY2F0ZVNl
bWFudGljcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQpOworCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
U2VtYW50aWNUeXBlcyhpdGVtcykgeworICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVt
cykgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNlbWFudGlj
LmlzQWNjZXB0YWJsZVR5cGUoaXRlbS50eXBlLCBwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCBgU2VtYW50
aWMgJHtpdGVtLnNlbWFudGljfSBpcyB1bm5hY2NlcHRhYmxlIHR5cGUgJHtpdGVtLnR5cGV9YCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tTZW1hbnRpY1R5cGVzKGlu
cHV0R2F0aGVyZXIucmVzdWx0KTsKKyAgICAgICAgY2hlY2tTZW1hbnRpY1R5cGVzKG91dHB1dEdh
dGhlcmVyLnJlc3VsdCk7CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tTZW1hbnRpY0ZvclNoYWRl
clR5cGUoaXRlbXMsIGRpcmVjdGlvbikgeworICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBp
dGVtcykgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNlbWFu
dGljLmlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBub2RlLnNoYWRlclR5cGUp
KQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsIGBTZW1hbnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFibGUg
YXMgYW4gJHtkaXJlY3Rpb259IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBlfWApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJU
eXBlKGlucHV0R2F0aGVyZXIucmVzdWx0LCAiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tTZW1hbnRp
Y0ZvclNoYWRlclR5cGUob3V0cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisKKyAgICAg
ICAgY2xhc3MgUE9EQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgdmlzaXRF
bnVtVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdEFycmF5VHlwZShub2RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmVsZW1lbnRUeXBlLnZpc2l0
KHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBub2RlLmlzTnVtYmVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNp
dFB0clR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0QXJyYXlSZWZUeXBlKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3Ig
KGxldCBmaWVsZCBvZiBub2RlLmZpZWxkcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0ICYmIGZpZWxkLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlwZVJlZihub2RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUudmlzaXQodGhpcyk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2hlY2tQT0REYXRh
KGl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAg
ICAgICAgICAgaWYgKChpdGVtLnR5cGUgaW5zdGFuY2VvZiBQdHJUeXBlKSB8fCAoaXRlbS50eXBl
IGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2YgQXJyYXlU
eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZS5lbGVtZW50VHlwZS52
aXNpdChuZXcgUE9EQ2hlY2tlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkJ1ZmZlciBhdHRhY2hlZCB0
byBlbnRyeSBwb2ludCBuZWVkcyB0byBvbmx5IGNvbnRhaW4gUE9EIHR5cGVzIik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNoZWNrUE9ERGF0
YShpbnB1dEdhdGhlcmVyLnJlc3VsdCk7CisgICAgICAgIGNoZWNrUE9ERGF0YShvdXRwdXRHYXRo
ZXJlci5yZXN1bHQpOworICAgIH0KKwogICAgIF9jaGVja1NoYWRlclR5cGUobm9kZSkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBSZWxheCB0aGVzZSBjaGVja3Mgb25jZSB3ZSBoYXZlIGltcGxl
bWVudGVkIHN1cHBvcnQgZm9yIHRleHR1cmVzIGFuZCBzYW1wbGVycy4KLSAgICAgICAgbGV0IHNo
YWRlckZ1bmMgPSBub2RlOwogICAgICAgICBzd2l0Y2ggKG5vZGUuc2hhZGVyVHlwZSkgewogICAg
ICAgICBjYXNlICJ2ZXJ0ZXgiOgogICAgICAgICAgICAgaWYgKHRoaXMuX3ZlcnRleEVudHJ5UG9p
bnRzLmhhcyhub2RlLm5hbWUpKQpAQCAtNzQsNiArMjY2LDE1IEBAIGNsYXNzIENoZWNrZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZnJhZ21lbnQgZW50cnkgcG9pbnQgbmFt
ZSAiICsgbm9kZS5uYW1lKTsKICAgICAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMu
YWRkKG5vZGUubmFtZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiY29tcHV0
ZSI6CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcHV0ZUVudHJ5UG9pbnRzLmhhcyhub2RlLm5h
bWUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9y
aWdpblN0cmluZywgIkR1cGxpY2F0ZSBjb21wdXRlIGVudHJ5IHBvaW50IG5hbWUgIiArIG5vZGUu
bmFtZSk7CisgICAgICAgICAgICB0aGlzLl9jb21wdXRlRW50cnlQb2ludHMuYWRkKG5vZGUubmFt
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIHNoYWRlciB0eXBlOiAiICsgbm9kZS5zaGFkZXJUeXBlKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtODQsNyArMjg1LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogCiAg
ICAgICAgIGlmICghZnVuYy5uYW1lLnN0YXJ0c1dpdGgoIm9wZXJhdG9yIikpCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvcGVyYXRvciBvdmVybG9hZCBuYW1lOiAiICsgZnVuYy5u
YW1lKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGNoZWNrR2V0dGVyID0gKGtpbmQpID0+IHsK
ICAgICAgICAgICAgIGxldCBudW1FeHBlY3RlZFBhcmFtZXRlcnMgPSBraW5kID09ICJpbmRleCIg
PyAyIDogMTsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlcnMubGVuZ3RoICE9IG51bUV4
cGVjdGVkUGFyYW1ldGVycykKQEAgLTkyLDcgKzI5Myw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlclR5cGVzWzBdLnVuaWZ5
Tm9kZS5pc1B0cikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9y
aWdpbi5vcmlnaW5TdHJpbmcsICJDYW5ub3QgaGF2ZSBnZXR0ZXIgZm9yIHBvaW50ZXIgdHlwZTog
IiArIGZ1bmMucGFyYW1ldGVyVHlwZXNbMF0pOwogICAgICAgICB9OwotICAgICAgICAKKwogICAg
ICAgICBsZXQgY2hlY2tTZXR0ZXIgPSAoa2luZCkgPT4gewogICAgICAgICAgICAgbGV0IG51bUV4
cGVjdGVkUGFyYW1ldGVycyA9IGtpbmQgPT0gImluZGV4IiA/IDMgOiAyOwogICAgICAgICAgICAg
aWYgKGZ1bmMucGFyYW1ldGVycy5sZW5ndGggIT0gbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzKQpAQCAt
MTE0LDcgKzMxNSw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAg
ICAgIGlmICghcmVzdWx0VHlwZS5lcXVhbHModmFsdWVUeXBlKSkKICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTZXR0ZXIgYW5k
IGdldHRlciBtdXN0IGFncmVlIG9uIHZhbHVlIHR5cGUgKGdldHRlciBhdCAiICsgb3ZlcmxvYWQu
ZnVuYy5vcmlnaW4ub3JpZ2luU3RyaW5nICsgIiBzYXlzICIgKyByZXN1bHRUeXBlICsgIiB3aGls
ZSB0aGlzIHNldHRlciBzYXlzICIgKyB2YWx1ZVR5cGUgKyAiKSIpOwogICAgICAgICB9OwotICAg
ICAgICAKKwogICAgICAgICBsZXQgY2hlY2tBbmRlciA9IChraW5kKSA9PiB7CiAgICAgICAgICAg
ICBsZXQgbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzID0ga2luZCA9PSAiaW5kZXgiID8gMiA6IDE7CiAg
ICAgICAgICAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBudW1FeHBlY3RlZFBhcmFt
ZXRlcnMpCkBAIC0xMjQsNyArMzI1LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgICAgICAgICAgaWYgKCFmdW5jLnBhcmFtZXRlclR5cGVzWzBdLnVuaWZ5Tm9kZS5pc1Jl
ZikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJQYXJhbWV0ZXIgdG8gYW5kZXIgaXMgbm90IGEgcmVmZXJlbmNlOiAiICsgZnVu
Yy5wYXJhbWV0ZXJUeXBlc1swXSk7CiAgICAgICAgIH07Ci0gICAgICAgIAorCiAgICAgICAgIHN3
aXRjaCAoZnVuYy5uYW1lKSB7CiAgICAgICAgIGNhc2UgIm9wZXJhdG9yIGNhc3QiOgogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xODksNDQgKzM5MCw0NiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNlciBhY2NlcHRlZCB1
bnJlY29nbml6ZWQgb3BlcmF0b3I6ICIgKyBmdW5jLm5hbWUpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgdmlzaXRGdW5jRGVmKG5vZGUpCiAgICAgewotICAgICAgICBpZiAobm9kZS5z
aGFkZXJUeXBlKQorICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlKSB7CiAgICAgICAgICAgICB0
aGlzLl9jaGVja1NoYWRlclR5cGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9jaGVja1NlbWFu
dGljcyhub2RlKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLl9jaGVja09wZXJhdG9yT3Zlcmxv
YWQobm9kZSwgbmFtZSA9PiB0aGlzLl9wcm9ncmFtLmZ1bmN0aW9ucy5nZXQobmFtZSkpOwogICAg
ICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRFbnVt
VHlwZShub2RlKQogICAgIHsKICAgICAgICAgbm9kZS5iYXNlVHlwZS52aXNpdCh0aGlzKTsKLSAg
ICAgICAgCisKICAgICAgICAgbGV0IGJhc2VUeXBlID0gbm9kZS5iYXNlVHlwZS51bmlmeU5vZGU7
Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghYmFzZVR5cGUuaXNJbnQpCiAgICAgICAgICAgICB0
aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJCYXNlIHR5cGUg
b2YgZW51bSBpcyBub3QgYW4gaW50ZWdlcjogIiArIG5vZGUuYmFzZVR5cGUpOwotICAgICAgICAK
KwogICAgICAgICBmb3IgKGxldCBtZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAg
ICBpZiAoIW1lbWJlci52YWx1ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICBsZXQgbWVtYmVyVHlwZSA9IG1lbWJlci52YWx1ZS52aXNpdCh0
aGlzKTsKICAgICAgICAgICAgIGlmICghYmFzZVR5cGUuZXF1YWxzV2l0aENvbW1pdChtZW1iZXJU
eXBlKSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihtZW1iZXIub3JpZ2lu
Lm9yaWdpblN0cmluZywgIlR5cGUgb2YgZW51bSBtZW1iZXIgIiArIG1lbWJlci52YWx1ZS5uYW1l
ICsgIiBkb2VzIG5vdCBwYXRjaCBlbnVtIGJhc2UgdHlwZSAobWVtYmVyIHR5cGUgaXMgIiArIG1l
bWJlclR5cGUgKyAiLCBlbnVtIGJhc2UgdHlwZSBpcyAiICsgbm9kZS5iYXNlVHlwZSArICIpIik7
CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0IG5leHRWYWx1ZSA9IGJhc2VUeXBl
LmRlZmF1bHRWYWx1ZTsKICAgICAgICAgZm9yIChsZXQgbWVtYmVyIG9mIG5vZGUubWVtYmVycykg
ewogICAgICAgICAgICAgaWYgKG1lbWJlci52YWx1ZSkgewogICAgICAgICAgICAgICAgIG5leHRW
YWx1ZSA9IGJhc2VUeXBlLnN1Y2Nlc3NvclZhbHVlKG1lbWJlci52YWx1ZS51bmlmeU5vZGUudmFs
dWVGb3JTZWxlY3RlZFR5cGUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIG1lbWJlci52YWx1ZSA9IGJhc2VUeXBl
LmNyZWF0ZUxpdGVyYWwobWVtYmVyLm9yaWdpbiwgbmV4dFZhbHVlKTsKICAgICAgICAgICAgIG5l
eHRWYWx1ZSA9IGJhc2VUeXBlLnN1Y2Nlc3NvclZhbHVlKG5leHRWYWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgbGV0IG1lbWJlckFycmF5ID0gQXJyYXkuZnJvbShub2RlLm1l
bWJlcnMpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbWJlckFycmF5Lmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyQXJyYXlbaV07CkBAIC0yMzYs
NyArNDM5LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihvdGhlck1lbWJlci5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiRHVwbGljYXRlIGVudW0gbWVtYmVyIHZhbHVlICgiICsgbWVtYmVyLm5hbWUgKyAiIGhh
cyAiICsgbWVtYmVyLnZhbHVlICsgIiB3aGlsZSAiICsgb3RoZXJNZW1iZXIubmFtZSArICIgaGFz
ICIgKyBvdGhlck1lbWJlci52YWx1ZSArICIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgbGV0IGZvdW5kWmVybyA9IGZhbHNlOwogICAgICAgICBmb3Ig
KGxldCBtZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAgICBpZiAoYmFzZVR5cGUu
dmFsdWVzRXF1YWwobWVtYmVyLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSwg
YmFzZVR5cGUuZGVmYXVsdFZhbHVlKSkgewpAQCAtMjQ3LDcgKzQ1MCw3IEBAIGNsYXNzIENoZWNr
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKCFmb3VuZFplcm8pCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJFbnVtIGRv
ZXMgbm90IGhhdmUgYSBtZW1iZXIgd2l0aCB0aGUgdmFsdWUgemVybyIpOwogICAgIH0KLSAgICAK
KwogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnR5cGUp
CkBAIC0zMDYsMjAgKzUwOSwyMCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIGlmIChub2RlLm51bUNvbHVtbnNWYWx1ZSAhPSAyICYmIG5vZGUubnVtQ29sdW1uc1Zh
bHVlICE9IDMgJiYgbm9kZS5udW1Db2x1bW5zVmFsdWUgIT0gNCkKICAgICAgICAgICAgIHRocm93
IG5ldyBXVHlwZUVycm9yKGAke25vZGUudG9TdHJpbmcoKX06ICR7bm9kZS5udW1Db2x1bW5zVmFs
dWV9IGlzIG5vdCAyLCAzLCBvciA0LmApOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0QXJyYXlU
eXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOwot
ICAgICAgICAKKwogICAgICAgICBpZiAoIW5vZGUubnVtRWxlbWVudHMuaXNDb25zdGV4cHIpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcs
ICJBcnJheSBsZW5ndGggbXVzdCBiZSBjb25zdGV4cHIiKTsKLSAgICAgICAgCisKICAgICAgICAg
bGV0IHR5cGUgPSBub2RlLm51bUVsZW1lbnRzLnZpc2l0KHRoaXMpOwotICAgICAgICAKKwogICAg
ICAgICBpZiAoIXR5cGUuZXF1YWxzV2l0aENvbW1pdCh0aGlzLl9wcm9ncmFtLmludHJpbnNpY3Mu
dWludCkpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJBcnJheSBsZW5ndGggbXVzdCBiZSBhIHVpbnQiKTsKICAgICB9Ci0gICAgCisK
ICAgICB2aXNpdFZhcmlhYmxlRGVjbChub2RlKQogICAgIHsKICAgICAgICAgbm9kZS50eXBlLnZp
c2l0KHRoaXMpOwpAQCAtMzMwLDcgKzUzMyw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uOiAi
ICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyByaHNUeXBlKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHZpc2l0QXNzaWdubWVudChub2RlKQogICAgIHsKICAgICAgICAgbGV0IGxoc1R5
cGUgPSBub2RlLmxocy52aXNpdCh0aGlzKTsKQEAgLTM0MiwxMiArNTQ1LDEyIEBAIGNsYXNzIENo
ZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgbm9kZS50eXBlID0gbGhzVHlwZTsKICAg
ICAgICAgcmV0dXJuIGxoc1R5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRJZGVudGl0eUV4
cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLnRhcmdldC52aXNpdCh0
aGlzKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24o
bm9kZSkKICAgICB7CiAgICAgICAgIGxldCBsaHNUeXBlID0gbm9kZS5sVmFsdWUudmlzaXQodGhp
cyk7CkBAIC0zNjIsMTMgKzU2NSwxMyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiVHlwZSBtaXNtYXRjaCBpbiByZWFkLW1vZGlmeS13cml0ZTogIiArIGxoc1R5cGUgKyAi
IHZlcnN1cyAiICsgbmV3VmFsdWVUeXBlKTsKICAgICAgICAgcmV0dXJuIG5vZGUucmVzdWx0RXhw
LnZpc2l0KHRoaXMpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0QW5vbnltb3VzVmFyaWFibGUo
bm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS50eXBlKQogICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJBbm9ueW1vdXMgdmFyaWFibGUgbXVzdCBrbm93IHR5cGUgYmVmb3JlIGZpcnN0
IGFwcGVhcmFuY2UiKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdERlcmVmZXJlbmNlRXhwcmVz
c2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUgPSBub2RlLnB0ci52aXNpdCh0aGlz
KS51bmlmeU5vZGU7CkBAIC0zODAsMTYgKzU4MywxNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk51bGwgYWRkcmVzcyBzcGFj
ZSBpbiB0eXBlOiAiICsgdHlwZSk7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7CiAgICAgfQot
ICAgIAorCiAgICAgdmlzaXRNYWtlUHRyRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAg
bGV0IGVsZW1lbnRUeXBlID0gbm9kZS5sVmFsdWUudmlzaXQodGhpcykudW5pZnlOb2RlOwogICAg
ICAgICBpZiAoIW5vZGUubFZhbHVlLmlzTFZhbHVlKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiT3BlcmFuZCB0byAmIGlzIG5vdCBh
biBMVmFsdWU6ICIgKyBub2RlLmxWYWx1ZSArIG5vZGUubFZhbHVlLm5vdExWYWx1ZVJlYXNvblN0
cmluZyk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgUHRyVHlwZShub2RlLm9yaWdp
biwgbm9kZS5sVmFsdWUuYWRkcmVzc1NwYWNlLCBlbGVtZW50VHlwZSk7CiAgICAgfQotICAgIAor
CiAgICAgdmlzaXRNYWtlQXJyYXlSZWZFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBs
ZXQgZWxlbWVudFR5cGUgPSBub2RlLmxWYWx1ZS52aXNpdCh0aGlzKS51bmlmeU5vZGU7CkBAIC0z
OTcsMzcgKzYwMCwzNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
ICAgICBub2RlLmJlY29tZShuZXcgQ29udmVydFB0clRvQXJyYXlSZWZFeHByZXNzaW9uKG5vZGUu
b3JpZ2luLCBub2RlLmxWYWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheVJlZlR5
cGUobm9kZS5vcmlnaW4sIGVsZW1lbnRUeXBlLmFkZHJlc3NTcGFjZSwgZWxlbWVudFR5cGUuZWxl
bWVudFR5cGUpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5sVmFs
dWUuaXNMVmFsdWUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJPcGVyYW5kIHRvIEAgaXMgbm90IGFuIExWYWx1ZTogIiArIG5vZGUu
bFZhbHVlICsgbm9kZS5sVmFsdWUubm90TFZhbHVlUmVhc29uU3RyaW5nKTsKLSAgICAgICAgCisK
ICAgICAgICAgaWYgKGVsZW1lbnRUeXBlLmlzQXJyYXkpIHsKICAgICAgICAgICAgIG5vZGUubnVt
RWxlbWVudHMgPSBlbGVtZW50VHlwZS5udW1FbGVtZW50czsKICAgICAgICAgICAgIGVsZW1lbnRU
eXBlID0gZWxlbWVudFR5cGUuZWxlbWVudFR5cGU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbm9kZS5udW1FbGVtZW50cyA9IFVpbnRMaXRlcmFsLndpdGhUeXBlKG5vZGUub3JpZ2luLCAx
LCB0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MudWludCk7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICByZXR1cm4gbmV3IEFycmF5UmVmVHlwZShub2RlLm9yaWdpbiwgbm9kZS5sVmFsdWUuYWRkcmVz
c1NwYWNlLCBlbGVtZW50VHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRDb252ZXJ0VG9B
cnJheVJlZkV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
U2hvdWxkIG5vdCBleGlzdCB5ZXQuIik7CiAgICAgfQotICAgIAorCiAgICAgX2ZpbmlzaFZpc2l0
aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgYmFzZVR5cGUsIGV4dHJhQXJncywgZXh0cmFBcmdUeXBl
cykKICAgICB7CiAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGUudmlzaXQobmV3IEF1dG9XcmFw
cGVyKCkpCiAgICAgICAgIG5vZGUuYmFzZVR5cGUgPSBiYXNlVHlwZTsKLSAgICAgICAgCisKICAg
ICAgICAgLy8gU3VjaCBhIHR5cGUgbXVzdCBleGlzdC4gVGhpcyBtYXkgdGhyb3cgaWYgaXQgZG9l
c24ndC4KICAgICAgICAgbGV0IHR5cGVGb3JBbmQgPSBiYXNlVHlwZS5hcmd1bWVudFR5cGVGb3JB
bmRPdmVybG9hZChub2RlLm9yaWdpbik7CiAgICAgICAgIGlmICghdHlwZUZvckFuZCkKICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGdldCB0eXBlRm9yQW5kIik7Ci0gICAgICAg
IAorCiAgICAgICAgIGxldCBlcnJvckZvckdldDsKICAgICAgICAgbGV0IGVycm9yRm9yQW5kOwot
ICAgICAgICAKKwogICAgICAgICB0cnkgewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IENhbGxF
eHByZXNzaW9uLnJlc29sdmUoCiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucG9z
c2libGVHZXRPdmVybG9hZHMsCkBAIC00MzksMTAgKzY0MiwxMCBAQCBjbGFzcyBDaGVja2VyIGV4
dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgICAgIGVy
cm9yRm9yR2V0ID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0cnkgewogICAg
ICAgICAgICAgbGV0IGJhc2VGb3JBbmQgPSBiYXNlVHlwZS5hcmd1bWVudEZvckFuZE92ZXJsb2Fk
KG5vZGUub3JpZ2luLCBub2RlLmJhc2UpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBDYWxsRXhwcmVzc2lvbi5yZXNvbHZlKAogICAgICAgICAgICAgICAgIG5vZGUu
b3JpZ2luLCBub2RlLnBvc3NpYmxlQW5kT3ZlcmxvYWRzLAogICAgICAgICAgICAgICAgIG5vZGUu
YW5kRnVuY05hbWUsIFtiYXNlRm9yQW5kLCAuLi5leHRyYUFyZ3NdLCBbdHlwZUZvckFuZCwgLi4u
ZXh0cmFBcmdUeXBlc10sCkBAIC00NTQsNyArNjU3LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRz
IFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICAgICBlcnJvckZv
ckFuZCA9IGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFub2RlLnJlc3Vs
dFR5cGVGb3JHZXQgJiYgIW5vZGUucmVzdWx0VHlwZUZvckFuZCkgewogICAgICAgICAgICAgdGhy
b3cgbmV3IFdUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLApAQCAtNDYzLDExICs2NjYsMTEgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgICAgICAgICAgICAgICJhbmQgdHJpZWQgYnktcG9pbnRlcjpcbiIgKwogICAgICAgICAg
ICAgICAgIGVycm9yRm9yQW5kLnR5cGVFcnJvck1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIGlmIChub2RlLnJlc3VsdFR5cGVGb3JHZXQgJiYgbm9kZS5yZXN1bHRUeXBl
Rm9yQW5kCiAgICAgICAgICAgICAmJiAhbm9kZS5yZXN1bHRUeXBlRm9yR2V0LmVxdWFscyhub2Rl
LnJlc3VsdFR5cGVGb3JBbmQpKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9k
ZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiUmVzdWx0IHR5cGUgcmVzb2x2ZWQgYnktdmFsdWUgKCIg
KyBub2RlLnJlc3VsdFR5cGVGb3JHZXQgKyAiKSBkb2VzIG5vdCBtYXRjaCByZXN1bHQgdHlwZSBy
ZXNvbHZlZCBieS1wb2ludGVyICgiICsgbm9kZS5yZXN1bHRUeXBlRm9yQW5kICsgIikiKTsKLSAg
ICAgICAgCisKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSBDYWxsRXhw
cmVzc2lvbi5yZXNvbHZlKAogICAgICAgICAgICAgICAgIG5vZGUub3JpZ2luLCBub2RlLnBvc3Np
YmxlU2V0T3ZlcmxvYWRzLApAQCAtNDgwLDcgKzY4Myw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAgbm9kZS5l
cnJvckZvclNldCA9IGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgLy8gT0ssIG5v
dyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgYW4gbHZhbHVlLiBXZSBhcmUgYW4gbHZh
bHVlIGlmIHdlIGNhbiBiZSBhc3NpZ25lZCB0by4gV2UgY2FuCiAgICAgICAgIC8vIGJlIGFzc2ln
bmVkIHRvIGlmIHdlIGhhdmUgYW4gYW5kZXIgb3Igc2V0dGVyLiBCdXQgaXQncyB3ZWlyZGVyIHRo
YW4gdGhhdC4gV2UgYWxzbyBuZWVkIHRoZSBiYXNlIHRvIGJlCiAgICAgICAgIC8vIGFuIGx2YWx1
ZSwgZXhjZXB0IHVubGVzcyB0aGUgYmFzZSBpcyBhbiBhcnJheSByZWZlcmVuY2UuCkBAIC00OTgs
MzEgKzcwMSwzMSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAg
ICBub2RlLmlzTFZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgIG5vZGUuYWRkcmVzc1NwYWNlID0g
bm9kZS5iYXNlLmlzTFZhbHVlID8gbm9kZS5iYXNlLmFkZHJlc3NTcGFjZSA6IGJhc2VUeXBlLmFk
ZHJlc3NTcGFjZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXR1cm4gbm9kZS5y
ZXN1bHRUeXBlOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0RG90RXhwcmVzc2lvbihub2RlKQog
ICAgIHsKICAgICAgICAgbGV0IHN0cnVjdFR5cGUgPSBub2RlLnN0cnVjdC52aXNpdCh0aGlzKS51
bmlmeU5vZGU7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hWaXNpdGluZ1Byb3BlcnR5QWNj
ZXNzKG5vZGUsIHN0cnVjdFR5cGUsIFtdLCBbXSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRJ
bmRleEV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBhcnJheVR5cGUgPSBub2Rl
LmFycmF5LnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKICAgICAgICAgbGV0IGluZGV4VHlwZSA9IG5v
ZGUuaW5kZXgudmlzaXQodGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0aGlzLl9m
aW5pc2hWaXNpdGluZ1Byb3BlcnR5QWNjZXNzKG5vZGUsIGFycmF5VHlwZSwgW25vZGUuaW5kZXhd
LCBbaW5kZXhUeXBlXSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRWYXJpYWJsZVJlZihub2Rl
KQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlLnR5cGUpCiAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlZhcmlhYmxlIGhhcyBubyB0eXBlOiAiICsgbm9kZS52YXJpYWJsZSk7
CiAgICAgICAgIHJldHVybiBub2RlLnZhcmlhYmxlLnR5cGU7CiAgICAgfQotICAgIAorCiAgICAg
dmlzaXRSZXR1cm4obm9kZSkKICAgICB7CiAgICAgICAgIGlmIChub2RlLnZhbHVlKSB7CkBAIC01
MzMsMjYgKzczNiwyNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAi
VHJ5aW5nIHRvIHJldHVybiAiICsgcmVzdWx0VHlwZSArICIgaW4gYSBmdW5jdGlvbiB0aGF0IHJl
dHVybnMgIiArIG5vZGUuZnVuYy5yZXR1cm5UeXBlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIW5vZGUuZnVuYy5yZXR1cm5UeXBlLmVx
dWFsc1dpdGhDb21taXQodGhpcy5fcHJvZ3JhbS5pbnRyaW5zaWNzLnZvaWQpKQogICAgICAgICAg
ICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiTm9uLXZv
aWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIpOwogICAgIH0KLSAgICAKKwogICAgIHZp
c2l0R2VuZXJpY0xpdGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7
CiAgICAgfQotICAgIAorCiAgICAgdmlzaXROdWxsTGl0ZXJhbChub2RlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdEJvb2xMaXRlcmFs
KG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvZ3JhbS5pbnRyaW5zaWNzLmJv
b2w7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRFbnVtTGl0ZXJhbChub2RlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5vZGUubWVtYmVyLmVudW1UeXBlOwpAQCAtNjE0LDE0ICs4MTcsMTQgQEAg
Y2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0U3dpdGNoU3RhdGVtZW50
KG5vZGUpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IG5vZGUudmFsdWUudmlzaXQodGhpcyku
Y29tbWl0KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdHlwZS51bmlmeU5vZGUuaXNJbnQg
JiYgISh0eXBlLnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIEVudW1UeXBlKSkKICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCBzd2l0
Y2ggb24gbm9uLWludGVnZXIvbm9uLWVudW0gdHlwZTogIiArIHR5cGUpOwogCiAgICAgICAgIG5v
ZGUudHlwZSA9IHR5cGU7Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBoYXNEZWZhdWx0ID0gZmFs
c2U7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9kZS5zd2l0
Y2hDYXNlcykgewogICAgICAgICAgICAgc3dpdGNoQ2FzZS5ib2R5LnZpc2l0KHRoaXMpOwogCkBA
IC02MjksMjYgKzgzMiwyNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAg
ICAgICAgICAgICAgaGFzRGVmYXVsdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKCFzd2l0Y2hD
YXNlLnZhbHVlLmlzQ29uc3RleHByKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKHN3aXRjaENhc2Uub3JpZ2luLm9yaWdpblN0cmluZywgIlN3aXRjaCBjYXNlIG5vdCBjb25z
dGV4cHI6ICIgKyBzd2l0Y2hDYXNlLnZhbHVlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBsZXQgY2FzZVR5cGUgPSBzd2l0Y2hDYXNlLnZhbHVlLnZpc2l0KHRoaXMpOwogICAgICAgICAg
ICAgaWYgKCF0eXBlLmVxdWFsc1dpdGhDb21taXQoY2FzZVR5cGUpKQogICAgICAgICAgICAgICAg
IHRocm93IG5ldyBXVHlwZUVycm9yKHN3aXRjaENhc2Uub3JpZ2luLm9yaWdpblN0cmluZywgIlN3
aXRjaCBjYXNlIHR5cGUgZG9lcyBub3QgbWF0Y2ggc3dpdGNoIHZhbHVlIHR5cGUgKGNhc2UgdHlw
ZSBpcyAiICsgY2FzZVR5cGUgKyAiIGJ1dCBzd2l0Y2ggdmFsdWUgdHlwZSBpcyAiICsgdHlwZSAr
ICIpIik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBub2RlLnN3aXRjaENhc2VzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZmlyc3RD
YXNlID0gbm9kZS5zd2l0Y2hDYXNlc1tpXTsKICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsg
MTsgaiA8IG5vZGUuc3dpdGNoQ2FzZXMubGVuZ3RoOyArK2opIHsKICAgICAgICAgICAgICAgICBs
ZXQgc2Vjb25kQ2FzZSA9IG5vZGUuc3dpdGNoQ2FzZXNbal07Ci0gICAgICAgICAgICAgICAgCisK
ICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDYXNlLmlzRGVmYXVsdCAhPSBzZWNvbmRDYXNlLmlz
RGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
CisKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDYXNlLmlzRGVmYXVsdCkKICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc2Vjb25kQ2FzZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiRHVwbGljYXRlIGRlZmF1bHQgY2FzZSBpbiBzd2l0Y2ggc3RhdGVtZW50Iik7Ci0gICAg
ICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBsZXQgdmFsdWVzRXF1YWwgPSB0eXBlLnVu
aWZ5Tm9kZS52YWx1ZXNFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgZmlyc3RDYXNlLnZhbHVl
LnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgc2Vj
b25kQ2FzZS52YWx1ZS51bmlmeU5vZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwpAQCAtNjU2LDE5
ICs4NTksMTkgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzZWNvbmRDYXNlLm9yaWdpbi5vcmlnaW5TdHJp
bmcsICJEdXBsaWNhdGUgY2FzZSBpbiBzd2l0Y2ggc3RhdGVtZW50IGZvciB2YWx1ZSAiICsgZmly
c3RDYXNlLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFoYXNEZWZhdWx0KSB7CiAg
ICAgICAgICAgICBsZXQgaW5jbHVkZWRWYWx1ZXMgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICBm
b3IgKGxldCBzd2l0Y2hDYXNlIG9mIG5vZGUuc3dpdGNoQ2FzZXMpCiAgICAgICAgICAgICAgICAg
aW5jbHVkZWRWYWx1ZXMuYWRkKHN3aXRjaENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2Vs
ZWN0ZWRUeXBlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBmb3IgKGxldCB7dmFsdWUs
IG5hbWV9IG9mIHR5cGUudW5pZnlOb2RlLmFsbFZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFpbmNsdWRlZFZhbHVlcy5oYXModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJWYWx1ZSBub3QgaGFu
ZGxlZCBieSBzd2l0Y2ggc3RhdGVtZW50OiAiICsgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlKQogICAg
IHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CkBAIC02ODcsNyArODkwLDcgQEAgY2xhc3Mg
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIWVsc2VUeXBlKQogICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXJuYXJ5IGV4cHJlc3Npb24gZWxzZSBoYXMgbm8gdHlw
ZTogIiArIG5vZGUuZWxzZUV4cHJlc3Npb24pOwogICAgICAgICBpZiAoIWJvZHlUeXBlLmVxdWFs
c1dpdGhDb21taXQoZWxzZVR5cGUpKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
IkJvZHkgYW5kIGVsc2UgY2xhdXNlIG9mIHRlcm5hcnkgc3RhdGVtZW50IGRvbid0IGhhdmUgdGhl
IHNhbWUgdHlwZTogIiArIG5vZGUpOworICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
bm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiQm9keSBhbmQgZWxzZSBjbGF1c2Ugb2YgdGVybmFy
eSBzdGF0ZW1lbnQgZG9uJ3QgaGF2ZSB0aGUgc2FtZSB0eXBlOiAiICsgbm9kZSk7CiAgICAgICAg
IHJldHVybiBib2R5VHlwZTsKICAgICB9CiAgICAgCkBAIC02OTksNyArOTAyLDcgQEAgY2xhc3Mg
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigidmlzaXRvciByZXR1cm5lZCBudWxsIGZvciAiICsgYXJndW1lbnQpOwogICAgICAgICAgICAg
cmV0dXJuIG5ld0FyZ3VtZW50LnZpc2l0KG5ldyBBdXRvV3JhcHBlcigpKTsKICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9IGFyZ3VtZW50VHlwZXM7
CiAgICAgICAgIGlmIChub2RlLnJldHVyblR5cGUpCiAgICAgICAgICAgICBub2RlLnJldHVyblR5
cGUudmlzaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9GaWVsZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCmluZGV4
IDkwZDdlZjhhNjg0MWNiZmU5ZTY5ZDgxNTQ1N2NjZTVhYTdjZWI5ZGUuLjMxMmIwMGQ5ZTI4Y2Iz
ZTMzNmFlMDlmYzM5NmZkODljMTYwYWIwYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0ZpZWxkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0ZpZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMCwyNSArMjAsMzAgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICJ1c2Ugc3RyaWN0IjsK
IAogY2xhc3MgRmllbGQgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5h
bWUsIHR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBzZW1hbnRpYyA9
IG51bGwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBv
cmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0g
dHlwZTsKKyAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAg
ICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkg
eyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlw
ZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAg
CiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZSArICIgIiAr
IHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudHlwZSArICIgIiArIHRoaXMu
bmFtZTsKKyAgICAgICAgaWYgKHRoaXMuc2VtYW50aWMpCisgICAgICAgICAgICByZXN1bHQgKz0g
IjogIiArIHRoaXMuc2VtYW50aWM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKaW5kZXggNTZiMWQyY2M3OGNmYTA1M2Jl
N2M5MWI3OGIwZTdhNmM5OTk3ZTMyOC4uZTA2YjQzODI5MDI3NjgxODE3MzY3Njg0ZjVlNjg1Y2Vh
ZDEzOWM4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCkBAIC0yNSw3ICsy
NSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKLSAgICBj
b25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwg
c2hhZGVyVHlwZSwgYXR0cmlidXRlQmxvY2sgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdp
biwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlID0gbnVs
bCwgc2VtYW50aWMgPSBudWxsLCBhdHRyaWJ1dGVCbG9jayA9IG51bGwpCiAgICAgewogICAgICAg
ICBpZiAoIShvcmlnaW4gaW5zdGFuY2VvZiBMZXhlclRva2VuKSkKICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIG9yaWdpbjogIiArIG9yaWdpbik7CkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFt
ZXRlcnM7CiAgICAgICAgIHRoaXMuX2lzQ2FzdCA9IGlzQ2FzdDsKICAgICAgICAgdGhpcy5fc2hh
ZGVyVHlwZSA9IHNoYWRlclR5cGU7CisgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50aWM7
CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZUJsb2NrID0gYXR0cmlidXRlQmxvY2s7CiAgICAgfQog
ICAgIApAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgZ2V0
IHBhcmFtZXRlclR5cGVzKCkgeyByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLm1hcChwYXJhbWV0ZXIg
PT4gcGFyYW1ldGVyLnR5cGUpOyB9CiAgICAgZ2V0IGlzQ2FzdCgpIHsgcmV0dXJuIHRoaXMuX2lz
Q2FzdDsgfQogICAgIGdldCBzaGFkZXJUeXBlKCkgeyByZXR1cm4gdGhpcy5fc2hhZGVyVHlwZTsg
fQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAgZ2V0
IGF0dHJpYnV0ZUJsb2NrKCkgeyByZXR1cm4gdGhpcy5fYXR0cmlidXRlQmxvY2s7IH0KICAgICBn
ZXQgaXNFbnRyeVBvaW50KCkgeyByZXR1cm4gdGhpcy5zaGFkZXJUeXBlICE9IG51bGw7IH0KICAg
ICBnZXQgcmV0dXJuVHlwZUZvck92ZXJsb2FkUmVzb2x1dGlvbigpIHsgcmV0dXJuIHRoaXMuaXND
YXN0ID8gdGhpcy5yZXR1cm5UeXBlIDogbnVsbDsgfQpAQCAtNzIsNyArNzQsMTAgQEAgY2xhc3Mg
RnVuYyBleHRlbmRzIE5vZGUgewogICAgICAgICAgICAgcmVzdWx0ICs9IGBvcGVyYXRvciAke3Ro
aXMucmV0dXJuVHlwZX1gOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgKz0gYCR7
dGhpcy5yZXR1cm5UeXBlfSAke3RoaXMubmFtZX1gOwotICAgICAgICByZXR1cm4gcmVzdWx0ICsg
IigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAgICByZXN1bHQgKz0gIigiICsgdGhp
cy5wYXJhbWV0ZXJzICsgIikiOworICAgICAgICBpZiAodGhpcy5zZW1hbnRpYykKKyAgICAgICAg
ICAgIHJlc3VsdCArPSAiOiAiICsgdGhpcy5zZW1hbnRpYzsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0Z1bmNEZWYuanMKaW5kZXggYzJkMTFmMzI2M2NjMjAzYmQ3MmMzMGZjMTNkYmMxODRhYjlk
MzY0NS4uZWYzNGNlNDA3MWYzNjZmMjcyYTgwMWJiZjY1M2MxNDc2MmI5NDkxYyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCkBAIC0yNSw5ICsyNSw5IEBACiAidXNl
IHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNEZWYgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGJvZHksIGlzQ2FzdCwgc2hh
ZGVyVHlwZSwgYXR0cmlidXRlQmxvY2sgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
bmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgYm9keSwgaXNDYXN0LCBzaGFkZXJUeXBlID0g
IiIsIHNlbWFudGljID0gbnVsbCwgYXR0cmlidXRlQmxvY2sgPSBudWxsKQogICAgIHsKLSAgICAg
ICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNo
YWRlclR5cGUsIGF0dHJpYnV0ZUJsb2NrKTsKKyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCBy
ZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUsIHNlbWFudGljLCBhdHRy
aWJ1dGVCbG9jayk7CiAgICAgICAgIHRoaXMuX2JvZHkgPSBib2R5OwogICAgICAgICB0aGlzLmlz
UmVzdHJpY3RlZCA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9GdW5jUGFyYW1ldGVyLmpzCmluZGV4IGQwYmIxZDYyMzA0YTQ4NmNhYjg1Mzc3NTc1OWQ0
ZThlZDY3YzgzODMuLjA1Y2RiNTJmZGUzOTBkYjI1MGVjNmMyNmJjNjdlOWY1MGIxZjFmNDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMzAgKzIw
LDM3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNQ
YXJhbWV0ZXIgZXh0ZW5kcyBWYWx1ZSB7CiAgICAgLy8gVGhlIG5hbWUgaXMgb3B0aW9uYWwuIEl0
J3MgT0sgZm9yIGl0IHRvIGJlIG51bGwhCi0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0
eXBlKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgc2VtYW50aWMgPSBudWxs
KQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2lu
OwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7
CisgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50aWM7CiAgICAgfQogICAgIAogICAgIGdl
dCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KICAgICBnZXQgbmFtZSgpIHsgcmV0
dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0K
KyAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQogICAgIGdldCB2
YXJJc0xWYWx1ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAg
eworICAgICAgICBsZXQgcmVzdWx0OwogICAgICAgICBpZiAoIXRoaXMubmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiAiIiArIHRoaXMudHlwZTsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZSArICIg
IiArIHRoaXMubmFtZTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICIiICsgdGhpcy50eXBlOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnR5cGUgKyAiICIgKyB0aGlzLm5h
bWU7CisgICAgICAgIGlmICh0aGlzLnNlbWFudGljKQorICAgICAgICAgICAgcmVzdWx0ICs9ICI6
ICIgKyB0aGlzLnNlbWFudGljOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXggMDRlNGI3
ODI2ZTM0NzEwMDA4MjJiYzQ0Mzk0N2Q4OTQ4YWYxNzY2NC4uOWVkNjU0NjY2NGJkNjdlNmI4Njdj
MTZhMGY1NzljYWQ0ZGI0ZmQ2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9J
bnRyaW5zaWNzLmpzCkBAIC0yNzYsNiArMjc2LDcgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tg
JHt0ZXh0dXJlVHlwZX08JHt0eXBlQXJndW1lbnR9PmBdID0gdHlwZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLmlz
VGV4dHVyZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVm
YXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwge30pOwog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMjsg
aSA8PSA0OyArK2kpIHsKQEAgLTI4NCw2ICsyODUsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXNbYCR7dGV4dHVyZVR5cGV9PCR7dHlwZUFyZ3VtZW50fSR7aX0+YF0gPSB0eXBlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZS5pc1RleHR1cmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+
IGJ1ZmZlci5zZXQob2Zmc2V0LCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9MYXRlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVj
a2VyLmpzCmluZGV4IGU1NGM3ZjNjNDgxYzRiNmM5YmM4OTcyMTExYzhmMDdjNjU0ZjhkMjUuLjQ3
ZmQzMmMzYTg0ZDYzZTZkY2M1ZjM3YzdjZTQyMzdlZDI3NDM3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCkBAIC0zMyw1OSArMzMsNSBAQCBjbGFz
cyBMYXRlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIW5vZGUuZWxlbWVu
dFR5cGUuaXNQcmltaXRpdmUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJJbGxlZ2FsIHBvaW50ZXIgdG8gbm9uLXByaW1pdGl2ZSB0
eXBlOiAiICsgbm9kZSk7CiAgICAgfQotICAgIAotICAgIF9jaGVja1NoYWRlclR5cGUobm9kZSkK
LSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZXNlIGNoZWNrcy4gRm9yIG5vdywg
d2Ugc2hvdWxkIG9ubHkgYWNjZXB0IGludDMyLCB1aW50MzIsIGZsb2F0MzIsIGFuZCBmbG9hdDY0
LgotICAgICAgICBsZXQgYXNzZXJ0UHJpbWl0aXZlID0gdHlwZSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoIXR5cGUuaXNQcmltaXRpdmUpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyIHNpZ25hdHVyZSBjYW5ub3QgaW5j
bHVkZSBub24tcHJpbWl0aXZlIHR5cGU6ICIgKyB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSA9PSAidmVydGV4IiB8fCBub2RlLnNoYWRlclR5
cGUgPT0gImZyYWdtZW50IikgewotICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZlKG5vZGUucmV0
dXJuVHlwZSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRnJhZ21lbnQgc2hhZGVycyBzaG91bGRu
J3QgaGF2ZSB0aGlzIHJlc3RyaWN0aW9uOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5Mzg3Ci0gICAgICAgICAgICBpZiAoIShub2RlLnJldHVyblR5cGUudW5pZnlO
b2RlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyICIgKyBub2RlLm5hbWUg
KyAiIG11c3QgcmV0dXJuIGEgc3RydWN0LiIpOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgc3dpdGNoIChub2RlLnNoYWRlclR5cGUpIHsKLSAgICAgICAgY2FzZSAidmVydGV4IjoK
LSAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFtZXRlcnMpIHsKLSAg
ICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLnR5cGUudW5pZnlOb2RlIGluc3RhbmNlb2YgU3Ry
dWN0VHlwZSkKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZlKHBhcmFtZXRlci50
eXBlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghcGFyYW1ldGVyLnR5cGUudW5pZnlOb2Rl
LmlzQXJyYXlSZWYpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5v
ZGUub3JpZ2luLm9yaWdpblN0cmluZywgbm9kZS5uYW1lICsgIiBhY2NlcHRzIGEgcGFyYW1ldGVy
ICIgKyBwYXJhbWV0ZXIubmFtZSArICIgd2hpY2ggaXNuJ3QgYSBzdHJ1Y3QgYW5kIGlzbid0IGFu
IEFycmF5UmVmLiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgImZyYWdtZW50IjoKLSAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2Rl
LnBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLm5hbWUgPT0gInN0
YWdlSW4iKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKHBhcmFtZXRlci50eXBlLnVuaWZ5
Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRnJhZ21lbnQgZW50
cnkgcG9pbnRzJyBzdGFnZUluIHBhcmFtZXRlciAob2YgIiArIG5vZGUubmFtZSArICIpIG11c3Qg
YmUgYSBzdHJ1Y3QgdHlwZS4iKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZl
KHBhcmFtZXRlci50eXBlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZS5pc0FycmF5UmVmKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2lu
U3RyaW5nLCAiRnJhZ21lbnQgZW50cnkgcG9pbnQncyAiICsgcGFyYW1ldGVyLm5hbWUgKyAiIHBh
cmFtZXRlciBpcyBub3QgYW4gYXJyYXkgcmVmZXJlbmNlLiIpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJjb21wdXRl
IjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJjb21wdXRlIjoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ0ZXN0IjoKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgc2hhZGVyIHR5
cGU6ICIgKyBub2RlLnNoYWRlclR5cGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZp
c2l0RnVuY0RlZihub2RlKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSkKLSAg
ICAgICAgICAgIHRoaXMuX2NoZWNrU2hhZGVyVHlwZShub2RlKTsKLSAgICAgICAgc3VwZXIudmlz
aXRGdW5jRGVmKG5vZGUpOwotICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05hdGl2ZUZ1bmMuanMKaW5kZXggNWIwNjkxODVmNThjNDNmNDAzNDMxYjM1YmMyN2E3MDcy
Y2NlNjI1Ni4uYmJmMDI4NTFiMzc5MGY3ZTI3NTI2MTAxOTM5NDc5MTlkZjU5N2FlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCkBAIC0yNSw5ICsyNSw5
IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2Fz
dCwgc2hhZGVyVHlwZSwgc3RhZ2UgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFt
ZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzdGFnZSA9IG51bGwpCiAgICAgewot
ICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2Fz
dCwgc2hhZGVyVHlwZSk7CisgICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwg
cGFyYW1ldGVycywgaXNDYXN0KTsKICAgICAgICAgdGhpcy5fc3RhZ2UgPSBzdGFnZTsKICAgICAg
ICAgdGhpcy5pc1Jlc3RyaWN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5pbXBsZW1lbnRhdGlv
biA9IG51bGw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCmluZGV4IDRhN2Ey
NDAwYmVhMmU4ZTI4ZGUxMTNlMWI5MGRjYjAzZWI1YTVjOWYuLmNkNDRkMDNmYjYzZjMzYmU5OWRj
NDRkYmJjYzRjZmFiZTJkYThjN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNl
LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBsZXQgbGV4ZXIgPSBuZXcgTGV4
ZXIob3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KTsKIAogICAgIC8v
IFRoZSBoYXJkZXN0IHBhcnQgb2YgZGVhbGluZyB3aXRoIEMtbGlrZSBsYW5ndWFnZXMgaXMgcGFy
c2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgotICAgIC8vIExldCdzIGNvbnNp
ZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRz
IGluIFdTTCB0aGF0IGJlaW5nIHdpdGggYW4KKyAgICAvLyBMZXQncyBjb25zaWRlciBpZiB0aGlz
IGhhcHBlbnMgaW4gV0hMU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRzIGluIFdITFNM
IHRoYXQgYmVpbmcgd2l0aCBhbgogICAgIC8vIGlkZW50aWZpZXIsIGlmIHdlIGFzc3VtZSB0aGF0
IGFueSBleHByZXNzaW9uIGNhbiBiZSBhIHN0YW5kYWxvbmUgc3RhdGVtZW50LgogICAgIC8vCiAg
ICAgLy8gICAgIHg7CkBAIC0xMDg1LDcgKzEwODUsMTMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBp
ZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiB0eXBl
OwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAg
ICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUudGV4
dCA6IG51bGwsIHR5cGUpOworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOworICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiOiIpKSB7CisgICAgICAgICAgICBzZW1hbnRpYyA9IHBhcnNlU2VtYW50
aWMoKTsKKyAgICAgICAgICAgIGlmIChzZW1hbnRpYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWM7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVs
bCwgdHlwZSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVy
cygpCkBAIC0xMjA1LDcgKzEyMTEsOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCByZXR1cm5U
eXBlOwogICAgICAgICBsZXQgbmFtZTsKICAgICAgICAgbGV0IGlzQ2FzdDsKLSAgICAgICAgbGV0
IHNoYWRlclR5cGU7CisgICAgICAgIGxldCBzaGFkZXJUeXBlID0gbnVsbDsKKyAgICAgICAgbGV0
IHNlbWFudGljID0gbnVsbDsKICAgICAgICAgbGV0IGF0dHJpYnV0ZUJsb2NrID0gbnVsbDsKICAg
ICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1lKCJvcGVyYXRvciIpOwogICAgICAg
ICBpZiAob3BlcmF0b3JUb2tlbikgewpAQCAtMTI0MSw3ICsxMjQ4LDEyIEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKICAgICAgICAgaWYg
KHBhcmFtZXRlcnMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4g
cGFyYW1ldGVyczsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlLCBhdHRyaWJ1dGVCbG9jayk7Cisg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgIHNlbWFudGljID0gcGFy
c2VTZW1hbnRpYygpOworICAgICAgICAgICAgaWYgKHNlbWFudGljIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbmV3IEZ1bmMob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJz
LCBpc0Nhc3QsIHNoYWRlclR5cGUsIHNlbWFudGljLCBhdHRyaWJ1dGVCbG9jayk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jRGVmKCkKQEAgLTEyNTIsNyArMTI2NCwxMTYgQEAgZnVu
Y3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2soKTsKICAgICAgICAgaWYgKGJv
ZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gYm9keTsKLSAg
ICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0
dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJU
eXBlLCBmdW5jLmF0dHJpYnV0ZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1
bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBi
b2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlLCBmdW5jLnNlbWFudGljLCBmdW5jLmF0
dHJpYnV0ZUJsb2NrKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVN0YWdlSW5PdXRTZW1h
bnRpYygpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiYXR0cmlidXRlIik7
CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsK
KyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbGV0IGluZGV4ID0gY29uc3VtZUtpbmQo
ImludExpdGVyYWwiKTsKKyAgICAgICAgaWYgKGluZGV4IGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICBsZXQgdWludFZlcnNpb24gPSBp
bmRleC50ZXh0ID4+PiAwOworICAgICAgICBpZiAodWludFZlcnNpb24udG9TdHJpbmcoKSAhPT0g
aW5kZXgudGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJTZW1hbnRpYyAgaXMgbm90IDMy
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXgudGV4dCk7CisgICAgICAgIG1heWJlRXJy
b3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIHJldHVy
biBuZXcgU3RhZ2VJbk91dFNlbWFudGljKG9yaWdpbiwgdWludFZlcnNpb24pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHBhcnNlUmVzb3VyY2VTZW1hbnRpYygpCisgICAgeworICAgICAgICBsZXQg
b3JpZ2luID0gY29uc3VtZSgicmVnaXN0ZXIiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAg
ICAgICBsZXQgbW9kZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmICht
b2RlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1vZGU7Cisg
ICAgICAgIG1vZGUgPSBtb2RlLnRleHQ7CisgICAgICAgIGlmIChtb2RlWzBdICE9ICJ1IiAmJiBt
b2RlWzBdICE9ICJ0IiAmJiBtb2RlWzBdICE9ICJiIiAmJiBtb2RlWzBdICE9ICJzIikKKyAgICAg
ICAgICAgIHJldHVybiBmYWlsKCJyZWdpc3RlciBuZWVkcyB0byBiZSBlaXRoZXIgdSwgdCwgYiwg
b3IgcyIpOworICAgICAgICBsZXQgaW5kZXhUZXh0ID0gbW9kZS5zdWJzdHJpbmcoMSk7CisgICAg
ICAgIG1vZGUgPSBtb2RlWzBdOworICAgICAgICBsZXQgdWludFZlcnNpb24gPSBpbmRleFRleHQg
Pj4+IDA7CisgICAgICAgIGlmICh1aW50VmVyc2lvbi50b1N0cmluZygpICE9PSBpbmRleFRleHQp
CisgICAgICAgICAgICByZXR1cm4gZmFpbCgiUmVnaXN0ZXIgaW5kZXggaXMgbm90IDMyLWJpdCB1
bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXhUZXh0KTsKKyAgICAgICAgbGV0IHNwYWNlID0gMDsK
KyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIiwiKSkgeworICAgICAgICAgICAgc3BhY2UgPSBjb25z
dW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAgaWYgKHNwYWNlIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICAgICAgICAg
IHNwYWNlID0gc3BhY2UudGV4dDsKKyAgICAgICAgICAgIGlmIChzcGFjZS5zdWJzdHJpbmcoMCwg
InNwYWNlIi5sZW5ndGgpICE9ICJzcGFjZSIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwo
IlNlY29uZCBhcmd1bWVudCB0byByZWdpc3RlcigpIG5lZWRzIHRvIGJlIG9mIHRoZSBmb3JtIFwi
c3BhY2UwXCIiKTsKKyAgICAgICAgICAgIGxldCBzcGFjZVRleHQgPSBzcGFjZS5zdWJzdHJpbmco
InNwYWNlIi5sZW5ndGgpOworICAgICAgICAgICAgbGV0IHVpbnRWZXJzaW9uID0gc3BhY2VUZXh0
ID4+PiAwOworICAgICAgICAgICAgaWYgKHVpbnRWZXJzaW9uLnRvU3RyaW5nKCkgIT09IHNwYWNl
VGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiUmVnaXN0ZXIgaW5kZXggaXMgbm90
IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgc3BhY2VUZXh0KTsKKyAgICAgICAgICAgIHNw
YWNlID0gdWludFZlcnNpb247CisgICAgICAgIH0KKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG5ldyBSZXNv
dXJjZVNlbWFudGljKG9yaWdpbiwgbW9kZSwgdWludFZlcnNpb24sIHNwYWNlKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpCisgICAg
eworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3BlY2lhbGl6ZWQiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CisgICAgICAgIHJldHVybiBuZXcgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
KG9yaWdpbik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VCdWlsdEluU2VtYW50aWMoKQor
ICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IHRyeUNvbnN1bWUoIlNWX0luc3RhbmNlSUQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfVmVydGV4SUQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUFNJWkUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfUG9zaXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
U1ZfSXNGcm9udEZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfU2Ft
cGxlSW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfSW5uZXJDb3Zl
cmFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9EZXB0aCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Db3ZlcmFnZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJTVl9EaXNwYXRjaFRocmVhZElEIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNWX0dyb3VwSUQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfR3JvdXBJbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTVl9Hcm91cFRocmVhZElEIik7CisgICAgICAgIGlmIChvcmlnaW4pCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IEJ1aWx0SW5TZW1hbnRpYyhvcmlnaW4sIG9yaWdpbi50ZXh0KTsKKyAgICAgICAg
b3JpZ2luID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAg
ICAgIGlmIChvcmlnaW4udGV4dC5zdWJzdHJpbmcoMCwgIlNWX1RhcmdldCIubGVuZ3RoKSA9PSAi
U1ZfVGFyZ2V0IikgeworICAgICAgICAgICAgbGV0IGluZGV4U3RyaW5nID0gb3JpZ2luLnRleHQu
c3Vic3RyaW5nKCJTVl9UYXJnZXQiLmxlbmd0aCk7CisgICAgICAgICAgICBsZXQgdWludFZlcnNp
b24gPSBpbmRleFN0cmluZyA+Pj4gMDsKKyAgICAgICAgICAgIGlmICh1aW50VmVyc2lvbi50b1N0
cmluZygpICE9PSBpbmRleFN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiU2Vt
YW50aWMgIGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIGluZGV4U3RyaW5nKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQnVpbHRJblNlbWFudGljKG9yaWdpbiwgIlNWX1Rhcmdl
dCIsIHVpbnRWZXJzaW9uKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFp
bChgVW5rbm93biBzZW1hbnRpYzogJHtvcmlnaW4udGV4dH1gKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBwYXJzZVNlbWFudGljKCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0KCJhdHRyaWJ1dGUi
KSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpOworICAgICAg
ICBlbHNlIGlmICh0ZXN0KCJyZWdpc3RlciIpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVz
b3VyY2VTZW1hbnRpYygpOworICAgICAgICBlbHNlIGlmICh0ZXN0KCJzcGVjaWFsaXplZCIpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRmllbGQoKQpAQCAtMTI2MywxMCArMTM4NCwx
NiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKTsKICAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0IHNlbWFudGljID0gbnVsbDsKKyAgICAgICAg
aWYgKHRyeUNvbnN1bWUoIjoiKSkgeworICAgICAgICAgICAgc2VtYW50aWMgPSBwYXJzZVNlbWFu
dGljKCk7CisgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljOworICAgICAgICB9CiAgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOwogICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwotICAg
ICAgICByZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSk7CisgICAgICAgIHJl
dHVybiBuZXcgRmllbGQobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBzZW1hbnRpYyk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBlKCkKQEAgLTEzMDAsNyArMTQyNyw5IEBAIGZ1
bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNl
dCwgdGV4dCkKICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CiAgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0
dXJuIG1heWJlRXJyb3I7Ci0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdp
biwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nh
c3QsIGZ1bmMuc2hhZGVyVHlwZSwgc3RhZ2UpOworICAgICAgICBpZiAoZnVuYy5zaGFkZXJUeXBl
IHx8IGZ1bmMuc2VtYW50aWMpCisgICAgICAgICAgICByZXR1cm4gZmFpbCgiTmF0aXZlIGZ1bmN0
aW9ucyBjYW4ndCBiZSBlbnRyeSBwb2ludHMgb3IgaGF2ZSBzZW1hbnRpY3MuIik7CisgICAgICAg
IHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVy
blR5cGUsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QsIHN0YWdlKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBwYXJzZU5hdGl2ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkLmpzCmluZGV4IGMzMjg4OTJiZmYxNmI3NWFlZTVhZmZiNGYzNzJmZTI0YTQxOGNiNzEuLjg2
NTdjN2Y0ZmIwODJlZWNlNDA1ZjFlYTg4NmIxN2FmNTVmNjBmMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5u
ZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCkBAIC00MSw2ICs0MSwxMCBAQCBmdW5jdGlvbiBwcm9n
cmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZChwcm9ncmFtKQogICAgIG5hbWVGaW5kZXIu
YWRkKCJ2b2lkIik7CiAgICAgbmFtZUZpbmRlci5hZGQoImJvb2wiKTsKICAgICBuYW1lRmluZGVy
LmFkZCgiaW50Iik7CisgICAgbmFtZUZpbmRlci5hZGQoInVpbnQiKTsKKyAgICBuYW1lRmluZGVy
LmFkZCgiZmxvYXQiKTsKKyAgICBuYW1lRmluZGVyLmFkZCgidmVjdG9yIik7CisgICAgbmFtZUZp
bmRlci5hZGQoInNhbXBsZXIiKTsKICAgICAKICAgICAvLyBQdWxsIGluIHRoaW5ncyBhcyBuZWNl
c3NhcnkuCiAgICAgd2hpbGUgKG5hbWVGaW5kZXIud29ya2xpc3QubGVuZ3RoKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OWEyOGEzY2FkMmZiNmY3ZjNmZGQxNjFiMGE5YzMwNmE3MDVmMmFlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5q
cwpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgUmVzb3VyY2VTZW1hbnRpYyBleHRlbmRzIFNl
bWFudGljIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIHJlc291cmNlTW9kZSwgaW5kZXgsIHNw
YWNlKQorICAgIHsKKyAgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgICB0aGlzLl9yZXNv
dXJjZU1vZGUgPSByZXNvdXJjZU1vZGU7CisgICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4Owor
ICAgICAgICAgdGhpcy5fc3BhY2UgPSBzcGFjZTsKKyAgICB9CisKKyAgICBnZXQgcmVzb3VyY2VN
b2RlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VNb2RlOyB9CisgICAgZ2V0IGluZGV4KCkgeyBy
ZXR1cm4gdGhpcy5faW5kZXg7IH0KKyAgICBnZXQgc3BhY2UoKSB7IHJldHVybiB0aGlzLl9zcGFj
ZTsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0aGlzLnJlc291cmNlTW9kZSkgeworICAgICAgICBjYXNlICJiIjoKKyAgICAg
ICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgUmVmZXJlbmNlVHlwZSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiB0eXBlLmFkZHJlc3NTcGFjZSA9PSAiY29uc3RhbnQiOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGU7
CisgICAgICAgIGNhc2UgInUiOgorICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBSZWZl
cmVuY2VUeXBlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuYWRkcmVzc1NwYWNlID09
ICJjb25zdGFudCIgfHwgdHlwZS5hZGRyZXNzU3BhY2UgPT0gImRldmljZSI7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5pc1RleHR1cmUgfHwgdHlwZSBp
bnN0YW5jZW9mIEFycmF5VHlwZTsKKyAgICAgICAgY2FzZSAidCI6CisgICAgICAgICAgICBpZiAo
dHlwZSBpbnN0YW5jZW9mIFJlZmVyZW5jZVR5cGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHlwZS5hZGRyZXNzU3BhY2UgPT0gImNvbnN0YW50IjsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiB0eXBlLmlzVGV4dHVyZSB8fCB0eXBlIGluc3RhbmNlb2YgQXJy
YXlUeXBlOworICAgICAgICBjYXNlICJzIjoKKyAgICAgICAgICAgIHJldHVybiB0eXBlLmVxdWFs
cyhwcm9ncmFtLmludHJpbnNpY3Muc2FtcGxlcik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVzb3VyY2UgbW9kZTogJHt0aGlzLnJlc291
cmNlTW9kZX1gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRl
clR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpcmVj
dGlvbiA9PSAiaW5wdXQiOworICAgIH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBgcmVnaXN0ZXIoJHt0aGlzLnJlc291cmNlTW9kZX0ke3RoaXMuaW5kZXh9LCBzcGFj
ZSR7dGhpcy5zcGFjZX0pYDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanMKaW5kZXggM2ExNGJkYThjZGQxOWQ2ZWMzYTlmYjgxNjIyY2VmY2UxYjZh
MTc0YS4uNDhjNjk3ODhlYzY4OThlYzA3M2ZjMjE1ZjNhYTEzNzUwYmVjMDg1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgUmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBGdW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBub2Rl
Lm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
RnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhp
cyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcykpOwogICAgICAgICB0aGlzLl9tYXBO
b2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIFJld3JpdGVyIHsK
ICAgICAKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEZp
ZWxkKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAg
ICAgIHJldHVybiBuZXcgRmllbGQobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZp
c2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsKICAgICB9CiAgICAg
CiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUpCkBAIC00MDAsNSArNDAwLDI1IEBAIGNsYXNzIFJl
d3JpdGVyIHsKICAgICAgICAgY29uc3QgbWF0VHlwZSA9IG5ldyBNYXRyaXhUeXBlKG5vZGUub3Jp
Z2luLCBub2RlLm5hbWUsIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1l
bnQudmlzaXQodGhpcykpKTsKICAgICAgICAgcmV0dXJuIG1hdFR5cGU7CiAgICAgfQorCisgICAg
dmlzaXRCdWlsdEluU2VtYW50aWMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQnVp
bHRJblNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIC4uLm5vZGUuZXh0cmFBcmd1bWVu
dHMpOworICAgIH0KKworICAgIHZpc2l0UmVzb3VyY2VTZW1hbnRpYyhub2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZVNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLnJlc291
cmNlTW9kZSwgbm9kZS5pbmRleCwgbm9kZS5zcGFjZSk7CisgICAgfQorCisgICAgdmlzaXRTdGFn
ZUluT3V0U2VtYW50aWMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU3RhZ2VJbk91
dFNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLmluZGV4KTsKKyAgICB9CisKKyAgICB2aXNpdFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMobm9kZS5vcmlnaW4pOworICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRt
bCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggYmE2MTcw
YjMyYmU5YTI2YTllY2YxNmRlMjE0MGNmMTRmNDNiMmFjNi4uNmY2ZDZjMDBkYTVlMzQ2MDRjODg0
YTdhNWJhMTA1Yjk5OTBlM2MzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElS
Vi5odG1sCkBAIC0xOCw2ICsxOCw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0
ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJOYXRpdmVUeXBlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iU2VtYW50aWMuanMiPjwvc2NyaXB0PgogCiAgICAg
PHNjcmlwdCBzcmM9IkFkZHJlc3NTcGFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkFsbG9jYXRlQXRFbnRyeVBvaW50cy5qcyI+PC9zY3JpcHQ+CkBAIC0yOSw2ICszMCw3IEBAIHRk
IHsKICAgICA8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJ1aWx0aW5NYXRyaXhTZXR0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIj48L3NjcmlwdD4KQEAgLTEyNCwxMCArMTI2
LDEzIEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZVR5cGVEZWZzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJldHVybi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJldHVybkNoZWNrZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iU3RhZ2VJbk91dFNlbWFudGljLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RhdGVt
ZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RydWN0TGF5b3V0QnVp
bGRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NlbWFudGlj
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmExNzhjZjEwNWZkMmE2YjIwMDg3NGI4MDBjZmI0YWM0MzUzZjVkMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TZW1hbnRp
Yy5qcwpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU2VtYW50aWMgZXh0ZW5kcyBOb2RlIHsK
KyAgICBjb25zdHJ1Y3RvcihvcmlnaW4pCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAg
ICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgfQorCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0
dXJuIHRoaXMuX29yaWdpbjsgfQorCisgICAgZXF1YWxUb090aGVyU2VtYW50aWMob3RoZXJTZW1h
bnRpYykKKyAgICB7CisgICAgICAgIGNsYXNzIENvbXBhcmVyIGV4dGVuZHMgVmlzaXRvciB7Cisg
ICAgICAgICAgICB2aXNpdEJ1aWx0SW5TZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICghKG90aGVyU2VtYW50aWMgaW5zdGFuY2VvZiBCdWlsdEluU2VtYW50
aWMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKG5vZGUubmFtZSAhPSBvdGhlclNlbWFudGljLm5hbWUpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50cyAm
JiBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aCAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1l
bnRzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmV4dHJhQXJndW1lbnRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3Vt
ZW50c1tpXSAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzW2ldKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUuZXh0cmFBcmd1bWVudHMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aCA9PSAwOworICAgICAgICAgICAgICAgIGlm
IChvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cy5sZW5ndGggPT0gMDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRSZXNv
dXJjZVNlbWFudGljKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEo
b3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9mIFJlc291cmNlU2VtYW50aWMpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUucmVzb3Vy
Y2VNb2RlID09IG90aGVyU2VtYW50aWMucmVzb3VyY2VNb2RlICYmIG5vZGUuaW5kZXggPT0gb3Ro
ZXJTZW1hbnRpYy5pbmRleCAmJiBub2RlLnNwYWNlID09IG90aGVyU2VtYW50aWMuc3BhY2U7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0
YW5jZW9mIFN0YWdlSW5PdXRTZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5pbmRleCA9PSBvdGhlclNlbWFudGlj
LmluZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBvdGhlciBpbnN0YW5jZW9mIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy52aXNpdChuZXcgQ29t
cGFyZXIoKSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQyMjA2OTdiOTRlOTYzODAxYWIyMDZlMTE0YmJhYjhkMGYzNDYzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9y
aWdpbikKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgfQorCisgICAgaXNBY2Nl
cHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUuaXNO
dW1iZXI7CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24s
IHNoYWRlclR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09ICJpbnB1dCI7
CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJzcGVjaWFs
aXplZCI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFnZUluT3V0U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU5ZWVhOTliZTdkOTdjY2Y1NGZk
NjUxNzFhODQ0MDAxOTAwYzg1MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YWdlSW5PdXRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKwor
Y2xhc3MgU3RhZ2VJbk91dFNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVj
dG9yKG9yaWdpbiwgaW5kZXgpCisgICAgeworICAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAg
ICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAgfQorCisgICAgZ2V0IGluZGV4KCkgeyByZXR1
cm4gdGhpcy5faW5kZXg7IH0KKworICAgIGlzQWNjZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0eXBlIGluc3RhbmNlb2YgRW51bVR5cGUgfHwgdHlwZSBp
bnN0YW5jZW9mIEFycmF5VHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgVmVjdG9yVHlwZSB8fCB0eXBl
IGluc3RhbmNlb2YgTWF0cml4VHlwZSB8fCB0eXBlLmlzTnVtYmVyOworICAgIH0KKworICAgIGlz
QWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7CisgICAgICAgIGNhc2UgInZlcnRleCI6CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAg
ICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAiaW5wdXQiOworICAgICAgICBjYXNlICJjb21wdXRlIjoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgVW5rbm93biBzaGFkZXIgdHlwZTogJHtzaGFkZXJUeXBlfWApOworICAgICAgICB9
CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGBhdHRyaWJ1
dGUoJHt0aGlzLmluZGV4fSlgOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCmluZGV4IGM0YmRkYzkxNjE5NGVjMzMzYTYw
MTFmZDZhMjgxYjY2MjJjOGQ5MWYuLmVjYTY5NmU0ZGJmMmFkNjk0ZWY2YzlhNTBmNzMwYzMzNTY3
N2Q2YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVu
dENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRD
bG9uZXIuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMg
UmV3cml0ZXIgewogICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAg
ICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwKICAgICAgICAgICAgIG5vZGUucGFyYW1l
dGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRlci52aXNpdCh0aGlzKSksCi0gICAgICAgICAg
ICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBlLCBub2RlLnN0YWdlKTsKKyAgICAgICAgICAg
IG5vZGUuaXNDYXN0LCBub2RlLnN0YWdlKTsKICAgICAgICAgcmVzdWx0LmlzUmVzdHJpY3RlZCA9
IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVBcnJheU9wZXJh
dG9yTGVuZ3RoLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFy
cmF5T3BlcmF0b3JMZW5ndGguanMKaW5kZXggZGU4ZGY1ZDExNDhjNTc4YWYwZGI2ZTI3ZDdiMDE3
OTg5OWYxNWQ0YS4uMWEyODE1OGE4YjQyN2Q3OTE4N2I5MGM1YWQ0NjY4NWMxMDYwNDEzMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFycmF5T3Bl
cmF0b3JMZW5ndGguanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhl
c2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gc3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSkKICAgICAgICAgbGV0IG5hdGl2ZUZ1
bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIGFycmF5VHlwZS5vcmlnaW4sICJvcGVy
YXRvci5sZW5ndGgiLCB1aW50LAogICAgICAgICAgICAgWyBuZXcgRnVuY1BhcmFtZXRlcihhcnJh
eVR5cGUub3JpZ2luLCBudWxsLCBwYXJhbVR5cGUpIF0sCi0gICAgICAgICAgICBmYWxzZSwgbnVs
bCk7CisgICAgICAgICAgICBmYWxzZSk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2FycmF5XSkgPT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUpOwog
ICAgICAgICBwcm9ncmFtLmFkZChuYXRpdmVGdW5jKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rv
ck9wZXJhdG9yLmpzCmluZGV4IGNmOThjNDY3YTVjMTJkODQ2MmYxYmIwNzgxYTIwZTBlMmFlMzVj
MzkuLmYzOWVhZWYxZDQ2NDc1NjdlODgzN2Y0ZjU0ZDYxOTczNDU2YzZiZWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVDb3B5Q29uc3RydWN0b3JP
cGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXpl
Q29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgZnVuY3Rpb24gc3lu
dGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yKHByb2dyYW0pCiAgICAgZm9yIChsZXQgdHlw
ZSBvZiB0eXBlcykgewogICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKHR5
cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgWwogICAgICAg
ICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0
eXBlKSkKLSAgICAgICAgXSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIF0sIHRydWUpOwogICAgICAg
ICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFthcmddLCBub2RlKSA9PiB7CiAgICAgICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXplKSwgMCk7CiAg
ICAgICAgICAgICByZXN1bHQuY29weUZyb20oYXJnLCB0eXBlLnNpemUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rv
ck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURl
ZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGRjNTA2NTM4ZDFjNmM3MTA5YjFhZDFl
Y2JhM2NlYzI3OGQwZjdiNWMuLjViYzVkZDkzOWFkNDA0YmMzMThkYzVjODA5NTk1OGZlNDc1MWQ0
ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVE
ZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTYyLDcg
KzYyLDcgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yKHBy
b2dyYW0pCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwogCiAgICAgZm9y
IChsZXQgdHlwZSBvZiB0eXBlcykgewotICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRp
dmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwg
W10sIHRydWUsIG51bGwpOworICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5j
KHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgW10sIHRy
dWUpOwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFtdLCBub2RlKSA9PiB7
CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXpl
KSwgMCk7CiAgICAgICAgICAgICBub2RlLnR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUocmVzdWx0
LmJ1ZmZlciwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCmluZGV4IDEzN2FjOWZjZDE1ODg3YWY4Yzc2ZTRm
NjRjZGQ1YTIyZDI3Y2FhMTIuLjgyNjZhMThiNjdkODlmNTNkMzBiMjg2NDNiYjcyOWE1Mjc1NWVm
MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVF
bnVtRnVuY3Rpb25zLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRo
ZXNpemVFbnVtRnVuY3Rpb25zLmpzCkBAIC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHN5bnRoZXNp
emVFbnVtRnVuY3Rpb25zKHByb2dyYW0pCiAKICAgICAgICAgbGV0IG5hdGl2ZUZ1bmM7CiAgICAg
ICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgbGV0IHNoYWRlclR5cGU7CiAKICAgICAg
ICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmlnaW4s
ICJvcGVyYXRvcj09IiwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sICJib29sIiksCkBAIC00MCwy
OCArMzksMjggQEAgZnVuY3Rpb24gc3ludGhlc2l6ZUVudW1GdW5jdGlvbnMocHJvZ3JhbSkKICAg
ICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbnVsbCwgbmV3IFR5
cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5j
UGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlw
ZS5uYW1lKSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBpc0Nhc3QsIHNoYWRlclR5cGUp
OworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgbmF0aXZlRnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PiBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgcHJvZ3JhbS5hZGQobmF0aXZlRnVuYyk7CiAKICAgICAg
ICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmlnaW4s
ICJvcGVyYXRvci52YWx1ZSIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3IFJld3JpdGVyKCkpLAog
ICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlw
ZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFk
ZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2
ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAg
ICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3
IFJld3JpdGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2lu
LCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAg
ICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5h
dGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHBy
b2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZl
RnVuYygKICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIG5ldyBUeXBl
UmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1l
dGVyKHR5cGUub3JpZ2luLCBudWxsLCB0eXBlLmJhc2VUeXBlLnZpc2l0KG5ldyBSZXdyaXRlcigp
KSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2Fz
dCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFs
dWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNjZXNz
b3JzLmpzCmluZGV4IDc4NTllZWI0YjRmNWNiNWVmZTZmZDAyZGVhYjYzNzBkYmQ5YjUzOTAuLjZj
N2ZmZDcxODExNWM3OWQ4ZjI3MTA1N2I0MThjMDA5NDFjMGFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29y
cy5qcwpAQCAtNDksMTMgKzQ5LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAgICAgICAgIH0KIAogICAgICAgICBsZXQg
aXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAgICBsZXQgbmF0
aXZlRnVuYzsKIAogICAgICAgICAvLyBUaGUgZ2V0dGVyOiBvcGVyYXRvci5maWVsZAogICAgICAg
ICBuYXRpdmVGdW5jID0gbmV3IE5hdGl2ZUZ1bmMoCiAgICAgICAgICAgICBmaWVsZC5vcmlnaW4s
ICJvcGVyYXRvci4iICsgZmllbGQubmFtZSwgZmllbGQudHlwZSwKLSAgICAgICAgICAgIFtuZXcg
RnVuY1BhcmFtZXRlcihmaWVsZC5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0eXBlKSldLCBp
c0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKGZpZWxk
Lm9yaWdpbiwgbnVsbCwgVHlwZVJlZi53cmFwKHR5cGUpKV0sIGlzQ2FzdCk7CiAgICAgICAgIHNl
dHVwSW1wbGVtZW50YXRpb25EYXRhKG5hdGl2ZUZ1bmMsIChbYmFzZV0sIG9mZnNldCwgc3RydWN0
U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIo
bmV3IEVCdWZmZXIoZmllbGRTaXplKSwgMCk7CiAgICAgICAgICAgICByZXN1bHQuY29weUZyb20o
YmFzZS5wbHVzKG9mZnNldCksIGZpZWxkU2l6ZSk7CkBAIC03MCw3ICs2OSw3IEBAIGZ1bmN0aW9u
IHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAg
ICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIoZmllbGQub3JpZ2luLCBudWxsLCBUeXBl
UmVmLndyYXAodHlwZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKGZpZWxk
Lm9yaWdpbiwgbnVsbCwgZmllbGQudHlwZSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBp
c0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgc2V0dXBJ
bXBsZW1lbnRhdGlvbkRhdGEobmF0aXZlRnVuYywgKFtiYXNlLCB2YWx1ZV0sIG9mZnNldCwgc3Ry
dWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQ
dHIobmV3IEVCdWZmZXIoc3RydWN0U2l6ZSksIDApOwogICAgICAgICAgICAgcmVzdWx0LmNvcHlG
cm9tKGJhc2UsIHN0cnVjdFNpemUpOwpAQCAtODksNyArODgsNyBAQCBmdW5jdGlvbiBzeW50aGVz
aXplU3RydWN0QWNjZXNzb3JzRm9yU3RydWN0VHlwZShwcm9ncmFtLCB0eXBlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGQub3JpZ2luLCBudWxsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFB0clR5cGUoZmllbGQub3JpZ2luLCBhZGRyZXNzU3BhY2UsIFR5cGVSZWYud3JhcCh0
eXBlKSkpCiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBpc0Nhc3QsIHNoYWRl
clR5cGUpOworICAgICAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgICAgICBzZXR1cEltcGxl
bWVudGF0aW9uRGF0YShuYXRpdmVGdW5jLCAoW2Jhc2VdLCBvZmZzZXQsIHN0cnVjdFNpemUsIGZp
ZWxkU2l6ZSkgPT4gewogICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLmxvYWRWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgIGlmICghYmFzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAppbmRleCAwMjg1ZmJlZjRhZTIxZTE5NjY5YzFiZjY3NDljNWY5YzI1OGUwYTE5Li5j
ZDNiZGEwYzBiODMyYmYwN2JjMjMwNjhkZGJlOTlhMTE0ZjgzYWI4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVhZD4K
LTx0aXRsZT5XU0wgVGVzdDwvdGl0bGU+Cis8dGl0bGU+V0hMU0wgVGVzdDwvdGl0bGU+CiA8c2Ny
aXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMiw2ICsx
Miw3IEBACiA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iTmF0aXZlVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU2VtYW50aWMuanMi
Pjwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iQWRkcmVzc1NwYWNlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJBbGxvY2F0ZUF0RW50cnlQb2ludHMuanMiPjwvc2NyaXB0PgpAQCAtMjMsNiAr
MjQsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJC
b29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRp
bk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpblZlY3Rvckdl
dHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTgsMTAgKzEyMCwxMyBAQAogPHNjcmlwdCBzcmM9IlJl
c29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9w
ZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2VtYW50aWMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0
YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJy
YXJ5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGF0ZW1lbnRDbG9uZXIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpAQCAt
MTcwLDcgKzE3NSw3IEBAIGZ1bmN0aW9uIGRvVGVzdEluQnJvd3NlcigpCiAgICAgICAgICAgICBp
ZiAodGVzdGVyLm5leHQoKS5kb25lKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiAiICsgZS5tZXNzYWdlKTsK
KyAgICAgICAgICAgIHByaW50KCJFUlJPUjogIiArIChlLnBheWxvYWQgPyBlLnBheWxvYWQgOiBl
Lm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHByaW50KGUuc3RhY2spOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBk
YzhhOWZiMjczNjAyMzU4NWNjMWQ3ZWVhNjliMTg4YzJkYjljMGRjLi5jYjhlZjgzNDcxMmQ5NmE1
ODk2MDA4NTlkOTQzNzUyZmQxOTBlMmQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuanMKQEAgLTMxMDcsMTMzICszMTA3LDI2MiBAQCB0ZXN0cy50eXBlZGVmQXJyYXkgPSBmdW5j
dGlvbigpCiAKIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogeworICAgIGRvUHJlcChg
CisgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KDAsIDEsIDIsIDMpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAK
KyAgICAgICAgc3RydWN0IFIgeworICAgICAgICAgICAgZmxvYXQ0IHggOiBTVl9Qb3NpdGlvbjsK
KyAgICAgICAgICAgIGludDQgeSA6IGF0dHJpYnV0ZSgxKTsKKyAgICAgICAgfQorICAgICAgICB2
ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICBSIHo7CisgICAgICAgICAgICB6LnggPSBmbG9h
dDQoMSwgMiwgMywgNCk7CisgICAgICAgICAgICB6LnkgPSBpbnQ0KDUsIDYsIDcsIDgpOworICAg
ICAgICAgICAgcmV0dXJuIHo7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICBz
dHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgeCA6IFNWX1Bvc2l0aW9uOworICAgICAgICAg
ICAgaW50NCB5IDogYXR0cmlidXRlKDEpOworICAgICAgICB9CisgICAgICAgIHN0cnVjdCBTIHsK
KyAgICAgICAgICAgIFIgcjsKKyAgICAgICAgICAgIGZsb2F0MyB6IDogYXR0cmlidXRlKDIpOwor
ICAgICAgICB9CisgICAgICAgIHZlcnRleCBTIGZvbygpIHsKKyAgICAgICAgICAgIFMgdzsKKyAg
ICAgICAgICAgIHcuci54ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgdy5yLnkg
PSBpbnQ0KDUsIDYsIDcsIDgpOworICAgICAgICAgICAgdy56ID0gZmxvYXQzKDksIDEwLCAxMSk7
CisgICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAg
ICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcihi
MCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAq
YnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisg
ICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiByZWdpc3Rl
cihiMCwgc3BhY2UwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0
KCpidWZmZXIsICpidWZmZXIsICpidWZmZXIsICpidWZmZXIpOworICAgICAgICB9YCk7CisgICAg
ZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oY29uc3RhbnQgZmxvYXQqIGJ1ZmZl
ciA6IHJlZ2lzdGVyKGIwLCBzcGFjZTEpKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIHJl
dHVybiBmbG9hdDQoKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlcik7CisgICAgICAg
IH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhjb25zdGFudCBm
bG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZmZXJbMl0sIGJ1ZmZlclsz
XSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZv
byhmbG9hdFs1XSBidWZmZXIgOiByZWdpc3RlcihiMCkpIDogU1ZfUG9zaXRpb24geworICAgICAg
ICAgICAgcmV0dXJuIGZsb2F0NChidWZmZXJbMF0sIGJ1ZmZlclsxXSwgYnVmZmVyWzJdLCBidWZm
ZXJbM10pOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0
NCBmb28oZGV2aWNlIGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24g
eworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyLCAq
YnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAgICAgIHZlcnRleCBmbG9h
dDQgZm9vKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3NpdGlv
biB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZm
ZXJbMl0sIGJ1ZmZlclszXSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2
ZXJ0ZXggZmxvYXQ0IGZvbyh1aW50IHggOiBTVl9JbnN0YW5jZUlEKSA6IFNWX1Bvc2l0aW9uIHsK
KyAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBmbG9hdCh4KSwg
ZmxvYXQoeCkpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSkgOiBTVl9UYXJnZXQwIHsKKyAgICAg
ICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgIH1gKTsKKyAgICBkb1By
ZXAoYAorICAgICAgICBmcmFnbWVudCBmbG9hdDQgZm9vKGludCB4IDogc3BlY2lhbGl6ZWQpIDog
U1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAg
ICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhUZXh0
dXJlMUQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHMgOiByZWdpc3RlcihzMCkp
IDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gU2FtcGxlKHQsIHMsIDAuNCk7Cisg
ICAgICAgIH1gKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAg
ICAgIHZlcnRleCB2b2lkIGZvbygpIDogU1ZfUG9zaXRpb24gewogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnggPSBmbG9hdDQoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGlu
c3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1By
ZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCA6IFBTSVpFKSA6IFNW
X1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KHgsIHgsIHgsIHgpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgRm9vIGZvbygpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gYmFyKCk7CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAg
ICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhpbnQgeCA6IFNWX0luc3RhbmNlSUQpIDogU1ZfUG9zaXRp
b24geworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBm
bG9hdCh4KSwgZmxvYXQoeCkpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgdmVydGV4IGZsb2F0IGJhcigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIDQuOworICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCkg
OiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCh4LCB4LCB4LCB4
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwog
ICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSwgYm9vbCB5IDogU1ZfSXNGcm9udEZh
Y2UpIDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAz
LCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZlcnRleCBGb28gYmFyKGRldmljZSBG
b28qIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAg
ICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hl
Y2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0IFIgewor
ICAgICAgICAgICAgICAgIGZsb2F0NCB4IDogU1ZfVGFyZ2V0MDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZyYWdtZW50IFIgZm9vKGJvb2wgeCA6IFNWX0lzRnJvbnRGYWNlKSA6IFNWX0Rl
cHRoIHsKKyAgICAgICAgICAgICAgICBSIHk7CisgICAgICAgICAgICAgICAgeS54ID0gZmxvYXQ0
KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiB5OwogICAgICAgICAgICAgfQog
ICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAg
ICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAg
ICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAg
ICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAg
Ym9vbCB4IDogU1ZfSXNGcm9udEZhY2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZp
Y2UgQm9vKiB5OworICAgICAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhSIHggOiBTVl9TYW1w
bGVJbmRleCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEs
IDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCks
CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgK
KyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBSIHsKKyAgICAgICAg
ICAgICAgICBib29sIHggOiBTVl9Jc0Zyb250RmFjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0cnVjdCBTIHsKKyAgICAgICAgICAgICAgICBSIHI7CisgICAgICAgICAgICAgICAgYm9v
bCB5IDogU1ZfSXNGcm9udEZhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFnbWVu
dCBmbG9hdDQgZm9vKFMgeCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAg
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRG
YWNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlIEZvbyogeTsKKyAgICAgICAgICAgIGZyYWdtZW50IGZsb2F0NCBmb28oUiB4
KSA6IFNWX1RhcmdldDAgeworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywg
NCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihCb28gYikKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAor
ICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAg
ICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRGYWNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmVydGV4IHVpbnQgZm9vKCkgOiBTVl9WZXJ0ZXhJRCB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDc7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIHR5cGVk
ZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhkZXZp
Y2UgQVtdIHggOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAg
IHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vKiB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9m
IFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAg
ICAgICAgICAgIHR5cGVkZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXgg
ZmxvYXQ0IGZvbyhkZXZpY2UgQSogeCA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3NpdGlvbiB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Cisg
ICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAg
ICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAg
ICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgdHlwZWRlZiBBID0gdGhyZWFkIGZsb2F0KjsK
KyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKEFbNF0geCA6IHJlZ2lzdGVyKHUwKSkgOiBT
Vl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoRm9vIGZvbykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAor
ICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBlbnVtIEZvbyB7CisgICAgICAgICAg
ICAgICAgZiwgZworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
Rm9vIHggOiBzcGVjaWFsaXplZCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAg
ICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVw
KGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4Owor
ICAgICAgICAgICAgW251bXRocmVhZHMoMSwgMSwgMSldCisgICAgICAgICAgICBjb21wdXRlIGZs
b2F0IGZvbygpIDogYXR0cmlidXRlKDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gNTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoZGV2aWNlIEZvbyogc3Rh
Z2VJbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAg
ICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVj
a0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBmcmFnbWVudCBmbG9h
dCBmb28oKSA6IGF0dHJpYnV0ZSgwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBl
RXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKICAgICBjaGVj
a0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBzdHJ1Y3QgQm9vIHsK
LSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIHZlcnRleCBmbG9hdCBmb28o
ZGV2aWNlIGZsb2F0KiB4IDogYXR0cmlidXRlKDApKSA6IGF0dHJpYnV0ZSgwKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIDU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9v
IHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZpY2UgQm9v
KiB5OworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVy
dGV4IGZsb2F0NCBmb28oZGV2aWNlIGZsb2F0KiB4IDogcmVnaXN0ZXIoYjApKSA6IFNWX1Bvc2l0
aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gQm9vKCk7CisgICAgICAgIGApLAorICAg
ICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAg
ICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhmbG9hdCB4
IDogcmVnaXN0ZXIoYjApKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAg
ICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhkZXZpY2UgZmxvYXQqIHggOiByZWdpc3Rlcih0MCkp
IDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywg
NCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAg
ICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZpY2UgQm9vKiB5OworICAgICAgICBg
KSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWls
KAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
VGV4dHVyZTJEPGZsb2F0PiB4IDogcmVnaXN0ZXIoYjApKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihCb28gc3RhZ2VJbikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUg
aW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRv
UHJlcChgCisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhjb25zdGFudCBmbG9hdFtdIHgg
OiByZWdpc3RlcihzMCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAgIHJldHVybiBm
bG9hdDQoMSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAo
ZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2Vv
ZiBXVHlwZUVycm9yKTsKIH0KIAogdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0aW9uKCkK
QEAgLTY4OTUsMTggKzcwMjQsMTAgQEAgdGVzdHMubnVtVGhyZWFkcyA9IGZ1bmN0aW9uKCkgewog
ICAgICAgICBjb21wdXRlIHZvaWQgZm9vKCkgewogICAgICAgICB9CiAKLSAgICAgICAgW251bXRo
cmVhZHMoNiwgNywgOCldCi0gICAgICAgIGNvbXB1dGUgdm9pZCBiYXIoKSB7Ci0gICAgICAgIH0K
LQotICAgICAgICBbbnVtdGhyZWFkcyg5LCAxMCwgMTEpXQotICAgICAgICBjb21wdXRlIHZvaWQg
YmFyKGRldmljZSBmbG9hdFtdIGJ1ZmZlcikgewotICAgICAgICB9Ci0KICAgICAgICAgc3RydWN0
IFIgewotICAgICAgICAgICAgZmxvYXQ0IHBvc2l0aW9uOworICAgICAgICAgICAgZmxvYXQ0IHBv
c2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICAgICAgIH0KLSAgICAgICAgdmVydGV4IFIgYmF6KCkg
eworICAgICAgICB2ZXJ0ZXggUiBiYXIoKSB7CiAgICAgICAgICAgICBSIHI7CiAgICAgICAgICAg
ICByLnBvc2l0aW9uID0gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgcmV0dXJuIHI7
CkBAIC02OTI1LDQ1ICs3MDQ2LDEwIEBAIHRlc3RzLm51bVRocmVhZHMgPSBmdW5jdGlvbigpIHsK
ICAgICBpZiAoZm9vLmF0dHJpYnV0ZUJsb2NrWzBdLnogIT0gNSkKICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCInZm9vJyBudW10aHJlYWRzIHogaXMgbm90IDUiKTsKIAotICAgIGlmIChwcm9ncmFt
LmZ1bmN0aW9ucy5nZXQoImJhciIpLmxlbmd0aCAhPSAyKQorICAgIGlmIChwcm9ncmFtLmZ1bmN0
aW9ucy5nZXQoImJhciIpLmxlbmd0aCAhPSAxKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNh
bm5vdCBmaW5kIGZ1bmN0aW9uIG5hbWVkICdiYXInIik7Ci0gICAgbGV0IGJhcjEgPSBudWxsOwot
ICAgIGxldCBiYXIyID0gbnVsbDsKLSAgICBmb3IgKGxldCBiYXIgb2YgcHJvZ3JhbS5mdW5jdGlv
bnMuZ2V0KCJiYXIiKSkgewotICAgICAgICBpZiAoYmFyLnBhcmFtZXRlcnMubGVuZ3RoID09IDAp
Ci0gICAgICAgICAgICBiYXIxID0gYmFyOwotICAgICAgICBlbHNlIGlmIChiYXIucGFyYW1ldGVy
cy5sZW5ndGggPT0gMSkKLSAgICAgICAgICAgIGJhcjIgPSBiYXI7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCAnYmFyJyBmdW5jdGlvbi4iKTsK
LSAgICB9Ci0gICAgaWYgKCFiYXIxKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5v
dCBmaW5kIGFwcHJvcHJpYXRlICdiYXInIGZ1bmN0aW9uIik7Ci0gICAgaWYgKCFiYXIyKQotICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFwcHJvcHJpYXRlICdiYXInIGZ1
bmN0aW9uIik7Ci0KLSAgICBpZiAoYmFyMS5hdHRyaWJ1dGVCbG9jay5sZW5ndGggIT0gMSkKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCInYmFyMScgZG9lc24ndCBoYXZlIG51bXRocmVhZHMgYXR0
cmlidXRlIik7Ci0gICAgaWYgKGJhcjEuYXR0cmlidXRlQmxvY2tbMF0ueCAhPSA2KQotICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIidiYXIxJyBudW10aHJlYWRzIHggaXMgbm90IDYiKTsKLSAgICBp
ZiAoYmFyMS5hdHRyaWJ1dGVCbG9ja1swXS55ICE9IDcpCi0gICAgICAgIHRocm93IG5ldyBFcnJv
cigiJ2JhcjEnIG51bXRocmVhZHMgeSBpcyBub3QgNyIpOwotICAgIGlmIChiYXIxLmF0dHJpYnV0
ZUJsb2NrWzBdLnogIT0gOCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCInYmFyMScgbnVtdGhy
ZWFkcyB6IGlzIG5vdCA4Iik7Ci0KLSAgICBpZiAoYmFyMi5hdHRyaWJ1dGVCbG9jay5sZW5ndGgg
IT0gMSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCInYmFyMicgZG9lc24ndCBoYXZlIG51bXRo
cmVhZHMgYXR0cmlidXRlIik7Ci0gICAgaWYgKGJhcjIuYXR0cmlidXRlQmxvY2tbMF0ueCAhPSA5
KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIidiYXIyJyBudW10aHJlYWRzIHggaXMgbm90IDki
KTsKLSAgICBpZiAoYmFyMi5hdHRyaWJ1dGVCbG9ja1swXS55ICE9IDEwKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIidiYXIyJyBudW10aHJlYWRzIHkgaXMgbm90IDEwIik7Ci0gICAgaWYgKGJh
cjIuYXR0cmlidXRlQmxvY2tbMF0ueiAhPSAxMSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIn
YmFyMicgbnVtdGhyZWFkcyB6IGlzIG5vdCAxMSIpOwotCi0gICAgaWYgKHByb2dyYW0uZnVuY3Rp
b25zLmdldCgiYmF6IikubGVuZ3RoICE9IDEpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fu
bm90IGZpbmQgZnVuY3Rpb24gbmFtZWQgJ2JheiciKTsKLSAgICBsZXQgYmF6ID0gcHJvZ3JhbS5m
dW5jdGlvbnMuZ2V0KCJiYXoiKVswXTsKLSAgICBpZiAoYmF6LmF0dHJpYnV0ZUJsb2NrICE9IG51
bGwpCisgICAgbGV0IGJhciA9IHByb2dyYW0uZnVuY3Rpb25zLmdldCgiYmFyIilbMF07CisgICAg
aWYgKGJhci5hdHRyaWJ1dGVCbG9jayAhPSBudWxsKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IidiYXonIGhhcyBhdHRyaWJ1dGUgYmxvY2siKTsKIAogICAgIGNoZWNrRmFpbCgoKSA9PiBkb1By
ZXAoYApAQCAtOTA2MCw3ICs5MTQ2LDcgQEAgdGVzdHMuZXZhbHVhdGlvbk9yZGVyRm9yQXJndW1l
bnRzID0gKCkgPT4gewogCiB0ZXN0cy5jYW5ub3RDYWxsQW5vdGhlckVudHJ5UG9pbnQgPSAoKSA9
PiB7CiAgICAgY2hlY2tGYWlsKCgpID0+IGRvUHJlcChgCi0gICAgICAgIHN0cnVjdCBGb28geyBp
bnQgeDsgfQorICAgICAgICBzdHJ1Y3QgRm9vIHsgaW50IHggOiBhdHRyaWJ1dGUoMCk7IH0KICAg
ICAgICAgdmVydGV4IEZvbyBmb28oKSB7IHJldHVybiBiYXIoKTsgfQogICAgICAgICB2ZXJ0ZXgg
Rm9vIGJhcigpIHsgcmV0dXJuIEZvbygpOyB9CiAgICAgYCksIGUgPT4gZSBpbnN0YW5jZW9mIFdU
eXBlRXJyb3IgJiYgZS5tZXNzYWdlLmluZGV4T2YoIml0IGNhbm5vdCBiZSBjYWxsZWQgZnJvbSB3
aXRoaW4gYW4gZXhpc3Rpbmcgc2hhZGVyIikgIT09IC0xKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IGI4ZjRkYmNjNDg3YzllODA3MjIwY2I0MDExOWJlNTlk
MmQ2ZTY1YzYuLjRlYTFiOWVlNGZhMDRkMGE1M2VmNmUyYjA1YWE1MzhkZTgzZjJmYWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpAQCAtNDAsMTEgKzQwLDEzIEBA
IGNsYXNzIFZpc2l0b3IgewogICAgICAgICAgICAgZm9yIChsZXQgYXR0cmlidXRlIG9mIG5vZGUu
YXR0cmlidXRlQmxvY2spCiAgICAgICAgICAgICAgICAgYXR0cmlidXRlLnZpc2l0KHRoaXMpOwog
ICAgICAgICB9CisgICAgICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAg
fQogICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsKICAgICAgICAgbm9k
ZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMsIHRo
aXMpOwogICAgIH0KICAgICAKICAgICB2aXNpdEZ1bmNEZWYobm9kZSkKQEAgLTk2LDYgKzk4LDcg
QEAgY2xhc3MgVmlzaXRvciB7CiAgICAgdmlzaXRGaWVsZChub2RlKQogICAgIHsKICAgICAgICAg
bm9kZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMs
IHRoaXMpOwogICAgIH0KICAgICAKICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCkBAIC0zNTUsNSAr
MzU4LDIxIEBAIGNsYXNzIFZpc2l0b3IgewogICAgIHZpc2l0RnVuY051bVRocmVhZHNBdHRyaWJ1
dGUobm9kZSkKICAgICB7CiAgICAgfQorCisgICAgdmlzaXRCdWlsdEluU2VtYW50aWMobm9kZSkK
KyAgICB7CisgICAgfQorCisgICAgdmlzaXRSZXNvdXJjZVNlbWFudGljKG5vZGUpCisgICAgewor
ICAgIH0KKworICAgIHZpc2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUpCisgICAgeworICAgIH0K
KworICAgIHZpc2l0U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKG5vZGUpCisgICAgewor
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXgg
YWUwMTEwMDcwNzNkM2VlMjYxNGI2MGE0MTM4MDhhOTM1MzJkZmJhMC4uYjM1NTYyNDVjYTJiNTQx
ZGExZGNiYzliM2JiZTczNWNhYjkxOGM0YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9pbmRleC5odG1sCkBAIC0xMiw2ICsxMiw3IEBACiA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJh
bFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTmF0aXZlVHlwZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iU2VtYW50aWMuanMiPjwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iQWRkcmVz
c1NwYWNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJBbGxvY2F0ZUF0RW50cnlQb2ludHMu
anMiPjwvc2NyaXB0PgpAQCAtMjMsNiArMjQsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQnVpbHRpblZlY3RvckdldHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTgsMTAgKzEy
MCwxMyBAQAogPHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJSZXNvbHZlVHlwZURlZnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2Vt
YW50aWMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0
dXJuRXhjZXB0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJT
dGF0ZW1lbnRDbG9uZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlN0cnVjdExheW91dEJ1
aWxkZXIuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350788</attachid>
            <date>2018-09-25 13:55:13 -0700</date>
            <delta_ts>2018-09-25 13:55:13 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-189134-20180925135512.patch</filename>
            <type>text/plain</type>
            <size>107083</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDcxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODNiYjNhMmUwMTkzYmQ0YWQwN2NmODJjZTI5OWMyNjlk
ZTlhNzJjMC4uMjczYmZiNmM2ZWI2ODNiOTY4NTJiZDRmNzg4MjlkZDVhMzM0Y2IzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
MSBAQAorMjAxOC0wOS0yNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSFNMXSBJbXBsZW1lbnQgc2VtYW50aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgcGFyc2luZyBzdXBw
b3J0IGFuZCBhZGRzIHRoZSBjaGVja3MgcmVxdWlyZWQgdG8gc3VwcG9ydCBITFNMLXN0eWxlIHNl
bWFudGljcy4KKworICAgICAgICBUaGVyZSBhcmUgMyBwbGFjZXMgd2hlcmUgc2VtYW50aWNzIGFy
ZSBhbGxvd2VkOgorCisgICAgICAgIDEuIEluIGEgZmllbGQgaW4gYSBzdHJ1Y3QuIEUuZy4KKwor
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbjsKKyAgICAgICAgfQorICAgICAgICB2ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICAu
Li4KKyAgICAgICAgfQorCisgICAgICAgIDIuIEluIGEgcGFyYW1ldGVyIG9mIGEgZnVuY3Rpb24u
IElmIHRoZSBmdW5jdGlvbiBpcyBub3QgYW4gZW50cnkgcG9pbnQsIHRoZSBzZW1hbnRpYyBpcyBp
Z25vcmVkLgorCisgICAgICAgIGNvbXB1dGUgdm9pZCBmb28oZGV2aWNlIGZsb2F0W10gZGF0YSA6
IGJ1ZmZlcih1MCkpIHsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAgICAgMy4g
T24gYSBmdW5jdGlvbi4gVGhpcyBpcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjcmVhdGUgc3RydWN0
cyBmb3IgdGhlIHJldHVybiB0eXBlcyBvZiBzaW1wbGUgdmVydGV4IHNoYWRlcnMuCisKKyAgICAg
ICAgdmVydGV4IGZsb2F0NCBmb28oKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIC4uLgor
ICAgICAgICB9CisKKyAgICAgICAgVGhlIHNlbWFudGljcyBhcmUgcGFydGl0aW9uZWQgaW50byA0
IHR5cGVzOgorCisgICAgICAgIDEuIEJ1aWx0LWluIHZhcmlhYmxlcy4gRm9yIGV4YW1wbGUsIDog
U1ZfUG9zaXRpb24uCisgICAgICAgIDIuIFJlc291cmNlcy4gRm9yIGV4YW1wbGUsIDogcmVnaXN0
ZXIodTApLgorICAgICAgICAzLiBTdGFnZS1pbiAvIHN0YWdlLW91dCB2YXJpYWJsZXMuIEZvciBl
eGFtcGxlLCA6IGF0dHJpYnV0ZSgwKS4KKyAgICAgICAgNC4gU3BlY2lhbGl6YXRpb24gY29uc3Rh
bnRzLiBGb3IgZXhhbXBsZSwgOiBzcGVjaWFsaXplZC4KKworICAgICAgICBUaGUgc2VtYW50aWNz
IGFyZSB2YWxpZGF0ZWQgYWNjb3JkaW5nIHRvIGEgY29sbGVjdGlvbiBvZiBydWxlczoKKworICAg
ICAgICAtIFRoZSBzYW1lIGVudHJ5IHBvaW50IGNhbid0IGxpc3QgdGhlIHNhbWUgc2VtYW50aWMg
dHdpY2UKKyAgICAgICAgLSBFYWNoIGJ1aWx0LWluIHR5cGUgaGFzIGFuIGFwcHJvcHJpYXRlIHR5
cGUgdGhhdCBpcyBsaXN0ZWQgaW4gdGhlIHNwZWMuIAorICAgICAgICAtIEVhY2ggYnVpbHQtaW4g
aXMgYXBwcm9wcmlhdGUgYXMgZWl0aGVyIGFuIGlucHV0IG9yIGFuIG91dHB1dCBvZiBhIHBhcnRp
Y3VsYXIgc2hhZGVyIHN0YWdlCisgICAgICAgIC0gUmVzb3VyY2Ugc2VtYW50aWNzIGhhdmUgdG8g
aGF2ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSAoZS5nLiBjYW4ndCB1c2UgcmVnaXN0ZXIoczApIG9u
IGEgYnVmZmVyKQorICAgICAgICAtIFJlc291cmNlcyBjYW4ndCBiZSBvdXRwdXQgZnJvbSBlbnRy
eSBwb2ludHMKKyAgICAgICAgLSBUaGUgcmVzb3VyY2Ugc2VtYW50aWMgbW9kZSBtdXN0IG1hdGNo
IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSByZXNvdXJjZQorICAgICAgICAtIFN0YWdlLWluIGFu
ZCBzdGFnZS1vdXQgdmFyaWFibGVzIGhhdmUgdG8gYmUgUE9ECisgICAgICAgIC0gU3BlY2lhbGl6
YXRpb24gY29uc3RhbnRzIGNhbid0IGJlIG91dHB1dCBmcm9tIGVudHJ5IHBvaW50cywgYW5kIGhh
dmUgdG8gYmUgbnVtYmVycworCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxs
LmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5q
czogQWRkZWQuCisgICAgICAgIChCdWlsdEluU2VtYW50aWMpOgorICAgICAgICAoQnVpbHRJblNl
bWFudGljLnByb3RvdHlwZS5nZXQgbmFtZSk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMucHJv
dG90eXBlLmdldCBleHRyYUFyZ3VtZW50cyk6CisgICAgICAgIChCdWlsdEluU2VtYW50aWMucHJv
dG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoQnVpbHRJblNlbWFudGljLnByb3Rv
dHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKEJ1aWx0SW5TZW1hbnRp
Yy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxFeHByZXNzaW9uLmpzOgorICAgICAgICAoQ2FsbEV4cHJlc3Npb24ucHJvdG90eXBlLl9y
ZXNvbHZlV2l0aE9wZXJhdG9yQW5kZXJJbmRleGVyKToKKyAgICAgICAgKENhbGxFeHByZXNzaW9u
LnByb3RvdHlwZS5fcmVzb2x2ZVdpdGhPcGVyYXRvckxlbmd0aCk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNrZXIpOgorICAgICAg
ICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIucHJv
dG90eXBlLl9jaGVja1NlbWFudGljcy5JdGVtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBl
Ll9jaGVja1NlbWFudGljcy5JdGVtLnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuSXRlbS5wcm90b3R5cGUuZ2V0IHNlbWFudGlj
KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlcik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnJlc2V0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGlj
cy5HYXRoZXJlci5wcm90b3R5cGUuc2V0IGN1cnJlbnRTZW1hbnRpYyk6CisgICAgICAgIChDaGVj
a2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLmdldCBjdXJy
ZW50U2VtYW50aWMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNz
LkdhdGhlcmVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToKKyAgICAgICAgKENoZWNrZXIucHJvdG90
eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlzaXRFbnVtVHlwZSk6Cisg
ICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90
eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0TWF0cml4VHlwZSk6CisgICAgICAgIChD
aGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0
TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3Mu
R2F0aGVyZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6CisgICAgICAgIChDaGVja2VyLnBy
b3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0VHlwZVJlZik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3MuR2F0aGVyZXIucHJv
dG90eXBlLnZpc2l0UHRyVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MuR2F0aGVyZXIucHJvdG90eXBlLnZpc2l0QXJyYXlSZWZUeXBlKToKKyAgICAgICAg
KENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5HYXRoZXJlci5wcm90b3R5cGUudmlz
aXRBcnJheVR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNz
LkdhdGhlcmVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrRHVwbGljYXRlU2VtYW50aWNzKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5jaGVja1NlbWFudGljVHlw
ZXMpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLmNoZWNrU2Vt
YW50aWNGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1Nl
bWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNp
dEFycmF5VHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tTZW1hbnRpY3Mu
UE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKENoZWNrZXIu
cHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3RvdHlwZS52aXNpdE1hdHJp
eFR5cGUpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2VtYW50aWNzLlBPRENo
ZWNrZXIucHJvdG90eXBlLnZpc2l0TmF0aXZlVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3Rv
dHlwZS5fY2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQdHJUeXBlKToK
KyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnBy
b3RvdHlwZS52aXNpdEFycmF5UmVmVHlwZSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5f
Y2hlY2tTZW1hbnRpY3MuUE9EQ2hlY2tlci5wcm90b3R5cGUudmlzaXRTdHJ1Y3RUeXBlKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9jaGVja1NlbWFudGljcy5QT0RDaGVja2VyLnByb3Rv
dHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2Vt
YW50aWNzLlBPRENoZWNrZXIpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2Vt
YW50aWNzLmNoZWNrUE9ERGF0YSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tT
ZW1hbnRpY3MpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5fY2hlY2tPcGVyYXRvck92ZXJsb2FkKToKKyAg
ICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6CisgICAgICAgIChDaGVja2Vy
LnByb3RvdHlwZS52aXNpdEVudW1UeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZp
c2l0QXJyYXlUeXBlKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0TWFrZVB0ckV4
cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRNYWtlQXJyYXlSZWZF
eHByZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLl9maW5pc2hWaXNpdGluZ1By
b3BlcnR5QWNjZXNzKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0SW5kZXhFeHBy
ZXNzaW9uKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UmV0dXJuKToKKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0U3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKENo
ZWNrZXIucHJvdG90eXBlLnZpc2l0VGVybmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoQ2hlY2tl
ci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRmllbGQuanM6CisgICAgICAgIChGaWVsZCk6CisgICAgICAgIChGaWVsZC5w
cm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qczoKKyAgICAgICAg
KEZ1bmMpOgorICAgICAgICAoRnVuYy5wcm90b3R5cGUuZ2V0IHNlbWFudGljKToKKyAgICAgICAg
KEZ1bmMucHJvdG90eXBlLnRvRGVjbFN0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY0RlZi5qczoKKyAgICAgICAgKEZ1bmNEZWYpOgorICAgICAgICAqIFdlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5jUGFyYW1l
dGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBzZW1hbnRpYyk6Cisg
ICAgICAgIChGdW5jUGFyYW1ldGVyLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tlci5qczoKKyAgICAgICAgKExhdGVDaGVja2VyLnByb3Rv
dHlwZS52aXNpdFJlZmVyZW5jZVR5cGUpOgorICAgICAgICAoTGF0ZUNoZWNrZXIpOgorICAgICAg
ICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLl9jaGVja1NoYWRlclR5cGUpOiBEZWxldGVkLgorICAg
ICAgICAoTGF0ZUNoZWNrZXIucHJvdG90eXBlLnZpc2l0RnVuY0RlZik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qczoKKyAgICAgICAgKE5h
dGl2ZUZ1bmMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgor
ICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6CisgICAg
ICAgIChwYXJzZUZ1bmNEZWYpOgorICAgICAgICAocGFyc2VTdGFnZUluT3V0U2VtYW50aWMpOgor
ICAgICAgICAocGFyc2VSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKHBhcnNlU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljKToKKyAgICAgICAgKHBhcnNlQnVpbHRJblNlbWFudGljKToK
KyAgICAgICAgKHBhcnNlRmllbGQpOgorICAgICAgICAocGFyc2VOYXRpdmVGdW5jKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdz
UmVtb3ZlZC5qczoKKyAgICAgICAgKHByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVk
KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpz
OiBBZGRlZC4KKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMpOgorICAgICAgICAoUmVzb3VyY2VT
ZW1hbnRpYy5wcm90b3R5cGUuZ2V0IHJlc291cmNlTW9kZSk6CisgICAgICAgIChSZXNvdXJjZVNl
bWFudGljLnByb3RvdHlwZS5nZXQgaW5kZXgpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5w
cm90b3R5cGUuZ2V0IHNwYWNlKToKKyAgICAgICAgKFJlc291cmNlU2VtYW50aWMucHJvdG90eXBl
LmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAoUmVzb3VyY2VTZW1hbnRpYy5wcm90b3R5cGUu
aXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZSk6CisgICAgICAgIChSZXNvdXJjZVNlbWFudGljLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVy
KToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFJl
d3JpdGVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRl
ci5wcm90b3R5cGUudmlzaXRSZXNvdXJjZVNlbWFudGljKToKKyAgICAgICAgKFJld3JpdGVyLnBy
b3RvdHlwZS52aXNpdFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAgICAgIChSZXdyaXRlci5wcm90
b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAoUmV3
cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU2VtYW50aWMuanM6IEFkZGVkLgorICAg
ICAgICAoU2VtYW50aWMpOgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmdldCBvcmlnaW4p
OgorICAgICAgICAoU2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBh
cmVyLnByb3RvdHlwZS52aXNpdEJ1aWx0SW5TZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5w
cm90b3R5cGUuZXF1YWxUb090aGVyU2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0UmVz
b3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChTZW1hbnRpYy5wcm90b3R5cGUuZXF1YWxUb090aGVy
U2VtYW50aWMuQ29tcGFyZXIucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNlbWFudGljKToKKyAg
ICAgICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYy5Db21wYXJlci5w
cm90b3R5cGUudmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOgorICAgICAgICAo
U2VtYW50aWMucHJvdG90eXBlLmVxdWFsVG9PdGhlclNlbWFudGljLkNvbXBhcmVyKToKKyAgICAg
ICAgKFNlbWFudGljLnByb3RvdHlwZS5lcXVhbFRvT3RoZXJTZW1hbnRpYyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpz
OiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcy4KKyAg
ICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk6CisgICAgICAgIChTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAg
ICAgICAoU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFi
bGVGb3JTaGFkZXJUeXBlKToKKyAgICAgICAgKFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1N0YWdlSW5PdXRTZW1hbnRpYy5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY0RlZi5qcy4KKyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAg
ICAgIChTdGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmdldCBpbmRleCk6CisgICAgICAgIChT
dGFnZUluT3V0U2VtYW50aWMucHJvdG90eXBlLmlzQWNjZXB0YWJsZVR5cGUpOgorICAgICAgICAo
U3RhZ2VJbk91dFNlbWFudGljLnByb3RvdHlwZS5pc0FjY2VwdGFibGVGb3JTaGFkZXJUeXBlKToK
KyAgICAgICAgKFN0YWdlSW5PdXRTZW1hbnRpYy5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczoKKyAgICAgICAg
KFN0YXRlbWVudENsb25lci5wcm90b3R5cGUudmlzaXROYXRpdmVGdW5jKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5qczoK
KyAgICAgICAgKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanM6
CisgICAgICAgIChzeW50aGVzaXplQ29weUNvbnN0cnVjdG9yT3BlcmF0b3IpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVy
YXRvci5qczoKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvcik6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUVudW1GdW5jdGlv
bnMuanM6CisgICAgICAgIChzeW50aGVzaXplRW51bUZ1bmN0aW9ucyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qczoKKyAgICAg
ICAgKHNldHVwQW5kZXIpOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29yc0ZvclN0
cnVjdFR5cGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAodGVz
dHMuc2hhZGVyVHlwZXMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanM6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEZ1bmMpOgorICAgICAgICAo
VmlzaXRvci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKFZpc2l0b3Iu
cHJvdG90eXBlLnZpc2l0RmllbGQpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRC
dWlsdEluU2VtYW50aWMpOgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRSZXNvdXJj
ZVNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3RhZ2VJbk91dFNl
bWFudGljKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljKToKKyAgICAgICAgKFZpc2l0b3IpOgorICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIwMTgtMDktMjUgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZp
eCBhZnRlciByMjM2NDU1CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggOTA0
NmVkNGYyOTk2MWNhMGM1YTllYTExMDM1MWViNzkzMzVkNTA1OC4uNzAzOTI1MmYyMDgzM2FhNjgx
YjA2YmFiNTU2NzkyNTlkYjkxYzY4MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5q
cwpAQCAtMzUsNiArMzUsNyBAQCBsb2FkKCJDcmVhdGVMaXRlcmFsLmpzIik7CiBsb2FkKCJDcmVh
dGVMaXRlcmFsVHlwZS5qcyIpOwogbG9hZCgiUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmpzIik7
CiBsb2FkKCJOYXRpdmVUeXBlLmpzIik7Citsb2FkKCJTZW1hbnRpYy5qcyIpOwogCiBsb2FkKCJB
ZGRyZXNzU3BhY2UuanMiKTsKIGxvYWQoIkFsbG9jYXRlQXRFbnRyeVBvaW50cy5qcyIpOwpAQCAt
NDYsNiArNDcsNyBAQCBsb2FkKCJBdXRvV3JhcHBlci5qcyIpOwogbG9hZCgiQmxvY2suanMiKTsK
IGxvYWQoIkJvb2xMaXRlcmFsLmpzIik7CiBsb2FkKCJCcmVhay5qcyIpOworbG9hZCgiQnVpbHRJ
blNlbWFudGljLmpzIik7CiBsb2FkKCJCdWlsdGluTWF0cml4R2V0dGVyLmpzIik7CiBsb2FkKCJC
dWlsdGluTWF0cml4U2V0dGVyLmpzIik7CiBsb2FkKCJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIik7
CkBAIC0xNDEsMTAgKzE0MywxMyBAQCBsb2FkKCJSZXNvbHZlTmFtZXMuanMiKTsKIGxvYWQoIlJl
c29sdmVPdmVybG9hZEltcGwuanMiKTsKIGxvYWQoIlJlc29sdmVQcm9wZXJ0aWVzLmpzIik7CiBs
b2FkKCJSZXNvbHZlVHlwZURlZnMuanMiKTsKK2xvYWQoIlJlc291cmNlU2VtYW50aWMuanMiKTsK
IGxvYWQoIlJldHVybi5qcyIpOwogbG9hZCgiUmV0dXJuQ2hlY2tlci5qcyIpOwogbG9hZCgiUmV0
dXJuRXhjZXB0aW9uLmpzIik7CiBsb2FkKCJTYW1wbGVyLmpzIik7Citsb2FkKCJTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuanMiKTsKK2xvYWQoIlN0YWdlSW5PdXRTZW1hbnRpYy5qcyIp
OwogbG9hZCgiU3RhbmRhcmRMaWJyYXJ5LmpzIik7CiBsb2FkKCJTdGF0ZW1lbnRDbG9uZXIuanMi
KTsKIGxvYWQoIlN0cnVjdExheW91dEJ1aWxkZXIuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0J1aWx0SW5TZW1hbnRpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTM5MzMyOGNm
ZGViYTA0ZDRlMzFlMzcxNmFkODkxOWU5NDFkNGRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQnVpbHRJblNlbWFudGljLmpzCkBAIC0wLDAgKzEsMTYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3Ry
aWN0IjsKKworY2xhc3MgQnVpbHRJblNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNv
bnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgLi4uZXh0cmFBcmd1bWVudHMpCisgICAgeworICAgICAg
ICBzdXBlcihvcmlnaW4pOworICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgdGhp
cy5fZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKKyAgICB9CisKKyAgICBnZXQgbmFt
ZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH0KKyAgICBnZXQgZXh0cmFBcmd1bWVudHMoKSB7IHJl
dHVybiB0aGlzLl9leHRyYUFyZ3VtZW50czsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBl
LCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgbGV0IHJlcXVpcmVkVHlwZTsKKyAgICAgICAgc3dp
dGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgY2FzZSAiU1ZfSW5zdGFuY2VJRCI6CisgICAgICAg
ICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICJTVl9WZXJ0ZXhJRCI6CisgICAgICAgICAgICByZXF1aXJl
ZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICJQU0laRSI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmlu
dHJpbnNpY3MuZmxvYXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfUG9z
aXRpb24iOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzWyJ2
ZWN0b3I8ZmxvYXQsIDQ+Il07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1Zf
SXNGcm9udEZhY2UiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5z
aWNzLmJvb2w7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfU2FtcGxlSW5k
ZXgiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLnVpbnQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfSW5uZXJDb3ZlcmFnZSI6Cisg
ICAgICAgICAgICByZXF1aXJlZFR5cGUgPSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJTVl9UYXJnZXQiOgorICAgICAgICAgICAgcmVx
dWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzWyJ2ZWN0b3I8ZmxvYXQsIDQ+Il07CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiU1ZfRGVwdGgiOgorICAgICAgICAgICAgcmVx
dWlyZWRUeXBlID0gcHJvZ3JhbS5pbnRyaW5zaWNzLmZsb2F0OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgIlNWX0NvdmVyYWdlIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9
IHByb2dyYW0uaW50cmluc2ljcy51aW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgIlNWX0Rpc3BhdGNoVGhyZWFkSUQiOgorICAgICAgICAgICAgcmVxdWlyZWRUeXBlID0gcHJv
Z3JhbS5pbnRyaW5zaWNzWyJ2ZWN0b3I8dWludCwgMz4iXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICJTVl9Hcm91cElEIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHBy
b2dyYW0uaW50cmluc2ljc1sidmVjdG9yPHVpbnQsIDM+Il07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAiU1ZfR3JvdXBJbmRleCI6CisgICAgICAgICAgICByZXF1aXJlZFR5cGUg
PSBwcm9ncmFtLmludHJpbnNpY3MudWludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJTVl9Hcm91cFRocmVhZElEIjoKKyAgICAgICAgICAgIHJlcXVpcmVkVHlwZSA9IHByb2dy
YW0uaW50cmluc2ljc1sidmVjdG9yPHVpbnQsIDM+Il07CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzZW1h
bnRpYzogJHt0aGlzLm5hbWV9YCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHlwZS5l
cXVhbHMocmVxdWlyZWRUeXBlKTsKKyAgICB9CisKKyAgICBpc0FjY2VwdGFibGVGb3JTaGFkZXJU
eXBlKGRpcmVjdGlvbiwgc2hhZGVyVHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc2hhZGVy
VHlwZSkgeworICAgICAgICBjYXNlICJ2ZXJ0ZXgiOgorICAgICAgICAgICAgc3dpdGNoIChkaXJl
Y3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgImlucHV0IjoKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKHRoaXMubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgIlNWX0luc3RhbmNlSUQiOgor
ICAgICAgICAgICAgICAgIGNhc2UgIlNWX1ZlcnRleElEIjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgIm91
dHB1dCI6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlICJQU0laRSI6CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfUG9zaXRpb24iOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICBjYXNlICJmcmFnbWVudCI6CisgICAgICAgICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgeworICAgICAgICAgICAgY2FzZSAiaW5wdXQiOgorICAgICAgICAgICAg
ICAgIHN3aXRjaCAodGhpcy5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAiU1ZfSXNGcm9u
dEZhY2UiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNWX1NhbXBsZUluZGV4IjoKKyAgICAgICAg
ICAgICAgICBjYXNlICJTVl9Jbm5lckNvdmVyYWdlIjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgIm91dHB1
dCI6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm5hbWUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICJTVl9UYXJnZXQiOgorICAgICAgICAgICAgICAgIGNhc2UgIlNWX0RlcHRoIjoKKyAg
ICAgICAgICAgICAgICBjYXNlICJTVl9Db3ZlcmFnZSI6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IGNhc2UgImNvbXB1dGUiOgorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSAiaW5wdXQiKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHN3aXRjaCAodGhpcy5u
YW1lKSB7CisgICAgICAgICAgICBjYXNlICJTVl9EaXNwYXRjaFRocmVhZElEIjoKKyAgICAgICAg
ICAgIGNhc2UgIlNWX0dyb3VwSUQiOgorICAgICAgICAgICAgY2FzZSAiU1ZfR3JvdXBJbmRleCI6
CisgICAgICAgICAgICBjYXNlICJTVl9Hcm91cFRocmVhZElEIjoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlICJ0ZXN0IjoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBVbmtub3duIHNoYWRlIHR5cGU6ICR7c2hhZGVyVHlwZX1gKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm5h
bWU7CisgICAgICAgIGlmICh0aGlzLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgcmVzdWx0
ICs9IHRoaXMuZXh0cmFBcmd1bWVudHMuam9pbigiIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
YWxsRXhwcmVzc2lvbi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHBy
ZXNzaW9uLmpzCmluZGV4IDRlNGQ2NWYwOTEzODA0ZjRkMGU3MGMwMDJiZjYzMTQwNjBiMGVlMmUu
LmI0YzBkYTc4NzczMGExYjM4ODEwYzhiNTk0MzE3ODQ5MDlkZGIzZTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCkBAIC0xMjksNyArMTI5
LDcgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAg
Y29uc3QgZnVuYyA9IG5ldyBOYXRpdmVGdW5jKHRoaXMub3JpZ2luLCAib3BlcmF0b3ImW10iLCB0
aGlzLnJlc3VsdFR5cGUsIFsKICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKHRoaXMub3Jp
Z2luLCBudWxsLCBhcnJheVJlZlR5cGUpLAogICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIo
dGhpcy5vcmlnaW4sIG51bGwsIHVpbnRUeXBlKQotICAgICAgICBdLCBmYWxzZSwgbnVsbCk7Cisg
ICAgICAgIF0sIGZhbHNlKTsKIAogICAgICAgICBhcnJheVJlZkFjY2Vzc29yLmluc3RhbnRpYXRl
SW1wbGVtZW50YXRpb24oZnVuYyk7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBDYWxsRXhw
cmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24gewogICAgICAgICAgICAgY29uc3QgYXJyYXlUeXBl
ID0gdGhpcy5hcmd1bWVudFR5cGVzWzBdOwogICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBO
YXRpdmVGdW5jKHRoaXMub3JpZ2luLCAib3BlcmF0b3IubGVuZ3RoIiwgdGhpcy5yZXN1bHRUeXBl
LCBbCiAgICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodGhpcy5vcmlnaW4sIG51bGws
IGFycmF5VHlwZSkKLSAgICAgICAgICAgIF0sIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgIF0s
IGZhbHNlKTsKICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoYXJncywgbm9kZSkg
PT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUpOwogICAgICAgICAgICAgcmV0
dXJuIGZ1bmM7CiAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcmd1bWVudFR5cGVzWzBdLmlzQXJy
YXlSZWYpIHsKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRz
IEV4cHJlc3Npb24gewogICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3JMZW5ndGggPSBuZXcgT3Bl
cmF0b3JBcnJheVJlZkxlbmd0aChhcnJheVJlZlR5cGUudG9TdHJpbmcoKSwgYWRkcmVzc1NwYWNl
KTsKICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgTmF0aXZlRnVuYyh0aGlzLm9yaWdpbiwg
Im9wZXJhdG9yLmxlbmd0aCIsIHRoaXMucmVzdWx0VHlwZSwgWwogICAgICAgICAgICAgICAgIG5l
dyBGdW5jUGFyYW1ldGVyKHRoaXMub3JpZ2luLCBudWxsLCBhcnJheVJlZlR5cGUpCi0gICAgICAg
ICAgICBdLCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICBdLCBmYWxzZSk7CiAgICAgICAgICAg
ICBvcGVyYXRvckxlbmd0aC5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpOwogICAgICAg
ICAgICAgcmV0dXJuIGZ1bmM7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NoZWNrZXIuanMKaW5kZXggMTRmOWQyYjRmN2EyZWJiNWQyMTAzNjY1MzI3N2I5NWE0
MGQ4NmQyZC4uODY1NWNmMzc4MzU2ZTQ3N2RiMmViMDVkZDM0MzViNTlkODdkNDNiMiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC0zMiwxNSArMzIsMTYgQEAg
Y2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB0aGlzLl9jdXJyZW50U3Rh
dGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmVydGV4RW50cnlQb2ludHMgPSBuZXcgU2V0
KCk7CiAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMgPSBuZXcgU2V0KCk7CisgICAg
ICAgIHRoaXMuX2NvbXB1dGVFbnRyeVBvaW50cyA9IG5ldyBTZXQoKTsKICAgICB9Ci0gICAgCisK
ICAgICB2aXNpdFByb2dyYW0obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBkb1N0YXRlbWVudCA9
IHN0YXRlbWVudCA9PiB7CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGVtZW50ID0gc3Rh
dGVtZW50OwogICAgICAgICAgICAgc3RhdGVtZW50LnZpc2l0KHRoaXMpOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IHR5cGUgb2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkg
ewogICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgewogICAgICAgICAgICAg
ICAgIGZvciAobGV0IGNvbnN0aXR1ZW50VHlwZSBvZiB0eXBlKQpAQCAtNTksMTAgKzYwLDIwMSBA
QCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBfY2hlY2tTZW1hbnRpY3Mobm9kZSkKKyAgICB7CisgICAgICAgIGNsYXNzIEl0ZW0geworICAg
ICAgICAgICAgY29uc3RydWN0b3IodHlwZSwgc2VtYW50aWMpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSAhPSAidGVzdCIgJiYgIXNlbWFudGljKQor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJBbiBlbnRyeS1wb2ludCBpbnB1dC9vdXRwdXQgZXhpc3RzIHdoaWNoIGRvZXNu
J3QgaGF2ZSBhIHNlbWFudGljIik7CisgICAgICAgICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7
CisgICAgICAgICAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAg
ICAgICAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQorICAgICAg
ICB9CisKKyAgICAgICAgbGV0IHByb2dyYW0gPSB0aGlzLl9wcm9ncmFtOworICAgICAgICBjbGFz
cyBHYXRoZXJlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgY29uc3RydWN0b3IoY3Vy
cmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdXBl
cigpOworICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1h
bnRpYzsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmVzZXQoY3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1hbnRp
YzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRpYyh2YWx1
ZSkgeyB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSB2YWx1ZTsgfQorICAgICAgICAgICAgZ2V0IGN1
cnJlbnRTZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQorICAgICAg
ICAgICAgZ2V0IHJlc3VsdCgpIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQorCisgICAgICAgICAg
ICB2aXNpdEVudW1UeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhp
cy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRo
aXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0
TWF0cml4VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMucmVz
dWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2VtYW50aWMpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHByb2dyYW0uaW50cmluc2ljcy52b2lkLmVxdWFscyhub2Rl
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VtYW50aWMpCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJWb2lkIGNhbid0IGhhdmUgYSBzZW1hbnRpYyIpOworICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5v
ZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpc2l0U3RydWN0VHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmN1cnJlbnRTZW1hbnRpYyAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTdHJ1Y3RzIGluc2lk
ZSBlbnRyeSBwb2ludCBzaWduYXR1cmVzIGNhbid0IGhhdmUgc2VtYW50aWNzLiIpOworICAgICAg
ICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuY3VycmVudFNlbWFudGljID0gZmllbGQuc2VtYW50aWM7CisgICAgICAgICAg
ICAgICAgICAgIGZpZWxkLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFR5cGVSZWYobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZpc2l0UHRyVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5jdXJyZW50U2Vt
YW50aWMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRBcnJheVJlZlR5cGUo
bm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5l
dyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZpc2l0QXJyYXlUeXBlKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRp
YykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VtYW50aWMg
PSBub2RlLnNlbWFudGljOworICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBpbnB1dEdhdGhlcmVyID0g
bmV3IEdhdGhlcmVyKCk7CisgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFt
ZXRlcnMpIHsKKyAgICAgICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsKKyAgICAgICAgICAg
IHBhcmFtZXRlci52aXNpdChpbnB1dEdhdGhlcmVyKTsKKyAgICAgICAgfQorICAgICAgICBsZXQg
b3V0cHV0R2F0aGVyZXIgPSBuZXcgR2F0aGVyZXIobm9kZS5zZW1hbnRpYyk7CisgICAgICAgIG5v
ZGUucmV0dXJuVHlwZS52aXNpdChvdXRwdXRHYXRoZXJlcik7CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaXRlbXMpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBN
YWtlIHRoaXMgZmFzdGVyIHRoYW4gTyhuXjIpCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkg
KyAxOyBqIDwgaXRlbXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0
ZW1zW2ldLnNlbWFudGljICYmIGl0ZW1zW2ldLnNlbWFudGljLmVxdWFsVG9PdGhlclNlbWFudGlj
KGl0ZW1zW2pdLnNlbWFudGljKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgYER1cGxpY2F0ZSBzZW1hbnRpYyBm
b3VuZCBpbiBlbnRyeSBwb2ludDogJHtpdGVtc1tpXS5zZW1hbnRpY31gKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tEdXBsaWNhdGVT
ZW1hbnRpY3MoaW5wdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAgICBjaGVja0R1cGxpY2F0ZVNl
bWFudGljcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQpOworCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
U2VtYW50aWNUeXBlcyhpdGVtcykgeworICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVt
cykgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNlbWFudGlj
LmlzQWNjZXB0YWJsZVR5cGUoaXRlbS50eXBlLCBwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCBgU2VtYW50
aWMgJHtpdGVtLnNlbWFudGljfSBpcyB1bm5hY2NlcHRhYmxlIHR5cGUgJHtpdGVtLnR5cGV9YCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tTZW1hbnRpY1R5cGVzKGlu
cHV0R2F0aGVyZXIucmVzdWx0KTsKKyAgICAgICAgY2hlY2tTZW1hbnRpY1R5cGVzKG91dHB1dEdh
dGhlcmVyLnJlc3VsdCk7CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tTZW1hbnRpY0ZvclNoYWRl
clR5cGUoaXRlbXMsIGRpcmVjdGlvbikgeworICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBp
dGVtcykgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNlbWFu
dGljLmlzQWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBub2RlLnNoYWRlclR5cGUp
KQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsIGBTZW1hbnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFibGUg
YXMgYW4gJHtkaXJlY3Rpb259IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBlfWApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJU
eXBlKGlucHV0R2F0aGVyZXIucmVzdWx0LCAiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tTZW1hbnRp
Y0ZvclNoYWRlclR5cGUob3V0cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisKKyAgICAg
ICAgY2xhc3MgUE9EQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgdmlzaXRF
bnVtVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdEFycmF5VHlwZShub2RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmVsZW1lbnRUeXBlLnZpc2l0
KHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFZlY3RvclR5cGUobm9k
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBub2RlLmlzTnVtYmVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNp
dFB0clR5cGUobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0QXJyYXlSZWZUeXBlKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3Ig
KGxldCBmaWVsZCBvZiBub2RlLmZpZWxkcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0ICYmIGZpZWxkLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0VHlwZVJlZihub2RlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUudmlzaXQodGhpcyk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2hlY2tQT0REYXRh
KGl0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7CisgICAgICAg
ICAgICAgICAgaWYgKChpdGVtLnR5cGUgaW5zdGFuY2VvZiBQdHJUeXBlKSB8fCAoaXRlbS50eXBl
IGluc3RhbmNlb2YgQXJyYXlSZWZUeXBlKSB8fCAoaXRlbS50eXBlIGluc3RhbmNlb2YgQXJyYXlU
eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZS5lbGVtZW50VHlwZS52
aXNpdChuZXcgUE9EQ2hlY2tlcigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkJ1ZmZlciBhdHRhY2hlZCB0
byBlbnRyeSBwb2ludCBuZWVkcyB0byBvbmx5IGNvbnRhaW4gUE9EIHR5cGVzIik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNoZWNrUE9ERGF0
YShpbnB1dEdhdGhlcmVyLnJlc3VsdCk7CisgICAgICAgIGNoZWNrUE9ERGF0YShvdXRwdXRHYXRo
ZXJlci5yZXN1bHQpOworICAgIH0KKwogICAgIF9jaGVja1NoYWRlclR5cGUobm9kZSkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBSZWxheCB0aGVzZSBjaGVja3Mgb25jZSB3ZSBoYXZlIGltcGxl
bWVudGVkIHN1cHBvcnQgZm9yIHRleHR1cmVzIGFuZCBzYW1wbGVycy4KLSAgICAgICAgbGV0IHNo
YWRlckZ1bmMgPSBub2RlOwogICAgICAgICBzd2l0Y2ggKG5vZGUuc2hhZGVyVHlwZSkgewogICAg
ICAgICBjYXNlICJ2ZXJ0ZXgiOgogICAgICAgICAgICAgaWYgKHRoaXMuX3ZlcnRleEVudHJ5UG9p
bnRzLmhhcyhub2RlLm5hbWUpKQpAQCAtNzQsNiArMjY2LDE1IEBAIGNsYXNzIENoZWNrZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgZnJhZ21lbnQgZW50cnkgcG9pbnQgbmFt
ZSAiICsgbm9kZS5uYW1lKTsKICAgICAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMu
YWRkKG5vZGUubmFtZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiY29tcHV0
ZSI6CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcHV0ZUVudHJ5UG9pbnRzLmhhcyhub2RlLm5h
bWUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9y
aWdpblN0cmluZywgIkR1cGxpY2F0ZSBjb21wdXRlIGVudHJ5IHBvaW50IG5hbWUgIiArIG5vZGUu
bmFtZSk7CisgICAgICAgICAgICB0aGlzLl9jb21wdXRlRW50cnlQb2ludHMuYWRkKG5vZGUubmFt
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIHNoYWRlciB0eXBlOiAiICsgbm9kZS5zaGFkZXJUeXBlKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtODQsNyArMjg1LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogCiAg
ICAgICAgIGlmICghZnVuYy5uYW1lLnN0YXJ0c1dpdGgoIm9wZXJhdG9yIikpCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvcGVyYXRvciBvdmVybG9hZCBuYW1lOiAiICsgZnVuYy5u
YW1lKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IGNoZWNrR2V0dGVyID0gKGtpbmQpID0+IHsK
ICAgICAgICAgICAgIGxldCBudW1FeHBlY3RlZFBhcmFtZXRlcnMgPSBraW5kID09ICJpbmRleCIg
PyAyIDogMTsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlcnMubGVuZ3RoICE9IG51bUV4
cGVjdGVkUGFyYW1ldGVycykKQEAgLTkyLDcgKzI5Myw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgIGlmIChmdW5jLnBhcmFtZXRlclR5cGVzWzBdLnVuaWZ5
Tm9kZS5pc1B0cikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9y
aWdpbi5vcmlnaW5TdHJpbmcsICJDYW5ub3QgaGF2ZSBnZXR0ZXIgZm9yIHBvaW50ZXIgdHlwZTog
IiArIGZ1bmMucGFyYW1ldGVyVHlwZXNbMF0pOwogICAgICAgICB9OwotICAgICAgICAKKwogICAg
ICAgICBsZXQgY2hlY2tTZXR0ZXIgPSAoa2luZCkgPT4gewogICAgICAgICAgICAgbGV0IG51bUV4
cGVjdGVkUGFyYW1ldGVycyA9IGtpbmQgPT0gImluZGV4IiA/IDMgOiAyOwogICAgICAgICAgICAg
aWYgKGZ1bmMucGFyYW1ldGVycy5sZW5ndGggIT0gbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzKQpAQCAt
MTE0LDcgKzMxNSw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAg
ICAgIGlmICghcmVzdWx0VHlwZS5lcXVhbHModmFsdWVUeXBlKSkKICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJTZXR0ZXIgYW5k
IGdldHRlciBtdXN0IGFncmVlIG9uIHZhbHVlIHR5cGUgKGdldHRlciBhdCAiICsgb3ZlcmxvYWQu
ZnVuYy5vcmlnaW4ub3JpZ2luU3RyaW5nICsgIiBzYXlzICIgKyByZXN1bHRUeXBlICsgIiB3aGls
ZSB0aGlzIHNldHRlciBzYXlzICIgKyB2YWx1ZVR5cGUgKyAiKSIpOwogICAgICAgICB9OwotICAg
ICAgICAKKwogICAgICAgICBsZXQgY2hlY2tBbmRlciA9IChraW5kKSA9PiB7CiAgICAgICAgICAg
ICBsZXQgbnVtRXhwZWN0ZWRQYXJhbWV0ZXJzID0ga2luZCA9PSAiaW5kZXgiID8gMiA6IDE7CiAg
ICAgICAgICAgICBpZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBudW1FeHBlY3RlZFBhcmFt
ZXRlcnMpCkBAIC0xMjQsNyArMzI1LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgICAgICAgICAgaWYgKCFmdW5jLnBhcmFtZXRlclR5cGVzWzBdLnVuaWZ5Tm9kZS5pc1Jl
ZikKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihmdW5jLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJQYXJhbWV0ZXIgdG8gYW5kZXIgaXMgbm90IGEgcmVmZXJlbmNlOiAiICsgZnVu
Yy5wYXJhbWV0ZXJUeXBlc1swXSk7CiAgICAgICAgIH07Ci0gICAgICAgIAorCiAgICAgICAgIHN3
aXRjaCAoZnVuYy5uYW1lKSB7CiAgICAgICAgIGNhc2UgIm9wZXJhdG9yIGNhc3QiOgogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xODksNDQgKzM5MCw0NiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlBhcnNlciBhY2NlcHRlZCB1
bnJlY29nbml6ZWQgb3BlcmF0b3I6ICIgKyBmdW5jLm5hbWUpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCiAgICAgdmlzaXRGdW5jRGVmKG5vZGUpCiAgICAgewotICAgICAgICBpZiAobm9kZS5z
aGFkZXJUeXBlKQorICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlKSB7CiAgICAgICAgICAgICB0
aGlzLl9jaGVja1NoYWRlclR5cGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9jaGVja1NlbWFu
dGljcyhub2RlKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLl9jaGVja09wZXJhdG9yT3Zlcmxv
YWQobm9kZSwgbmFtZSA9PiB0aGlzLl9wcm9ncmFtLmZ1bmN0aW9ucy5nZXQobmFtZSkpOwogICAg
ICAgICBub2RlLmJvZHkudmlzaXQodGhpcyk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRFbnVt
VHlwZShub2RlKQogICAgIHsKICAgICAgICAgbm9kZS5iYXNlVHlwZS52aXNpdCh0aGlzKTsKLSAg
ICAgICAgCisKICAgICAgICAgbGV0IGJhc2VUeXBlID0gbm9kZS5iYXNlVHlwZS51bmlmeU5vZGU7
Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghYmFzZVR5cGUuaXNJbnQpCiAgICAgICAgICAgICB0
aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJCYXNlIHR5cGUg
b2YgZW51bSBpcyBub3QgYW4gaW50ZWdlcjogIiArIG5vZGUuYmFzZVR5cGUpOwotICAgICAgICAK
KwogICAgICAgICBmb3IgKGxldCBtZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAg
ICBpZiAoIW1lbWJlci52YWx1ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICBsZXQgbWVtYmVyVHlwZSA9IG1lbWJlci52YWx1ZS52aXNpdCh0
aGlzKTsKICAgICAgICAgICAgIGlmICghYmFzZVR5cGUuZXF1YWxzV2l0aENvbW1pdChtZW1iZXJU
eXBlKSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihtZW1iZXIub3JpZ2lu
Lm9yaWdpblN0cmluZywgIlR5cGUgb2YgZW51bSBtZW1iZXIgIiArIG1lbWJlci52YWx1ZS5uYW1l
ICsgIiBkb2VzIG5vdCBwYXRjaCBlbnVtIGJhc2UgdHlwZSAobWVtYmVyIHR5cGUgaXMgIiArIG1l
bWJlclR5cGUgKyAiLCBlbnVtIGJhc2UgdHlwZSBpcyAiICsgbm9kZS5iYXNlVHlwZSArICIpIik7
CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0IG5leHRWYWx1ZSA9IGJhc2VUeXBl
LmRlZmF1bHRWYWx1ZTsKICAgICAgICAgZm9yIChsZXQgbWVtYmVyIG9mIG5vZGUubWVtYmVycykg
ewogICAgICAgICAgICAgaWYgKG1lbWJlci52YWx1ZSkgewogICAgICAgICAgICAgICAgIG5leHRW
YWx1ZSA9IGJhc2VUeXBlLnN1Y2Nlc3NvclZhbHVlKG1lbWJlci52YWx1ZS51bmlmeU5vZGUudmFs
dWVGb3JTZWxlY3RlZFR5cGUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIG1lbWJlci52YWx1ZSA9IGJhc2VUeXBl
LmNyZWF0ZUxpdGVyYWwobWVtYmVyLm9yaWdpbiwgbmV4dFZhbHVlKTsKICAgICAgICAgICAgIG5l
eHRWYWx1ZSA9IGJhc2VUeXBlLnN1Y2Nlc3NvclZhbHVlKG5leHRWYWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgbGV0IG1lbWJlckFycmF5ID0gQXJyYXkuZnJvbShub2RlLm1l
bWJlcnMpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbWJlckFycmF5Lmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyQXJyYXlbaV07CkBAIC0yMzYs
NyArNDM5LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihvdGhlck1lbWJlci5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiRHVwbGljYXRlIGVudW0gbWVtYmVyIHZhbHVlICgiICsgbWVtYmVyLm5hbWUgKyAiIGhh
cyAiICsgbWVtYmVyLnZhbHVlICsgIiB3aGlsZSAiICsgb3RoZXJNZW1iZXIubmFtZSArICIgaGFz
ICIgKyBvdGhlck1lbWJlci52YWx1ZSArICIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgbGV0IGZvdW5kWmVybyA9IGZhbHNlOwogICAgICAgICBmb3Ig
KGxldCBtZW1iZXIgb2Ygbm9kZS5tZW1iZXJzKSB7CiAgICAgICAgICAgICBpZiAoYmFzZVR5cGUu
dmFsdWVzRXF1YWwobWVtYmVyLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSwg
YmFzZVR5cGUuZGVmYXVsdFZhbHVlKSkgewpAQCAtMjQ3LDcgKzQ1MCw3IEBAIGNsYXNzIENoZWNr
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgaWYgKCFmb3VuZFplcm8pCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJFbnVtIGRv
ZXMgbm90IGhhdmUgYSBtZW1iZXIgd2l0aCB0aGUgdmFsdWUgemVybyIpOwogICAgIH0KLSAgICAK
KwogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnR5cGUp
CkBAIC0zMDYsMjAgKzUwOSwyMCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAg
ICAgICAgIGlmIChub2RlLm51bUNvbHVtbnNWYWx1ZSAhPSAyICYmIG5vZGUubnVtQ29sdW1uc1Zh
bHVlICE9IDMgJiYgbm9kZS5udW1Db2x1bW5zVmFsdWUgIT0gNCkKICAgICAgICAgICAgIHRocm93
IG5ldyBXVHlwZUVycm9yKGAke25vZGUudG9TdHJpbmcoKX06ICR7bm9kZS5udW1Db2x1bW5zVmFs
dWV9IGlzIG5vdCAyLCAzLCBvciA0LmApOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0QXJyYXlU
eXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOwot
ICAgICAgICAKKwogICAgICAgICBpZiAoIW5vZGUubnVtRWxlbWVudHMuaXNDb25zdGV4cHIpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcs
ICJBcnJheSBsZW5ndGggbXVzdCBiZSBjb25zdGV4cHIiKTsKLSAgICAgICAgCisKICAgICAgICAg
bGV0IHR5cGUgPSBub2RlLm51bUVsZW1lbnRzLnZpc2l0KHRoaXMpOwotICAgICAgICAKKwogICAg
ICAgICBpZiAoIXR5cGUuZXF1YWxzV2l0aENvbW1pdCh0aGlzLl9wcm9ncmFtLmludHJpbnNpY3Mu
dWludCkpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJBcnJheSBsZW5ndGggbXVzdCBiZSBhIHVpbnQiKTsKICAgICB9Ci0gICAgCisK
ICAgICB2aXNpdFZhcmlhYmxlRGVjbChub2RlKQogICAgIHsKICAgICAgICAgbm9kZS50eXBlLnZp
c2l0KHRoaXMpOwpAQCAtMzMwLDcgKzUzMyw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uOiAi
ICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyByaHNUeXBlKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHZpc2l0QXNzaWdubWVudChub2RlKQogICAgIHsKICAgICAgICAgbGV0IGxoc1R5
cGUgPSBub2RlLmxocy52aXNpdCh0aGlzKTsKQEAgLTM0MiwxMiArNTQ1LDEyIEBAIGNsYXNzIENo
ZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgbm9kZS50eXBlID0gbGhzVHlwZTsKICAg
ICAgICAgcmV0dXJuIGxoc1R5cGU7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRJZGVudGl0eUV4
cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLnRhcmdldC52aXNpdCh0
aGlzKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24o
bm9kZSkKICAgICB7CiAgICAgICAgIGxldCBsaHNUeXBlID0gbm9kZS5sVmFsdWUudmlzaXQodGhp
cyk7CkBAIC0zNjIsMTMgKzU2NSwxMyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiVHlwZSBtaXNtYXRjaCBpbiByZWFkLW1vZGlmeS13cml0ZTogIiArIGxoc1R5cGUgKyAi
IHZlcnN1cyAiICsgbmV3VmFsdWVUeXBlKTsKICAgICAgICAgcmV0dXJuIG5vZGUucmVzdWx0RXhw
LnZpc2l0KHRoaXMpOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0QW5vbnltb3VzVmFyaWFibGUo
bm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS50eXBlKQogICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJBbm9ueW1vdXMgdmFyaWFibGUgbXVzdCBrbm93IHR5cGUgYmVmb3JlIGZpcnN0
IGFwcGVhcmFuY2UiKTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdERlcmVmZXJlbmNlRXhwcmVz
c2lvbihub2RlKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUgPSBub2RlLnB0ci52aXNpdCh0aGlz
KS51bmlmeU5vZGU7CkBAIC0zODAsMTYgKzU4MywxNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMg
VmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk51bGwgYWRkcmVzcyBzcGFj
ZSBpbiB0eXBlOiAiICsgdHlwZSk7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7CiAgICAgfQot
ICAgIAorCiAgICAgdmlzaXRNYWtlUHRyRXhwcmVzc2lvbihub2RlKQogICAgIHsKICAgICAgICAg
bGV0IGVsZW1lbnRUeXBlID0gbm9kZS5sVmFsdWUudmlzaXQodGhpcykudW5pZnlOb2RlOwogICAg
ICAgICBpZiAoIW5vZGUubFZhbHVlLmlzTFZhbHVlKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiT3BlcmFuZCB0byAmIGlzIG5vdCBh
biBMVmFsdWU6ICIgKyBub2RlLmxWYWx1ZSArIG5vZGUubFZhbHVlLm5vdExWYWx1ZVJlYXNvblN0
cmluZyk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgUHRyVHlwZShub2RlLm9yaWdp
biwgbm9kZS5sVmFsdWUuYWRkcmVzc1NwYWNlLCBlbGVtZW50VHlwZSk7CiAgICAgfQotICAgIAor
CiAgICAgdmlzaXRNYWtlQXJyYXlSZWZFeHByZXNzaW9uKG5vZGUpCiAgICAgewogICAgICAgICBs
ZXQgZWxlbWVudFR5cGUgPSBub2RlLmxWYWx1ZS52aXNpdCh0aGlzKS51bmlmeU5vZGU7CkBAIC0z
OTcsMzcgKzYwMCwzNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
ICAgICBub2RlLmJlY29tZShuZXcgQ29udmVydFB0clRvQXJyYXlSZWZFeHByZXNzaW9uKG5vZGUu
b3JpZ2luLCBub2RlLmxWYWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheVJlZlR5
cGUobm9kZS5vcmlnaW4sIGVsZW1lbnRUeXBlLmFkZHJlc3NTcGFjZSwgZWxlbWVudFR5cGUuZWxl
bWVudFR5cGUpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbm9kZS5sVmFs
dWUuaXNMVmFsdWUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJPcGVyYW5kIHRvIEAgaXMgbm90IGFuIExWYWx1ZTogIiArIG5vZGUu
bFZhbHVlICsgbm9kZS5sVmFsdWUubm90TFZhbHVlUmVhc29uU3RyaW5nKTsKLSAgICAgICAgCisK
ICAgICAgICAgaWYgKGVsZW1lbnRUeXBlLmlzQXJyYXkpIHsKICAgICAgICAgICAgIG5vZGUubnVt
RWxlbWVudHMgPSBlbGVtZW50VHlwZS5udW1FbGVtZW50czsKICAgICAgICAgICAgIGVsZW1lbnRU
eXBlID0gZWxlbWVudFR5cGUuZWxlbWVudFR5cGU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbm9kZS5udW1FbGVtZW50cyA9IFVpbnRMaXRlcmFsLndpdGhUeXBlKG5vZGUub3JpZ2luLCAx
LCB0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MudWludCk7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICByZXR1cm4gbmV3IEFycmF5UmVmVHlwZShub2RlLm9yaWdpbiwgbm9kZS5sVmFsdWUuYWRkcmVz
c1NwYWNlLCBlbGVtZW50VHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRDb252ZXJ0VG9B
cnJheVJlZkV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
U2hvdWxkIG5vdCBleGlzdCB5ZXQuIik7CiAgICAgfQotICAgIAorCiAgICAgX2ZpbmlzaFZpc2l0
aW5nUHJvcGVydHlBY2Nlc3Mobm9kZSwgYmFzZVR5cGUsIGV4dHJhQXJncywgZXh0cmFBcmdUeXBl
cykKICAgICB7CiAgICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGUudmlzaXQobmV3IEF1dG9XcmFw
cGVyKCkpCiAgICAgICAgIG5vZGUuYmFzZVR5cGUgPSBiYXNlVHlwZTsKLSAgICAgICAgCisKICAg
ICAgICAgLy8gU3VjaCBhIHR5cGUgbXVzdCBleGlzdC4gVGhpcyBtYXkgdGhyb3cgaWYgaXQgZG9l
c24ndC4KICAgICAgICAgbGV0IHR5cGVGb3JBbmQgPSBiYXNlVHlwZS5hcmd1bWVudFR5cGVGb3JB
bmRPdmVybG9hZChub2RlLm9yaWdpbik7CiAgICAgICAgIGlmICghdHlwZUZvckFuZCkKICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGdldCB0eXBlRm9yQW5kIik7Ci0gICAgICAg
IAorCiAgICAgICAgIGxldCBlcnJvckZvckdldDsKICAgICAgICAgbGV0IGVycm9yRm9yQW5kOwot
ICAgICAgICAKKwogICAgICAgICB0cnkgewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IENhbGxF
eHByZXNzaW9uLnJlc29sdmUoCiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUucG9z
c2libGVHZXRPdmVybG9hZHMsCkBAIC00MzksMTAgKzY0MiwxMCBAQCBjbGFzcyBDaGVja2VyIGV4
dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgICAgIGVy
cm9yRm9yR2V0ID0gZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0cnkgewogICAg
ICAgICAgICAgbGV0IGJhc2VGb3JBbmQgPSBiYXNlVHlwZS5hcmd1bWVudEZvckFuZE92ZXJsb2Fk
KG5vZGUub3JpZ2luLCBub2RlLmJhc2UpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBDYWxsRXhwcmVzc2lvbi5yZXNvbHZlKAogICAgICAgICAgICAgICAgIG5vZGUu
b3JpZ2luLCBub2RlLnBvc3NpYmxlQW5kT3ZlcmxvYWRzLAogICAgICAgICAgICAgICAgIG5vZGUu
YW5kRnVuY05hbWUsIFtiYXNlRm9yQW5kLCAuLi5leHRyYUFyZ3NdLCBbdHlwZUZvckFuZCwgLi4u
ZXh0cmFBcmdUeXBlc10sCkBAIC00NTQsNyArNjU3LDcgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRz
IFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICAgICBlcnJvckZv
ckFuZCA9IGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFub2RlLnJlc3Vs
dFR5cGVGb3JHZXQgJiYgIW5vZGUucmVzdWx0VHlwZUZvckFuZCkgewogICAgICAgICAgICAgdGhy
b3cgbmV3IFdUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgbm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLApAQCAtNDYzLDExICs2NjYsMTEgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgICAgICAgICAgICAgICJhbmQgdHJpZWQgYnktcG9pbnRlcjpcbiIgKwogICAgICAgICAg
ICAgICAgIGVycm9yRm9yQW5kLnR5cGVFcnJvck1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIGlmIChub2RlLnJlc3VsdFR5cGVGb3JHZXQgJiYgbm9kZS5yZXN1bHRUeXBl
Rm9yQW5kCiAgICAgICAgICAgICAmJiAhbm9kZS5yZXN1bHRUeXBlRm9yR2V0LmVxdWFscyhub2Rl
LnJlc3VsdFR5cGVGb3JBbmQpKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9k
ZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiUmVzdWx0IHR5cGUgcmVzb2x2ZWQgYnktdmFsdWUgKCIg
KyBub2RlLnJlc3VsdFR5cGVGb3JHZXQgKyAiKSBkb2VzIG5vdCBtYXRjaCByZXN1bHQgdHlwZSBy
ZXNvbHZlZCBieS1wb2ludGVyICgiICsgbm9kZS5yZXN1bHRUeXBlRm9yQW5kICsgIikiKTsKLSAg
ICAgICAgCisKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSBDYWxsRXhw
cmVzc2lvbi5yZXNvbHZlKAogICAgICAgICAgICAgICAgIG5vZGUub3JpZ2luLCBub2RlLnBvc3Np
YmxlU2V0T3ZlcmxvYWRzLApAQCAtNDgwLDcgKzY4Myw3IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5k
cyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAgbm9kZS5l
cnJvckZvclNldCA9IGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgLy8gT0ssIG5v
dyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgYW4gbHZhbHVlLiBXZSBhcmUgYW4gbHZh
bHVlIGlmIHdlIGNhbiBiZSBhc3NpZ25lZCB0by4gV2UgY2FuCiAgICAgICAgIC8vIGJlIGFzc2ln
bmVkIHRvIGlmIHdlIGhhdmUgYW4gYW5kZXIgb3Igc2V0dGVyLiBCdXQgaXQncyB3ZWlyZGVyIHRo
YW4gdGhhdC4gV2UgYWxzbyBuZWVkIHRoZSBiYXNlIHRvIGJlCiAgICAgICAgIC8vIGFuIGx2YWx1
ZSwgZXhjZXB0IHVubGVzcyB0aGUgYmFzZSBpcyBhbiBhcnJheSByZWZlcmVuY2UuCkBAIC00OTgs
MzEgKzcwMSwzMSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAg
ICBub2RlLmlzTFZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgIG5vZGUuYWRkcmVzc1NwYWNlID0g
bm9kZS5iYXNlLmlzTFZhbHVlID8gbm9kZS5iYXNlLmFkZHJlc3NTcGFjZSA6IGJhc2VUeXBlLmFk
ZHJlc3NTcGFjZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXR1cm4gbm9kZS5y
ZXN1bHRUeXBlOwogICAgIH0KLSAgICAKKwogICAgIHZpc2l0RG90RXhwcmVzc2lvbihub2RlKQog
ICAgIHsKICAgICAgICAgbGV0IHN0cnVjdFR5cGUgPSBub2RlLnN0cnVjdC52aXNpdCh0aGlzKS51
bmlmeU5vZGU7CiAgICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hWaXNpdGluZ1Byb3BlcnR5QWNj
ZXNzKG5vZGUsIHN0cnVjdFR5cGUsIFtdLCBbXSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRJ
bmRleEV4cHJlc3Npb24obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBhcnJheVR5cGUgPSBub2Rl
LmFycmF5LnZpc2l0KHRoaXMpLnVuaWZ5Tm9kZTsKICAgICAgICAgbGV0IGluZGV4VHlwZSA9IG5v
ZGUuaW5kZXgudmlzaXQodGhpcyk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiB0aGlzLl9m
aW5pc2hWaXNpdGluZ1Byb3BlcnR5QWNjZXNzKG5vZGUsIGFycmF5VHlwZSwgW25vZGUuaW5kZXhd
LCBbaW5kZXhUeXBlXSk7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRWYXJpYWJsZVJlZihub2Rl
KQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlLnR5cGUpCiAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlZhcmlhYmxlIGhhcyBubyB0eXBlOiAiICsgbm9kZS52YXJpYWJsZSk7
CiAgICAgICAgIHJldHVybiBub2RlLnZhcmlhYmxlLnR5cGU7CiAgICAgfQotICAgIAorCiAgICAg
dmlzaXRSZXR1cm4obm9kZSkKICAgICB7CiAgICAgICAgIGlmIChub2RlLnZhbHVlKSB7CkBAIC01
MzMsMjYgKzczNiwyNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAi
VHJ5aW5nIHRvIHJldHVybiAiICsgcmVzdWx0VHlwZSArICIgaW4gYSBmdW5jdGlvbiB0aGF0IHJl
dHVybnMgIiArIG5vZGUuZnVuYy5yZXR1cm5UeXBlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIW5vZGUuZnVuYy5yZXR1cm5UeXBlLmVx
dWFsc1dpdGhDb21taXQodGhpcy5fcHJvZ3JhbS5pbnRyaW5zaWNzLnZvaWQpKQogICAgICAgICAg
ICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiTm9uLXZv
aWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIpOwogICAgIH0KLSAgICAKKwogICAgIHZp
c2l0R2VuZXJpY0xpdGVyYWwobm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLnR5cGU7
CiAgICAgfQotICAgIAorCiAgICAgdmlzaXROdWxsTGl0ZXJhbChub2RlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5vZGUudHlwZTsKICAgICB9Ci0gICAgCisKICAgICB2aXNpdEJvb2xMaXRlcmFs
KG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvZ3JhbS5pbnRyaW5zaWNzLmJv
b2w7CiAgICAgfQotICAgIAorCiAgICAgdmlzaXRFbnVtTGl0ZXJhbChub2RlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5vZGUubWVtYmVyLmVudW1UeXBlOwpAQCAtNjE0LDE0ICs4MTcsMTQgQEAg
Y2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0U3dpdGNoU3RhdGVtZW50
KG5vZGUpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IG5vZGUudmFsdWUudmlzaXQodGhpcyku
Y29tbWl0KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdHlwZS51bmlmeU5vZGUuaXNJbnQg
JiYgISh0eXBlLnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIEVudW1UeXBlKSkKICAgICAgICAgICAgIHRo
cm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCBzd2l0
Y2ggb24gbm9uLWludGVnZXIvbm9uLWVudW0gdHlwZTogIiArIHR5cGUpOwogCiAgICAgICAgIG5v
ZGUudHlwZSA9IHR5cGU7Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBoYXNEZWZhdWx0ID0gZmFs
c2U7Ci0gICAgICAgIAorCiAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9kZS5zd2l0
Y2hDYXNlcykgewogICAgICAgICAgICAgc3dpdGNoQ2FzZS5ib2R5LnZpc2l0KHRoaXMpOwogCkBA
IC02MjksMjYgKzgzMiwyNiBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAg
ICAgICAgICAgICAgaGFzRGVmYXVsdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKCFzd2l0Y2hD
YXNlLnZhbHVlLmlzQ29uc3RleHByKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKHN3aXRjaENhc2Uub3JpZ2luLm9yaWdpblN0cmluZywgIlN3aXRjaCBjYXNlIG5vdCBjb25z
dGV4cHI6ICIgKyBzd2l0Y2hDYXNlLnZhbHVlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBsZXQgY2FzZVR5cGUgPSBzd2l0Y2hDYXNlLnZhbHVlLnZpc2l0KHRoaXMpOwogICAgICAgICAg
ICAgaWYgKCF0eXBlLmVxdWFsc1dpdGhDb21taXQoY2FzZVR5cGUpKQogICAgICAgICAgICAgICAg
IHRocm93IG5ldyBXVHlwZUVycm9yKHN3aXRjaENhc2Uub3JpZ2luLm9yaWdpblN0cmluZywgIlN3
aXRjaCBjYXNlIHR5cGUgZG9lcyBub3QgbWF0Y2ggc3dpdGNoIHZhbHVlIHR5cGUgKGNhc2UgdHlw
ZSBpcyAiICsgY2FzZVR5cGUgKyAiIGJ1dCBzd2l0Y2ggdmFsdWUgdHlwZSBpcyAiICsgdHlwZSAr
ICIpIik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBub2RlLnN3aXRjaENhc2VzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgZmlyc3RD
YXNlID0gbm9kZS5zd2l0Y2hDYXNlc1tpXTsKICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsg
MTsgaiA8IG5vZGUuc3dpdGNoQ2FzZXMubGVuZ3RoOyArK2opIHsKICAgICAgICAgICAgICAgICBs
ZXQgc2Vjb25kQ2FzZSA9IG5vZGUuc3dpdGNoQ2FzZXNbal07Ci0gICAgICAgICAgICAgICAgCisK
ICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDYXNlLmlzRGVmYXVsdCAhPSBzZWNvbmRDYXNlLmlz
RGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
CisKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDYXNlLmlzRGVmYXVsdCkKICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc2Vjb25kQ2FzZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiRHVwbGljYXRlIGRlZmF1bHQgY2FzZSBpbiBzd2l0Y2ggc3RhdGVtZW50Iik7Ci0gICAg
ICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBsZXQgdmFsdWVzRXF1YWwgPSB0eXBlLnVu
aWZ5Tm9kZS52YWx1ZXNFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgZmlyc3RDYXNlLnZhbHVl
LnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgc2Vj
b25kQ2FzZS52YWx1ZS51bmlmeU5vZGUudmFsdWVGb3JTZWxlY3RlZFR5cGUpOwpAQCAtNjU2LDE5
ICs4NTksMTkgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzZWNvbmRDYXNlLm9yaWdpbi5vcmlnaW5TdHJp
bmcsICJEdXBsaWNhdGUgY2FzZSBpbiBzd2l0Y2ggc3RhdGVtZW50IGZvciB2YWx1ZSAiICsgZmly
c3RDYXNlLnZhbHVlLnVuaWZ5Tm9kZS52YWx1ZUZvclNlbGVjdGVkVHlwZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFoYXNEZWZhdWx0KSB7CiAg
ICAgICAgICAgICBsZXQgaW5jbHVkZWRWYWx1ZXMgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICBm
b3IgKGxldCBzd2l0Y2hDYXNlIG9mIG5vZGUuc3dpdGNoQ2FzZXMpCiAgICAgICAgICAgICAgICAg
aW5jbHVkZWRWYWx1ZXMuYWRkKHN3aXRjaENhc2UudmFsdWUudW5pZnlOb2RlLnZhbHVlRm9yU2Vs
ZWN0ZWRUeXBlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBmb3IgKGxldCB7dmFsdWUs
IG5hbWV9IG9mIHR5cGUudW5pZnlOb2RlLmFsbFZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFpbmNsdWRlZFZhbHVlcy5oYXModmFsdWUpKQogICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJWYWx1ZSBub3QgaGFu
ZGxlZCBieSBzd2l0Y2ggc3RhdGVtZW50OiAiICsgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKICAgICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlKQogICAg
IHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CkBAIC02ODcsNyArODkwLDcgQEAgY2xhc3Mg
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIWVsc2VUeXBlKQogICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJUZXJuYXJ5IGV4cHJlc3Npb24gZWxzZSBoYXMgbm8gdHlw
ZTogIiArIG5vZGUuZWxzZUV4cHJlc3Npb24pOwogICAgICAgICBpZiAoIWJvZHlUeXBlLmVxdWFs
c1dpdGhDb21taXQoZWxzZVR5cGUpKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
IkJvZHkgYW5kIGVsc2UgY2xhdXNlIG9mIHRlcm5hcnkgc3RhdGVtZW50IGRvbid0IGhhdmUgdGhl
IHNhbWUgdHlwZTogIiArIG5vZGUpOworICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
bm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiQm9keSBhbmQgZWxzZSBjbGF1c2Ugb2YgdGVybmFy
eSBzdGF0ZW1lbnQgZG9uJ3QgaGF2ZSB0aGUgc2FtZSB0eXBlOiAiICsgbm9kZSk7CiAgICAgICAg
IHJldHVybiBib2R5VHlwZTsKICAgICB9CiAgICAgCkBAIC02OTksNyArOTAyLDcgQEAgY2xhc3Mg
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigidmlzaXRvciByZXR1cm5lZCBudWxsIGZvciAiICsgYXJndW1lbnQpOwogICAgICAgICAgICAg
cmV0dXJuIG5ld0FyZ3VtZW50LnZpc2l0KG5ldyBBdXRvV3JhcHBlcigpKTsKICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIG5vZGUuYXJndW1lbnRUeXBlcyA9IGFyZ3VtZW50VHlwZXM7
CiAgICAgICAgIGlmIChub2RlLnJldHVyblR5cGUpCiAgICAgICAgICAgICBub2RlLnJldHVyblR5
cGUudmlzaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9GaWVsZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCmluZGV4
IDkwZDdlZjhhNjg0MWNiZmU5ZTY5ZDgxNTQ1N2NjZTVhYTdjZWI5ZGUuLjMxMmIwMGQ5ZTI4Y2Iz
ZTMzNmFlMDlmYzM5NmZkODljMTYwYWIwYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0ZpZWxkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0ZpZWxkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMCwyNSArMjAsMzAgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICJ1c2Ugc3RyaWN0IjsK
IAogY2xhc3MgRmllbGQgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5h
bWUsIHR5cGUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBzZW1hbnRpYyA9
IG51bGwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBv
cmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0g
dHlwZTsKKyAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAg
ICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkg
eyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlw
ZTsgfQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAg
CiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZSArICIgIiAr
IHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudHlwZSArICIgIiArIHRoaXMu
bmFtZTsKKyAgICAgICAgaWYgKHRoaXMuc2VtYW50aWMpCisgICAgICAgICAgICByZXN1bHQgKz0g
IjogIiArIHRoaXMuc2VtYW50aWM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKaW5kZXggNTZiMWQyY2M3OGNmYTA1M2Jl
N2M5MWI3OGIwZTdhNmM5OTk3ZTMyOC4uZTA2YjQzODI5MDI3NjgxODE3MzY3Njg0ZjVlNjg1Y2Vh
ZDEzOWM4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5q
cworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jLmpzCkBAIC0yNSw3ICsy
NSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKLSAgICBj
b25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwg
c2hhZGVyVHlwZSwgYXR0cmlidXRlQmxvY2sgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdp
biwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlID0gbnVs
bCwgc2VtYW50aWMgPSBudWxsLCBhdHRyaWJ1dGVCbG9jayA9IG51bGwpCiAgICAgewogICAgICAg
ICBpZiAoIShvcmlnaW4gaW5zdGFuY2VvZiBMZXhlclRva2VuKSkKICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkIG9yaWdpbjogIiArIG9yaWdpbik7CkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEZ1bmMgZXh0ZW5kcyBOb2RlIHsKICAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFt
ZXRlcnM7CiAgICAgICAgIHRoaXMuX2lzQ2FzdCA9IGlzQ2FzdDsKICAgICAgICAgdGhpcy5fc2hh
ZGVyVHlwZSA9IHNoYWRlclR5cGU7CisgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50aWM7
CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZUJsb2NrID0gYXR0cmlidXRlQmxvY2s7CiAgICAgfQog
ICAgIApAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgZ2V0
IHBhcmFtZXRlclR5cGVzKCkgeyByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLm1hcChwYXJhbWV0ZXIg
PT4gcGFyYW1ldGVyLnR5cGUpOyB9CiAgICAgZ2V0IGlzQ2FzdCgpIHsgcmV0dXJuIHRoaXMuX2lz
Q2FzdDsgfQogICAgIGdldCBzaGFkZXJUeXBlKCkgeyByZXR1cm4gdGhpcy5fc2hhZGVyVHlwZTsg
fQorICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAgZ2V0
IGF0dHJpYnV0ZUJsb2NrKCkgeyByZXR1cm4gdGhpcy5fYXR0cmlidXRlQmxvY2s7IH0KICAgICBn
ZXQgaXNFbnRyeVBvaW50KCkgeyByZXR1cm4gdGhpcy5zaGFkZXJUeXBlICE9IG51bGw7IH0KICAg
ICBnZXQgcmV0dXJuVHlwZUZvck92ZXJsb2FkUmVzb2x1dGlvbigpIHsgcmV0dXJuIHRoaXMuaXND
YXN0ID8gdGhpcy5yZXR1cm5UeXBlIDogbnVsbDsgfQpAQCAtNzIsNyArNzQsMTAgQEAgY2xhc3Mg
RnVuYyBleHRlbmRzIE5vZGUgewogICAgICAgICAgICAgcmVzdWx0ICs9IGBvcGVyYXRvciAke3Ro
aXMucmV0dXJuVHlwZX1gOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgKz0gYCR7
dGhpcy5yZXR1cm5UeXBlfSAke3RoaXMubmFtZX1gOwotICAgICAgICByZXR1cm4gcmVzdWx0ICsg
IigiICsgdGhpcy5wYXJhbWV0ZXJzICsgIikiOworICAgICAgICByZXN1bHQgKz0gIigiICsgdGhp
cy5wYXJhbWV0ZXJzICsgIikiOworICAgICAgICBpZiAodGhpcy5zZW1hbnRpYykKKyAgICAgICAg
ICAgIHJlc3VsdCArPSAiOiAiICsgdGhpcy5zZW1hbnRpYzsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0Z1bmNEZWYuanMKaW5kZXggYzJkMTFmMzI2M2NjMjAzYmQ3MmMzMGZjMTNkYmMxODRhYjlk
MzY0NS4uZWYzNGNlNDA3MWYzNjZmMjcyYTgwMWJiZjY1M2MxNDc2MmI5NDkxYyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY0RlZi5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jRGVmLmpzCkBAIC0yNSw5ICsyNSw5IEBACiAidXNl
IHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNEZWYgZXh0ZW5kcyBGdW5jIHsKLSAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGJvZHksIGlzQ2FzdCwgc2hh
ZGVyVHlwZSwgYXR0cmlidXRlQmxvY2sgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
bmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgYm9keSwgaXNDYXN0LCBzaGFkZXJUeXBlID0g
IiIsIHNlbWFudGljID0gbnVsbCwgYXR0cmlidXRlQmxvY2sgPSBudWxsKQogICAgIHsKLSAgICAg
ICAgc3VwZXIob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNo
YWRlclR5cGUsIGF0dHJpYnV0ZUJsb2NrKTsKKyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCBy
ZXR1cm5UeXBlLCBwYXJhbWV0ZXJzLCBpc0Nhc3QsIHNoYWRlclR5cGUsIHNlbWFudGljLCBhdHRy
aWJ1dGVCbG9jayk7CiAgICAgICAgIHRoaXMuX2JvZHkgPSBib2R5OwogICAgICAgICB0aGlzLmlz
UmVzdHJpY3RlZCA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9GdW5jUGFyYW1ldGVyLmpzCmluZGV4IGQwYmIxZDYyMzA0YTQ4NmNhYjg1Mzc3NTc1OWQ0
ZThlZDY3YzgzODMuLjA1Y2RiNTJmZGUzOTBkYjI1MGVjNmMyNmJjNjdlOWY1MGIxZjFmNDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMzAgKzIw
LDM3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIEZ1bmNQ
YXJhbWV0ZXIgZXh0ZW5kcyBWYWx1ZSB7CiAgICAgLy8gVGhlIG5hbWUgaXMgb3B0aW9uYWwuIEl0
J3MgT0sgZm9yIGl0IHRvIGJlIG51bGwhCi0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0
eXBlKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgc2VtYW50aWMgPSBudWxs
KQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2lu
OwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7
CisgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50aWM7CiAgICAgfQogICAgIAogICAgIGdl
dCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KICAgICBnZXQgbmFtZSgpIHsgcmV0
dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0K
KyAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQogICAgIGdldCB2
YXJJc0xWYWx1ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAg
eworICAgICAgICBsZXQgcmVzdWx0OwogICAgICAgICBpZiAoIXRoaXMubmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiAiIiArIHRoaXMudHlwZTsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZSArICIg
IiArIHRoaXMubmFtZTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICIiICsgdGhpcy50eXBlOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnR5cGUgKyAiICIgKyB0aGlzLm5h
bWU7CisgICAgICAgIGlmICh0aGlzLnNlbWFudGljKQorICAgICAgICAgICAgcmVzdWx0ICs9ICI6
ICIgKyB0aGlzLnNlbWFudGljOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXggMDRlNGI3
ODI2ZTM0NzEwMDA4MjJiYzQ0Mzk0N2Q4OTQ4YWYxNzY2NC4uOWVkNjU0NjY2NGJkNjdlNmI4Njdj
MTZhMGY1NzljYWQ0ZGI0ZmQ2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9J
bnRyaW5zaWNzLmpzCkBAIC0yNzYsNiArMjc2LDcgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tg
JHt0ZXh0dXJlVHlwZX08JHt0eXBlQXJndW1lbnR9PmBdID0gdHlwZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLmlz
VGV4dHVyZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVm
YXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwge30pOwog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMjsg
aSA8PSA0OyArK2kpIHsKQEAgLTI4NCw2ICsyODUsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXNbYCR7dGV4dHVyZVR5cGV9PCR7dHlwZUFyZ3VtZW50fSR7aX0+YF0gPSB0eXBlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZS5pc1RleHR1cmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+
IGJ1ZmZlci5zZXQob2Zmc2V0LCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9MYXRlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVj
a2VyLmpzCmluZGV4IGU1NGM3ZjNjNDgxYzRiNmM5YmM4OTcyMTExYzhmMDdjNjU0ZjhkMjUuLjQ3
ZmQzMmMzYTg0ZDYzZTZkY2M1ZjM3YzdjZTQyMzdlZDI3NDM3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzCkBAIC0zMyw1OSArMzMsNSBAQCBjbGFz
cyBMYXRlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBpZiAoIW5vZGUuZWxlbWVu
dFR5cGUuaXNQcmltaXRpdmUpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJJbGxlZ2FsIHBvaW50ZXIgdG8gbm9uLXByaW1pdGl2ZSB0
eXBlOiAiICsgbm9kZSk7CiAgICAgfQotICAgIAotICAgIF9jaGVja1NoYWRlclR5cGUobm9kZSkK
LSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZXNlIGNoZWNrcy4gRm9yIG5vdywg
d2Ugc2hvdWxkIG9ubHkgYWNjZXB0IGludDMyLCB1aW50MzIsIGZsb2F0MzIsIGFuZCBmbG9hdDY0
LgotICAgICAgICBsZXQgYXNzZXJ0UHJpbWl0aXZlID0gdHlwZSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoIXR5cGUuaXNQcmltaXRpdmUpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyIHNpZ25hdHVyZSBjYW5ub3QgaW5j
bHVkZSBub24tcHJpbWl0aXZlIHR5cGU6ICIgKyB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSA9PSAidmVydGV4IiB8fCBub2RlLnNoYWRlclR5
cGUgPT0gImZyYWdtZW50IikgewotICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZlKG5vZGUucmV0
dXJuVHlwZSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRnJhZ21lbnQgc2hhZGVycyBzaG91bGRu
J3QgaGF2ZSB0aGlzIHJlc3RyaWN0aW9uOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5Mzg3Ci0gICAgICAgICAgICBpZiAoIShub2RlLnJldHVyblR5cGUudW5pZnlO
b2RlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdU
eXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyICIgKyBub2RlLm5hbWUg
KyAiIG11c3QgcmV0dXJuIGEgc3RydWN0LiIpOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgc3dpdGNoIChub2RlLnNoYWRlclR5cGUpIHsKLSAgICAgICAgY2FzZSAidmVydGV4IjoK
LSAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFtZXRlcnMpIHsKLSAg
ICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLnR5cGUudW5pZnlOb2RlIGluc3RhbmNlb2YgU3Ry
dWN0VHlwZSkKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZlKHBhcmFtZXRlci50
eXBlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghcGFyYW1ldGVyLnR5cGUudW5pZnlOb2Rl
LmlzQXJyYXlSZWYpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5v
ZGUub3JpZ2luLm9yaWdpblN0cmluZywgbm9kZS5uYW1lICsgIiBhY2NlcHRzIGEgcGFyYW1ldGVy
ICIgKyBwYXJhbWV0ZXIubmFtZSArICIgd2hpY2ggaXNuJ3QgYSBzdHJ1Y3QgYW5kIGlzbid0IGFu
IEFycmF5UmVmLiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgImZyYWdtZW50IjoKLSAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2Rl
LnBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLm5hbWUgPT0gInN0
YWdlSW4iKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKHBhcmFtZXRlci50eXBlLnVuaWZ5
Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRnJhZ21lbnQgZW50
cnkgcG9pbnRzJyBzdGFnZUluIHBhcmFtZXRlciAob2YgIiArIG5vZGUubmFtZSArICIpIG11c3Qg
YmUgYSBzdHJ1Y3QgdHlwZS4iKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0UHJpbWl0aXZl
KHBhcmFtZXRlci50eXBlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmFtZXRlci50eXBlLnVuaWZ5Tm9kZS5pc0FycmF5UmVmKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2lu
U3RyaW5nLCAiRnJhZ21lbnQgZW50cnkgcG9pbnQncyAiICsgcGFyYW1ldGVyLm5hbWUgKyAiIHBh
cmFtZXRlciBpcyBub3QgYW4gYXJyYXkgcmVmZXJlbmNlLiIpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJjb21wdXRl
IjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJjb21wdXRlIjoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ0ZXN0IjoKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgc2hhZGVyIHR5
cGU6ICIgKyBub2RlLnNoYWRlclR5cGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZp
c2l0RnVuY0RlZihub2RlKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSkKLSAg
ICAgICAgICAgIHRoaXMuX2NoZWNrU2hhZGVyVHlwZShub2RlKTsKLSAgICAgICAgc3VwZXIudmlz
aXRGdW5jRGVmKG5vZGUpOwotICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05hdGl2ZUZ1bmMuanMKaW5kZXggNWIwNjkxODVmNThjNDNmNDAzNDMxYjM1YmMyN2E3MDcy
Y2NlNjI1Ni4uYmJmMDI4NTFiMzc5MGY3ZTI3NTI2MTAxOTM5NDc5MTlkZjU5N2FlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlRnVuYy5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVGdW5jLmpzCkBAIC0yNSw5ICsyNSw5
IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2ZUZ1bmMgZXh0ZW5kcyBGdW5jIHsKLSAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2Fz
dCwgc2hhZGVyVHlwZSwgc3RhZ2UgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFt
ZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzdGFnZSA9IG51bGwpCiAgICAgewot
ICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMsIGlzQ2Fz
dCwgc2hhZGVyVHlwZSk7CisgICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwg
cGFyYW1ldGVycywgaXNDYXN0KTsKICAgICAgICAgdGhpcy5fc3RhZ2UgPSBzdGFnZTsKICAgICAg
ICAgdGhpcy5pc1Jlc3RyaWN0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5pbXBsZW1lbnRhdGlv
biA9IG51bGw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCmluZGV4IDRhN2Ey
NDAwYmVhMmU4ZTI4ZGUxMTNlMWI5MGRjYjAzZWI1YTVjOWYuLmNkNDRkMDNmYjYzZjMzYmU5OWRj
NDRkYmJjYzRjZmFiZTJkYThjN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNl
LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBsZXQgbGV4ZXIgPSBuZXcgTGV4
ZXIob3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KTsKIAogICAgIC8v
IFRoZSBoYXJkZXN0IHBhcnQgb2YgZGVhbGluZyB3aXRoIEMtbGlrZSBsYW5ndWFnZXMgaXMgcGFy
c2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgotICAgIC8vIExldCdzIGNvbnNp
ZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRz
IGluIFdTTCB0aGF0IGJlaW5nIHdpdGggYW4KKyAgICAvLyBMZXQncyBjb25zaWRlciBpZiB0aGlz
IGhhcHBlbnMgaW4gV0hMU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRzIGluIFdITFNM
IHRoYXQgYmVpbmcgd2l0aCBhbgogICAgIC8vIGlkZW50aWZpZXIsIGlmIHdlIGFzc3VtZSB0aGF0
IGFueSBleHByZXNzaW9uIGNhbiBiZSBhIHN0YW5kYWxvbmUgc3RhdGVtZW50LgogICAgIC8vCiAg
ICAgLy8gICAgIHg7CkBAIC0xMDg1LDcgKzEwODUsMTMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBp
ZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiB0eXBl
OwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAg
ICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUudGV4
dCA6IG51bGwsIHR5cGUpOworICAgICAgICBsZXQgc2VtYW50aWMgPSBudWxsOworICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiOiIpKSB7CisgICAgICAgICAgICBzZW1hbnRpYyA9IHBhcnNlU2VtYW50
aWMoKTsKKyAgICAgICAgICAgIGlmIChzZW1hbnRpYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWM7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVs
bCwgdHlwZSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVy
cygpCkBAIC0xMjA1LDcgKzEyMTEsOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCByZXR1cm5U
eXBlOwogICAgICAgICBsZXQgbmFtZTsKICAgICAgICAgbGV0IGlzQ2FzdDsKLSAgICAgICAgbGV0
IHNoYWRlclR5cGU7CisgICAgICAgIGxldCBzaGFkZXJUeXBlID0gbnVsbDsKKyAgICAgICAgbGV0
IHNlbWFudGljID0gbnVsbDsKICAgICAgICAgbGV0IGF0dHJpYnV0ZUJsb2NrID0gbnVsbDsKICAg
ICAgICAgbGV0IG9wZXJhdG9yVG9rZW4gPSB0cnlDb25zdW1lKCJvcGVyYXRvciIpOwogICAgICAg
ICBpZiAob3BlcmF0b3JUb2tlbikgewpAQCAtMTI0MSw3ICsxMjQ4LDEyIEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKICAgICAgICAgaWYg
KHBhcmFtZXRlcnMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4g
cGFyYW1ldGVyczsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlLCBhdHRyaWJ1dGVCbG9jayk7Cisg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKKyAgICAgICAgICAgIHNlbWFudGljID0gcGFy
c2VTZW1hbnRpYygpOworICAgICAgICAgICAgaWYgKHNlbWFudGljIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzZW1hbnRpYzsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbmV3IEZ1bmMob3JpZ2luLCBuYW1lLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJz
LCBpc0Nhc3QsIHNoYWRlclR5cGUsIHNlbWFudGljLCBhdHRyaWJ1dGVCbG9jayk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jRGVmKCkKQEAgLTEyNTIsNyArMTI2NCwxMTYgQEAgZnVu
Y3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2soKTsKICAgICAgICAgaWYgKGJv
ZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gYm9keTsKLSAg
ICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0
dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJU
eXBlLCBmdW5jLmF0dHJpYnV0ZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1
bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBi
b2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlLCBmdW5jLnNlbWFudGljLCBmdW5jLmF0
dHJpYnV0ZUJsb2NrKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVN0YWdlSW5PdXRTZW1h
bnRpYygpCisgICAgeworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiYXR0cmlidXRlIik7
CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsK
KyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbGV0IGluZGV4ID0gY29uc3VtZUtpbmQo
ImludExpdGVyYWwiKTsKKyAgICAgICAgaWYgKGluZGV4IGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICBsZXQgdWludFZlcnNpb24gPSBp
bmRleC50ZXh0ID4+PiAwOworICAgICAgICBpZiAodWludFZlcnNpb24udG9TdHJpbmcoKSAhPT0g
aW5kZXgudGV4dCkKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJTZW1hbnRpYyAgaXMgbm90IDMy
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXgudGV4dCk7CisgICAgICAgIG1heWJlRXJy
b3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIHJldHVy
biBuZXcgU3RhZ2VJbk91dFNlbWFudGljKG9yaWdpbiwgdWludFZlcnNpb24pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHBhcnNlUmVzb3VyY2VTZW1hbnRpYygpCisgICAgeworICAgICAgICBsZXQg
b3JpZ2luID0gY29uc3VtZSgicmVnaXN0ZXIiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAg
ICAgICBsZXQgbW9kZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmICht
b2RlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1vZGU7Cisg
ICAgICAgIG1vZGUgPSBtb2RlLnRleHQ7CisgICAgICAgIGlmIChtb2RlWzBdICE9ICJ1IiAmJiBt
b2RlWzBdICE9ICJ0IiAmJiBtb2RlWzBdICE9ICJiIiAmJiBtb2RlWzBdICE9ICJzIikKKyAgICAg
ICAgICAgIHJldHVybiBmYWlsKCJyZWdpc3RlciBuZWVkcyB0byBiZSBlaXRoZXIgdSwgdCwgYiwg
b3IgcyIpOworICAgICAgICBsZXQgaW5kZXhUZXh0ID0gbW9kZS5zdWJzdHJpbmcoMSk7CisgICAg
ICAgIG1vZGUgPSBtb2RlWzBdOworICAgICAgICBsZXQgdWludFZlcnNpb24gPSBpbmRleFRleHQg
Pj4+IDA7CisgICAgICAgIGlmICh1aW50VmVyc2lvbi50b1N0cmluZygpICE9PSBpbmRleFRleHQp
CisgICAgICAgICAgICByZXR1cm4gZmFpbCgiUmVnaXN0ZXIgaW5kZXggaXMgbm90IDMyLWJpdCB1
bnNpZ25lZCBpbnRlZ2VyOiAiICsgaW5kZXhUZXh0KTsKKyAgICAgICAgbGV0IHNwYWNlID0gMDsK
KyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIiwiKSkgeworICAgICAgICAgICAgc3BhY2UgPSBjb25z
dW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAgaWYgKHNwYWNlIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICAgICAgICAg
IHNwYWNlID0gc3BhY2UudGV4dDsKKyAgICAgICAgICAgIGlmIChzcGFjZS5zdWJzdHJpbmcoMCwg
InNwYWNlIi5sZW5ndGgpICE9ICJzcGFjZSIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwo
IlNlY29uZCBhcmd1bWVudCB0byByZWdpc3RlcigpIG5lZWRzIHRvIGJlIG9mIHRoZSBmb3JtIFwi
c3BhY2UwXCIiKTsKKyAgICAgICAgICAgIGxldCBzcGFjZVRleHQgPSBzcGFjZS5zdWJzdHJpbmco
InNwYWNlIi5sZW5ndGgpOworICAgICAgICAgICAgbGV0IHVpbnRWZXJzaW9uID0gc3BhY2VUZXh0
ID4+PiAwOworICAgICAgICAgICAgaWYgKHVpbnRWZXJzaW9uLnRvU3RyaW5nKCkgIT09IHNwYWNl
VGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiUmVnaXN0ZXIgaW5kZXggaXMgbm90
IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgc3BhY2VUZXh0KTsKKyAgICAgICAgICAgIHNw
YWNlID0gdWludFZlcnNpb247CisgICAgICAgIH0KKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG5ldyBSZXNv
dXJjZVNlbWFudGljKG9yaWdpbiwgbW9kZSwgdWludFZlcnNpb24sIHNwYWNlKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwYXJzZVNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYygpCisgICAg
eworICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3BlY2lhbGl6ZWQiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CisgICAgICAgIHJldHVybiBuZXcgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
KG9yaWdpbik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VCdWlsdEluU2VtYW50aWMoKQor
ICAgIHsKKyAgICAgICAgbGV0IG9yaWdpbiA9IHRyeUNvbnN1bWUoIlNWX0luc3RhbmNlSUQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfVmVydGV4SUQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUFNJWkUiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfUG9zaXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
U1ZfSXNGcm9udEZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfU2Ft
cGxlSW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZfSW5uZXJDb3Zl
cmFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9EZXB0aCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTVl9Db3ZlcmFnZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJTVl9EaXNwYXRjaFRocmVhZElEIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNWX0dyb3VwSUQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU1ZfR3JvdXBJbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTVl9Hcm91cFRocmVhZElEIik7CisgICAgICAgIGlmIChvcmlnaW4pCisgICAgICAgICAgICBy
ZXR1cm4gbmV3IEJ1aWx0SW5TZW1hbnRpYyhvcmlnaW4sIG9yaWdpbi50ZXh0KTsKKyAgICAgICAg
b3JpZ2luID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAg
ICAgIGlmIChvcmlnaW4udGV4dC5zdWJzdHJpbmcoMCwgIlNWX1RhcmdldCIubGVuZ3RoKSA9PSAi
U1ZfVGFyZ2V0IikgeworICAgICAgICAgICAgbGV0IGluZGV4U3RyaW5nID0gb3JpZ2luLnRleHQu
c3Vic3RyaW5nKCJTVl9UYXJnZXQiLmxlbmd0aCk7CisgICAgICAgICAgICBsZXQgdWludFZlcnNp
b24gPSBpbmRleFN0cmluZyA+Pj4gMDsKKyAgICAgICAgICAgIGlmICh1aW50VmVyc2lvbi50b1N0
cmluZygpICE9PSBpbmRleFN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiU2Vt
YW50aWMgIGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIGluZGV4U3RyaW5nKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgQnVpbHRJblNlbWFudGljKG9yaWdpbiwgIlNWX1Rhcmdl
dCIsIHVpbnRWZXJzaW9uKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFp
bChgVW5rbm93biBzZW1hbnRpYzogJHtvcmlnaW4udGV4dH1gKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBwYXJzZVNlbWFudGljKCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0KCJhdHRyaWJ1dGUi
KSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpOworICAgICAg
ICBlbHNlIGlmICh0ZXN0KCJyZWdpc3RlciIpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVz
b3VyY2VTZW1hbnRpYygpOworICAgICAgICBlbHNlIGlmICh0ZXN0KCJzcGVjaWFsaXplZCIpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUJ1aWx0SW5TZW1hbnRpYygp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRmllbGQoKQpAQCAtMTI2MywxMCArMTM4NCwx
NiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKTsKICAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0IHNlbWFudGljID0gbnVsbDsKKyAgICAgICAg
aWYgKHRyeUNvbnN1bWUoIjoiKSkgeworICAgICAgICAgICAgc2VtYW50aWMgPSBwYXJzZVNlbWFu
dGljKCk7CisgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljOworICAgICAgICB9CiAgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOwogICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwotICAg
ICAgICByZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSk7CisgICAgICAgIHJl
dHVybiBuZXcgRmllbGQobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBzZW1hbnRpYyk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBlKCkKQEAgLTEzMDAsNyArMTQyNyw5IEBAIGZ1
bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNl
dCwgdGV4dCkKICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CiAgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0
dXJuIG1heWJlRXJyb3I7Ci0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdp
biwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nh
c3QsIGZ1bmMuc2hhZGVyVHlwZSwgc3RhZ2UpOworICAgICAgICBpZiAoZnVuYy5zaGFkZXJUeXBl
IHx8IGZ1bmMuc2VtYW50aWMpCisgICAgICAgICAgICByZXR1cm4gZmFpbCgiTmF0aXZlIGZ1bmN0
aW9ucyBjYW4ndCBiZSBlbnRyeSBwb2ludHMgb3IgaGF2ZSBzZW1hbnRpY3MuIik7CisgICAgICAg
IHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVy
blR5cGUsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QsIHN0YWdlKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBwYXJzZU5hdGl2ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9Qcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkLmpzCmluZGV4IGMzMjg4OTJiZmYxNmI3NWFlZTVhZmZiNGYzNzJmZTI0YTQxOGNiNzEuLjg2
NTdjN2Y0ZmIwODJlZWNlNDA1ZjFlYTg4NmIxN2FmNTVmNjBmMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1v
dmVkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW1XaXRoVW5u
ZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzCkBAIC00MSw2ICs0MSwxMCBAQCBmdW5jdGlvbiBwcm9n
cmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZChwcm9ncmFtKQogICAgIG5hbWVGaW5kZXIu
YWRkKCJ2b2lkIik7CiAgICAgbmFtZUZpbmRlci5hZGQoImJvb2wiKTsKICAgICBuYW1lRmluZGVy
LmFkZCgiaW50Iik7CisgICAgbmFtZUZpbmRlci5hZGQoInVpbnQiKTsKKyAgICBuYW1lRmluZGVy
LmFkZCgiZmxvYXQiKTsKKyAgICBuYW1lRmluZGVyLmFkZCgidmVjdG9yIik7CisgICAgbmFtZUZp
bmRlci5hZGQoInNhbXBsZXIiKTsKICAgICAKICAgICAvLyBQdWxsIGluIHRoaW5ncyBhcyBuZWNl
c3NhcnkuCiAgICAgd2hpbGUgKG5hbWVGaW5kZXIud29ya2xpc3QubGVuZ3RoKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvdXJjZVNlbWFudGljLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OWEyOGEzY2FkMmZiNmY3ZjNmZGQxNjFiMGE5YzMwNmE3MDVmMmFlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb3VyY2VTZW1hbnRpYy5q
cwpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgUmVzb3VyY2VTZW1hbnRpYyBleHRlbmRzIFNl
bWFudGljIHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIHJlc291cmNlTW9kZSwgaW5kZXgsIHNw
YWNlKQorICAgIHsKKyAgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgICAgICB0aGlzLl9yZXNv
dXJjZU1vZGUgPSByZXNvdXJjZU1vZGU7CisgICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4Owor
ICAgICAgICAgdGhpcy5fc3BhY2UgPSBzcGFjZTsKKyAgICB9CisKKyAgICBnZXQgcmVzb3VyY2VN
b2RlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VNb2RlOyB9CisgICAgZ2V0IGluZGV4KCkgeyBy
ZXR1cm4gdGhpcy5faW5kZXg7IH0KKyAgICBnZXQgc3BhY2UoKSB7IHJldHVybiB0aGlzLl9zcGFj
ZTsgfQorCisgICAgaXNBY2NlcHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0aGlzLnJlc291cmNlTW9kZSkgeworICAgICAgICBjYXNlICJiIjoKKyAgICAg
ICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgUmVmZXJlbmNlVHlwZSkgeworICAgICAgICAgICAg
ICAgIHJldHVybiB0eXBlLmFkZHJlc3NTcGFjZSA9PSAiY29uc3RhbnQiOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBBcnJheVR5cGU7
CisgICAgICAgIGNhc2UgInUiOgorICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBSZWZl
cmVuY2VUeXBlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuYWRkcmVzc1NwYWNlID09
ICJjb25zdGFudCIgfHwgdHlwZS5hZGRyZXNzU3BhY2UgPT0gImRldmljZSI7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5pc1RleHR1cmUgfHwgdHlwZSBp
bnN0YW5jZW9mIEFycmF5VHlwZTsKKyAgICAgICAgY2FzZSAidCI6CisgICAgICAgICAgICBpZiAo
dHlwZSBpbnN0YW5jZW9mIFJlZmVyZW5jZVR5cGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHlwZS5hZGRyZXNzU3BhY2UgPT0gImNvbnN0YW50IjsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiB0eXBlLmlzVGV4dHVyZSB8fCB0eXBlIGluc3RhbmNlb2YgQXJy
YXlUeXBlOworICAgICAgICBjYXNlICJzIjoKKyAgICAgICAgICAgIHJldHVybiB0eXBlLmVxdWFs
cyhwcm9ncmFtLmludHJpbnNpY3Muc2FtcGxlcik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVzb3VyY2UgbW9kZTogJHt0aGlzLnJlc291
cmNlTW9kZX1gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlzQWNjZXB0YWJsZUZvclNoYWRl
clR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRpcmVj
dGlvbiA9PSAiaW5wdXQiOworICAgIH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBgcmVnaXN0ZXIoJHt0aGlzLnJlc291cmNlTW9kZX0ke3RoaXMuaW5kZXh9LCBzcGFj
ZSR7dGhpcy5zcGFjZX0pYDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanMKaW5kZXggM2ExNGJkYThjZGQxOWQ2ZWMzYTlmYjgxNjIyY2VmY2UxYjZh
MTc0YS4uNDhjNjk3ODhlYzY4OThlYzA3M2ZjMjE1ZjNhYTEzNzUwYmVjMDg1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgUmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsK
LSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBGdW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBub2Rl
Lm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
RnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhp
cyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcykpOwogICAgICAgICB0aGlzLl9tYXBO
b2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIFJld3JpdGVyIHsK
ICAgICAKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IEZp
ZWxkKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSk7CisgICAg
ICAgIHJldHVybiBuZXcgRmllbGQobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZp
c2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsKICAgICB9CiAgICAg
CiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUpCkBAIC00MDAsNSArNDAwLDI1IEBAIGNsYXNzIFJl
d3JpdGVyIHsKICAgICAgICAgY29uc3QgbWF0VHlwZSA9IG5ldyBNYXRyaXhUeXBlKG5vZGUub3Jp
Z2luLCBub2RlLm5hbWUsIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1l
bnQudmlzaXQodGhpcykpKTsKICAgICAgICAgcmV0dXJuIG1hdFR5cGU7CiAgICAgfQorCisgICAg
dmlzaXRCdWlsdEluU2VtYW50aWMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQnVp
bHRJblNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLm5hbWUsIC4uLm5vZGUuZXh0cmFBcmd1bWVu
dHMpOworICAgIH0KKworICAgIHZpc2l0UmVzb3VyY2VTZW1hbnRpYyhub2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZVNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLnJlc291
cmNlTW9kZSwgbm9kZS5pbmRleCwgbm9kZS5zcGFjZSk7CisgICAgfQorCisgICAgdmlzaXRTdGFn
ZUluT3V0U2VtYW50aWMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU3RhZ2VJbk91
dFNlbWFudGljKG5vZGUub3JpZ2luLCBub2RlLmluZGV4KTsKKyAgICB9CisKKyAgICB2aXNpdFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMobm9kZS5vcmlnaW4pOworICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRt
bCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggYmE2MTcw
YjMyYmU5YTI2YTllY2YxNmRlMjE0MGNmMTRmNDNiMmFjNi4uNmY2ZDZjMDBkYTVlMzQ2MDRjODg0
YTdhNWJhMTA1Yjk5OTBlM2MzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElS
Vi5odG1sCkBAIC0xOCw2ICsxOCw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0
ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJOYXRpdmVUeXBlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iU2VtYW50aWMuanMiPjwvc2NyaXB0PgogCiAgICAg
PHNjcmlwdCBzcmM9IkFkZHJlc3NTcGFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkFsbG9jYXRlQXRFbnRyeVBvaW50cy5qcyI+PC9zY3JpcHQ+CkBAIC0yOSw2ICszMCw3IEBAIHRk
IHsKICAgICA8c2NyaXB0IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJCb29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJyZWFrLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJ1aWx0aW5NYXRyaXhTZXR0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIj48L3NjcmlwdD4KQEAgLTEyNCwxMCArMTI2
LDEzIEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZVR5cGVEZWZzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJldHVybi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJldHVybkNoZWNrZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iU3RhZ2VJbk91dFNlbWFudGljLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iU3RhbmRhcmRMaWJyYXJ5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RhdGVt
ZW50Q2xvbmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU3RydWN0TGF5b3V0QnVp
bGRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TZW1hbnRpYy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NlbWFudGlj
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmExNzhjZjEwNWZkMmE2YjIwMDg3NGI4MDBjZmI0YWM0MzUzZjVkMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TZW1hbnRp
Yy5qcwpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU2VtYW50aWMgZXh0ZW5kcyBOb2RlIHsK
KyAgICBjb25zdHJ1Y3RvcihvcmlnaW4pCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAg
ICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgfQorCisgICAgZ2V0IG9yaWdpbigpIHsgcmV0
dXJuIHRoaXMuX29yaWdpbjsgfQorCisgICAgZXF1YWxUb090aGVyU2VtYW50aWMob3RoZXJTZW1h
bnRpYykKKyAgICB7CisgICAgICAgIGNsYXNzIENvbXBhcmVyIGV4dGVuZHMgVmlzaXRvciB7Cisg
ICAgICAgICAgICB2aXNpdEJ1aWx0SW5TZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICghKG90aGVyU2VtYW50aWMgaW5zdGFuY2VvZiBCdWlsdEluU2VtYW50
aWMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKG5vZGUubmFtZSAhPSBvdGhlclNlbWFudGljLm5hbWUpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3VtZW50cyAm
JiBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aCAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1l
bnRzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmV4dHJhQXJndW1lbnRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5leHRyYUFyZ3Vt
ZW50c1tpXSAhPSBvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzW2ldKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUuZXh0cmFBcmd1bWVudHMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBub2RlLmV4dHJhQXJndW1lbnRzLmxlbmd0aCA9PSAwOworICAgICAgICAgICAgICAgIGlm
IChvdGhlclNlbWFudGljLmV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3RoZXJTZW1hbnRpYy5leHRyYUFyZ3VtZW50cy5sZW5ndGggPT0gMDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlzaXRSZXNv
dXJjZVNlbWFudGljKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEo
b3RoZXJTZW1hbnRpYyBpbnN0YW5jZW9mIFJlc291cmNlU2VtYW50aWMpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUucmVzb3Vy
Y2VNb2RlID09IG90aGVyU2VtYW50aWMucmVzb3VyY2VNb2RlICYmIG5vZGUuaW5kZXggPT0gb3Ro
ZXJTZW1hbnRpYy5pbmRleCAmJiBub2RlLnNwYWNlID09IG90aGVyU2VtYW50aWMuc3BhY2U7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0U3RhZ2VJbk91dFNlbWFudGljKG5vZGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEob3RoZXJTZW1hbnRpYyBpbnN0
YW5jZW9mIFN0YWdlSW5PdXRTZW1hbnRpYykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5pbmRleCA9PSBvdGhlclNlbWFudGlj
LmluZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXNpdFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYyhub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBvdGhlciBpbnN0YW5jZW9mIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy52aXNpdChuZXcgQ29t
cGFyZXIoKSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQyMjA2OTdiOTRlOTYzODAxYWIyMDZlMTE0YmJhYjhkMGYzNDYzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVjdG9yKG9y
aWdpbikKKyAgICB7CisgICAgICAgIHN1cGVyKG9yaWdpbik7CisgICAgfQorCisgICAgaXNBY2Nl
cHRhYmxlVHlwZSh0eXBlLCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUuaXNO
dW1iZXI7CisgICAgfQorCisgICAgaXNBY2NlcHRhYmxlRm9yU2hhZGVyVHlwZShkaXJlY3Rpb24s
IHNoYWRlclR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09ICJpbnB1dCI7
CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJzcGVjaWFs
aXplZCI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGFnZUluT3V0U2VtYW50aWMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFnZUluT3V0U2VtYW50aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU5ZWVhOTliZTdkOTdjY2Y1NGZk
NjUxNzFhODQ0MDAxOTAwYzg1MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YWdlSW5PdXRTZW1hbnRpYy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKwor
Y2xhc3MgU3RhZ2VJbk91dFNlbWFudGljIGV4dGVuZHMgU2VtYW50aWMgeworICAgIGNvbnN0cnVj
dG9yKG9yaWdpbiwgaW5kZXgpCisgICAgeworICAgICAgICAgc3VwZXIob3JpZ2luKTsKKyAgICAg
ICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAgfQorCisgICAgZ2V0IGluZGV4KCkgeyByZXR1
cm4gdGhpcy5faW5kZXg7IH0KKworICAgIGlzQWNjZXB0YWJsZVR5cGUodHlwZSwgcHJvZ3JhbSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0eXBlIGluc3RhbmNlb2YgRW51bVR5cGUgfHwgdHlwZSBp
bnN0YW5jZW9mIEFycmF5VHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgVmVjdG9yVHlwZSB8fCB0eXBl
IGluc3RhbmNlb2YgTWF0cml4VHlwZSB8fCB0eXBlLmlzTnVtYmVyOworICAgIH0KKworICAgIGlz
QWNjZXB0YWJsZUZvclNoYWRlclR5cGUoZGlyZWN0aW9uLCBzaGFkZXJUeXBlKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChzaGFkZXJUeXBlKSB7CisgICAgICAgIGNhc2UgInZlcnRleCI6CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSAiZnJhZ21lbnQiOgorICAgICAgICAg
ICAgcmV0dXJuIGRpcmVjdGlvbiA9PSAiaW5wdXQiOworICAgICAgICBjYXNlICJjb21wdXRlIjoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSAidGVzdCI6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgVW5rbm93biBzaGFkZXIgdHlwZTogJHtzaGFkZXJUeXBlfWApOworICAgICAgICB9
CisgICAgfQorCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGBhdHRyaWJ1
dGUoJHt0aGlzLmluZGV4fSlgOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCmluZGV4IGM0YmRkYzkxNjE5NGVjMzMzYTYw
MTFmZDZhMjgxYjY2MjJjOGQ5MWYuLmVjYTY5NmU0ZGJmMmFkNjk0ZWY2YzlhNTBmNzMwYzMzNTY3
N2Q2YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVu
dENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRD
bG9uZXIuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMg
UmV3cml0ZXIgewogICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAg
ICAgIG5vZGUucmV0dXJuVHlwZS52aXNpdCh0aGlzKSwKICAgICAgICAgICAgIG5vZGUucGFyYW1l
dGVycy5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRlci52aXNpdCh0aGlzKSksCi0gICAgICAgICAg
ICBub2RlLmlzQ2FzdCwgbm9kZS5zaGFkZXJUeXBlLCBub2RlLnN0YWdlKTsKKyAgICAgICAgICAg
IG5vZGUuaXNDYXN0LCBub2RlLnN0YWdlKTsKICAgICAgICAgcmVzdWx0LmlzUmVzdHJpY3RlZCA9
IG5vZGUuaXNSZXN0cmljdGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVBcnJheU9wZXJh
dG9yTGVuZ3RoLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFy
cmF5T3BlcmF0b3JMZW5ndGguanMKaW5kZXggZGU4ZGY1ZDExNDhjNTc4YWYwZGI2ZTI3ZDdiMDE3
OTg5OWYxNWQ0YS4uMWEyODE1OGE4YjQyN2Q3OTE4N2I5MGM1YWQ0NjY4NWMxMDYwNDEzMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUFycmF5T3Bl
cmF0b3JMZW5ndGguanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhl
c2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gc3lu
dGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSkKICAgICAgICAgbGV0IG5hdGl2ZUZ1
bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAgICAgIGFycmF5VHlwZS5vcmlnaW4sICJvcGVy
YXRvci5sZW5ndGgiLCB1aW50LAogICAgICAgICAgICAgWyBuZXcgRnVuY1BhcmFtZXRlcihhcnJh
eVR5cGUub3JpZ2luLCBudWxsLCBwYXJhbVR5cGUpIF0sCi0gICAgICAgICAgICBmYWxzZSwgbnVs
bCk7CisgICAgICAgICAgICBmYWxzZSk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2FycmF5XSkgPT4gRVB0ci5ib3goYXJyYXlUeXBlLm51bUVsZW1lbnRzVmFsdWUpOwog
ICAgICAgICBwcm9ncmFtLmFkZChuYXRpdmVGdW5jKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZUNvcHlDb25zdHJ1Y3Rv
ck9wZXJhdG9yLmpzCmluZGV4IGNmOThjNDY3YTVjMTJkODQ2MmYxYmIwNzgxYTIwZTBlMmFlMzVj
MzkuLmYzOWVhZWYxZDQ2NDc1NjdlODgzN2Y0ZjU0ZDYxOTczNDU2YzZiZWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVDb3B5Q29uc3RydWN0b3JP
cGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXpl
Q29weUNvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTUyLDcgKzUyLDcgQEAgZnVuY3Rpb24gc3lu
dGhlc2l6ZUNvcHlDb25zdHJ1Y3Rvck9wZXJhdG9yKHByb2dyYW0pCiAgICAgZm9yIChsZXQgdHlw
ZSBvZiB0eXBlcykgewogICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKHR5
cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgWwogICAgICAg
ICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0
eXBlKSkKLSAgICAgICAgXSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIF0sIHRydWUpOwogICAgICAg
ICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFthcmddLCBub2RlKSA9PiB7CiAgICAgICAg
ICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXplKSwgMCk7CiAg
ICAgICAgICAgICByZXN1bHQuY29weUZyb20oYXJnLCB0eXBlLnNpemUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rv
ck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURl
ZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGRjNTA2NTM4ZDFjNmM3MTA5YjFhZDFl
Y2JhM2NlYzI3OGQwZjdiNWMuLjViYzVkZDkzOWFkNDA0YmMzMThkYzVjODA5NTk1OGZlNDc1MWQ0
ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVE
ZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTYyLDcg
KzYyLDcgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yKHBy
b2dyYW0pCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwogCiAgICAgZm9y
IChsZXQgdHlwZSBvZiB0eXBlcykgewotICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRp
dmVGdW5jKHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwg
W10sIHRydWUsIG51bGwpOworICAgICAgICBsZXQgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5j
KHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIFR5cGVSZWYud3JhcCh0eXBlKSwgW10sIHRy
dWUpOwogICAgICAgICBuYXRpdmVGdW5jLmltcGxlbWVudGF0aW9uID0gKFtdLCBub2RlKSA9PiB7
CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIobmV3IEVCdWZmZXIodHlwZS5zaXpl
KSwgMCk7CiAgICAgICAgICAgICBub2RlLnR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUocmVzdWx0
LmJ1ZmZlciwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplRW51bUZ1bmN0aW9ucy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1N5bnRoZXNpemVFbnVtRnVuY3Rpb25zLmpzCmluZGV4IDEzN2FjOWZjZDE1ODg3YWY4Yzc2ZTRm
NjRjZGQ1YTIyZDI3Y2FhMTIuLjgyNjZhMThiNjdkODlmNTNkMzBiMjg2NDNiYjcyOWE1Mjc1NWVm
MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVF
bnVtRnVuY3Rpb25zLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRo
ZXNpemVFbnVtRnVuY3Rpb25zLmpzCkBAIC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHN5bnRoZXNp
emVFbnVtRnVuY3Rpb25zKHByb2dyYW0pCiAKICAgICAgICAgbGV0IG5hdGl2ZUZ1bmM7CiAgICAg
ICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKLSAgICAgICAgbGV0IHNoYWRlclR5cGU7CiAKICAgICAg
ICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmlnaW4s
ICJvcGVyYXRvcj09IiwgbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sICJib29sIiksCkBAIC00MCwy
OCArMzksMjggQEAgZnVuY3Rpb24gc3ludGhlc2l6ZUVudW1GdW5jdGlvbnMocHJvZ3JhbSkKICAg
ICAgICAgICAgICAgICBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbnVsbCwgbmV3IFR5
cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5j
UGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlw
ZS5uYW1lKSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBpc0Nhc3QsIHNoYWRlclR5cGUp
OworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgbmF0aXZlRnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PiBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgcHJvZ3JhbS5hZGQobmF0aXZlRnVuYyk7CiAKICAgICAg
ICAgbmF0aXZlRnVuYyA9IG5ldyBOYXRpdmVGdW5jKAogICAgICAgICAgICAgdHlwZS5vcmlnaW4s
ICJvcGVyYXRvci52YWx1ZSIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3IFJld3JpdGVyKCkpLAog
ICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBudWxsLCBuZXcgVHlw
ZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFk
ZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2
ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZlRnVuYygKICAgICAgICAg
ICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIHR5cGUuYmFzZVR5cGUudmlzaXQobmV3
IFJld3JpdGVyKCkpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2lu
LCBudWxsLCBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lKSldLAotICAgICAgICAg
ICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgIG5h
dGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFsdWU7CiAgICAgICAgIHBy
b2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogCiAgICAgICAgIG5hdGl2ZUZ1bmMgPSBuZXcgTmF0aXZl
RnVuYygKICAgICAgICAgICAgIHR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIsIG5ldyBUeXBl
UmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpLAogICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1l
dGVyKHR5cGUub3JpZ2luLCBudWxsLCB0eXBlLmJhc2VUeXBlLnZpc2l0KG5ldyBSZXdyaXRlcigp
KSldLAotICAgICAgICAgICAgaXNDYXN0LCBzaGFkZXJUeXBlKTsKKyAgICAgICAgICAgIGlzQ2Fz
dCk7CiAgICAgICAgIG5hdGl2ZUZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gdmFs
dWU7CiAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZUZ1bmMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNjZXNz
b3JzLmpzCmluZGV4IDc4NTllZWI0YjRmNWNiNWVmZTZmZDAyZGVhYjYzNzBkYmQ5YjUzOTAuLjZj
N2ZmZDcxODExNWM3OWQ4ZjI3MTA1N2I0MThjMDA5NDFjMGFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29y
cy5qcwpAQCAtNDksMTMgKzQ5LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAgICAgICAgIH0KIAogICAgICAgICBsZXQg
aXNDYXN0ID0gZmFsc2U7Ci0gICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAgICBsZXQgbmF0
aXZlRnVuYzsKIAogICAgICAgICAvLyBUaGUgZ2V0dGVyOiBvcGVyYXRvci5maWVsZAogICAgICAg
ICBuYXRpdmVGdW5jID0gbmV3IE5hdGl2ZUZ1bmMoCiAgICAgICAgICAgICBmaWVsZC5vcmlnaW4s
ICJvcGVyYXRvci4iICsgZmllbGQubmFtZSwgZmllbGQudHlwZSwKLSAgICAgICAgICAgIFtuZXcg
RnVuY1BhcmFtZXRlcihmaWVsZC5vcmlnaW4sIG51bGwsIFR5cGVSZWYud3JhcCh0eXBlKSldLCBp
c0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgW25ldyBGdW5jUGFyYW1ldGVyKGZpZWxk
Lm9yaWdpbiwgbnVsbCwgVHlwZVJlZi53cmFwKHR5cGUpKV0sIGlzQ2FzdCk7CiAgICAgICAgIHNl
dHVwSW1wbGVtZW50YXRpb25EYXRhKG5hdGl2ZUZ1bmMsIChbYmFzZV0sIG9mZnNldCwgc3RydWN0
U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQdHIo
bmV3IEVCdWZmZXIoZmllbGRTaXplKSwgMCk7CiAgICAgICAgICAgICByZXN1bHQuY29weUZyb20o
YmFzZS5wbHVzKG9mZnNldCksIGZpZWxkU2l6ZSk7CkBAIC03MCw3ICs2OSw3IEBAIGZ1bmN0aW9u
IHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnNGb3JTdHJ1Y3RUeXBlKHByb2dyYW0sIHR5cGUpCiAg
ICAgICAgICAgICAgICAgbmV3IEZ1bmNQYXJhbWV0ZXIoZmllbGQub3JpZ2luLCBudWxsLCBUeXBl
UmVmLndyYXAodHlwZSkpLAogICAgICAgICAgICAgICAgIG5ldyBGdW5jUGFyYW1ldGVyKGZpZWxk
Lm9yaWdpbiwgbnVsbCwgZmllbGQudHlwZSkKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBp
c0Nhc3QsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgaXNDYXN0KTsKICAgICAgICAgc2V0dXBJ
bXBsZW1lbnRhdGlvbkRhdGEobmF0aXZlRnVuYywgKFtiYXNlLCB2YWx1ZV0sIG9mZnNldCwgc3Ry
dWN0U2l6ZSwgZmllbGRTaXplKSA9PiB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVQ
dHIobmV3IEVCdWZmZXIoc3RydWN0U2l6ZSksIDApOwogICAgICAgICAgICAgcmVzdWx0LmNvcHlG
cm9tKGJhc2UsIHN0cnVjdFNpemUpOwpAQCAtODksNyArODgsNyBAQCBmdW5jdGlvbiBzeW50aGVz
aXplU3RydWN0QWNjZXNzb3JzRm9yU3RydWN0VHlwZShwcm9ncmFtLCB0eXBlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGQub3JpZ2luLCBudWxsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFB0clR5cGUoZmllbGQub3JpZ2luLCBhZGRyZXNzU3BhY2UsIFR5cGVSZWYud3JhcCh0
eXBlKSkpCiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBpc0Nhc3QsIHNoYWRl
clR5cGUpOworICAgICAgICAgICAgICAgIGlzQ2FzdCk7CiAgICAgICAgICAgICBzZXR1cEltcGxl
bWVudGF0aW9uRGF0YShuYXRpdmVGdW5jLCAoW2Jhc2VdLCBvZmZzZXQsIHN0cnVjdFNpemUsIGZp
ZWxkU2l6ZSkgPT4gewogICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLmxvYWRWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgIGlmICghYmFzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAppbmRleCAwMjg1ZmJlZjRhZTIxZTE5NjY5YzFiZjY3NDljNWY5YzI1OGUwYTE5Li5j
ZDNiZGEwYzBiODMyYmYwN2JjMjMwNjhkZGJlOTlhMTE0ZjgzYWI4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVhZD4K
LTx0aXRsZT5XU0wgVGVzdDwvdGl0bGU+Cis8dGl0bGU+V0hMU0wgVGVzdDwvdGl0bGU+CiA8c2Ny
aXB0IHNyYz0iTm9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iUmVmZXJlbmNlVHlwZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMiw2ICsx
Miw3IEBACiA8c2NyaXB0IHNyYz0iQ3JlYXRlTGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iTmF0aXZlVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU2VtYW50aWMuanMi
Pjwvc2NyaXB0PgogCiA8c2NyaXB0IHNyYz0iQWRkcmVzc1NwYWNlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJBbGxvY2F0ZUF0RW50cnlQb2ludHMuanMiPjwvc2NyaXB0PgpAQCAtMjMsNiAr
MjQsNyBAQAogPHNjcmlwdCBzcmM9IkJsb2NrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJC
b29sTGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnJlYWsuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IkJ1aWx0SW5TZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iQnVpbHRpbk1hdHJpeEdldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRp
bk1hdHJpeFNldHRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbHRpblZlY3Rvckdl
dHRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTgsMTAgKzEyMCwxMyBAQAogPHNjcmlwdCBzcmM9IlJl
c29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9w
ZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlVHlwZURlZnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9IlJlc291cmNlU2VtYW50aWMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlJldHVybi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJuRXhjZXB0aW9uLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJTYW1wbGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlN0
YWdlSW5PdXRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iU3RhbmRhcmRMaWJy
YXJ5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGF0ZW1lbnRDbG9uZXIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlN0cnVjdExheW91dEJ1aWxkZXIuanMiPjwvc2NyaXB0PgpAQCAt
MTcwLDcgKzE3NSw3IEBAIGZ1bmN0aW9uIGRvVGVzdEluQnJvd3NlcigpCiAgICAgICAgICAgICBp
ZiAodGVzdGVyLm5leHQoKS5kb25lKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiAiICsgZS5tZXNzYWdlKTsK
KyAgICAgICAgICAgIHByaW50KCJFUlJPUjogIiArIChlLnBheWxvYWQgPyBlLnBheWxvYWQgOiBl
Lm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHByaW50KGUuc3RhY2spOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBk
YzhhOWZiMjczNjAyMzU4NWNjMWQ3ZWVhNjliMTg4YzJkYjljMGRjLi42ZmU0ZjdkZWIzODVkZDM4
MzYwMDQ4OGM1ZjkyNjk3MGI2ODA3Yjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuanMKQEAgLTMxMDcsMTMzICszMTA3LDI2MiBAQCB0ZXN0cy50eXBlZGVmQXJyYXkgPSBmdW5j
dGlvbigpCiAKIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogeworICAgIGRvUHJlcChg
CisgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KDAsIDEsIDIsIDMpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAK
KyAgICAgICAgc3RydWN0IFIgeworICAgICAgICAgICAgZmxvYXQ0IHggOiBTVl9Qb3NpdGlvbjsK
KyAgICAgICAgICAgIGludDQgeSA6IGF0dHJpYnV0ZSgxKTsKKyAgICAgICAgfQorICAgICAgICB2
ZXJ0ZXggUiBmb28oKSB7CisgICAgICAgICAgICBSIHo7CisgICAgICAgICAgICB6LnggPSBmbG9h
dDQoMSwgMiwgMywgNCk7CisgICAgICAgICAgICB6LnkgPSBpbnQ0KDUsIDYsIDcsIDgpOworICAg
ICAgICAgICAgcmV0dXJuIHo7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICBz
dHJ1Y3QgUiB7CisgICAgICAgICAgICBmbG9hdDQgeCA6IFNWX1Bvc2l0aW9uOworICAgICAgICAg
ICAgaW50NCB5IDogYXR0cmlidXRlKDEpOworICAgICAgICB9CisgICAgICAgIHN0cnVjdCBTIHsK
KyAgICAgICAgICAgIFIgcjsKKyAgICAgICAgICAgIGZsb2F0MyB6IDogYXR0cmlidXRlKDIpOwor
ICAgICAgICB9CisgICAgICAgIHZlcnRleCBTIGZvbygpIHsKKyAgICAgICAgICAgIFMgdzsKKyAg
ICAgICAgICAgIHcuci54ID0gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgdy5yLnkg
PSBpbnQ0KDUsIDYsIDcsIDgpOworICAgICAgICAgICAgdy56ID0gZmxvYXQzKDksIDEwLCAxMSk7
CisgICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAg
ICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcihi
MCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAq
YnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisg
ICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKGNvbnN0YW50IGZsb2F0KiBidWZmZXIgOiByZWdpc3Rl
cihiMCwgc3BhY2UwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0
KCpidWZmZXIsICpidWZmZXIsICpidWZmZXIsICpidWZmZXIpOworICAgICAgICB9YCk7CisgICAg
ZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oY29uc3RhbnQgZmxvYXQqIGJ1ZmZl
ciA6IHJlZ2lzdGVyKGIwLCBzcGFjZTEpKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgIHJl
dHVybiBmbG9hdDQoKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlciwgKmJ1ZmZlcik7CisgICAgICAg
IH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhjb25zdGFudCBm
bG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKGIwKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAg
ICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZmZXJbMl0sIGJ1ZmZlclsz
XSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZv
byhmbG9hdFs1XSBidWZmZXIgOiByZWdpc3RlcihiMCkpIDogU1ZfUG9zaXRpb24geworICAgICAg
ICAgICAgcmV0dXJuIGZsb2F0NChidWZmZXJbMF0sIGJ1ZmZlclsxXSwgYnVmZmVyWzJdLCBidWZm
ZXJbM10pOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgdmVydGV4IGZsb2F0
NCBmb28oZGV2aWNlIGZsb2F0KiBidWZmZXIgOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24g
eworICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgqYnVmZmVyLCAqYnVmZmVyLCAqYnVmZmVyLCAq
YnVmZmVyKTsKKyAgICAgICAgfWApOworICAgIGRvUHJlcChgCisgICAgICAgIHZlcnRleCBmbG9h
dDQgZm9vKGRldmljZSBmbG9hdFtdIGJ1ZmZlciA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3NpdGlv
biB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZm
ZXJbMl0sIGJ1ZmZlclszXSk7CisgICAgICAgIH1gKTsKKyAgICBkb1ByZXAoYAorICAgICAgICB2
ZXJ0ZXggZmxvYXQ0IGZvbyh1aW50IHggOiBTVl9JbnN0YW5jZUlEKSA6IFNWX1Bvc2l0aW9uIHsK
KyAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBmbG9hdCh4KSwg
ZmxvYXQoeCkpOworICAgICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSkgOiBTVl9UYXJnZXQwIHsKKyAgICAg
ICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CisgICAgICAgIH1gKTsKKyAgICBkb1By
ZXAoYAorICAgICAgICBmcmFnbWVudCBmbG9hdDQgZm9vKGludCB4IDogc3BlY2lhbGl6ZWQpIDog
U1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOworICAg
ICAgICB9YCk7CisgICAgZG9QcmVwKGAKKyAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhUZXh0
dXJlMUQ8ZmxvYXQ0PiB0IDogcmVnaXN0ZXIodDApLCBzYW1wbGVyIHMgOiByZWdpc3RlcihzMCkp
IDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICByZXR1cm4gU2FtcGxlKHQsIHMsIDAuNCk7Cisg
ICAgICAgIH1gKTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAg
ICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAg
ICAgIHZlcnRleCB2b2lkIGZvbygpIDogU1ZfUG9zaXRpb24gewogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEZvbyByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnggPSBmbG9hdDQoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGlu
c3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1By
ZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCA6IFBTSVpFKSA6IFNW
X1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KHgsIHgsIHgsIHgpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgRm9vIGZvbygpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gYmFyKCk7CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAg
ICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhpbnQgeCA6IFNWX0luc3RhbmNlSUQpIDogU1ZfUG9zaXRp
b24geworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoZmxvYXQoeCksIGZsb2F0KHgpLCBm
bG9hdCh4KSwgZmxvYXQoeCkpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgdmVydGV4IGZsb2F0IGJhcigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIDQuOworICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28oZmxvYXQgeCkg
OiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCh4LCB4LCB4LCB4
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwog
ICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVj
dCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgZnJhZ21lbnQg
ZmxvYXQ0IGZvbyhib29sIHggOiBTVl9Jc0Zyb250RmFjZSwgYm9vbCB5IDogU1ZfSXNGcm9udEZh
Y2UpIDogU1ZfVGFyZ2V0MCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAz
LCA0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZlcnRleCBGb28gYmFyKGRldmljZSBG
b28qIHgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZvbygpOworICAg
ICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hl
Y2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0IFIgewor
ICAgICAgICAgICAgICAgIGZsb2F0NCB4IDogU1ZfVGFyZ2V0MDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZyYWdtZW50IFIgZm9vKGJvb2wgeCA6IFNWX0lzRnJvbnRGYWNlKSA6IFNWX0Rl
cHRoIHsKKyAgICAgICAgICAgICAgICBSIHk7CisgICAgICAgICAgICAgICAgeS54ID0gZmxvYXQ0
KDEsIDIsIDMsIDQpOworICAgICAgICAgICAgICAgIHJldHVybiB5OwogICAgICAgICAgICAgfQog
ICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAg
ICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAg
ICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAg
ICAgICAgZmxvYXQ0IHg7CisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAg
Ym9vbCB4IDogU1ZfSXNGcm9udEZhY2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1
Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZp
Y2UgQm9vKiB5OworICAgICAgICAgICAgZnJhZ21lbnQgZmxvYXQ0IGZvbyhSIHggOiBTVl9TYW1w
bGVJbmRleCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEs
IDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmVydGV4IEZvbyBiYXIoKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCks
CisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgK
KyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHN0cnVjdCBSIHsKKyAgICAgICAg
ICAgICAgICBib29sIHggOiBTVl9Jc0Zyb250RmFjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0cnVjdCBTIHsKKyAgICAgICAgICAgICAgICBSIHI7CisgICAgICAgICAgICAgICAgYm9v
bCB5IDogU1ZfSXNGcm9udEZhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFnbWVu
dCBmbG9hdDQgZm9vKFMgeCkgOiBTVl9UYXJnZXQwIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAg
ICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRG
YWNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAg
ICAgICAgZGV2aWNlIEZvbyogeTsKKyAgICAgICAgICAgIGZyYWdtZW50IGZsb2F0NCBmb28oUiB4
KSA6IFNWX1RhcmdldDAgeworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywg
NCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ZXJ0ZXggRm9vIGJhcihCb28gYikKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAor
ICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgUiB7CisgICAgICAgICAg
ICAgICAgZmxvYXQgeCA6IFNWX0lzRnJvbnRGYWNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmVydGV4IHVpbnQgZm9vKCkgOiBTVl9WZXJ0ZXhJRCB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDc7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9y
KTsKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBz
dHJ1Y3QgRm9vIHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIHR5cGVk
ZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhkZXZp
Y2UgQVtdIHggOiByZWdpc3Rlcih1MCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAg
IHJldHVybiBmbG9hdDQoMSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
ZXJ0ZXggRm9vIGJhcihkZXZpY2UgRm9vKiB4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBGb28oKTsKKyAgICAgICAgYCksCisgICAgICAgIGUgPT4gZSBpbnN0YW5jZW9m
IFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAg
ICAgICAgICAgIHR5cGVkZWYgQSA9IHRocmVhZCBmbG9hdCo7CisgICAgICAgICAgICB2ZXJ0ZXgg
ZmxvYXQ0IGZvbyhkZXZpY2UgQSogeCA6IHJlZ2lzdGVyKHUwKSkgOiBTVl9Qb3NpdGlvbiB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7Cisg
ICAgICAgIGUgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAg
ICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAg
ICAgICAgIGZsb2F0NCB4OworICAgICAgICAgICAgdHlwZWRlZiBBID0gdGhyZWFkIGZsb2F0KjsK
KyAgICAgICAgICAgIHZlcnRleCBmbG9hdDQgZm9vKEFbNF0geCA6IHJlZ2lzdGVyKHUwKSkgOiBT
Vl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoRm9vIGZvbykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAor
ICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBlbnVtIEZvbyB7CisgICAgICAgICAg
ICAgICAgZiwgZworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
Rm9vIHggOiBzcGVjaWFsaXplZCkgOiBTVl9Qb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZsb2F0NCgxLCAyLCAzLCA0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgYCksCi0gICAg
ICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgICAgIGUgPT4gZSBpbnN0
YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVw
KGAKLSAgICAgICAgICAgIHN0cnVjdCBGb28gewotICAgICAgICAgICAgICAgIGZsb2F0NCB4Owor
ICAgICAgICAgICAgW251bXRocmVhZHMoMSwgMSwgMSldCisgICAgICAgICAgICBjb21wdXRlIGZs
b2F0IGZvbygpIDogYXR0cmlidXRlKDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gNTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50IEZvbyBiYXIoZGV2aWNlIEZvbyogc3Rh
Z2VJbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAg
ICAgIGApLAorICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVj
a0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBmcmFnbWVudCBmbG9h
dCBmb28oKSA6IGF0dHJpYnV0ZSgwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBl
RXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKICAgICBjaGVj
a0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChgCi0gICAgICAgICAgICBzdHJ1Y3QgQm9vIHsK
LSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKKyAgICAgICAgICAgIHZlcnRleCBmbG9hdCBmb28o
ZGV2aWNlIGZsb2F0KiB4IDogYXR0cmlidXRlKDApKSA6IGF0dHJpYnV0ZSgwKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIDU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9v
IHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZpY2UgQm9v
KiB5OworICAgICAgICBgKSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVy
dGV4IGZsb2F0NCBmb28oZGV2aWNlIGZsb2F0KiB4IDogcmVnaXN0ZXIoYjApKSA6IFNWX1Bvc2l0
aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gQm9vKCk7CisgICAgICAgIGApLAorICAg
ICAgICBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAg
ICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhmbG9hdCB4
IDogcmVnaXN0ZXIoYjApKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKLSAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICAgICAgZSA9PiBlIGluc3RhbmNl
b2YgV1R5cGVFcnJvcik7CiAgICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAot
ICAgICAgICAgICAgc3RydWN0IEJvbyB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IHg7CisgICAg
ICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhkZXZpY2UgZmxvYXQqIHggOiByZWdpc3Rlcih0MCkp
IDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdDQoMSwgMiwgMywg
NCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKLSAgICAgICAgICAg
ICAgICBmbG9hdDQgeDsKLSAgICAgICAgICAgICAgICBkZXZpY2UgQm9vKiB5OworICAgICAgICBg
KSwKKyAgICAgICAgZSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWls
KAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdmVydGV4IGZsb2F0NCBmb28o
VGV4dHVyZTJEPGZsb2F0PiB4IDogcmVnaXN0ZXIoYjApKSA6IFNWX1Bvc2l0aW9uIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmxvYXQ0KDEsIDIsIDMsIDQpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZnJhZ21lbnQgRm9vIGJhcihCb28gc3RhZ2VJbikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gRm9vKCk7CisgICAgICAgIGApLAorICAgICAgICBlID0+IGUg
aW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRv
UHJlcChgCisgICAgICAgICAgICB2ZXJ0ZXggZmxvYXQ0IGZvbyhjb25zdGFudCBmbG9hdFtdIHgg
OiByZWdpc3RlcihzMCkpIDogU1ZfUG9zaXRpb24geworICAgICAgICAgICAgICAgIHJldHVybiBm
bG9hdDQoMSwgMiwgMywgNCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIGApLAotICAgICAgICAo
ZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgICAgICBlID0+IGUgaW5zdGFuY2Vv
ZiBXVHlwZUVycm9yKTsKIH0KIAogdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0aW9uKCkK
QEAgLTU3NTcsNyArNTg4Niw3IEBAIHRlc3RzLnNoYWRlclN0YWdlcyA9IGZ1bmN0aW9uKCkKIHsK
ICAgICBkb1ByZXAoYAogICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKLSAgICAgICAgICAgIGZsb2F0
NCBvdXRwdXQ7CisgICAgICAgICAgICBmbG9hdDQgb3V0cHV0IDogU1ZfVGFyZ2V0MDsKICAgICAg
ICAgfQogICAgICAgICBmcmFnbWVudCBSZXN1bHQgZm9vKCkKICAgICAgICAgewpAQCAtNTc4MSw3
ICs1OTEwLDcgQEAgdGVzdHMuc2hhZGVyU3RhZ2VzID0gZnVuY3Rpb24oKQogICAgIGNoZWNrRmFp
bCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKICAgICAgICAgICAgIHN0cnVjdCBSZXN1bHQgewot
ICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQ7CisgICAgICAgICAgICAgICAgZmxvYXQ0IG91
dHB1dCA6IFNWX1Bvc2l0aW9uOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmVydGV4IFJl
c3VsdCBmb28oKQogICAgICAgICAgICAgewpAQCAtNTc5Nyw3ICs1OTI2LDcgQEAgdGVzdHMuc2hh
ZGVyU3RhZ2VzID0gZnVuY3Rpb24oKQogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9Q
cmVwKGAKICAgICAgICAgICAgIHN0cnVjdCBSZXN1bHQgewotICAgICAgICAgICAgICAgIGZsb2F0
NCBvdXRwdXQ7CisgICAgICAgICAgICAgICAgZmxvYXQ0IG91dHB1dCA6IFNWX1Bvc2l0aW9uOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgdmVydGV4IFJlc3VsdCBmb28oKQogICAgICAgICAg
ICAgewpAQCAtNTgxMSw3ICs1OTQwLDcgQEAgdGVzdHMuc2hhZGVyU3RhZ2VzID0gZnVuY3Rpb24o
KQogICAgIGNoZWNrRmFpbCgKICAgICAgICAgKCkgPT4gZG9QcmVwKGAKICAgICAgICAgICAgIHN0
cnVjdCBSZXN1bHQgewotICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQ7CisgICAgICAgICAg
ICAgICAgZmxvYXQ0IG91dHB1dCA6IFNWX1RhcmdldDA7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBmcmFnbWVudCBSZXN1bHQgZm9vKCkKICAgICAgICAgICAgIHsKQEAgLTU4MjUsNyArNTk1
NCw3IEBAIHRlc3RzLnNoYWRlclN0YWdlcyA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ZhaWwoCiAg
ICAgICAgICgpID0+IGRvUHJlcChgCiAgICAgICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKLSAgICAg
ICAgICAgICAgICBmbG9hdDQgb3V0cHV0OworICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQg
OiBTVl9Qb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZlcnRleCBSZXN1bHQg
Zm9vKCkKICAgICAgICAgICAgIHsKQEAgLTU4MzksNyArNTk2OCw3IEBAIHRlc3RzLnNoYWRlclN0
YWdlcyA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ZhaWwoCiAgICAgICAgICgpID0+IGRvUHJlcChg
CiAgICAgICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKLSAgICAgICAgICAgICAgICBmbG9hdDQgb3V0
cHV0OworICAgICAgICAgICAgICAgIGZsb2F0NCBvdXRwdXQgOiBTVl9UYXJnZXQwOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZnJhZ21lbnQgUmVzdWx0IGZvbygpCiAgICAgICAgICAgICB7
CkBAIC01ODUzLDcgKzU5ODIsNyBAQCB0ZXN0cy5zaGFkZXJTdGFnZXMgPSBmdW5jdGlvbigpCiAg
ICAgY2hlY2tGYWlsKAogICAgICAgICAoKSA9PiBkb1ByZXAoYAogICAgICAgICAgICAgc3RydWN0
IFJlc3VsdCB7Ci0gICAgICAgICAgICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAgICAgICAgICAg
ICBmbG9hdDQgb3V0cHV0IDogU1ZfUG9zaXRpb247CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB2ZXJ0ZXggUmVzdWx0IGZvbygpCiAgICAgICAgICAgICB7CkBAIC01ODY3LDcgKzU5OTYsNyBA
QCB0ZXN0cy5zaGFkZXJTdGFnZXMgPSBmdW5jdGlvbigpCiAgICAgY2hlY2tGYWlsKAogICAgICAg
ICAoKSA9PiBkb1ByZXAoYAogICAgICAgICAgICAgc3RydWN0IFJlc3VsdCB7Ci0gICAgICAgICAg
ICAgICAgZmxvYXQ0IG91dHB1dDsKKyAgICAgICAgICAgICAgICBmbG9hdDQgb3V0cHV0IDogU1Zf
VGFyZ2V0MDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyYWdtZW50IFJlc3VsdCBmb28o
KQogICAgICAgICAgICAgewpAQCAtNjg5NSwxOCArNzAyNCwxMCBAQCB0ZXN0cy5udW1UaHJlYWRz
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIGNvbXB1dGUgdm9pZCBmb28oKSB7CiAgICAgICAgIH0K
IAotICAgICAgICBbbnVtdGhyZWFkcyg2LCA3LCA4KV0KLSAgICAgICAgY29tcHV0ZSB2b2lkIGJh
cigpIHsKLSAgICAgICAgfQotCi0gICAgICAgIFtudW10aHJlYWRzKDksIDEwLCAxMSldCi0gICAg
ICAgIGNvbXB1dGUgdm9pZCBiYXIoZGV2aWNlIGZsb2F0W10gYnVmZmVyKSB7Ci0gICAgICAgIH0K
LQogICAgICAgICBzdHJ1Y3QgUiB7Ci0gICAgICAgICAgICBmbG9hdDQgcG9zaXRpb247CisgICAg
ICAgICAgICBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgICAgICAgfQotICAgICAg
ICB2ZXJ0ZXggUiBiYXooKSB7CisgICAgICAgIHZlcnRleCBSIGJhcigpIHsKICAgICAgICAgICAg
IFIgcjsKICAgICAgICAgICAgIHIucG9zaXRpb24gPSBmbG9hdDQoMSwgMiwgMywgNCk7CiAgICAg
ICAgICAgICByZXR1cm4gcjsKQEAgLTY5MjUsNDUgKzcwNDYsMTAgQEAgdGVzdHMubnVtVGhyZWFk
cyA9IGZ1bmN0aW9uKCkgewogICAgIGlmIChmb28uYXR0cmlidXRlQmxvY2tbMF0ueiAhPSA1KQog
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIidmb28nIG51bXRocmVhZHMgeiBpcyBub3QgNSIpOwog
Ci0gICAgaWYgKHByb2dyYW0uZnVuY3Rpb25zLmdldCgiYmFyIikubGVuZ3RoICE9IDIpCisgICAg
aWYgKHByb2dyYW0uZnVuY3Rpb25zLmdldCgiYmFyIikubGVuZ3RoICE9IDEpCiAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZnVuY3Rpb24gbmFtZWQgJ2JhciciKTsKLSAgICBs
ZXQgYmFyMSA9IG51bGw7Ci0gICAgbGV0IGJhcjIgPSBudWxsOwotICAgIGZvciAobGV0IGJhciBv
ZiBwcm9ncmFtLmZ1bmN0aW9ucy5nZXQoImJhciIpKSB7Ci0gICAgICAgIGlmIChiYXIucGFyYW1l
dGVycy5sZW5ndGggPT0gMCkKLSAgICAgICAgICAgIGJhcjEgPSBiYXI7Ci0gICAgICAgIGVsc2Ug
aWYgKGJhci5wYXJhbWV0ZXJzLmxlbmd0aCA9PSAxKQotICAgICAgICAgICAgYmFyMiA9IGJhcjsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkICdi
YXInIGZ1bmN0aW9uLiIpOwotICAgIH0KLSAgICBpZiAoIWJhcjEpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcigiQ291bGQgbm90IGZpbmQgYXBwcm9wcmlhdGUgJ2JhcicgZnVuY3Rpb24iKTsKLSAg
ICBpZiAoIWJhcjIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgYXBw
cm9wcmlhdGUgJ2JhcicgZnVuY3Rpb24iKTsKLQotICAgIGlmIChiYXIxLmF0dHJpYnV0ZUJsb2Nr
Lmxlbmd0aCAhPSAxKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIidiYXIxJyBkb2Vzbid0IGhh
dmUgbnVtdGhyZWFkcyBhdHRyaWJ1dGUiKTsKLSAgICBpZiAoYmFyMS5hdHRyaWJ1dGVCbG9ja1sw
XS54ICE9IDYpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiJ2JhcjEnIG51bXRocmVhZHMgeCBp
cyBub3QgNiIpOwotICAgIGlmIChiYXIxLmF0dHJpYnV0ZUJsb2NrWzBdLnkgIT0gNykKLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCInYmFyMScgbnVtdGhyZWFkcyB5IGlzIG5vdCA3Iik7Ci0gICAg
aWYgKGJhcjEuYXR0cmlidXRlQmxvY2tbMF0ueiAhPSA4KQotICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIidiYXIxJyBudW10aHJlYWRzIHogaXMgbm90IDgiKTsKLQotICAgIGlmIChiYXIyLmF0dHJp
YnV0ZUJsb2NrLmxlbmd0aCAhPSAxKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIidiYXIyJyBk
b2Vzbid0IGhhdmUgbnVtdGhyZWFkcyBhdHRyaWJ1dGUiKTsKLSAgICBpZiAoYmFyMi5hdHRyaWJ1
dGVCbG9ja1swXS54ICE9IDkpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiJ2JhcjInIG51bXRo
cmVhZHMgeCBpcyBub3QgOSIpOwotICAgIGlmIChiYXIyLmF0dHJpYnV0ZUJsb2NrWzBdLnkgIT0g
MTApCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiJ2JhcjInIG51bXRocmVhZHMgeSBpcyBub3Qg
MTAiKTsKLSAgICBpZiAoYmFyMi5hdHRyaWJ1dGVCbG9ja1swXS56ICE9IDExKQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIidiYXIyJyBudW10aHJlYWRzIHogaXMgbm90IDExIik7Ci0KLSAgICBp
ZiAocHJvZ3JhbS5mdW5jdGlvbnMuZ2V0KCJiYXoiKS5sZW5ndGggIT0gMSkKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBmdW5jdGlvbiBuYW1lZCAnYmF6JyIpOwotICAgIGxl
dCBiYXogPSBwcm9ncmFtLmZ1bmN0aW9ucy5nZXQoImJheiIpWzBdOwotICAgIGlmIChiYXouYXR0
cmlidXRlQmxvY2sgIT0gbnVsbCkKKyAgICBsZXQgYmFyID0gcHJvZ3JhbS5mdW5jdGlvbnMuZ2V0
KCJiYXIiKVswXTsKKyAgICBpZiAoYmFyLmF0dHJpYnV0ZUJsb2NrICE9IG51bGwpCiAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiJ2JheicgaGFzIGF0dHJpYnV0ZSBibG9jayIpOwogCiAgICAgY2hl
Y2tGYWlsKCgpID0+IGRvUHJlcChgCkBAIC05MDYwLDcgKzkxNDYsNyBAQCB0ZXN0cy5ldmFsdWF0
aW9uT3JkZXJGb3JBcmd1bWVudHMgPSAoKSA9PiB7CiAKIHRlc3RzLmNhbm5vdENhbGxBbm90aGVy
RW50cnlQb2ludCA9ICgpID0+IHsKICAgICBjaGVja0ZhaWwoKCkgPT4gZG9QcmVwKGAKLSAgICAg
ICAgc3RydWN0IEZvbyB7IGludCB4OyB9CisgICAgICAgIHN0cnVjdCBGb28geyBpbnQgeCA6IGF0
dHJpYnV0ZSgwKTsgfQogICAgICAgICB2ZXJ0ZXggRm9vIGZvbygpIHsgcmV0dXJuIGJhcigpOyB9
CiAgICAgICAgIHZlcnRleCBGb28gYmFyKCkgeyByZXR1cm4gRm9vKCk7IH0KICAgICBgKSwgZSA9
PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhPZigiaXQgY2Fubm90
IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBleGlzdGluZyBzaGFkZXIiKSAhPT0gLTEpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggYjhmNGRiY2M0ODdjOWU4
MDcyMjBjYjQwMTE5YmU1OWQyZDZlNjVjNi4uNGVhMWI5ZWU0ZmEwNGQwYTUzZWY2ZTJiMDVhYTUz
OGRlODNmMmZhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBA
IC00MCwxMSArNDAsMTMgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgICAgICAgICBmb3IgKGxldCBh
dHRyaWJ1dGUgb2Ygbm9kZS5hdHRyaWJ1dGVCbG9jaykKICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUudmlzaXQodGhpcyk7CiAgICAgICAgIH0KKyAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFu
dGljLCB0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRGdW5jUGFyYW1ldGVyKG5vZGUpCiAg
ICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQo
bm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RnVuY0RlZihub2Rl
KQpAQCAtOTYsNiArOTgsNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZpZWxkKG5vZGUp
CiAgICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlz
aXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0RW51bVR5cGUo
bm9kZSkKQEAgLTM1NSw1ICszNTgsMjEgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgdmlzaXRGdW5j
TnVtVGhyZWFkc0F0dHJpYnV0ZShub2RlKQogICAgIHsKICAgICB9CisKKyAgICB2aXNpdEJ1aWx0
SW5TZW1hbnRpYyhub2RlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXNpdFJlc291cmNlU2VtYW50
aWMobm9kZSkKKyAgICB7CisgICAgfQorCisgICAgdmlzaXRTdGFnZUluT3V0U2VtYW50aWMobm9k
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMobm9kZSkKKyAgICB7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
aW5kZXguaHRtbAppbmRleCBhZTAxMTAwNzA3M2QzZWUyNjE0YjYwYTQxMzgwOGE5MzUzMmRmYmEw
Li5iMzU1NjI0NWNhMmI1NDFkYTFkY2JjOWIzYmJlNzM1Y2FiOTE4YzRhIDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKQEAgLTEyLDYgKzEyLDcgQEAKIDxzY3JpcHQg
c3JjPSJDcmVhdGVMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvcGVy
dHlBY2Nlc3NFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJOYXRpdmVUeXBl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiAKIDxz
Y3JpcHQgc3JjPSJBZGRyZXNzU3BhY2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkFsbG9j
YXRlQXRFbnRyeVBvaW50cy5qcyI+PC9zY3JpcHQ+CkBAIC0yMyw2ICsyNCw3IEBACiA8c2NyaXB0
IHNyYz0iQmxvY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkJvb2xMaXRlcmFsLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCcmVhay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
QnVpbHRJblNlbWFudGljLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluTWF0cml4
R2V0dGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluTWF0cml4U2V0dGVyLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJCdWlsdGluVmVjdG9yR2V0dGVyLmpzIj48L3Njcmlw
dD4KQEAgLTExOCwxMCArMTIwLDEzIEBACiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVUeXBlRGVmcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iUmVzb3VyY2VTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmV0dXJu
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXR1cm5DaGVja2VyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJSZXR1cm5FeGNlcHRpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlNhbXBsZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iU3RhZ2VJbk91dFNlbWFudGlj
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJTdGFuZGFyZExpYnJhcnkuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IlN0YXRlbWVudENsb25lci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iU3RydWN0TGF5b3V0QnVpbGRlci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>