<?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>47360</bug_id>
          
          <creation_ts>2010-10-07 10:19:29 -0700</creation_ts>
          <short_desc>Web Inspector: all native breakpoints should inherit from NativeBreakpoint</short_desc>
          <delta_ts>2010-10-12 02:36:00 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291093</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-07 10:19:29 -0700</bug_when>
    <thetext>Web Inspector: all native breakpoints should inherit from NativeBreakpoint

DOM, EventListener and XHR breakpoints should be subclasses of NativeBreakpoint. Stuff that depends on breakpoint type, should be implemented in corresponding subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291103</commentid>
    <comment_count>1</comment_count>
      <attachid>70112</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-07 10:25:56 -0700</bug_when>
    <thetext>Created attachment 70112
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291668</commentid>
    <comment_count>2</comment_count>
      <attachid>70112</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-08 08:32:04 -0700</bug_when>
    <thetext>Comment on attachment 70112
Patch.

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

&gt; WebCore/inspector/InspectorDOMAgent.cpp:781
&gt; +    pair&lt;long, long&gt; breakpoint = m_idToBreakpoint.take(breakpointId);

Could you typedef this in header so that we knew what is going on.

&gt; WebCore/inspector/front-end/BreakpointManager.js:138
&gt; +        if (!(nodeId in this._domPathCache))

Please add // FIXME:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292892</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-12 02:36:00 -0700</bug_when>
    <thetext>Committed r69567: &lt;http://trac.webkit.org/changeset/69567&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70112</attachid>
            <date>2010-10-07 10:25:56 -0700</date>
            <delta_ts>2010-10-08 08:32:04 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>57663</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDFjMGUwMi4uMDYyZDczMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAxMC0xMC0wNyAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvcmluZyBvZiBuYXRp
dmUgYnJlYWtwb2ludHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NzM2MAorCisgICAgICAgIE1ha2UgRE9NLCBFdmVudExpc3RlbmVyIGFuZCBYSFIg
YnJlYWtwb2ludHMgc3ViY2xhc3NlcyBvZiBOYXRpdmVCcmVha3BvaW50IGNsYXNzLgorICAgICAg
ICBNb3ZlIHN0dWZmIHRoYXQgZGVwZW5kcyBvbiBicmVha3BvaW50IHR5cGUgdG8gY29ycmVzcG9u
ZGluZyBzdWJjbGFzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVOYXRpdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmZpbmRFdmVudExpc3RlbmVyQnJl
YWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpmaW5kWEhS
QnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlQnJlYWtwb2lu
dElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9N
QXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1h
bmFnZXIucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50
TWFuYWdlci5wcm90b3R5cGUuY3JlYXRlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZUV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUuY3JlYXRlWEhSQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dE1hbmFnZXIucHJvdG90eXBlLl9yZW1vdmVOYXRpdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUuX3NldE5hdGl2ZUJyZWFrcG9p
bnRPbkJhY2tlbmQuZGlkU2V0TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9zZXROYXRpdmVCcmVha3BvaW50T25CYWNr
ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUu
ZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2Vy
LnByb3RvdHlwZS5kZWJ1Z2dlclJlc3VtZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5yZXN0b3JlRE9NQnJlYWtwb2ludHMucmVzdG9yZUJyZWFr
cG9pbnRzRm9yTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
cHJvdG90eXBlLnJlc3RvcmVET01CcmVha3BvaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2lu
dC5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3Bv
aW50LnByb3RvdHlwZS5nZXQgX2Zyb250ZW5kSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5h
dGl2ZUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBfdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmF0aXZlQnJlYWtwb2ludC5wcm90b3R5cGUuX2NvbXBhcmUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQucHJvdG90eXBlLl9vblJlbW92ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJl
YWtwb2ludC5wcm90b3R5cGUuY2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQucHJvdG90eXBlLmNvbXBhcmVUbyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJl
YWtwb2ludC5wcm90b3R5cGUucG9wdWxhdGVMYWJlbEVsZW1lbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLnBvcHVsYXRlU3RhdHVzTWVzc2FnZUVsZW1l
bnQuZm9ybWF0dGVycy5zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnBy
b3RvdHlwZS5wb3B1bGF0ZVN0YXR1c01lc3NhZ2VFbGVtZW50LmFwcGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUucG9wdWxhdGVTdGF0dXNNZXNzYWdl
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUu
X2NvbmRpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5
cGUuX29uUmVtb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQucHJv
dG90eXBlLmNvbXBhcmVUbyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnQucHJvdG90eXBlLmxhYmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyQnJlYWtwb2ludC5wcm90b3R5cGUucG9wdWxhdGVTdGF0dXNNZXNzYWdlRWxlbWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQucHJvdG90eXBl
Ll9jb25kaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQucHJvdG90eXBlLmNvbXBhcmVUbyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuWEhSQnJlYWtwb2ludC5wcm90b3R5cGUucG9wdWxhdGVMYWJl
bEVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQucHJvdG90eXBl
LnBvcHVsYXRlU3RhdHVzTWVzc2FnZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhI
UkJyZWFrcG9pbnQucHJvdG90eXBlLl9jb25kaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmRvbUJyZWFrcG9pbnRUeXBlTGFiZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRvbUJyZWFr
cG9pbnRUeXBlQ29udGV4dE1lbnVMYWJlbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5wcm90b3R5
cGUuX2JyZWFrcG9pbnRDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3BvcHVsYXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUucmVnaXN0ZXJTaG9ydGN1dHMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5fYnJlYWtw
b2ludEhpdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01B
Z2VudC5wcm90b3R5cGUuX3NldERvY3VtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01B
Z2VudC5wcm90b3R5cGUuX3JlbW92ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxl
bWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNyZWF0ZURP
TUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuYnJlYWtwb2ludEFkZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5jcmVhdGVET01CcmVha3BvaW50c1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5yZXNldCk6CisKIDIwMTAtMTAtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsCmluZGV4IDhhMTYwYjguLmU0MDA2MDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbApAQCAtMTM1LDggKzEzNSw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2hhbmRs
ZXI9RGVidWddIHZvaWQgZWRpdFNjcmlwdFNvdXJjZShpbiBTdHJpbmcgc291cmNlSUQsIGluIFN0
cmluZyBuZXdDb250ZW50LCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQgU3RyaW5nIHJlc3VsdCwg
b3V0IFZhbHVlIG5ld0NhbGxGcmFtZXMpOwogICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCBn
ZXRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHNjcmlwdFNvdXJj
ZSk7CiAKLSAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBzZXROYXRpdmVCcmVha3Bv
aW50KGluIE9iamVjdCBicmVha3BvaW50LCBvdXQgdW5zaWduZWQgaW50IGJyZWFrcG9pbnRJZCk7
Ci0gICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgcmVtb3ZlTmF0aXZlQnJlYWtwb2lu
dChpbiB1bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkKTsKKyAgICAgICAgW2hhbmRsZXI9Q29udHJv
bGxlcl0gdm9pZCBzZXROYXRpdmVCcmVha3BvaW50KGluIE9iamVjdCBicmVha3BvaW50LCBvdXQg
U3RyaW5nIGJyZWFrcG9pbnRJZCk7CisgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQg
cmVtb3ZlTmF0aXZlQnJlYWtwb2ludChpbiBTdHJpbmcgYnJlYWtwb2ludElkKTsKIAogICAgICAg
ICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGVuYWJsZVByb2ZpbGVyKGluIGJvb2xlYW4gYWx3
YXlzKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBkaXNhYmxlUHJvZmlsZXIo
aW4gYm9vbGVhbiBhbHdheXMpOwpAQCAtMTcxLDggKzE3MSw2IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICAgICAgW2hhbmRsZXI9RE9NXSB2b2lkIHBlcmZvcm1TZWFyY2goaW4gU3RyaW5nIHF1ZXJ5LCBp
biBib29sZWFuIHJ1blN5bmNocm9ub3VzbHkpOwogICAgICAgICBbaGFuZGxlcj1ET01dIHZvaWQg
c2VhcmNoQ2FuY2VsZWQoKTsKICAgICAgICAgW2hhbmRsZXI9RE9NXSB2b2lkIHB1c2hOb2RlQnlQ
YXRoVG9Gcm9udGVuZChpbiBTdHJpbmcgcGF0aCwgb3V0IGxvbmcgbm9kZUlkKTsKLSAgICAgICAg
W2hhbmRsZXI9RE9NXSB2b2lkIHNldERPTUJyZWFrcG9pbnQoaW4gbG9uZyBub2RlSWQsIGluIGxv
bmcgdHlwZSk7Ci0gICAgICAgIFtoYW5kbGVyPURPTV0gdm9pZCByZW1vdmVET01CcmVha3BvaW50
KGluIGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogCiAgICAgICAgIFtoYW5kbGVyPUNvbnRy
b2xsZXJdIHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICAgICAgW2hhbmRsZXI9Q29u
dHJvbGxlcl0gdm9pZCBoaWdobGlnaHRET01Ob2RlKGluIGxvbmcgbm9kZUlkKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMWI2Njg1MS4uYzExMzkwYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEzMiw4ICsx
MzIsOSBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZVN0
YXRlTmFtZSA9ICJwYXVzZU9uRXhjZXB0aW9uc1N0YQogCiBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHROYW1lID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0
IjsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlID0g
IlhIUiI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZG9tTmF0aXZlQnJlYWtwb2ludFR5cGUg
PSAiRE9NIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBldmVudExpc3RlbmVyTmF0aXZlQnJl
YWtwb2ludFR5cGUgPSAiRXZlbnRMaXN0ZW5lciI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
eGhyTmF0aXZlQnJlYWtwb2ludFR5cGUgPSAiWEhSIjsKIAogY29uc3QgY2hhciogY29uc3QgSW5z
cGVjdG9yQ29udHJvbGxlcjo6RWxlbWVudHNQYW5lbCA9ICJlbGVtZW50cyI7CiBjb25zdCBjaGFy
KiBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpDb25zb2xlUGFuZWwgPSAiY29uc29sZSI7CkBA
IC03ODgsNyArNzg5LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICAgICAgbV9uYXRpdmVCcmVha3BvaW50cy5j
bGVhcigpOwogICAgICAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOwotICAg
ICAgICBtX2V2ZW50TmFtZVRvQnJlYWtwb2ludElkLmNsZWFyKCk7CiAgICAgICAgIG1fWEhSQnJl
YWtwb2ludHMuY2xlYXIoKTsKICAgICAgICAgbV9sYXN0QnJlYWtwb2ludElkID0gMDsKICNlbmRp
ZgpAQCAtMTY3OSw5ICsxNjc5LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUo
KQogICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnJlc3VtZSgpOwogfQogCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnNldE5hdGl2ZUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJyZWFrcG9pbnQsIHVuc2lnbmVkIGludCogYnJlYWtwb2ludElkKQordm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzZXROYXRpdmVCcmVha3BvaW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBicmVha3BvaW50LCBTdHJpbmcqIGJyZWFrcG9pbnRJZCkKIHsKLSAgICAqYnJlYWtwb2lu
dElkID0gMDsKKyAgICAqYnJlYWtwb2ludElkID0gIiI7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAg
aWYgKCFicmVha3BvaW50LT5nZXRTdHJpbmcoInR5cGUiLCAmdHlwZSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE2OTIsNDcgKzE2OTIsNjEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRO
YXRpdmVCcmVha3BvaW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3AKICAgICAg
ICAgU3RyaW5nIHVybDsKICAgICAgICAgaWYgKCFjb25kaXRpb24tPmdldFN0cmluZygidXJsIiwg
JnVybCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICpicmVha3BvaW50SWQgPSArK21f
bGFzdEJyZWFrcG9pbnRJZDsKLSAgICAgICAgbV9uYXRpdmVCcmVha3BvaW50cy5zZXQoKmJyZWFr
cG9pbnRJZCwgIlhIUiIpOworICAgICAgICAqYnJlYWtwb2ludElkID0gU3RyaW5nOjpudW1iZXIo
KyttX2xhc3RCcmVha3BvaW50SWQpOwogICAgICAgICBtX1hIUkJyZWFrcG9pbnRzLnNldCgqYnJl
YWtwb2ludElkLCB1cmwpOworICAgICAgICBtX25hdGl2ZUJyZWFrcG9pbnRzLnNldCgqYnJlYWtw
b2ludElkLCB0eXBlKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gZXZlbnRMaXN0ZW5lck5hdGl2
ZUJyZWFrcG9pbnRUeXBlKSB7CiAgICAgICAgIFN0cmluZyBldmVudE5hbWU7CiAgICAgICAgIGlm
ICghY29uZGl0aW9uLT5nZXRTdHJpbmcoImV2ZW50TmFtZSIsICZldmVudE5hbWUpKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAobV9ldmVudE5hbWVUb0JyZWFrcG9pbnRJZC5jb250
YWlucyhldmVudE5hbWUpKQorICAgICAgICBpZiAobV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHMu
Y29udGFpbnMoZXZlbnROYW1lKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgKmJyZWFr
cG9pbnRJZCA9IGV2ZW50TmFtZTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHMu
YWRkKGV2ZW50TmFtZSk7CisgICAgICAgIG1fbmF0aXZlQnJlYWtwb2ludHMuc2V0KCpicmVha3Bv
aW50SWQsIHR5cGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBkb21OYXRpdmVCcmVha3BvaW50
VHlwZSkgeworICAgICAgICBpZiAoIW1fZG9tQWdlbnQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGRvdWJsZSBub2RlSWROdW1iZXI7CisgICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRO
dW1iZXIoIm5vZGVJZCIsICZub2RlSWROdW1iZXIpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAqYnJlYWtwb2ludElkID0gKyttX2xhc3RCcmVha3BvaW50SWQ7Ci0gICAgICAgIG1fbmF0
aXZlQnJlYWtwb2ludHMuc2V0KCpicmVha3BvaW50SWQsICJFdmVudExpc3RlbmVyIik7Ci0gICAg
ICAgIG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLnNldCgqYnJlYWtwb2ludElkLCBldmVudE5h
bWUpOwotICAgICAgICBtX2V2ZW50TmFtZVRvQnJlYWtwb2ludElkLnNldChldmVudE5hbWUsICpi
cmVha3BvaW50SWQpOworICAgICAgICBkb3VibGUgZG9tQnJlYWtwb2ludFR5cGVOdW1iZXI7Cisg
ICAgICAgIGlmICghY29uZGl0aW9uLT5nZXROdW1iZXIoInR5cGUiLCAmZG9tQnJlYWtwb2ludFR5
cGVOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBsb25nIG5vZGVJZCA9IChs
b25nKSBub2RlSWROdW1iZXI7CisgICAgICAgIGxvbmcgZG9tQnJlYWtwb2ludFR5cGUgPSAobG9u
ZykgZG9tQnJlYWtwb2ludFR5cGVOdW1iZXI7CisgICAgICAgICpicmVha3BvaW50SWQgPSBtX2Rv
bUFnZW50LT5zZXRET01CcmVha3BvaW50KG5vZGVJZCwgZG9tQnJlYWtwb2ludFR5cGUpOworICAg
ICAgICBpZiAoIWJyZWFrcG9pbnRJZC0+aXNFbXB0eSgpKQorICAgICAgICAgICAgbV9uYXRpdmVC
cmVha3BvaW50cy5zZXQoKmJyZWFrcG9pbnRJZCwgdHlwZSk7CiAgICAgfQogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnJlbW92ZU5hdGl2ZUJyZWFrcG9pbnQodW5zaWduZWQgaW50IGJy
ZWFrcG9pbnRJZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlTmF0aXZlQnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBTdHJpbmcgdHlwZSA9IG1f
bmF0aXZlQnJlYWtwb2ludHMudGFrZShicmVha3BvaW50SWQpOwogICAgIGlmICh0eXBlID09IHho
ck5hdGl2ZUJyZWFrcG9pbnRUeXBlKQogICAgICAgICBtX1hIUkJyZWFrcG9pbnRzLnJlbW92ZShi
cmVha3BvaW50SWQpOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gZXZlbnRMaXN0ZW5lck5hdGl2ZUJy
ZWFrcG9pbnRUeXBlKSB7Ci0gICAgICAgIFN0cmluZyBldmVudE5hbWUgPSBtX2V2ZW50TGlzdGVu
ZXJCcmVha3BvaW50cy50YWtlKGJyZWFrcG9pbnRJZCk7Ci0gICAgICAgIG1fZXZlbnROYW1lVG9C
cmVha3BvaW50SWQucmVtb3ZlKGV2ZW50TmFtZSk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBldmVu
dExpc3RlbmVyTmF0aXZlQnJlYWtwb2ludFR5cGUpCisgICAgICAgIG1fZXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50SWQpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gZG9t
TmF0aXZlQnJlYWtwb2ludFR5cGUpIHsKKyAgICAgICAgaWYgKG1fZG9tQWdlbnQpCisgICAgICAg
ICAgICBtX2RvbUFnZW50LT5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnRJZCk7CiAgICAg
fQogfQogCi11bnNpZ25lZCBpbnQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZmluZEV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQorU3RyaW5nIEluc3BlY3RvckNv
bnRyb2xsZXI6OmZpbmRFdmVudExpc3RlbmVyQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGV2ZW50
TmFtZSkKIHsKLSAgICByZXR1cm4gbV9ldmVudE5hbWVUb0JyZWFrcG9pbnRJZC5nZXQoZXZlbnRO
YW1lKTsKKyAgICByZXR1cm4gbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHMuY29udGFpbnMoZXZl
bnROYW1lKSA/IGV2ZW50TmFtZSA6ICIiOwogfQogCi11bnNpZ25lZCBpbnQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZmluZFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpCitTdHJpbmcgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZmluZFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpCiB7
Ci0gICAgZm9yIChIYXNoTWFwPHVuc2lnbmVkIGludCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBt
X1hIUkJyZWFrcG9pbnRzLmJlZ2luKCk7IGl0ICE9IG1fWEhSQnJlYWtwb2ludHMuZW5kKCk7ICsr
aXQpIHsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1f
WEhSQnJlYWtwb2ludHMuYmVnaW4oKTsgaXQgIT0gbV9YSFJCcmVha3BvaW50cy5lbmQoKTsgKytp
dCkgewogICAgICAgICBpZiAodXJsLmNvbnRhaW5zKGl0LT5zZWNvbmQpKQogICAgICAgICAgICAg
cmV0dXJuIGl0LT5maXJzdDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICIiOwog
fQotCiAjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpldmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAwYzI4ODVlLi5hYjM4YThiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yNTksOCArMjU5LDggQEAgcHVi
bGljOgogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7
IHJldHVybiBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7IH0KICAgICB2b2lkIHJlc3VtZSgpOwogCi0g
ICAgdm9pZCBzZXROYXRpdmVCcmVha3BvaW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
cmVha3BvaW50LCB1bnNpZ25lZCBpbnQqIGJyZWFrcG9pbnRJZCk7Ci0gICAgdm9pZCByZW1vdmVO
YXRpdmVCcmVha3BvaW50KHVuc2lnbmVkIGludCBicmVha3BvaW50SWQpOworICAgIHZvaWQgc2V0
TmF0aXZlQnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCwg
U3RyaW5nKiBicmVha3BvaW50SWQpOworICAgIHZvaWQgcmVtb3ZlTmF0aXZlQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZChsb25nIHRlc3RDYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsK
QEAgLTMwMCw4ICszMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9u
KGJvb2wpOwogICAgIHZvaWQgZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQoYm9vbCBhbHdheXMp
OwogCi0gICAgdW5zaWduZWQgaW50IGZpbmRFdmVudExpc3RlbmVyQnJlYWtwb2ludChjb25zdCBT
dHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdW5zaWduZWQgaW50IGZpbmRYSFJCcmVha3BvaW50KGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBmaW5kRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBldmVudE5hbWUpOworICAgIFN0cmluZyBmaW5kWEhSQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIHVybCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgdm9pZCBz
ZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UpOwpAQCAtMzkxLDEwICszOTEsMTAgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd247CiAgICAgT3duUHRy
PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IG1fZGVidWdnZXJBZ2VudDsKIAotICAgIEhhc2hNYXA8
dW5zaWduZWQgaW50LCBTdHJpbmc+IG1fbmF0aXZlQnJlYWtwb2ludHM7Ci0gICAgSGFzaE1hcDx1
bnNpZ25lZCBpbnQsIFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHM7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIHVuc2lnbmVkIGludD4gbV9ldmVudE5hbWVUb0JyZWFrcG9pbnRJZDsKLSAg
ICBIYXNoTWFwPHVuc2lnbmVkIGludCwgU3RyaW5nPiBtX1hIUkJyZWFrcG9pbnRzOworICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbmF0aXZlQnJlYWtwb2ludHM7CisgICAgSGFzaFNldDxT
dHJpbmc+IG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1fWEhSQnJlYWtwb2ludHM7CisKICAgICB1bnNpZ25lZCBpbnQgbV9sYXN0QnJlYWtw
b2ludElkOwogCiAgICAgT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IG1fcHJvZmlsZXJB
Z2VudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBhMmEwMmQw
Li41ZTI5NDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0y
MDUsNyArMjA1LDggQEAgcHVibGljOgogZW51bSBET01CcmVha3BvaW50VHlwZSB7CiAgICAgU3Vi
dHJlZU1vZGlmaWVkID0gMCwKICAgICBBdHRyaWJ1dGVNb2RpZmllZCwKLSAgICBOb2RlUmVtb3Zl
ZAorICAgIE5vZGVSZW1vdmVkLAorICAgIERPTUJyZWFrcG9pbnRUeXBlc0NvdW50CiB9OwogCiBj
b25zdCB1aW50MzJfdCBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2sgPSAoMSA8PCBT
dWJ0cmVlTW9kaWZpZWQpOwpAQCAtNzUzLDExICs3NTQsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c2VhcmNoQ2FuY2VsZWQoKQogICAgIG1fc2VhcmNoUmVzdWx0cy5jbGVhcigpOwogfQog
Ci12b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBs
b25nIHR5cGUpCitTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9u
ZyBub2RlSWQsIGxvbmcgdHlwZSkKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJ
ZCk7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAiIjsK
KworICAgIFN0cmluZyBicmVha3BvaW50SWQgPSBjcmVhdGVCcmVha3BvaW50SWQobm9kZUlkLCB0
eXBlKTsKKyAgICBpZiAobV9pZFRvQnJlYWtwb2ludC5jb250YWlucyhicmVha3BvaW50SWQpKQor
ICAgICAgICByZXR1cm4gIiI7CisKKyAgICBtX2lkVG9CcmVha3BvaW50LnNldChicmVha3BvaW50
SWQsIHN0ZDo6bWFrZV9wYWlyKG5vZGVJZCwgdHlwZSkpOwogCiAgICAgdWludDMyX3Qgcm9vdEJp
dCA9IDEgPDwgdHlwZTsKICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtX2JyZWFrcG9pbnRz
LmdldChub2RlKSB8IHJvb3RCaXQpOwpAQCAtNzY1LDE1ICs3NzIsMTkgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0RE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQogICAg
ICAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hp
bGQgPSBpbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKICAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7CiAgICAgfQorCisgICAgcmV0dXJuIGJy
ZWFrcG9pbnRJZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlRE9NQnJlYWtw
b2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVt
b3ZlRE9NQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKLSAgICBOb2Rl
KiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CisgICAgcGFpcjxsb25nLCBsb25nPiBicmVha3Bv
aW50ID0gbV9pZFRvQnJlYWtwb2ludC50YWtlKGJyZWFrcG9pbnRJZCk7CisKKyAgICBOb2RlKiBu
b2RlID0gbm9kZUZvcklkKGJyZWFrcG9pbnQuZmlyc3QpOwogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdWludDMyX3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICB1aW50
MzJfdCByb290Qml0ID0gMSA8PCBicmVha3BvaW50LnNlY29uZDsKICAgICB1aW50MzJfdCBtYXNr
ID0gbV9icmVha3BvaW50cy5nZXQobm9kZSkgJiB+cm9vdEJpdDsKICAgICBpZiAobWFzaykKICAg
ICAgICAgbV9icmVha3BvaW50cy5zZXQobm9kZSwgbWFzayk7CkBAIC04NDUsMTEgKzg1Niw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckRPTUFnZW50OjpkZXNjcmlwdGlv
bkZvckRPTUV2ZW50KE5vZGUqIHRhcmdlCiAKICAgICBsb25nIGJyZWFrcG9pbnRPd25lck5vZGVJ
ZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoYnJlYWtwb2ludE93bmVyKTsKICAgICBBU1NF
UlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGJyZWFrcG9pbnQt
PnNldE51bWJlcigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICBicmVha3Bv
aW50LT5zZXROdW1iZXIoInR5cGUiLCBicmVha3BvaW50VHlwZSk7Ci0gICAgZGVzY3JpcHRpb24t
PnNldE9iamVjdCgiYnJlYWtwb2ludCIsIGJyZWFrcG9pbnQpOworICAgIGRlc2NyaXB0aW9uLT5z
ZXRTdHJpbmcoImJyZWFrcG9pbnRJZCIsIGNyZWF0ZUJyZWFrcG9pbnRJZChicmVha3BvaW50T3du
ZXJOb2RlSWQsIGJyZWFrcG9pbnRUeXBlKSk7CiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9
CkBAIC0xMDkzLDE0ICsxMTAwLDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92
ZURPTU5vZGUoTm9kZSogbm9kZSkKIAogICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgewog
ICAgICAgICAvLyBSZW1vdmUgc3VidHJlZSBicmVha3BvaW50cy4KLSAgICAgICAgbV9icmVha3Bv
aW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgIHJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZShub2Rl
KTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiBzdGFjaygxLCBpbm5lckZpcnN0Q2hpbGQobm9kZSkp
OwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOwog
ICAgICAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgaWYgKCFub2RlKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1v
dmUobm9kZSk7CisgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50c0Zvck5vZGUobm9kZSk7CiAg
ICAgICAgICAgICBzdGFjay5hcHBlbmQoaW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKICAgICAgICAg
ICAgIHN0YWNrLmFwcGVuZChpbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKICAgICAgICAgfSB3aGls
ZSAoIXN0YWNrLmlzRW1wdHkoKSk7CkBAIC0xMTY3LDYgKzExNzQsMjUgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIG5vZGUsIHVpbnQzMl90
IHJvb3RNYXNrLAogICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIG5ld1Jv
b3RNYXNrLCBzZXQpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVha3Bv
aW50c0Zvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICB1aW50MzJfdCBtYXNrID0gbV9icmVha3Bv
aW50cy50YWtlKG5vZGUpOworICAgIGlmICghbWFzaykKKyAgICAgICAgcmV0dXJuOworICAgIGxv
bmcgbm9kZUlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChub2RlKTsKKyAgICBpZiAoIW5v
ZGVJZCkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgRE9N
QnJlYWtwb2ludFR5cGVzQ291bnQ7ICsrdHlwZSkgeworICAgICAgICBpZiAobWFzayAmJiAoMSA8
PCB0eXBlKSkKKyAgICAgICAgICAgIG1faWRUb0JyZWFrcG9pbnQucmVtb3ZlKGNyZWF0ZUJyZWFr
cG9pbnRJZChub2RlSWQsIHR5cGUpKTsKKyAgICB9Cit9CisKK1N0cmluZyBJbnNwZWN0b3JET01B
Z2VudDo6Y3JlYXRlQnJlYWtwb2ludElkKGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpCit7CisgICAg
cmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJkb206JWxkOiVsZCIsIG5vZGVJZCwgdHlwZSk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIG5vZGVJZCwgYm9vbCBhdXRo
b3JPbmx5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBzdHlsZXMpCiB7CiAgICAgTm9kZSogbm9k
ZSA9IG5vZGVGb3JJZChub2RlSWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
aW5kZXggMjcyN2FjMi4uZGNkNDQ3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oCkBAIC0xMjAsOCArMTIwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGFkZEluc3BlY3RlZE5vZGUobG9uZyBub2RlSWQpOwogICAgICAgICB2b2lkIHBlcmZvcm1TZWFy
Y2goY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9u
b3VzbHkpOwogICAgICAgICB2b2lkIHNlYXJjaENhbmNlbGVkKCk7Ci0gICAgICAgIHZvaWQgc2V0
RE9NQnJlYWtwb2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKTsKLSAgICAgICAgdm9pZCByZW1v
dmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOwogICAgICAgICBib29sIHNo
b3VsZEJyZWFrT25Ob2RlSW5zZXJ0aW9uKE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIGRldGFpbHMpOwogICAgICAgICBib29sIHNob3VsZEJyZWFr
T25Ob2RlUmVtb3ZhbChOb2RlKiBub2RlLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiogZGV0
YWlscyk7CiAgICAgICAgIGJvb2wgc2hvdWxkQnJlYWtPbkF0dHJpYnV0ZU1vZGlmaWNhdGlvbihF
bGVtZW50KiBlbGVtZW50LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiogZGV0YWlscyk7CkBA
IC0xNjEsNiArMTU5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBk
b2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0OwogCisgICAgICAgIFN0
cmluZyBzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOworICAgICAgICB2
b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOworCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzdGFydExpc3RlbmluZyhEb2N1bWVudCogZG9jdW1l
bnQpOwogICAgICAgICB2b2lkIHN0b3BMaXN0ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKQEAg
LTE3Niw3ICsxNzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBoYXNC
cmVha3BvaW50KE5vZGUqIG5vZGUsIGxvbmcgdHlwZSk7CiAgICAgICAgIHZvaWQgdXBkYXRlU3Vi
dHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVl
KTsKKyAgICAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50c0Zvck5vZGUoTm9kZSogbm9kZSk7CiAg
ICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSogdGFyZ2V0LCBsb25nIGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbik7CisgICAg
ICAgIFN0cmluZyBjcmVhdGVCcmVha3BvaW50SWQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSk7CiAK
ICAgICAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQXR0cmli
dXRlU3R5bGVzKEVsZW1lbnQqIGVsZW1lbnQpOwogICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBidWlsZEFycmF5Rm9yQ1NTUnVsZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENT
U1J1bGVMaXN0Kik7CkBAIC0yMzIsNiArMjM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fc2VhcmNoUmVzdWx0czsKICAgICAgICAgVmVj
dG9yPGxvbmc+IG1faW5zcGVjdGVkTm9kZXM7CiAgICAgICAgIEhhc2hNYXA8Tm9kZSosIHVpbnQz
Ml90PiBtX2JyZWFrcG9pbnRzOworICAgICAgICBIYXNoTWFwPFN0cmluZywgcGFpcjxsb25nLCBs
b25nPiA+IG1faWRUb0JyZWFrcG9pbnQ7CiAgICAgfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNTIzMGI4OC4uMzgyNTA0MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNDgsNyArNDgs
NyBAQCBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIAogZW51bSBEZWJ1Z2dlckV2ZW50VHlwZSB7CiAg
ICAgSmF2YVNjcmlwdFBhdXNlRXZlbnRUeXBlLAotICAgIERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2
ZW50VHlwZSwKKyAgICBKYXZhU2NyaXB0QnJlYWtwb2ludEV2ZW50VHlwZSwKICAgICBOYXRpdmVC
cmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDc1MmYxZWQuLjQyNzcyOTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5v
ZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlYwogICAgICAgICByZXR1cm47CiAgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZXZlbnREYXRhOwogICAgIGlmIChkb21BZ2VudC0+
c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24obm9kZSwgcGFyZW50LCAmZXZlbnREYXRhKSkKLSAg
ICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKERPTUJyZWFrcG9pbnREZWJ1Z2dlckV2
ZW50VHlwZSwgZXZlbnREYXRhKTsKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFt
KE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKICNlbmRpZgog
fQogCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjCiAgICAgICAgIHJl
dHVybjsKICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7CiAgICAgaWYg
KGRvbUFnZW50LT5zaG91bGRCcmVha09uTm9kZVJlbW92YWwobm9kZSwgJmV2ZW50RGF0YSkpCi0g
ICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShET01CcmVha3BvaW50RGVidWdnZXJF
dmVudFR5cGUsIGV2ZW50RGF0YSk7CisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3Jh
bShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CiAjZW5kaWYK
IH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjCiAgICAgICAg
IHJldHVybjsKICAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBldmVudERhdGE7CiAgICAg
aWYgKGRvbUFnZW50LT5zaG91bGRCcmVha09uQXR0cmlidXRlTW9kaWZpY2F0aW9uKGVsZW1lbnQs
ICZldmVudERhdGEpKQotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oRE9NQnJl
YWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOworICAgICAgICBkZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVu
dERhdGEpOwogI2VuZGlmCiB9CiAKQEAgLTEzOSwxMyArMTM5LDEyIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpCiAgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICB1bnNpZ25lZCBpbnQgYnJlYWtwb2ludElkID0gaW5zcGVjdG9yQ29udHJvbGxlci0+ZmluZFhI
UkJyZWFrcG9pbnQodXJsKTsKLSAgICBpZiAoIWJyZWFrcG9pbnRJZCkKKyAgICBTdHJpbmcgYnJl
YWtwb2ludElkID0gaW5zcGVjdG9yQ29udHJvbGxlci0+ZmluZFhIUkJyZWFrcG9pbnQodXJsKTsK
KyAgICBpZiAoYnJlYWtwb2ludElkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICBldmVudERhdGEtPnNldE51bWJlcigiYnJlYWtwb2ludElkIiwgYnJlYWtwb2lu
dElkKTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygidHlwZSIsICJYSFIiKTsKKyAgICBldmVu
dERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludElkIiwgYnJlYWtwb2ludElkKTsKICAgICBldmVu
dERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwogI2Vu
ZGlmCkBAIC0yMDUsMTEgKzIwNCwxMCBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSQogewogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50
LmdldCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBicmVha3BvaW50SWQgPSBpbnNwZWN0b3JD
b250cm9sbGVyLT5maW5kRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoZXZlbnQudHlwZSgpKTsKLSAg
ICAgICAgaWYgKGJyZWFrcG9pbnRJZCkgeworICAgICAgICBTdHJpbmcgYnJlYWtwb2ludElkID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+ZmluZEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGV2ZW50LnR5
cGUoKSk7CisgICAgICAgIGlmICghYnJlYWtwb2ludElkLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgIGV2ZW50RGF0YS0+c2V0TnVtYmVyKCJicmVha3BvaW50SWQi
LCBicmVha3BvaW50SWQpOwotICAgICAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInR5cGUi
LCAiRXZlbnRMaXN0ZW5lciIpOworICAgICAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJy
ZWFrcG9pbnRJZCIsIGJyZWFrcG9pbnRJZCk7CiAgICAgICAgICAgICBldmVudERhdGEtPnNldFN0
cmluZygiZXZlbnROYW1lIiwgZXZlbnQudHlwZSgpKTsKICAgICAgICAgICAgIGRlYnVnZ2VyQWdl
bnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoTmF0aXZlQnJlYWtwb2ludERlYnVnZ2Vy
RXZlbnRUeXBlLCBldmVudERhdGEpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKaW5kZXggZTEyYzhhNy4uODQ3NmIwMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2Vy
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5q
cwpAQCAtMjcsMTUgKzI3LDEwIEBACiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIgPSBm
dW5jdGlvbigpCiB7CiAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsKLSAgICB0aGlzLl94aHJC
cmVha3BvaW50cyA9IHt9OworICAgIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzID0ge307CisgICAg
dGhpcy5fZG9tQnJlYWtwb2ludHMgPSB7fTsKIH0KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRN
YW5hZ2VyLkRlYnVnZ2VyRXZlbnRUeXBlID0gewotICAgIEphdmFTY3JpcHRQYXVzZTogMCwKLSAg
ICBET01CcmVha3BvaW50OiAxLAotICAgIE5hdGl2ZUJyZWFrcG9pbnQ6IDIKLX07Ci0KIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgc2V0T25lVGltZUJy
ZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lKQogICAgIHsKQEAgLTkzLDcgKzg4LDcg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9vbmVU
aW1lQnJlYWtwb2ludDsKLSAgICAgICAgdGhpcy5feGhyQnJlYWtwb2ludHMgPSB7fTsKKyAgICAg
ICAgdGhpcy5fbmF0aXZlQnJlYWtwb2ludHMgPSB7fTsKICAgICB9LAogCiAgICAgX3NldEJyZWFr
cG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCB1cmwsIGxpbmUsIGVuYWJsZWQsIGNvbmRpdGlvbikK
QEAgLTEzNCw0MyArMTI5LDQ2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QnJlYWtwb2ludChicmVha3Bv
aW50LnNvdXJjZUlELCBicmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuZW5hYmxlZCwgYnJlYWtw
b2ludC5jb25kaXRpb24sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CiAgICAgfSwKIAot
ICAgIGNyZWF0ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50OiBmdW5jdGlvbihldmVudE5hbWUpCisg
ICAgY3JlYXRlRE9NQnJlYWtwb2ludDogZnVuY3Rpb24obm9kZUlkLCBkb21FdmVudFR5cGUsIHBh
dGgsIGRpc2FibGVkKQogICAgIHsKLSAgICAgICAgdmFyIGRhdGEgPSB7IHR5cGU6ICJFdmVudExp
c3RlbmVyIiwgY29uZGl0aW9uOiB7IGV2ZW50TmFtZTogZXZlbnROYW1lIH0gfTsKLSAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQoZGF0YSwg
dGhpcyk7Ci0gICAgICAgIGJyZWFrcG9pbnQubGFiZWwgPSBldmVudE5hbWU7CisgICAgICAgIHZh
ciBmcm9udGVuZElkID0gImRvbToiICsgbm9kZUlkICsgIjoiICsgZG9tRXZlbnRUeXBlOworICAg
ICAgICBpZiAoZnJvbnRlbmRJZCBpbiB0aGlzLl9uYXRpdmVCcmVha3BvaW50cykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAoIShub2RlSWQgaW4gdGhpcy5fZG9tUGF0aENhY2hl
KSkKKyAgICAgICAgICAgIHRoaXMuX2RvbVBhdGhDYWNoZVtub2RlSWRdID0gcGF0aDsKKworICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludCh0aGlz
LCBmcm9udGVuZElkLCBub2RlSWQsIGRvbUV2ZW50VHlwZSk7CisgICAgICAgIHRoaXMuX25hdGl2
ZUJyZWFrcG9pbnRzW2Zyb250ZW5kSWRdID0gYnJlYWtwb2ludDsKKyAgICAgICAgdGhpcy5fZG9t
QnJlYWtwb2ludHNbZnJvbnRlbmRJZF0gPSBicmVha3BvaW50OworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycygiZG9tLWJyZWFrcG9pbnQtYWRkZWQiLCBicmVha3BvaW50KTsK
KyAgICAgICAgYnJlYWtwb2ludC5lbmFibGVkID0gIWRpc2FibGVkOwogICAgICAgICByZXR1cm4g
YnJlYWtwb2ludDsKICAgICB9LAogCi0gICAgY3JlYXRlWEhSQnJlYWtwb2ludDogZnVuY3Rpb24o
dXJsKQorICAgIGNyZWF0ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50OiBmdW5jdGlvbihldmVudE5h
bWUsIGRpc2FibGVkKQogICAgIHsKLSAgICAgICAgaWYgKHVybCBpbiB0aGlzLl94aHJCcmVha3Bv
aW50cykKKyAgICAgICAgdmFyIGZyb250ZW5kSWQgPSBldmVudE5hbWU7CisgICAgICAgIGlmIChm
cm9udGVuZElkIGluIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB0aGlzLl94aHJCcmVha3BvaW50c1t1cmxdID0gdHJ1ZTsKLQotICAgICAgICB2
YXIgZGF0YSA9IHsgdHlwZTogIlhIUiIsIGNvbmRpdGlvbjogeyB1cmw6IHVybCB9IH07Ci0gICAg
ICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50KGRh
dGEsIHRoaXMpOwotICAgICAgICBpZiAoIXVybC5sZW5ndGgpCi0gICAgICAgICAgICBicmVha3Bv
aW50LmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbnkgWEhSIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGJyZWFrcG9pbnQubGFiZWwgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlVSTCBjb250YWlucyBcIiVzXCIiLCB1cmwpOwotICAgICAgICBicmVha3BvaW50LmNvbXBhcmVU
byA9IGZ1bmN0aW9uKG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdXJsT3RoZXIg
PSBvdGhlci5fZGF0YS5jb25kaXRpb24udXJsOwotICAgICAgICAgICAgaWYgKHVybCAhPT0gdXJs
T3RoZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVybCA8IHVybE90aGVyID8gLTEgOiAxOwot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKCJyZW1vdmVkIiwgdGhpcy5feGhyQnJlYWtwb2ludFJlbW92ZWQuYmlu
ZCh0aGlzLCB1cmwpKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInho
ci1icmVha3BvaW50LWFkZGVkIiwgYnJlYWtwb2ludCk7CiAKLSAgICAgICAgYnJlYWtwb2ludC5l
bmFibGVkID0gdHJ1ZTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJCcmVha3BvaW50KHRoaXMsIGZyb250ZW5kSWQsIGV2ZW50TmFtZSk7Cisg
ICAgICAgIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzW2Zyb250ZW5kSWRdID0gYnJlYWtwb2ludDsK
KyAgICAgICAgYnJlYWtwb2ludC5lbmFibGVkID0gIWRpc2FibGVkOworICAgICAgICByZXR1cm4g
YnJlYWtwb2ludDsKICAgICB9LAogCi0gICAgX3hockJyZWFrcG9pbnRSZW1vdmVkOiBmdW5jdGlv
bih1cmwpCisgICAgY3JlYXRlWEhSQnJlYWtwb2ludDogZnVuY3Rpb24odXJsLCBkaXNhYmxlZCkK
ICAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl94aHJCcmVha3BvaW50c1t1cmxdOworICAgICAg
ICB2YXIgZnJvbnRlbmRJZCA9IHVybDsKKyAgICAgICAgaWYgKGZyb250ZW5kSWQgaW4gdGhpcy5f
bmF0aXZlQnJlYWtwb2ludHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQodGhpcywgZnJvbnRlbmRJ
ZCwgdXJsKTsKKyAgICAgICAgdGhpcy5fbmF0aXZlQnJlYWtwb2ludHNbZnJvbnRlbmRJZF0gPSBi
cmVha3BvaW50OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygieGhyLWJy
ZWFrcG9pbnQtYWRkZWQiLCBicmVha3BvaW50KTsKKyAgICAgICAgYnJlYWtwb2ludC5lbmFibGVk
ID0gIWRpc2FibGVkCisgICAgICAgIHJldHVybiBicmVha3BvaW50OwogICAgIH0sCiAKICAgICBf
cmVtb3ZlTmF0aXZlQnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludCkKQEAgLTE3OSw2ICsx
NzcsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoYnJlYWtwb2ludC5lbmFibGVkKQogICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlTmF0aXZlQnJlYWtwb2ludEZyb21CYWNrZW5kKGJyZWFrcG9pbnQp
OworICAgICAgICBkZWxldGUgdGhpcy5fbmF0aXZlQnJlYWtwb2ludHNbYnJlYWtwb2ludC5fZnJv
bnRlbmRJZF07CisgICAgICAgIGlmIChicmVha3BvaW50Ll90eXBlID09PSAiRE9NIikKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9kb21CcmVha3BvaW50c1ticmVha3BvaW50Ll9mcm9udGVuZElk
XTsKICAgICAgICAgYnJlYWtwb2ludC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJlbW92ZWQi
KTsKICAgICB9LAogCkBAIC0xOTcsMTIgKzE5OCwxMyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIF9zZXROYXRpdmVCcmVha3BvaW50T25CYWNrZW5k
OiBmdW5jdGlvbihicmVha3BvaW50KQogICAgIHsKICAgICAgICAgYnJlYWtwb2ludC5fYmVpbmdT
ZXRPbkJhY2tlbmQgPSB0cnVlOwotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldE5hdGl2ZUJy
ZWFrcG9pbnQoYnJlYWtwb2ludC5fZGF0YSwgZGlkU2V0TmF0aXZlQnJlYWtwb2ludC5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdmFyIGRhdGEgPSB7IHR5cGU6IGJyZWFrcG9pbnQuX3R5cGUsIGNvbmRp
dGlvbjogYnJlYWtwb2ludC5fY29uZGl0aW9uKCkgfTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5zZXROYXRpdmVCcmVha3BvaW50KGRhdGEsIGRpZFNldE5hdGl2ZUJyZWFrcG9pbnQuYmluZCh0
aGlzKSk7CiAKICAgICAgICAgZnVuY3Rpb24gZGlkU2V0TmF0aXZlQnJlYWtwb2ludChiYWNrZW5k
QnJlYWtwb2ludElkKQogICAgICAgICB7CiAgICAgICAgICAgICBicmVha3BvaW50Ll9iZWluZ1Nl
dE9uQmFja2VuZCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGJhY2tlbmRCcmVha3BvaW50SWQg
IT09IDApIHsKKyAgICAgICAgICAgIGlmIChiYWNrZW5kQnJlYWtwb2ludElkICE9PSAiIikgewog
ICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuX2JhY2tlbmRJZCA9IGJhY2tlbmRCcmVha3BvaW50
SWQ7CiAgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNbYmFja2VuZEJyZWFrcG9pbnRJ
ZF0gPSBicmVha3BvaW50OwogICAgICAgICAgICAgfQpAQCAtMjIwLDE0ICsyMjIsMTggQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgIGRlYnVnZ2Vy
UGF1c2VkOiBmdW5jdGlvbihkZXRhaWxzKQogICAgIHsKLSAgICAgICAgaWYgKGRldGFpbHMuZXZl
bnRUeXBlICE9PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRGVidWdnZXJFdmVudFR5
cGUuTmF0aXZlQnJlYWtwb2ludCkKKyAgICAgICAgaWYgKGRldGFpbHMuZXZlbnRUeXBlICE9PSBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJFdmVudFR5cGVzLk5hdGl2ZUJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICByZXR1cm47CisKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9icmVha3BvaW50
c1tkZXRhaWxzLmV2ZW50RGF0YS5icmVha3BvaW50SWRdOwotICAgICAgICBpZiAoYnJlYWtwb2lu
dCkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5oaXQgPSB0cnVlOwotICAgICAgICAgICAgYnJl
YWtwb2ludC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImhpdC1zdGF0ZS1jaGFuZ2VkIik7Ci0g
ICAgICAgICAgICB0aGlzLl9sYXN0SGl0QnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGJyZWFrcG9pbnQuaGl0ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWtwb2ludC5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoImhpdC1zdGF0ZS1jaGFuZ2VkIik7CisgICAgICAgIHRoaXMuX2xhc3RI
aXRCcmVha3BvaW50ID0gYnJlYWtwb2ludDsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycygiYnJlYWtwb2ludC1oaXQiLCB7IGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQsIGV2
ZW50RGF0YTogZGV0YWlscy5ldmVudERhdGEgfSk7CiAgICAgfSwKIAogICAgIGRlYnVnZ2VyUmVz
dW1lZDogZnVuY3Rpb24oKQpAQCAtMjM3LDYgKzI0MywzNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXN0SGl0QnJlYWtwb2lu
dC5oaXQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fbGFzdEhpdEJyZWFrcG9pbnQuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKCJoaXQtc3RhdGUtY2hhbmdlZCIpOwogICAgICAgICBkZWxldGUgdGhp
cy5fbGFzdEhpdEJyZWFrcG9pbnQ7CisgICAgfSwKKworICAgIHJlc3RvcmVET01CcmVha3BvaW50
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGRvbUJyZWFrcG9pbnRzID0gdGhpcy5f
ZG9tQnJlYWtwb2ludHM7CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRzID0ge307CisgICAg
ICAgIHZhciBkb21QYXRoQ2FjaGUgPSB0aGlzLl9kb21QYXRoQ2FjaGU7CisgICAgICAgIHRoaXMu
X2RvbVBhdGhDYWNoZSA9IHt9OworCisgICAgICAgIHZhciBicmVha3BvaW50c1RvUmVzdG9yZSA9
IHt9OworICAgICAgICBmb3IgKHZhciBmcm9udGVuZElkIGluIGRvbUJyZWFrcG9pbnRzKSB7Cisg
ICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGRvbUJyZWFrcG9pbnRzW2Zyb250ZW5kSWRdOwor
ICAgICAgICAgICAgdmFyIHBhdGggPSBkb21QYXRoQ2FjaGVbYnJlYWtwb2ludC5fbm9kZUlkXTsK
KyAgICAgICAgICAgIGlmICghYnJlYWtwb2ludHNUb1Jlc3RvcmVbcGF0aF0pIHsKKyAgICAgICAg
ICAgICAgICBicmVha3BvaW50c1RvUmVzdG9yZVtwYXRoXSA9IFtdOworICAgICAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIHJlc3RvcmVC
cmVha3BvaW50c0Zvck5vZGUuYmluZCh0aGlzLCBwYXRoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVha3BvaW50c1RvUmVzdG9yZVtwYXRoXS5wdXNoKGJyZWFrcG9pbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVzdG9yZUJyZWFrcG9pbnRzRm9yTm9kZShwYXRo
LCBub2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbm9kZUlkKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHZhciBicmVha3BvaW50c0Zvck5vZGUgPSBicmVh
a3BvaW50c1RvUmVzdG9yZVtwYXRoXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YnJlYWtwb2ludHNGb3JOb2RlLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSB0aGlzLmNyZWF0ZURPTUJyZWFrcG9pbnQobm9kZUlkLCBicmVha3BvaW50c0Zv
ck5vZGVbaV0uX2RvbUV2ZW50VHlwZSwgcGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKGJyZWFr
cG9pbnQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZW5hYmxlZCA9IGJyZWFrcG9p
bnRzRm9yTm9kZVtpXS5lbmFibGVkOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQog
fQogCkBAIC0zMjIsMTAgKzM1OSwxMSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5
cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFr
cG9pbnQgPSBmdW5jdGlvbihkYXRhLCBtYW5hZ2VyKQorV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFr
cG9pbnQgPSBmdW5jdGlvbihtYW5hZ2VyLCBmcm9udGVuZElkLCB0eXBlKQogewotICAgIHRoaXMu
X2RhdGEgPSBkYXRhOwogICAgIHRoaXMuX21hbmFnZXIgPSBtYW5hZ2VyOworICAgIHRoaXMuX19m
cm9udGVuZElkID0gZnJvbnRlbmRJZDsKKyAgICB0aGlzLl9fdHlwZSA9IHR5cGU7CiB9CiAKIFdl
Ykluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKQEAgLTM0Miw3ICszODAs
MjAyIEBAIFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICBy
ZW1vdmU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21hbmFnZXIuX3JlbW92ZU5h
dGl2ZUJyZWFrcG9pbnQodGhpcyk7CisgICAgICAgIHRoaXMuX29uUmVtb3ZlKCk7CisgICAgfSwK
KworICAgIGdldCBfZnJvbnRlbmRJZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fX2Zy
b250ZW5kSWQ7CisgICAgfSwKKworICAgIGdldCBfdHlwZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fX3R5cGU7CisgICAgfSwKKworICAgIF9jb21wYXJlOiBmdW5jdGlvbih4LCB5KQor
ICAgIHsKKyAgICAgICAgaWYgKHggIT09IHkpCisgICAgICAgICAgICByZXR1cm4geCA8IHkgPyAt
MSA6IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0sCisKKyAgICBfb25SZW1vdmU6IGZ1bmN0
aW9uKCkKKyAgICB7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50ID0gZnVuY3Rpb24obWFuYWdlciwgZnJvbnRlbmRJZCwg
bm9kZUlkLCBkb21FdmVudFR5cGUpCit7CisgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9p
bnQuY2FsbCh0aGlzLCBtYW5hZ2VyLCBmcm9udGVuZElkLCAiRE9NIik7CisgICAgdGhpcy5fbm9k
ZUlkID0gbm9kZUlkOworICAgIHRoaXMuX2RvbUV2ZW50VHlwZSA9IGRvbUV2ZW50VHlwZTsKKwor
ICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZCh0aGlzLl9ub2Rl
SWQpOworICAgIGlmIChub2RlKQorICAgICAgICBub2RlLmJyZWFrcG9pbnRzW3RoaXMuX2RvbUV2
ZW50VHlwZV0gPSB0aGlzOworfQorCitXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5
cGUgPSB7CisgICAgY2xpY2s6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rv
ci51cGRhdGVGb2N1c2VkTm9kZSh0aGlzLl9ub2RlSWQpOworICAgIH0sCisKKyAgICBjb21wYXJl
VG86IGZ1bmN0aW9uKG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmUo
dGhpcy5fZG9tRXZlbnRUeXBlLCBvdGhlci5fZG9tRXZlbnRUeXBlKTsKKyAgICB9LAorCisgICAg
cG9wdWxhdGVMYWJlbEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICBl
bGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5v
ZGVCeUlkKHRoaXMuX25vZGVJZCkpOworICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCIgLSAiKSk7CisgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRUeXBlTGFi
ZWwodGhpcy5fZG9tRXZlbnRUeXBlKSkpOworICAgIH0sCisKKyAgICBwb3B1bGF0ZVN0YXR1c01l
c3NhZ2VFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50LCBldmVudERhdGEpCisgICAgeworICAgICAg
ICB2YXIgc3Vic3RpdHV0aW9ucyA9IFtXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludFR5cGVMYWJl
bCh0aGlzLl9kb21FdmVudFR5cGUpLCBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtp
ZnlOb2RlQnlJZCh0aGlzLl9ub2RlSWQpXTsKKyAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7Cisg
ICAgICAgICAgICBzOiBmdW5jdGlvbihzdWJzdGl0dXRpb24pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh0eXBlb2YgYiA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgYiA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGIpOworICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChiKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fZG9tRXZlbnRUeXBlID09PSBXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludFR5cGVzLlN1YnRyZWVNb2RpZmllZCkgeworICAgICAgICAgICAgdmFy
IHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJ
ZChldmVudERhdGEudGFyZ2V0Tm9kZUlkKTsKKyAgICAgICAgICAgIGlmIChldmVudERhdGEuaW5z
ZXJ0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50RGF0YS50YXJnZXROb2RlSWQgIT09
IHRoaXMuX25vZGVJZCkKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExv
Y2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNl
IGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byBpdHMgZGVzY2VuZGFudCAlcy4iLCBzdWJzdGl0dXRp
b25zLmNvbmNhdCh0YXJnZXROb2RlKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9j
YWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2Ug
YSBuZXcgY2hpbGQgd2FzIGFkZGVkIHRvIHRoYXQgbm9kZS4iLCBzdWJzdGl0dXRpb25zLCBmb3Jt
YXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3Bv
aW50IHNldCBvbiAlcywgYmVjYXVzZSBpdHMgZGVzY2VuZGFudCAlcyB3YXMgcmVtb3ZlZC4iLCBz
dWJzdGl0dXRpb25zLmNvbmNhdCh0YXJnZXROb2RlKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXpl
ZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLiIsIHN1YnN0aXR1dGlv
bnMsIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgIH0sCisKKyAgICBfY29uZGl0aW9uOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4geyBub2RlSWQ6IHRoaXMuX25vZGVJZCwg
dHlwZTogdGhpcy5fZG9tRXZlbnRUeXBlIH07CisgICAgfSwKKworICAgIF9vblJlbW92ZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
bm9kZUZvcklkKHRoaXMuX25vZGVJZCk7CisgICAgICAgIGlmIChub2RlKQorICAgICAgICAgICAg
ZGVsZXRlIG5vZGUuYnJlYWtwb2ludHNbdGhpcy5fZG9tRXZlbnRUeXBlXTsKKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyQnJlYWtwb2ludCA9IGZ1bmN0aW9uKG1hbmFnZXIsIGZyb250ZW5kSWQsIGV2ZW50TmFt
ZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtwb2ludC5jYWxsKHRoaXMsIG1hbmFn
ZXIsIGZyb250ZW5kSWQsICJFdmVudExpc3RlbmVyIik7CisgICAgdGhpcy5fZXZlbnROYW1lID0g
ZXZlbnROYW1lOworfQorCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQucHJv
dG90eXBlID0geworICAgIGNvbXBhcmVUbzogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fY29tcGFyZSh0aGlzLl9ldmVudE5hbWUsIG90aGVyLl9ldmVudE5hbWUp
OworICAgIH0sCisKKyAgICBsYWJlbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2V2ZW50TmFtZTsKKyAgICB9LAorCisgICAgcG9wdWxhdGVTdGF0dXNNZXNzYWdlRWxl
bWVudDogZnVuY3Rpb24oZWxlbWVudCwgZXZlbnREYXRhKQorICAgIHsKKyAgICAgICAgdmFyIHN0
YXR1cyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF1c2VkIG9uIGEgXCIlc1wiIEV2ZW50IExp
c3RlbmVyLiIsIHRoaXMuX2V2ZW50TmFtZSk7CisgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RhdHVzKSk7CisgICAgfSwKKworICAgIF9jb25kaXRp
b246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IGV2ZW50TmFtZTogdGhpcy5f
ZXZlbnROYW1lIH07CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50
LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQgPSBmdW5jdGlvbihtYW5h
Z2VyLCBmcm9udGVuZElkLCB1cmwpCit7CisgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9p
bnQuY2FsbCh0aGlzLCBtYW5hZ2VyLCBmcm9udGVuZElkLCAiWEhSIik7CisgICAgdGhpcy5fdXJs
ID0gdXJsOworfQorCitXZWJJbnNwZWN0b3IuWEhSQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7Cisg
ICAgY29tcGFyZVRvOiBmdW5jdGlvbihvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9jb21wYXJlKHRoaXMuX3VybCwgb3RoZXIuX3VybCk7CisgICAgfSwKKworICAgIHBvcHVsYXRl
TGFiZWxFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIGxhYmVs
OworICAgICAgICBpZiAoIXRoaXMuX3VybC5sZW5ndGgpCisgICAgICAgICAgICBsYWJlbCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQW55IFhIUiIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBsYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVVJMIGNvbnRhaW5zIFwiJXNcIiIsIHRo
aXMuX3VybCk7CisgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobGFiZWwpKTsKKyAgICB9LAorCisgICAgcG9wdWxhdGVTdGF0dXNNZXNzYWdlRWxlbWVu
dDogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHZhciBzdGF0dXMgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlBhdXNlZCBvbiBhIFhNTEh0dHBSZXF1ZXN0LiIpOworICAgICAgICBl
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0YXR1cykpOworICAg
IH0sCisKKyAgICBfY29uZGl0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
eyB1cmw6IHRoaXMuX3VybCB9OworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9p
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXRpdmVCcmVha3BvaW50LnBy
b3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRXZlbnRUeXBlcyA9IHsKKyAgICBKYXZh
U2NyaXB0UGF1c2U6IDAsCisgICAgSmF2YVNjcmlwdEJyZWFrcG9pbnQ6IDEsCisgICAgTmF0aXZl
QnJlYWtwb2ludDogMgorfTsKKworV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRUeXBlcyA9IHsK
KyAgICBTdWJ0cmVlTW9kaWZpZWQ6IDAsCisgICAgQXR0cmlidXRlTW9kaWZpZWQ6IDEsCisgICAg
Tm9kZVJlbW92ZWQ6IDIKK307CisKK1dlYkluc3BlY3Rvci5kb21CcmVha3BvaW50VHlwZUxhYmVs
ID0gZnVuY3Rpb24odHlwZSkKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5fRE9NQnJlYWtwb2lu
dFR5cGVMYWJlbHMpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9ET01CcmVha3BvaW50VHlwZUxh
YmVscyA9IHt9OworICAgICAgICBXZWJJbnNwZWN0b3IuX0RPTUJyZWFrcG9pbnRUeXBlTGFiZWxz
W1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50VHlwZXMuU3VidHJlZU1vZGlmaWVkXSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3VidHJlZSBNb2RpZmllZCIpOworICAgICAgICBXZWJJbnNwZWN0
b3IuX0RPTUJyZWFrcG9pbnRUeXBlTGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50VHlw
ZXMuQXR0cmlidXRlTW9kaWZpZWRdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRyaWJ1dGUg
TW9kaWZpZWQiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9ET01CcmVha3BvaW50VHlwZUxhYmVs
c1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFR5cGVzLk5vZGVSZW1vdmVkXSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTm9kZSBSZW1vdmVkIik7CisgICAgfQorICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuX0RPTUJyZWFrcG9pbnRUeXBlTGFiZWxzW3R5cGVdOworfQorCitXZWJJbnNwZWN0b3Iu
ZG9tQnJlYWtwb2ludFR5cGVDb250ZXh0TWVudUxhYmVsID0gZnVuY3Rpb24odHlwZSkKK3sKKyAg
ICBpZiAoIVdlYkluc3BlY3Rvci5fRE9NQnJlYWtwb2ludFR5cGVDb250ZXh0TWVudUxhYmVscykg
eworICAgICAgICBXZWJJbnNwZWN0b3IuX0RPTUJyZWFrcG9pbnRUeXBlQ29udGV4dE1lbnVMYWJl
bHMgPSB7fTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9ET01CcmVha3BvaW50VHlwZUNvbnRleHRN
ZW51TGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50VHlwZXMuU3VidHJlZU1vZGlmaWVk
XSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQnJlYWsgb24gU3VidHJlZSBNb2RpZmljYXRpb25z
Iik7CisgICAgICAgIFdlYkluc3BlY3Rvci5fRE9NQnJlYWtwb2ludFR5cGVDb250ZXh0TWVudUxh
YmVsc1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkXSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQnJlYWsgb24gQXR0cmlidXRlcyBNb2RpZmljYXRpb25z
Iik7CisgICAgICAgIFdlYkluc3BlY3Rvci5fRE9NQnJlYWtwb2ludFR5cGVDb250ZXh0TWVudUxh
YmVsc1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFR5cGVzLk5vZGVSZW1vdmVkXSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQnJlYWsgb24gTm9kZSBSZW1vdmFsIik7CisgICAgfQorICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuX0RPTUJyZWFrcG9pbnRUeXBlQ29udGV4dE1lbnVMYWJlbHNbdHlw
ZV07Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dHNTaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
c1NpZGViYXJQYW5lLmpzCmluZGV4IGZiZjc3M2QuLjllYTY3YTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC0x
NDUsOCArMTQ1LDggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtID0gZnVuY3Rpb24oYnJl
YWtwb2ludCkKICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9jaGVja2JveENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hFbGVtZW50KTsKIAotICAgIGlmICgibGFiZWwiIGluIHRo
aXMuX2JyZWFrcG9pbnQpCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fYnJlYWtwb2ludC5sYWJlbCkpOworICAgIGlmICgicG9w
dWxhdGVMYWJlbEVsZW1lbnQiIGluIHRoaXMuX2JyZWFrcG9pbnQpCisgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnQucG9wdWxhdGVMYWJlbEVsZW1lbnQodGhpcy5fZWxlbWVudCk7CiAKICAgICB0aGlz
Ll9icmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoImVuYWJsZS1jaGFuZ2VkIiwgdGhpcy5fZW5h
YmxlQ2hhbmdlZCwgdGhpcyk7CiAgICAgdGhpcy5fYnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KCJoaXQtc3RhdGUtY2hhbmdlZCIsIHRoaXMuX2hpdFN0YXRlQ2hhbmdlZCwgdGhpcyk7CkBAIC0x
NzEsNiArMTcxLDggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtLnByb3RvdHlwZSA9IHsK
IAogICAgIF9icmVha3BvaW50Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAg
ICBpZiAoImNsaWNrIiBpbiB0aGlzLl9icmVha3BvaW50KQorICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludC5jbGljaygpOwogICAgIH0sCiAKICAgICBfY2hlY2tib3hDbGlja2VkOiBmdW5jdGlv
bihldmVudCkKQEAgLTIyOSwyNyArMjMxLDYgQEAgV2ViSW5zcGVjdG9yLkpTQnJlYWtwb2ludEl0
ZW0ucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSlNCcmVha3BvaW50SXRlbS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRJdGVtLnByb3RvdHlwZTsKIAot
V2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRJdGVtID0gZnVuY3Rpb24oYnJlYWtwb2ludCkKLXsK
LSAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0uY2FsbCh0aGlzLCBicmVha3BvaW50KTsK
LQotICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9k
ZUJ5SWQodGhpcy5fYnJlYWtwb2ludC5ub2RlSWQpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQobGluayk7Ci0KLSAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50
LmxhYmVsRm9yVHlwZSh0aGlzLl9icmVha3BvaW50LnR5cGUpOwotICAgIHZhciB0eXBlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgLSAiICsgdHlwZSk7Ci0gICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0eXBlRWxlbWVudCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50SXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgX2JyZWFrcG9pbnRDbGlja2VkOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IudXBkYXRlRm9jdXNlZE5vZGUodGhpcy5f
YnJlYWtwb2ludC5ub2RlSWQpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnRJdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0u
cHJvdG90eXBlOwotCiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzU2lkZWJh
clBhbmUgPSBmdW5jdGlvbigpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLmNhbGwo
dGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmVudCBMaXN0ZW5lciBCcmVha3BvaW50cyIp
KTsKQEAgLTI4Myw5ICsyNjQsMTEgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3Bv
aW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZXZlbnROYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBldmVu
dE5hbWUgPSBldmVudE5hbWVzW2ldOwogCi0gICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIuY3JlYXRlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoZXZlbnROYW1lKTsKKyAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IFdlYklu
c3BlY3Rvci5icmVha3BvaW50TWFuYWdlci5jcmVhdGVFdmVudExpc3RlbmVyQnJlYWtwb2ludChl
dmVudE5hbWUsIHRydWUpOworICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB2YXIgZXZlbnROYW1l
VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoYnJlYWtwb2ludC5sYWJlbCk7CisgICAgICAg
ICAgICAgICAgdmFyIGV2ZW50TmFtZVRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KGJyZWFr
cG9pbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgY2F0ZWdvcnlUcmVlRWxlbWVudC5hcHBl
bmRDaGlsZChldmVudE5hbWVUcmVlRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgZXZlbnROYW1l
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNvdXJjZS1jb2RlIik7
CiAgICAgICAgICAgICAgICAgZXZlbnROYW1lVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IHRydWU7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJh
clBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBh
bmUuanMKaW5kZXggZTFkMzQyYi4uMDhjMTk0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcwpAQCAtMjYsNiArMjYsNyBAQAog
V2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogewogICAgIFdl
Ykluc3BlY3Rvci5TaWRlYmFyUGFuZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2FsbCBTdGFjayIpKTsKKyAgICBXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcigiYnJlYWtwb2ludC1oaXQiLCB0aGlzLl9icmVha3BvaW50SGl0LCB0aGlzKTsK
IH0KIAogV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKQEAg
LTgyLDQ3ICs4Myw2IEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgdXBkYXRlU3RhdHVzOiAgZnVuY3Rpb24o
ZXZlbnRUeXBlLCBldmVudERhdGEpCi0gICAgewotICAgICAgICB2YXIgc3RhdHVzRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBpZiAoZXZlbnRUeXBlID09
PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRGVidWdnZXJFdmVudFR5cGUuRE9NQnJl
YWtwb2ludCkgewotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudERhdGEuYnJlYWtw
b2ludDsKLSAgICAgICAgICAgIHZhciBzdWJzdGl0dXRpb25zID0gW1dlYkluc3BlY3Rvci5ET01C
cmVha3BvaW50LmxhYmVsRm9yVHlwZShicmVha3BvaW50LnR5cGUpLCBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLmxpbmtpZnlOb2RlQnlJZChicmVha3BvaW50Lm5vZGVJZCldOwotICAgICAg
ICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7Ci0gICAgICAgICAgICAgICAgczogZnVuY3Rpb24oc3Vi
c3RpdHV0aW9uKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN1YnN0aXR1dGlvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHR5cGVvZiBiID09PSAic3RyaW5nIikKLSAgICAgICAgICAgICAgICAgICAgYiA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGIpOwotICAgICAgICAgICAgICAgIHN0YXR1c0VsZW1lbnQu
YXBwZW5kQ2hpbGQoYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2lu
dC50eXBlID09PSBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZp
ZWQpIHsKLSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IFdlYkluc3BlY3Rvci5wYW5l
bHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlkKGV2ZW50RGF0YS50YXJnZXROb2RlSWQpOwotICAg
ICAgICAgICAgICAgIGlmIChldmVudERhdGEuaW5zZXJ0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChldmVudERhdGEudGFyZ2V0Tm9kZUlkICE9PSBicmVha3BvaW50Lm5vZGVJZCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNl
ZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3
YXMgYWRkZWQgdG8gaXRzIGRlc2NlbmRhbnQgJXMuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFy
Z2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwotICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVk
KCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcg
Y2hpbGQgd2FzIGFkZGVkIHRvIHRoYXQgbm9kZS4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJz
LCAiIiwgYXBwZW5kKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFr
cG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGl0cyBkZXNjZW5kYW50ICVzIHdhcyByZW1vdmVkLiIs
IHN1YnN0aXR1dGlvbnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5k
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3Jt
YXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcy4iLCBz
dWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKLSAgICAgICAgfSBlbHNlIGlm
IChldmVudFR5cGUgPT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5EZWJ1Z2dlckV2
ZW50VHlwZS5OYXRpdmVCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnREYXRhLnR5
cGUgPT09ICJYSFIiKQotICAgICAgICAgICAgICAgIHN0YXR1c0VsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXVzZWQgb24g
YSBYTUxIdHRwUmVxdWVzdC4iKSkpOwotICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnREYXRhLnR5
cGUgPT09ICJFdmVudExpc3RlbmVyIikKLSAgICAgICAgICAgICAgICBzdGF0dXNFbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UGF1c2VkIG9uIGEgXCIlc1wiIEV2ZW50IExpc3RlbmVyLiIsIGV2ZW50RGF0YS5ldmVudE5hbWUp
KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0YXR1
c0VsZW1lbnQuY2xhc3NOYW1lID0gImluZm8iOwotICAgICAgICB0aGlzLmJvZHlFbGVtZW50LmFw
cGVuZENoaWxkKHN0YXR1c0VsZW1lbnQpOwotICAgIH0sCi0KICAgICBnZXQgc2VsZWN0ZWRDYWxs
RnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lOwpA
QCAtMjA4LDYgKzE2OCwxNiBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9zaG9ydGN1dHNbcHJldkNhbGxGcmFtZS5rZXldID0g
dGhpcy5fc2VsZWN0UHJldmlvdXNDYWxsRnJhbWVPblN0YWNrLmJpbmQodGhpcyk7CiAKICAgICAg
ICAgc2VjdGlvbi5hZGRSZWxhdGVkS2V5cyhbIG5leHRDYWxsRnJhbWUubmFtZSwgcHJldkNhbGxG
cmFtZS5uYW1lIF0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV4dC9wcmV2aW91cyBjYWxsIGZy
YW1lIikpOworICAgIH0sCisKKyAgICBfYnJlYWtwb2ludEhpdDogIGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC5kYXRhLmJyZWFrcG9pbnQ7CisK
KyAgICAgICAgdmFyIHN0YXR1c01lc3NhZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHN0YXR1c01lc3NhZ2VFbGVtZW50LmNsYXNzTmFtZSA9ICJpbmZv
IjsKKyAgICAgICAgYnJlYWtwb2ludC5wb3B1bGF0ZVN0YXR1c01lc3NhZ2VFbGVtZW50KHN0YXR1
c01lc3NhZ2VFbGVtZW50LCBldmVudC5kYXRhLmV2ZW50RGF0YSk7CisgICAgICAgIHRoaXMuYm9k
eUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzTWVzc2FnZUVsZW1lbnQpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDI3OTg1MmUuLmU5OTYy
NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTYwLDYgKzYw
LDggQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUgPSBmdW5jdGlvbihkb2MsIHBheWxvYWQpIHsKICAg
ICB0aGlzLnN0eWxlID0gbnVsbDsKICAgICB0aGlzLl9tYXRjaGVkQ1NTUnVsZXMgPSBbXTsKIAor
ICAgIHRoaXMuYnJlYWtwb2ludHMgPSB7fTsKKwogICAgIGlmICh0aGlzLm5vZGVUeXBlID09PSBO
b2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAvLyBIVE1MIGFuZCBCT0RZIGZyb20gaW50ZXJu
YWwgaWZyYW1lcyBzaG91bGQgbm90IG92ZXJ3cml0ZSB0b3AtbGV2ZWwgb25lcy4KICAgICAgICAg
aWYgKCF0aGlzLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIHRoaXMubm9kZU5hbWUg
PT09ICJIVE1MIikKQEAgLTE0OSwyOCArMTUxLDYgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcGF0aC5qb2luKCIsIik7CiAgICAgfSwKIAotICAg
IHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQodGhpcy5pZCwgdHlw
ZSwgdHJ1ZSwgdGhpcy5wYXRoKCkpOwotICAgIH0sCi0KLSAgICBoYXNCcmVha3BvaW50OiBmdW5j
dGlvbih0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLmRvbUJyZWFr
cG9pbnRNYW5hZ2VyLmZpbmRCcmVha3BvaW50KHRoaXMuaWQsIHR5cGUpOwotICAgIH0sCi0KLSAg
ICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbih0eXBlKQotICAgIHsKLSAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIuZmluZEJyZWFrcG9p
bnQodGhpcy5pZCwgdHlwZSk7Ci0gICAgICAgIGlmIChicmVha3BvaW50KQotICAgICAgICAgICAg
YnJlYWtwb2ludC5yZW1vdmUoKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlQnJlYWtwb2ludHM6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdl
ci5yZW1vdmVCcmVha3BvaW50c0Zvck5vZGUodGhpcy5pZCk7Ci0gICAgfSwKLQogICAgIF9zZXRB
dHRyaWJ1dGVzUGF5bG9hZDogZnVuY3Rpb24oYXR0cnMpCiAgICAgewogICAgICAgICB0aGlzLmF0
dHJpYnV0ZXMgPSBbXTsKQEAgLTM5OSw3ICszNzksNyBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuRE9NRG9jdW1lbnQodGhpcywgdGhpcy5fd2luZG93LCBwYXlsb2FkKTsKICAgICAgICAgICAg
IHRoaXMuX2lkVG9ET01Ob2RlW3BheWxvYWQuaWRdID0gdGhpcy5kb2N1bWVudDsKICAgICAgICAg
ICAgIHRoaXMuX2JpbmROb2Rlcyh0aGlzLmRvY3VtZW50LmNoaWxkcmVuKTsKLSAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5yZXN0b3JlQnJlYWtwb2ludHMoKTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5icmVha3BvaW50TWFuYWdlci5yZXN0b3JlRE9NQnJl
YWtwb2ludHMoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0g
bnVsbDsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zZXREb2N1bWVudCh0
aGlzLmRvY3VtZW50KTsKQEAgLTQ2MSwxMiArNDQxLDEzIEBAIFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVtb3ZlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKG5vZGUp
CiAgICAgewotICAgICAgICBub2RlLnJlbW92ZUJyZWFrcG9pbnRzKCk7CisgICAgICAgIGZvciAo
dmFyIHR5cGUgaW4gbm9kZS5icmVha3BvaW50cykKKyAgICAgICAgICAgIG5vZGUuYnJlYWtwb2lu
dHNbdHlwZV0ucmVtb3ZlKCk7CiAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxl
bmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludHMobm9kZS5jaGls
ZHJlbltpXSk7Ci0gICAgIH0KKyAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlID0ge30KQEAgLTcyOCwxNjYgKzcwOSwzIEBAIFdlYkluc3BlY3Rvci5jaGlsZE5vZGVSZW1v
dmVkID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuZG9tQWdlbnQuX2NoaWxkTm9kZVJlbW92ZWQu
YXBwbHkodGhpcy5kb21BZ2VudCwgYXJndW1lbnRzKTsKIH0KLQotV2ViSW5zcGVjdG9yLkRPTUJy
ZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX2JyZWFrcG9pbnRzID0g
e307Ci0gICAgdGhpcy5fcGF0aENhY2hlID0ge307Ci19Ci0KLVdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7Ci0gICAgc2V0QnJlYWtwb2ludDogZnVuY3Rpb24o
bm9kZUlkLCB0eXBlLCBlbmFibGVkLCBwYXRoKQotICAgIHsKLSAgICAgICAgaWYgKCEobm9kZUlk
IGluIHRoaXMuX2JyZWFrcG9pbnRzKSkKLSAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW25v
ZGVJZF0gPSB7fTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSBpbiB0aGlzLl9icmVha3BvaW50c1tu
b2RlSWRdKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBicmVha3BvaW50ID0g
bmV3IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50KG5vZGVJZCwgdHlwZSwgZW5hYmxlZCk7Ci0g
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW25vZGVJZF1bdHlwZV0gPSBicmVha3BvaW50OwotICAg
ICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLl9icmVha3Bv
aW50UmVtb3ZlZCwgdGhpcyk7Ci0KLSAgICAgICAgaWYgKCEobm9kZUlkIGluIHRoaXMuX3BhdGhD
YWNoZSkpCi0gICAgICAgICAgICB0aGlzLl9wYXRoQ2FjaGVbbm9kZUlkXSA9IHBhdGg7Ci0KLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImRvbS1icmVha3BvaW50LWFkZGVk
IiwgYnJlYWtwb2ludCk7Ci0gICAgfSwKLQotICAgIGZpbmRCcmVha3BvaW50OiBmdW5jdGlvbihu
b2RlSWQsIHR5cGUpCi0gICAgewotICAgICAgICB2YXIgbm9kZUJyZWFrcG9pbnRzID0gdGhpcy5f
YnJlYWtwb2ludHNbbm9kZUlkXTsKLSAgICAgICAgaWYgKG5vZGVCcmVha3BvaW50cyAmJiB0eXBl
IGluIG5vZGVCcmVha3BvaW50cykKLSAgICAgICAgICAgIHJldHVybiBub2RlQnJlYWtwb2ludHNb
dHlwZV07Ci0gICAgfSwKLQotICAgIHJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZTogZnVuY3Rpb24o
bm9kZUlkKQotICAgIHsKLSAgICAgICAgdmFyIG5vZGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFr
cG9pbnRzW25vZGVJZF07Ci0gICAgICAgIGZvciAodmFyIHR5cGUgaW4gbm9kZUJyZWFrcG9pbnRz
KQotICAgICAgICAgICAgbm9kZUJyZWFrcG9pbnRzW3R5cGVdLnJlbW92ZSgpOwotICAgIH0sCi0K
LSAgICBfYnJlYWtwb2ludFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAgdmFyIG5vZGVCcmVha3Bv
aW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubm9kZUlkXTsKLSAgICAgICAgZGVs
ZXRlIG5vZGVCcmVha3BvaW50c1ticmVha3BvaW50LnR5cGVdOwotICAgICAgICBmb3IgKHZhciB0
eXBlIGluIG5vZGVCcmVha3BvaW50cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBk
ZWxldGUgdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5ub2RlSWRdOwotICAgICAgICBkZWxl
dGUgdGhpcy5fcGF0aENhY2hlW2JyZWFrcG9pbnQubm9kZUlkXTsKLSAgICB9LAotCi0gICAgcmVz
dG9yZUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgYnJlYWtwb2lu
dHMgPSB0aGlzLl9icmVha3BvaW50czsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsK
LSAgICAgICAgdmFyIHBhdGhDYWNoZSA9IHRoaXMuX3BhdGhDYWNoZTsKLSAgICAgICAgdGhpcy5f
cGF0aENhY2hlID0ge307Ci0KLSAgICAgICAgZm9yICh2YXIgb2xkTm9kZUlkIGluIGJyZWFrcG9p
bnRzKSB7Ci0gICAgICAgICAgICB2YXIgcGF0aCA9IHBhdGhDYWNoZVtvbGROb2RlSWRdOwotICAg
ICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQocGF0aCwg
cmVzdG9yZUJyZWFrcG9pbnRzRm9yTm9kZS5iaW5kKHRoaXMsIGJyZWFrcG9pbnRzW29sZE5vZGVJ
ZF0sIHBhdGgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJlc3RvcmVCcmVha3Bv
aW50c0Zvck5vZGUobm9kZUJyZWFrcG9pbnRzLCBwYXRoLCBub2RlSWQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbm9kZUlkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGZvciAodmFyIHR5cGUgaW4gbm9kZUJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBub2RlQnJlYWtwb2ludHNbdHlwZV07Ci0gICAgICAgICAgICAgICAg
dGhpcy5zZXRCcmVha3BvaW50KG5vZGVJZCwgYnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50LmVu
YWJsZWQsIHBhdGgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1XZWJJ
bnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwotCi1XZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludCA9
IGZ1bmN0aW9uKG5vZGVJZCwgdHlwZSwgZW5hYmxlZCkKLXsKLSAgICB0aGlzLl9ub2RlSWQgPSBu
b2RlSWQ7Ci0gICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJs
ZWQ7Ci0KLSAgICBpZiAodGhpcy5lbmFibGVkKQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNl
dERPTUJyZWFrcG9pbnQodGhpcy5ub2RlSWQsIHRoaXMudHlwZSk7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50LlR5cGVzID0gewotICAgIFN1YnRyZWVNb2RpZmllZDogMCwKLSAgICBB
dHRyaWJ1dGVNb2RpZmllZDogMSwKLSAgICBOb2RlUmVtb3ZlZDogMgotfTsKLQotV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBlID0gZnVuY3Rpb24odHlwZSkKLXsKLSAgICBp
ZiAoIVdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9sYWJlbHMpIHsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLkRPTUJyZWFrcG9pbnQuX2xhYmVscyA9IHt9OwotICAgICAgICBXZWJJbnNwZWN0b3Iu
RE9NQnJlYWtwb2ludC5fbGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLlN1
YnRyZWVNb2RpZmllZF0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN1YnRyZWUgTW9kaWZpZWQi
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2xhYmVsc1tXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5BdHRyaWJ1dGVNb2RpZmllZF0gPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkF0dHJpYnV0ZSBNb2RpZmllZCIpOwotICAgICAgICBXZWJJbnNwZWN0b3IuRE9N
QnJlYWtwb2ludC5fbGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLk5vZGVS
ZW1vdmVkXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9kZSBSZW1vdmVkIik7Ci0gICAgfQot
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5fbGFiZWxzW3R5cGVdOwotfQot
Ci1XZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5jb250ZXh0TWVudUxhYmVsRm9yVHlwZSA9IGZ1
bmN0aW9uKHR5cGUpCi17Ci0gICAgaWYgKCFXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5fY29u
dGV4dE1lbnVMYWJlbHMpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2Nv
bnRleHRNZW51TGFiZWxzID0ge307Ci0gICAgICAgIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50
Ll9jb250ZXh0TWVudUxhYmVsc1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0
cmVlTW9kaWZpZWRdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCcmVhayBvbiBTdWJ0cmVlIE1v
ZGlmaWNhdGlvbnMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2NvbnRl
eHRNZW51TGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLkF0dHJpYnV0ZU1v
ZGlmaWVkXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQnJlYWsgb24gQXR0cmlidXRlcyBNb2Rp
ZmljYXRpb25zIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9jb250ZXh0
TWVudUxhYmVsc1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5Ob2RlUmVtb3ZlZF0g
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJyZWFrIG9uIE5vZGUgUmVtb3ZhbCIpOwotICAgIH0K
LSAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2NvbnRleHRNZW51TGFiZWxz
W3R5cGVdOwotfQotCi1XZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7Ci0g
ICAgZ2V0IG5vZGVJZCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUlkOwotICAg
IH0sCi0KLSAgICBnZXQgdHlwZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsK
LSAgICB9LAotCi0gICAgZ2V0IGVuYWJsZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2VuYWJsZWQ7Ci0gICAgfSwKLQotICAgIHNldCBlbmFibGVkKGVuYWJsZWQpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5fZW5hYmxlZCA9PT0gZW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDsKLSAgICAgICAgaWYgKHRoaXMuZW5h
YmxlZCkKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludCh0aGlz
Lm5vZGVJZCwgdGhpcy50eXBlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50KHRoaXMubm9kZUlkLCB0aGlzLnR5cGUpOwotCi0g
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJlbmFibGUtY2hhbmdlZCIpOwot
ICAgIH0sCi0KLSAgICBjb21wYXJlVG86IGZ1bmN0aW9uKG90aGVyKQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMudHlwZSAhPSBvdGhlci50eXBlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlw
ZSA8IG90aGVyLnR5cGUgPyAtMSA6IDE7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0sCi0KLSAg
ICByZW1vdmU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmVuYWJsZWQpCi0g
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQodGhpcy5ub2Rl
SWQsIHRoaXMudHlwZSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJy
ZW1vdmVkIik7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Ci0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXgg
MTQ3OWM5YS4uYjgyODZlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTc1OSwxNSArNzU5LDE1IEBAIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCiAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVw
cmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9y
LkRPTUJyZWFrcG9pbnQuVHlwZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IFdlYklu
c3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzW2tleV07Ci0gICAgICAgICAgICAgICAgdmFyIGxh
YmVsID0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuY29udGV4dE1lbnVMYWJlbEZvclR5cGUo
dHlwZSk7Ci0gICAgICAgICAgICAgICAgdmFyIGhhc0JyZWFrcG9pbnQgPSBub2RlLmhhc0JyZWFr
cG9pbnQodHlwZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXNCcmVha3BvaW50KQotICAgICAg
ICAgICAgICAgICAgICB2YXIgaGFuZGxlciA9IG5vZGUuc2V0QnJlYWtwb2ludC5iaW5kKG5vZGUs
IHR5cGUpOworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50VHlwZXMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5E
T01CcmVha3BvaW50VHlwZXNba2V5XTsKKyAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBXZWJJ
bnNwZWN0b3IuZG9tQnJlYWtwb2ludFR5cGVDb250ZXh0TWVudUxhYmVsKHR5cGUpOworICAgICAg
ICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbm9kZS5icmVha3BvaW50c1t0eXBlXTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5k
bGVyID0gV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLmNyZWF0ZURPTUJyZWFrcG9pbnQu
YmluZChXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIsIG5vZGUuaWQsIHR5cGUsIG5vZGUu
cGF0aCgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhciBo
YW5kbGVyID0gbm9kZS5yZW1vdmVCcmVha3BvaW50LmJpbmQobm9kZSwgdHlwZSk7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKGxhYmVsLCBoYW5kbGVyLCBo
YXNCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSBicmVha3Bv
aW50LnJlbW92ZS5iaW5kKGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZENoZWNrYm94SXRlbShsYWJlbCwgaGFuZGxlciwgISFicmVha3BvaW50KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNQYW5lbC5qcwppbmRleCBhN2FhYzc4Li5lNmE3OGI0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTM4OCw5ICszODgsNiBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFy
UGFuZXMuY2FsbHN0YWNrLnVwZGF0ZShkZXRhaWxzLmNhbGxGcmFtZXMsIHRoaXMuX3NvdXJjZUlE
TWFwKTsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZy
YW1lID0gZGV0YWlscy5jYWxsRnJhbWVzWzBdOwogCi0gICAgICAgIGlmICgiZXZlbnRUeXBlIiBp
biBkZXRhaWxzKQotICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnVwZGF0
ZVN0YXR1cyhkZXRhaWxzLmV2ZW50VHlwZSwgZGV0YWlscy5ldmVudERhdGEpOwotCiAgICAgICAg
IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwgPSB0aGlzOwogICAgICAgICB3aW5kb3cuZm9jdXMo
KTsKICAgICB9LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXgg
NWFiNGIzMi4uODBlMjhhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCkBAIC0yMTMsOSArMjEzLDkgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgdmFy
IHBhbmUgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUoV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJET00gQnJlYWtwb2ludHMiKSk7CiAgICAgICAgIGZ1bmN0aW9uIGJyZWFr
cG9pbnRBZGRlZChldmVudCkKICAgICAgICAgewotICAgICAgICAgICAgcGFuZS5hZGRCcmVha3Bv
aW50KG5ldyBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludEl0ZW0oZXZlbnQuZGF0YSkpOworICAg
ICAgICAgICAgcGFuZS5hZGRCcmVha3BvaW50KG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0
ZW0oZXZlbnQuZGF0YSkpOwogICAgICAgICB9Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVh
a3BvaW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKCJkb20tYnJlYWtwb2ludC1hZGRlZCIsIGJy
ZWFrcG9pbnRBZGRlZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5icmVha3BvaW50TWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKCJkb20tYnJlYWtwb2ludC1hZGRlZCIsIGJyZWFrcG9pbnRBZGRlZCk7
CiAgICAgICAgIHJldHVybiBwYW5lOwogICAgIH0sCiAKQEAgLTUzMCw3ICs1MzAsNiBAQCBXZWJJ
bnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIH07CiAKICAgICB0aGlzLmJy
ZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcigpOwot
ICAgIHRoaXMuZG9tQnJlYWtwb2ludE1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnRNYW5hZ2VyKCk7CiAgICAgdGhpcy5jc3NNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNb2RlbCgpOwogCiAgICAgdGhpcy5wYW5lbHMgPSB7fTsKQEAgLTE0NTksNiArMTQ1OCw4
IEBAIFdlYkluc3BlY3Rvci5yZXN1bWVkU2NyaXB0ID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0
b3IucmVzZXQgPSBmdW5jdGlvbigpCiB7CisgICAgdGhpcy5icmVha3BvaW50TWFuYWdlci5yZXNl
dCgpOworCiAgICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIHRoaXMucGFuZWxzKSB7CiAgICAgICAg
IHZhciBwYW5lbCA9IHRoaXMucGFuZWxzW3BhbmVsTmFtZV07CiAgICAgICAgIGlmICgicmVzZXQi
IGluIHBhbmVsKQpAQCAtMTQ2Niw3ICsxNDY3LDYgQEAgV2ViSW5zcGVjdG9yLnJlc2V0ID0gZnVu
Y3Rpb24oKQogICAgIH0KIAogICAgIHRoaXMuc2Vzc2lvblNldHRpbmdzLnJlc2V0KCk7Ci0gICAg
dGhpcy5icmVha3BvaW50TWFuYWdlci5yZXNldCgpOwogCiAgICAgZm9yICh2YXIgY2F0ZWdvcnkg
aW4gdGhpcy5yZXNvdXJjZUNhdGVnb3JpZXMpCiAgICAgICAgIHRoaXMucmVzb3VyY2VDYXRlZ29y
aWVzW2NhdGVnb3J5XS5yZW1vdmVBbGxSZXNvdXJjZXMoKTsK
</data>
<flag name="review"
          id="59896"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>