<?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>69726</bug_id>
          
          <creation_ts>2011-10-09 12:09:53 -0700</creation_ts>
          <short_desc>Web Inspector: annotate DOMAgent, Debugger(Presentation)Model with types.</short_desc>
          <delta_ts>2011-10-10 10:02:17 -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 Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</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>480726</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-09 12:09:53 -0700</bug_when>
    <thetext>This change adds types to the DOMAgent and Debugger model. Besides the comments, it introduces WebInspector.Event (the one user in WebInspector.Object); spits the returnByValue and non-returnByValue evaluate paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480733</commentid>
    <comment_count>1</comment_count>
      <attachid>110306</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-09 12:19:13 -0700</bug_when>
    <thetext>Created attachment 110306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480754</commentid>
    <comment_count>2</comment_count>
      <attachid>110306</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-09 14:39:26 -0700</bug_when>
    <thetext>Comment on attachment 110306
Patch

This patch is causing the cr-linux-ews to spin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480956</commentid>
    <comment_count>3</comment_count>
      <attachid>110358</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-10 07:44:17 -0700</bug_when>
    <thetext>Created attachment 110358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480969</commentid>
    <comment_count>4</comment_count>
      <attachid>110358</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-10-10 08:33:26 -0700</bug_when>
    <thetext>Comment on attachment 110358
Patch

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

&gt; Source/WebCore/inspector/front-end/DebuggerModel.js:389
&gt; +        this._debuggerModel._parsedScriptSource(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript || false);

!!isContentScript ?

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:573
&gt; +WebInspector.PresentationConsoleMessage.prototype = {

Remove this ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480985</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-10 10:02:17 -0700</bug_when>
    <thetext>Committed r97067: &lt;http://trac.webkit.org/changeset/97067&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110306</attachid>
            <date>2011-10-09 12:19:13 -0700</date>
            <delta_ts>2011-10-10 07:44:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69726-20111009231911.patch</filename>
            <type>text/plain</type>
            <size>101978</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcwMDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NzdmYWQwZmU3N2U4YTAw
Y2JjNTZmZDZhMTRkYmNlMGI4ODJkYzRkLi42YTMwNGVhOWQ5M2JiZmVhODBjNDMyMDQwMTM0ZmEw
NDU2ZmVlZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTEtMTAtMDkgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogYW5ub3RhdGUgRE9NQWdlbnQsIERlYnVnZ2VyKFByZXNlbnRhdGlvbilNb2RlbCB3aXRoIHR5
cGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk3
MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUuY29tcGlsZWRMb2Nh
dGlvblRvU291cmNlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291
cmNlTWFwcGluZy5wcm90b3R5cGUuc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUuc291
cmNlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2NvbXBsZXRpb25zLmV2
YWx1YXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9j
b21wbGV0aW9ucy5yZWNlaXZlZFByb3BlcnR5TmFtZXNGcm9tRXZhbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmV2YWxJbkluc3BlY3RlZFdpbmRvdyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90
eXBlLmlzWE1MTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fZGlzcGF0Y2hXaGVuRG9jdW1l
bnRBdmFpbGFibGUub25Eb2N1bWVudEF2YWlsYWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQucHJvdG90eXBlLl9kaXNwYXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUuY2hhcmFjdGVyRGF0YU1v
ZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyLnByb3RvdHlwZS5j
aGlsZE5vZGVDb3VudFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNo
ZXIucHJvdG90eXBlLmNoaWxkTm9kZUluc2VydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01EaXNwYXRjaGVyLnByb3RvdHlwZS5jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9EYXRhYmFzZVRhYmxlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRh
YmxlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUGF1c2VkRGV0YWlscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwucHJvdG90eXBlLmdldCBjYWxsRnJhbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5fcGF1c2VkU2NyaXB0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5fcmVzdW1lZFNjcmlwdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX3BhcnNlZFNjcmlwdFNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2ZhaWxl
ZFRvUGFyc2VTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlz
cGF0Y2hlci5wcm90b3R5cGUuc2NyaXB0UGFyc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlckRpc3BhdGNoZXIucHJvdG90eXBlLmJyZWFrcG9pbnRSZXNvbHZlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9w
YXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLl9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fc291
cmNlTWFwcGluZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLl91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBl
Ll9jb25zb2xlTWVzc2FnZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fY3JlYXRlUHJlc2VudGF0aW9uTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNhbGxGcmFtZS5wcm90b3R5cGUuZXZhbHVhdGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lm
aWVyLnByb3RvdHlwZS5fdXBkYXRlU291cmNlQW5jaG9ycyk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBl
Ll9kb2N1bWVudFVwZGF0ZWQuc2VsZWN0TGFzdFNlbGVjdGVkTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX2RvY3VtZW50VXBkYXRlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudC5wcm90b3R5cGUuc3RvcFBy
b3BhZ2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudC5wcm90b3R5cGUucHJldmVu
dERlZmF1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuU291cmNlTWFwcGluZy5wcm90b3R5
cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUuU291cmNlTWFwcGluZy5wcm90b3R5cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuUGxhaW5Tb3VyY2VNYXBwaW5n
LnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkZvcm1h
dHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFwcGluZy5w
cm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS51aUxvY2F0aW9u
VG9SYXdMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHQucHJvdG90eXBlLnJlcXVlc3RTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdC5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
Y3JpcHQucHJvdG90eXBlLmVkaXRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuZXZhbHVhdGVJblNlbGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVy
LlNlYXJjaE1hdGNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVz
c2lvbnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Np
b25zU2VjdGlvbi5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2V4dGVybnMuanM6CisgICAgICAgICogaW5zcGVjdG9yL2dlbmVyYXRlLXByb3RvY29sLWV4
dGVybnM6CisKIDIwMTEtMTAtMDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgU25vdyBMZW9wYXJkIGJ1aWxkIGZpeCBhZnRlciByOTY5NzYuIEFwcGFyZW50bHkg
d2UganVzdCBuZWVkIGEgZnVsbCByZWJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2NvbXBpbGUtZnJvbnQtZW5kLnNoCmluZGV4IDllYjZjYjUyMTM1ZDhkOTg0ZmU0ODYzZmE4M2Ez
MzYzNzQ0NjlhZjQuLmY5MTg2YzVjYzVkYzZiZDIzOGI4M2E5YmNiYzQyOGI3MWFlN2I4ZTggMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLWNvbXBpbGF0
aW9uX2xldmVsIFNJTVBMRV9PUFRJTUlaQVRJT05TIC0td2FybgogICAgICAgICAtLWpzIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcyBcCiAgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIFwKICAgICAgICAgLS1q
cyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlbGNvbWVWaWV3LmpzIFwKLSAg
ICAtLW1vZHVsZSBqc21vZHVsZV9jb21wb25lbnRzOjE4OmpzbW9kdWxlX3Nkayxqc21vZHVsZV91
aSBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfY29tcG9uZW50czoxNTpqc21vZHVsZV9zZGssanNt
b2R1bGVfdWkgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZU1lc3NhZ2UuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcyBcCiAgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01CcmVha3BvaW50c1NpZGViYXJQ
YW5lLmpzIFwKQEAgLTExOCw5ICsxMTgsNiBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVy
LmphciAtLWNvbXBpbGF0aW9uX2xldmVsIFNJTVBMRV9PUFRJTUlaQVRJT05TIC0td2FybgogICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdENv
bnRleHRNYW5hZ2VyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMgXAot
ICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlQ1NT
VG9rZW5pemVyLmpzIFwKLSAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZUhUTUxUb2tlbml6ZXIuanMgXAotICAgICAgICAtLWpzIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlSmF2YVNjcmlwdFRva2VuaXplci5qcyBcCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VUb2tlbml6ZXIuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVBZ2VudC5qcyBcCkBAIC0xNzEsNyArMTY4LDExIEBAIGphdmEg
LWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tY29tcGlsYXRpb25fbGV2ZWwgU0lNUExFX09Q
VElNSVpBVElPTlMgLS13YXJuCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcyBcCiAgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwotICAgIAorIyAg
ICAgLS1tb2R1bGUganNtb2R1bGVfdG9rZW5pemVyczozOmpzbW9kdWxlX2NvbXBvbmVudHMgXAor
IyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUNT
U1Rva2VuaXplci5qcyBcCisjICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlSFRNTFRva2VuaXplci5qcyBcCisjICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlSmF2YVNjcmlwdFRva2VuaXplci5qcyBc
CisKIAogIyBUbyBiZSBjb21waWxlZC4uLgogIyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5q
cwppbmRleCA4MmM2YTE4YmZmNDdlMzQwZGM1MzkyZGZhMDFlOTExNmQ3NjM5ODgyLi44Y2NjODhi
NjRiOWIxOWFjODUzNGE3NDcyOTdmNTViNGZhMGJlYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRl
bXNWaWV3LmpzCkBAIC0zNywxMSArMzcsMTEgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVJdGVtc1ZpZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVudCwgYXBwY2FjaGVEb21haW4pCiAgICAg
Ly8gRklYTUU6IE5lZWRzIGJldHRlciB0b29sdGlwLiAoTG9jYWxpemVkKQogICAgIHRoaXMuZGVs
ZXRlQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEZWxldGUiKSwgImRlbGV0ZS1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOwog
ICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKLSAgICB0aGlzLmRlbGV0ZUJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2RlbGV0ZUJ1dHRvbkNsaWNrZWQu
YmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuZGVsZXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fZGVsZXRlQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKICAgICAvLyBG
SVhNRTogTmVlZHMgYmV0dGVyIHRvb2x0aXAuIChMb2NhbGl6ZWQpCiAgICAgdGhpcy5yZWZyZXNo
QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7Ci0g
ICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVm
cmVzaEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMucmVmcmVzaEJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2Vk
LCB0aGlzKTsKIAogICAgIGlmIChQcmVmZXJlbmNlcy5vbmxpbmVEZXRlY3Rpb25FbmFibGVkKSB7
CiAgICAgICAgIHRoaXMuY29ubmVjdGl2aXR5SWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanMKaW5kZXggNmU4ZmM5MWMwYzdjMGI0NGZkNzJiNjZkMGM4MDNlYjczNmNjMmM3MS4u
Y2MxNDJmMGJjNzZlZjZhMzQ2MmI5NWYzZDdlMmU1YWMxOGFlZmQzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC01MCw3ICs1
MCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmF1
ZGl0UmVzdWx0c1RyZWVFbGVtZW50LmV4cGFuZCgpOwogCiAgICAgdGhpcy5jbGVhclJlc3VsdHNC
dXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNsZWFyIGF1ZGl0IHJlc3VsdHMuIiksICJjbGVhci1zdGF0dXMtYmFyLWl0ZW0iKTsK
LSAgICB0aGlzLmNsZWFyUmVzdWx0c0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2NsZWFyQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5jbGVh
clJlc3VsdHNCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVhckJ1dHRv
bkNsaWNrZWQsIHRoaXMpOwogCiAgICAgdGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVu
dC5pZCA9ICJhdWRpdC12aWV3cyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggMDFhODc0MTg3OGU5NWYxY2I0MTI0ZjAx
YzkxNjYwYjM4Mjc4YTcxZi4uODlmY2Q4NmJmNjNlMzA0YWE1ZTVkM2NlMDQ3N2QwMDI5YzQ3M2U1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHls
ZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcwpAQCAtNDYsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
YXJzZVJ1bGVBcnJheVBheWxvYWQgPSBmdW5jdGlvbihydWxlQXJyYXkpCiB9CiAKIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cyA9IHsKLSAgICBTdHlsZVNoZWV0Q2hhbmdlZDogMAor
ICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiCiB9CiAKIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmcuanMKaW5k
ZXggMTNmYTFmM2EzNmUxOGVmOWE1ZWFhZDdmMGJhZmIwZGIyYjQwZmM5YS4uMDBmMjk3NGUxNWFj
NjhhNDkwNDk3MmZjZGQzZWE4MzhlMTdkODg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmcuanMKQEAg
LTI5LDI3ICsyOSwzMiBAQAogICovCiAKIC8qKgotICogQGNvbnN0cnVjdG9yCisgKiBAaW50ZXJm
YWNlCiAgKi8KIFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbigp
CiB7CiB9CiAKIFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0g
ewotICAgIGNvbXBpbGVkTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAotCi0gICAgc291cmNlTG9jYXRpb25Ub0NvbXBpbGVk
TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQot
ICAgIHsKLSAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0g
ICAgfSwKLQotICAgIHNvdXJjZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIFNob3Vs
ZCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0KKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5O
dW1iZXIKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCisgICAgY29tcGlsZWRMb2Nh
dGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikg
eyB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVt
bk51bWJlcgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICBzb3VyY2VMb2Nh
dGlvblRvQ29tcGlsZWRMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpIHsgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJp
bmc+fQorICAgICAqLworICAgIHNvdXJjZXM6IGZ1bmN0aW9uKCkgeyB9CiB9CiAKIC8qKgpAQCAt
NjQsNyArNjksNyBAQCBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZ1Bh
eWxvYWQgPSBmdW5jdGlvbigpCiAvKioKICAqIEltcGxlbWVudHMgU291cmNlIE1hcCBWMyBjb25z
dW1lci4gU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3dpa2kv
U291cmNlTWFwcwogICogZm9yIGZvcm1hdCBkZXNjcmlwdGlvbi4KLSAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nfQorICogQGltcGxlbWVudHMge1dlYkluc3Bl
Y3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmd9CiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmdQYXlsb2FkfSBtYXBwaW5n
UGF5bG9hZAogICovCkBAIC04Niw2ICs5MSwxMSBAQCBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBp
bGVyU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKG1hcHBpbmdQYXlsb2FkKQogfQogCiBXZWJJbnNw
ZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqLwogICAgIGNv
bXBpbGVkTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2ZpbmRNYXBwaW5n
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CkBAIC0xMDIsNiArMTEyLDkgQEAgV2ViSW5zcGVj
dG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQorICAg
ICAqLwogICAgIHNvdXJjZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKaW5kZXggM2IxMWU3MzVkNTY1MWEyNzQ2NGViNzExNzYzYTM5YzkwZjA3YTdh
Mi4uNjI1OTA4YmJkNWJjY2VmYzk3ZmFlYWFjYmZhZGZmODU0NzVjYTc5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC00Miw3
ICs0Miw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGhpZGVDb250ZXh0
U2VsZWN0b3IpCiAgICAgdGhpcy5tZXNzYWdlcyA9IFtdOwogCiAgICAgdGhpcy5fY2xlYXJDb25z
b2xlQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDbGVhciBjb25zb2xlIGxvZy4iKSwgImNsZWFyLXN0YXR1cy1iYXItaXRlbSIp
OwotICAgIHRoaXMuX2NsZWFyQ29uc29sZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX3JlcXVlc3RDbGVhck1lc3NhZ2VzLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlz
Ll9jbGVhckNvbnNvbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZXF1
ZXN0Q2xlYXJNZXNzYWdlcywgdGhpcyk7CiAKICAgICB0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwogICAgIHRoaXMuX2NvbnRleHRT
ZWxlY3RFbGVtZW50LmlkID0gImNvbnNvbGUtY29udGV4dCI7CkBAIC0zNjUsNyArMzY1LDcgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFleHBy
ZXNzaW9uU3RyaW5nICYmIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpCiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuZ2V0U2VsZWN0ZWRDYWxsRnJhbWVW
YXJpYWJsZXMocmVjZWl2ZWRQcm9wZXJ0eU5hbWVzLmJpbmQodGhpcykpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdyhleHByZXNzaW9uU3RyaW5n
LCAiY29tcGxldGlvbiIsIHRydWUsIHRydWUsIHVuZGVmaW5lZCwgZXZhbHVhdGVkLmJpbmQodGhp
cykpOworICAgICAgICAgICAgdGhpcy5ldmFsSW5JbnNwZWN0ZWRXaW5kb3coZXhwcmVzc2lvblN0
cmluZywgImNvbXBsZXRpb24iLCB0cnVlLCB0cnVlLCBmYWxzZSwgZXZhbHVhdGVkLmJpbmQodGhp
cykpOwogCiAgICAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlZChyZXN1bHQsIHdhc1Rocm93bikKICAg
ICAgICAgewpAQCAtNDAxLDEwICs0MDEsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PT0gIm9iamVjdCIgfHwg
cmVzdWx0LnR5cGUgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmNhbGxG
dW5jdGlvbkpTT04oZ2V0Q29tcGxldGlvbnMsIHJlY2VpdmVkUHJvcGVydHlOYW1lcy5iaW5kKHRo
aXMpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC50eXBlID09PSAic3RyaW5nIiB8fCBy
ZXN1bHQudHlwZSA9PT0gIm51bWJlciIgfHwgcmVzdWx0LnR5cGUgPT09ICJib29sZWFuIikKLSAg
ICAgICAgICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdygiKCIgKyBnZXRDb21wbGV0
aW9ucyArICIpKFwiIiArIHJlc3VsdC50eXBlICsgIlwiKSIsICJjb21wbGV0aW9uIiwgdW5kZWZp
bmVkLCB0cnVlLCB0cnVlLCByZWNlaXZlZFByb3BlcnR5TmFtZXNGcm9tRXZhbC5iaW5kKHRoaXMp
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdygiKCIgKyBnZXRD
b21wbGV0aW9ucyArICIpKFwiIiArIHJlc3VsdC50eXBlICsgIlwiKSIsICJjb21wbGV0aW9uIiwg
ZmFsc2UsIHRydWUsIHRydWUsIHJlY2VpdmVkUHJvcGVydHlOYW1lc0Zyb21FdmFsLmJpbmQodGhp
cykpOwogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZWRQcm9wZXJ0eU5hbWVz
RnJvbUV2YWwocmVzdWx0LCB3YXNUaHJvd24pCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVkUHJv
cGVydHlOYW1lc0Zyb21FdmFsKG5vdFJlbGV2YW50LCB3YXNUaHJvd24sIHJlc3VsdCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiAhd2FzVGhyb3duKQogICAgICAgICAgICAg
ICAgIHJlY2VpdmVkUHJvcGVydHlOYW1lcy5jYWxsKHRoaXMsIHJlc3VsdC52YWx1ZSk7CkBAIC01
NjQsNiArNTY0LDE0IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJl
c3Npb24KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0R3JvdXAKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGluY2x1ZGVDb21tYW5kTGluZUFQSQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9ucworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmV0dXJuQnlW
YWx1ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qs
IGJvb2xlYW4sIFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3Q9KX0gY2FsbGJhY2sKKyAgICAgKi8K
ICAgICBldmFsSW5JbnNwZWN0ZWRXaW5kb3c6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnMsIHJldHVy
bkJ5VmFsdWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5wYXVzZWQpIHsKQEAgLTU4MCwxMiArNTg4LDEyIEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJv
cikgewogICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGZhbHNl
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGlmIChyZXR1cm5CeVZhbHVlICYmICF3YXNUaHJvd24pCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0LCB3YXNUaHJvd24pOworICAgICAgICAgICAgaWYgKHJldHVybkJ5VmFsdWUpCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgd2FzVGhyb3duLCB3YXNUaHJvd24gPyByZXN1
bHQgOiBudWxsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjYWxsYmFjayhX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCksIHdhc1Rocm93bik7
CiAgICAgICAgIH0KQEAgLTYyMyw3ICs2MzEsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB0aGlzLl9hcHBlbmRDb25zb2xlTWVzc2FnZShu
ZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KHJlc3VsdCwgd2FzVGhyb3duLCBj
b21tYW5kTWVzc2FnZSwgdGhpcy5fbGlua2lmaWVyKSk7CiAgICAgICAgIH0KLSAgICAgICAgdGhp
cy5ldmFsSW5JbnNwZWN0ZWRXaW5kb3coc3RyLCAiY29uc29sZSIsIHRydWUsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkLCBwcmludFJlc3VsdC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5ldmFsSW5J
bnNwZWN0ZWRXaW5kb3coc3RyLCAiY29uc29sZSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgcHJpbnRS
ZXN1bHQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLkNv
bnNvbGVFdmFsdWF0ZWQucmVjb3JkKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggMGNiZjZlYTg5
MDU2Yzg4NDE1MDRiMDA4Zjg5NzdkYWI2MTlkNmFjMi4uYmVhODM2NDU3MjBjNmViM2VlYjEyODg2
MjRmN2FmYmNlZGQwNmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKQEAgLTM5LDEwICszOSwxMCBAQCBXZWJJbnNw
ZWN0b3IuQ29va2llSXRlbXNWaWV3ID0gZnVuY3Rpb24odHJlZUVsZW1lbnQsIGNvb2tpZURvbWFp
bikKIAogICAgIHRoaXMuX2RlbGV0ZUJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFy
QnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIiksICJkZWxldGUtc3RvcmFnZS1z
dGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLl9kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNl
OwotICAgIHRoaXMuX2RlbGV0ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2RlbGV0ZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuX2RlbGV0
ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2RlbGV0ZUJ1dHRvbkNsaWNr
ZWQsIHRoaXMpOwogCiAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
U3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCIpLCAicmVmcmVz
aC1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOwotICAgIHRoaXMuX3JlZnJlc2hCdXR0b24uYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZC5iaW5kKHRo
aXMpLCBmYWxzZSk7CisgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLCB0aGlzKTsKIAogICAgIHRoaXMuX3Ry
ZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CiAgICAgdGhpcy5fY29va2llRG9tYWluID0gY29va2ll
RG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQu
anMKaW5kZXggMWYyZjllZDk5ZjVlYzQ3MmE4NGRmMGQ5OTJjOTgwZGU5MjhiMDFjYS4uNjU1YzE1
ZmI5OTMyYzQ3YjhmNWZmM2YyN2VmNmY5YjIxOWZiYTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC0zMSw2ICszMSw3IEBACiAKIC8q
KgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Eb2N1bWVudH0g
ZG9jCiAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGV9IHBheWxvYWQKICAqLwogV2ViSW5zcGVjdG9y
LkRPTU5vZGUgPSBmdW5jdGlvbihkb2MsIHBheWxvYWQpIHsKQEAgLTg1LDcyICs4NiwxMjIgQEAg
V2ViSW5zcGVjdG9yLkRPTU5vZGUgPSBmdW5jdGlvbihkb2MsIHBheWxvYWQpIHsKIH0KIAogV2Vi
SW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCiAgICAgaGFzQXR0cmlidXRlczogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMubGVuZ3RoID4gMDsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KICAgICBoYXNDaGlsZE5v
ZGVzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGROb2RlQ291
bnQgPiAwOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CisgICAg
ICovCiAgICAgbm9kZVR5cGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9ub2RlVHlwZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQor
ICAgICAqLwogICAgIG5vZGVOYW1lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fbm9kZU5hbWU7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KICAgICBub2RlTmFtZUluQ29ycmVjdENhc2U6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLmlzWE1MTm9kZSgpID8gdGhpcy5ub2RlTmFtZSgpIDogdGhp
cy5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtmdW5jdGlvbigpPX0gY2FsbGJhY2sK
KyAgICAgKi8KICAgICBzZXROb2RlTmFtZTogZnVuY3Rpb24obmFtZSwgY2FsbGJhY2spCiAgICAg
ewogICAgICAgICBET01BZ2VudC5zZXROb2RlTmFtZSh0aGlzLmlkLCBuYW1lLCBjYWxsYmFjayk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAg
ICBsb2NhbE5hbWU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sb2Nh
bE5hbWU7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
Ki8KICAgICBub2RlVmFsdWU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9ub2RlVmFsdWU7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2
YWx1ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNr
CisgICAgICovCiAgICAgc2V0Tm9kZVZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBET01BZ2VudC5zZXROb2RlVmFsdWUodGhpcy5pZCwgdmFsdWUsIGNhbGxi
YWNrKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0QXR0cmlidXRlOiBmdW5jdGlv
bihuYW1lKQogICAgIHsKICAgICAgICAgdmFyIGF0dHIgPSB0aGlzLl9hdHRyaWJ1dGVzTWFwW25h
bWVdOwogICAgICAgICByZXR1cm4gYXR0ciA/IGF0dHIudmFsdWUgOiB1bmRlZmluZWQ7CiAgICAg
fSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IHRleHQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFjaworICAg
ICAqLwogICAgIHNldEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgdGV4dCwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBET01BZ2VudC5zZXRBdHRyaWJ1dGVzQXNUZXh0KHRoaXMuaWQsIHRleHQs
IG5hbWUsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKCk9fSBjYWxsYmFjaworICAgICAqLwogICAgIHNldEF0dHJpYnV0ZVZhbHVlOiBmdW5j
dGlvbihuYW1lLCB2YWx1ZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2VudC5zZXRB
dHRyaWJ1dGVWYWx1ZSh0aGlzLmlkLCBuYW1lLCB2YWx1ZSwgY2FsbGJhY2spOwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICovCiAgICAgYXR0cmlidXRl
czogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXM7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbigpPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICByZW1vdmVBdHRyaWJ1dGU6
IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxs
YmFjayhlcnJvciwgc3VjY2VzcykKQEAgLTE3MSw2ICsyMjIsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIERPTUFnZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlz
LmlkLCBuYW1lLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuRE9NTm9kZT4pPX0gY2Fs
bGJhY2sKKyAgICAgKi8KICAgICBnZXRDaGlsZE5vZGVzOiBmdW5jdGlvbihjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7CkBAIC0xNzksNiArMjMzLDEwIEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRP
TU5vZGV9CisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAg
ICAgKi8KICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvcikgewogICAgICAgICAgICAg
aWYgKCFlcnJvciAmJiBjYWxsYmFjaykKICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLmNo
aWxkcmVuKTsKQEAgLTE4NiwzMSArMjQ0LDUwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgRE9NQWdlbnQucmVxdWVzdENoaWxkTm9kZXModGhpcy5pZCwgbXlj
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBnZXRPdXRl
ckhUTUw6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQuZ2V0T3V0
ZXJIVE1MKHRoaXMuaWQsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGh0bWwKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJv
cik9fSBjYWxsYmFjaworICAgICAqLwogICAgIHNldE91dGVySFRNTDogZnVuY3Rpb24oaHRtbCwg
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2VudC5zZXRPdXRlckhUTUwodGhpcy5pZCwg
aHRtbCwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9Qcm90b2NvbC5FcnJvcik9fSBjYWxsYmFjaworICAgICAqLwogICAgIHJlbW92ZU5vZGU6
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQucmVtb3ZlTm9kZSh0
aGlzLmlkLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisgICAgICovCiAgICAgY29weU5vZGU6
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQuY29weU5vZGUodGhp
cy5pZCwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9Qcm90b2NvbC5FcnJvcik9fSBjYWxsYmFjaworICAgICAqLwogICAgIGV2ZW50TGlzdGVu
ZXJzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LmdldEV2ZW50
TGlzdGVuZXJzRm9yTm9kZSh0aGlzLmlkLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBwYXRoOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB2YXIgcGF0aCA9IFtdOwpAQCAtMjIzLDYgKzMwMCwxMCBAQCBXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oIiwi
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFufSBqdXN0U2VsZWN0
b3IKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgYXBwcm9wcmlhdGVTZWxl
Y3RvckZvcjogZnVuY3Rpb24oanVzdFNlbGVjdG9yKQogICAgIHsKICAgICAgICAgdmFyIGxvd2Vy
Q2FzZU5hbWUgPSB0aGlzLmxvY2FsTmFtZSgpIHx8IHRoaXMubm9kZU5hbWUoKS50b0xvd2VyQ2Fz
ZSgpOwpAQCAtMjQ1LDYgKzMyNiwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiBsb3dlckNhc2VOYW1lOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Ob2RlfSBub2RlCisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KICAgICBpc0FuY2VzdG9yOiBmdW5jdGlvbihub2RlKQogICAgIHsK
ICAgICAgICAgaWYgKCFub2RlKQpAQCAtMjU5LDExICszNDQsMTggQEAgV2ViSW5zcGVjdG9yLkRP
TU5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9IGRlc2NlbmRhbnQKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGlzRGVzY2VuZGFudDogZnVuY3Rp
b24oZGVzY2VuZGFudCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZXNjZW5kYW50ICE9PSBudWxs
ICYmIGRlc2NlbmRhbnQuaXNBbmNlc3Rvcih0aGlzKTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gYXR0cnMKKyAgICAgKi8KICAgICBfc2V0QXR0cmli
dXRlc1BheWxvYWQ6IGZ1bmN0aW9uKGF0dHJzKQogICAgIHsKICAgICAgICAgdGhpcy5fYXR0cmli
dXRlcyA9IFtdOwpAQCAtMjczLDcgKzM2NSw5IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RE9NTm9kZX0gcHJldgogICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZX0gcGF5bG9hZAorICAg
ICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5ET01Ob2RlfQogICAgICAqLwogICAgIF9pbnNlcnRD
aGlsZDogZnVuY3Rpb24ocHJldiwgcGF5bG9hZCkKICAgICB7CkBAIC0yOTAsNiArMzg0LDkgQEAg
V2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0g
bm9kZQorICAgICAqLwogICAgIF9yZW1vdmVDaGlsZDogZnVuY3Rpb24obm9kZSkKICAgICB7CiAg
ICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKHRoaXMuY2hpbGRyZW4uaW5kZXhPZihub2RlKSwg
MSk7CkBAIC0yOTcsNiArMzk0LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlPn0gcGF5bG9hZHMKKyAgICAgKi8KICAgICBfc2V0
Q2hpbGRyZW5QYXlsb2FkOiBmdW5jdGlvbihwYXlsb2FkcykKICAgICB7CiAgICAgICAgIHRoaXMu
Y2hpbGRyZW4gPSBbXTsKQEAgLTMyNyw2ICs0MjcsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCisgICAgICovCiAg
ICAgX2FkZEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgdmFsdWUpCiAgICAgewogICAgICAgICB2
YXIgYXR0ciA9IHsKQEAgLTMzOCw2ICs0NDIsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzLnB1c2goYXR0cik7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHZhbHVlCisgICAgICovCiAgICAgX3NldEF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwg
dmFsdWUpCiAgICAgewogICAgICAgICB2YXIgYXR0ciA9IHRoaXMuX2F0dHJpYnV0ZXNNYXBbbmFt
ZV07CkBAIC0zNDcsNiArNDU1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKi8KICAgICBfcmVt
b3ZlQXR0cmlidXRlOiBmdW5jdGlvbihuYW1lKQogICAgIHsKICAgICAgICAgdmFyIGF0dHIgPSB0
aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVdOwpAQCAtMzU2LDYgKzQ2Nyw5IEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0KKyAgICAgKi8KICAgICBvd25lckRv
Y3VtZW50RWxlbWVudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gZG9jdW1lbnQgZWxl
bWVudCBpcyB0aGUgY2hpbGQgb2YgdGhlIGRvY3VtZW50IC8gZnJhbWUgb3duZXIgbm9kZSB0aGF0
IGhhcyBkb2N1bWVudFVSTCBwcm9wZXJ0eS4KQEAgLTM2NiwyNSArNDgwLDM5IEBAIFdlYkluc3Bl
Y3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9IHRhcmdldE5v
ZGUKKyAgICAgKiBAcGFyYW0gez9XZWJJbnNwZWN0b3IuRE9NTm9kZX0gYW5jaG9yTm9kZQorICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisgICAgICov
CiAgICAgbW92ZVRvOiBmdW5jdGlvbih0YXJnZXROb2RlLCBhbmNob3JOb2RlLCBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIERPTUFnZW50Lm1vdmVUbyh0aGlzLmlkLCB0YXJnZXROb2RlLmlkLCBh
bmNob3JOb2RlID8gYW5jaG9yTm9kZS5pZCA6IHVuZGVmaW5lZCwgY2FsbGJhY2spOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGlzWE1M
Tm9kZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3duZXJEb2N1bWVu
dCAmJiAhIXRoaXMub3duZXJEb2N1bWVudC54bWxWZXJzaW9uOworICAgICAgICByZXR1cm4gISF0
aGlzLm93bmVyRG9jdW1lbnQgJiYgISF0aGlzLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKICAg
ICB9CiB9CiAKIC8qKgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5ET01Ob2RlfQogICogQGNv
bnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01BZ2VudH0gZG9tQWdlbnQKICAq
IEBwYXJhbSB7RE9NQWdlbnQuTm9kZX0gcGF5bG9hZAogICovCiBXZWJJbnNwZWN0b3IuRE9NRG9j
dW1lbnQgPSBmdW5jdGlvbihkb21BZ2VudCwgcGF5bG9hZCkKIHsKICAgICBXZWJJbnNwZWN0b3Iu
RE9NTm9kZS5jYWxsKHRoaXMsIHRoaXMsIHBheWxvYWQpOworCisgICAgLyoqCisgICAgICogQHR5
cGUge3N0cmluZ30gRG9jdW1lbnQgbm9kZXMgYWx3YXlzIGhhdmUgZG9jdW1lbnRVUkwKKyAgICAg
Ki8KKyAgICB0aGlzLmRvY3VtZW50VVJMOwogICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OwogICAg
IHRoaXMuX2RvbUFnZW50ID0gZG9tQWdlbnQ7CiB9CkBAIC00MzQsNiArNTYyLDExIEBAIFdlYklu
c3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcGVuZGluZ0Rv
Y3VtZW50UmVxdWVzdENhbGxiYWNrcyA9IFtjYWxsYmFja107CiAKKyAgICAgICAgLyoqCisgICAg
ICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRE9NQWdlbnR9CisgICAgICAgICAqIEBwYXJhbSB7
P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGV9
IHJvb3QKKyAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUo
ZXJyb3IsIHJvb3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghZXJyb3IpCkBAIC00NTAs
MTYgKzU4MywyOCBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAg
ICBET01BZ2VudC5nZXREb2N1bWVudChvbkRvY3VtZW50QXZhaWxhYmxlLmJpbmQodGhpcykpOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1J1bnRpbWVBZ2VudC5SZW1vdGVPYmpl
Y3RJZH0gb2JqZWN0SWQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFjaworICAg
ICAqLwogICAgIHB1c2hOb2RlVG9Gcm9udGVuZDogZnVuY3Rpb24ob2JqZWN0SWQsIGNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hXaGVuRG9jdW1lbnRBdmFpbGFibGUoRE9N
QWdlbnQucmVxdWVzdE5vZGUuYmluZChET01BZ2VudCksIG9iamVjdElkLCBjYWxsYmFjayk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbig/V2ViSW5zcGVjdG9yLkRPTU5vZGUpPX0gY2FsbGJhY2sKKyAgICAgKi8K
ICAgICBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQ6IGZ1bmN0aW9uKHBhdGgsIGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hXaGVuRG9jdW1lbnRBdmFpbGFibGUoRE9NQWdl
bnQucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kLmJpbmQoRE9NQWdlbnQpLCBwYXRoLCBjYWxsYmFj
ayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKik9fSBjYWxs
YmFjaworICAgICAqIEByZXR1cm4ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvciwqPSl8dW5kZWZp
bmVkfQorICAgICAqLwogICAgIF93cmFwQ2xpZW50Q2FsbGJhY2s6IGZ1bmN0aW9uKGNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKQEAgLTQ3MiwyMyArNjE3LDMyIEBAIFdl
Ykluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbigqLCBmdW5jdGlvbigpPSl9IGZ1bmMKKyAg
ICAgKiBAcGFyYW0geyp9IGFyZworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKT19IGNhbGxiYWNr
CisgICAgICovCiAgICAgX2Rpc3BhdGNoV2hlbkRvY3VtZW50QXZhaWxhYmxlOiBmdW5jdGlvbihm
dW5jLCBhcmcsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAg
ICAgICAgY2FsbGJhY2sgPSB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spOworICAg
ICAgICB2YXIgY2FsbGJhY2tXcmFwcGVyID0gdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxi
YWNrKTsKIAogICAgICAgICBmdW5jdGlvbiBvbkRvY3VtZW50QXZhaWxhYmxlKCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50KQotICAgICAgICAgICAgICAgIGZ1bmMu
Y2FsbChudWxsLCBhcmcsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBmdW5jLmNhbGwobnVs
bCwgYXJnLCBjYWxsYmFja1dyYXBwZXIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygiTm8gZG9j
dW1lbnQiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tXcmFwcGVyKQorICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFja1dyYXBwZXIoIk5vIGRvY3VtZW50Iik7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5yZXF1ZXN0RG9jdW1lbnQob25Eb2N1bWVudEF2YWls
YWJsZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5yZXF1ZXN0RG9jdW1lbnQob25Eb2N1bWVu
dEF2YWlsYWJsZS5iaW5kKG51bGwpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCisgICAgICovCiAgICAgX2F0dHJpYnV0ZU1vZGlm
aWVkOiBmdW5jdGlvbihub2RlSWQsIG5hbWUsIHZhbHVlKQogICAgIHsKICAgICAgICAgdmFyIG5v
ZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpAQCAtNDk4LDYgKzY1MiwxMCBAQCBXZWJJ
bnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmllZCwg
eyBub2RlOiBub2RlLCBuYW1lOiBuYW1lIH0pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKi8KICAgICBfYXR0cmlidXRlUmVtb3ZlZDogZnVuY3Rpb24obm9kZUlkLCBuYW1l
KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpA
QCAtNTA3LDYgKzY2NSw5IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5FdmVudHMuQXR0clJlbW92ZWQsIHsgbm9kZTogbm9kZSwgbmFtZTogbmFtZSB9KTsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48RE9NQWdlbnQuTm9kZUlkPn0gbm9k
ZUlkcworICAgICAqLwogICAgIF9pbmxpbmVTdHlsZUludmFsaWRhdGVkOiBmdW5jdGlvbihub2Rl
SWRzKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsg
KytpKQpAQCAtNTE4LDYgKzY3OSwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBl
ID0gewogCiAgICAgX2xvYWROb2RlQXR0cmlidXRlczogZnVuY3Rpb24oKQogICAgIHsKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRE9NQWdlbnR9CisgICAgICAg
ICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgICAgICogQHBhcmFtIHtB
cnJheS48c3RyaW5nPn0gYXR0cmlidXRlcworICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2sobm9kZUlkLCBhdHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IWF0dHJpYnV0ZXMpCkBAIC01MzcsNiArNzAzLDEwIEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2RlSWRzID0ge307CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUKKyAgICAgKi8KICAgICBfY2hhcmFjdGVy
RGF0YU1vZGlmaWVkOiBmdW5jdGlvbihub2RlSWQsIG5ld1ZhbHVlKQogICAgIHsKICAgICAgICAg
dmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpAQCAtNTQ0LDYgKzcxNCwxMCBA
QCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkNoYXJhY3Rl
ckRhdGFNb2RpZmllZCwgbm9kZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuRE9N
Tm9kZXx1bmRlZmluZWR9CisgICAgICovCiAgICAgbm9kZUZvcklkOiBmdW5jdGlvbihub2RlSWQp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKQEAgLTU4
MCw2ICs3NTQsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5faWRUb0RPTU5vZGVbcGF5bG9hZC5ub2RlSWRdID0gcm9vdDsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IHBhcmVudElkCisgICAgICog
QHBhcmFtIHtBcnJheS48RE9NQWdlbnQuTm9kZT59IHBheWxvYWRzCisgICAgICovCiAgICAgX3Nl
dENoaWxkTm9kZXM6IGZ1bmN0aW9uKHBhcmVudElkLCBwYXlsb2FkcykKICAgICB7CiAgICAgICAg
IGlmICghcGFyZW50SWQgJiYgcGF5bG9hZHMubGVuZ3RoKSB7CkBAIC01OTIsNiArNzcwLDkgQEAg
V2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYmluZE5v
ZGVzKHBhcmVudC5jaGlsZHJlbik7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
QXJyYXkuPFdlYkluc3BlY3Rvci5ET01Ob2RlPn0gY2hpbGRyZW4KKyAgICAgKi8KICAgICBfYmlu
ZE5vZGVzOiBmdW5jdGlvbihjaGlsZHJlbikKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKQEAgLTYwMiw2ICs3ODMsMTAgQEAgV2ViSW5z
cGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IG5ld1ZhbHVlCisgICAgICovCiAgICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZDog
ZnVuY3Rpb24obm9kZUlkLCBuZXdWYWx1ZSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhp
cy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKQEAgLTYwOSw2ICs3OTQsMTEgQEAgV2ViSW5zcGVjdG9y
LkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5DaGlsZE5vZGVDb3VudFVwZGF0ZWQs
IG5vZGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJ
ZH0gcGFyZW50SWQKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gcHJldklkCisgICAg
ICogQHBhcmFtIHtET01BZ2VudC5Ob2RlfSBwYXlsb2FkCisgICAgICovCiAgICAgX2NoaWxkTm9k
ZUluc2VydGVkOiBmdW5jdGlvbihwYXJlbnRJZCwgcHJldklkLCBwYXlsb2FkKQogICAgIHsKICAg
ICAgICAgdmFyIHBhcmVudCA9IHRoaXMuX2lkVG9ET01Ob2RlW3BhcmVudElkXTsKQEAgLTYxOCw2
ICs4MDgsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50
cy5Ob2RlSW5zZXJ0ZWQsIG5vZGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e0RPTUFnZW50Lk5vZGVJZH0gcGFyZW50SWQKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJ
ZH0gbm9kZUlkCisgICAgICovCiAgICAgX2NoaWxkTm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcmVu
dElkLCBub2RlSWQpCiAgICAgewogICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5v
ZGVbcGFyZW50SWRdOwpAQCAtNjM4LDYgKzgzMiw4IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBx
dWVyeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPERPTUFnZW50Lk5vZGU+KX0gc2Vh
cmNoUmVzdWx0Q29sbGVjdG9yCiAgICAgICogQHBhcmFtIHtib29sZWFuPX0gc2VhcmNoU3luY2hy
b25vdXNseQogICAgICAqLwogICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBzZWFy
Y2hSZXN1bHRDb2xsZWN0b3IsIHNlYXJjaFN5bmNocm9ub3VzbHkpCkBAIC02NTIsMTEgKzg0OCwy
MSBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICBET01BZ2Vu
dC5jYW5jZWxTZWFyY2goKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01B
Z2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvcnMKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBxdWVyeVNl
bGVjdG9yOiBmdW5jdGlvbihub2RlSWQsIHNlbGVjdG9ycywgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBET01BZ2VudC5xdWVyeVNlbGVjdG9yKG5vZGVJZCwgc2VsZWN0b3JzLCB0aGlzLl93cmFw
Q2xpZW50Q2FsbGJhY2soY2FsbGJhY2spKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxl
Y3RvcnMKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopPX0gY2FsbGJhY2sKKyAgICAgKi8KICAg
ICBxdWVyeVNlbGVjdG9yQWxsOiBmdW5jdGlvbihub2RlSWQsIHNlbGVjdG9ycywgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBET01BZ2VudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0
b3JzLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spKTsKQEAgLTY4NSwxMiArODkx
LDE5IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
aGlnaGxpZ2h0RE9NTm9kZSgwKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/
RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKi8KICAgICBoaWdobGlnaHRET01Ob2RlRm9y
VHdvU2Vjb25kczogZnVuY3Rpb24obm9kZUlkKQogICAgIHsKICAgICAgICAgdGhpcy5oaWdobGln
aHRET01Ob2RlKG5vZGVJZCk7CiAgICAgICAgIHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGlt
ZW91dCA9IHNldFRpbWVvdXQodGhpcy5oaWRlRE9NTm9kZUhpZ2hsaWdodC5iaW5kKHRoaXMpLCAy
MDAwKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVk
CisgICAgICogQHBhcmFtIHtmdW5jdGlvbigpPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBzZXRJ
bnNwZWN0TW9kZUVuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQsIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgRE9NQWdlbnQuc2V0SW5zcGVjdE1vZGVFbmFibGVkKGVuYWJsZWQsIHRoaXMuX2J1aWxk
SGlnaGxpZ2h0Q29uZmlnKCksIGNhbGxiYWNrKTsKQEAgLTcyNCw2ICs5MzcsNyBAQCBXZWJJbnNw
ZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtET01BZ2Vu
dC5EaXNwYXRjaGVyfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NQWdlbnR9IGRvbUFnZW50
CiAgKi8KIFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyID0gZnVuY3Rpb24oZG9tQWdlbnQpCiB7
CkBAIC03MzYsNDYgKzk1MCw4MiBAQCBXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9kb2N1bWVudFVwZGF0ZWQoKTsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCisg
ICAgICovCiAgICAgYXR0cmlidXRlTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmFtZSwgdmFs
dWUpCiAgICAgewogICAgICAgICB0aGlzLl9kb21BZ2VudC5fYXR0cmlidXRlTW9kaWZpZWQobm9k
ZUlkLCBuYW1lLCB2YWx1ZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9N
QWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAq
LwogICAgIGF0dHJpYnV0ZVJlbW92ZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmFtZSkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2RvbUFnZW50Ll9hdHRyaWJ1dGVSZW1vdmVkKG5vZGVJZCwgbmFtZSk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPERPTUFnZW50Lk5vZGVJZD59
IG5vZGVJZHMKKyAgICAgKi8KICAgICBpbmxpbmVTdHlsZUludmFsaWRhdGVkOiBmdW5jdGlvbihu
b2RlSWRzKQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2lubGluZVN0eWxlSW52YWxp
ZGF0ZWQobm9kZUlkcyk7CiAgICAgfSwKIAotICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZDogZnVu
Y3Rpb24obm9kZUlkLCBuZXdWYWx1ZSkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50
Lk5vZGVJZH0gbm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXJhY3RlckRhdGEKKyAg
ICAgKi8KKyAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgY2hhcmFj
dGVyRGF0YSkKICAgICB7Ci0gICAgICAgIHRoaXMuX2RvbUFnZW50Ll9jaGFyYWN0ZXJEYXRhTW9k
aWZpZWQobm9kZUlkLCBuZXdWYWx1ZSk7CisgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9jaGFyYWN0
ZXJEYXRhTW9kaWZpZWQobm9kZUlkLCBjaGFyYWN0ZXJEYXRhKTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IHBhcmVudElkCisgICAgICogQHBhcmFt
IHtBcnJheS48RE9NQWdlbnQuTm9kZT59IHBheWxvYWRzCisgICAgICovCiAgICAgc2V0Q2hpbGRO
b2RlczogZnVuY3Rpb24ocGFyZW50SWQsIHBheWxvYWRzKQogICAgIHsKICAgICAgICAgdGhpcy5f
ZG9tQWdlbnQuX3NldENoaWxkTm9kZXMocGFyZW50SWQsIHBheWxvYWRzKTsKICAgICB9LAogCi0g
ICAgY2hpbGROb2RlQ291bnRVcGRhdGVkOiBmdW5jdGlvbihub2RlSWQsIG5ld1ZhbHVlKQorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gY2hpbGROb2RlQ291bnQKKyAgICAgKi8KKyAgICBjaGlsZE5vZGVDb3VudFVw
ZGF0ZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgY2hpbGROb2RlQ291bnQpCiAgICAgewotICAgICAgICB0
aGlzLl9kb21BZ2VudC5fY2hpbGROb2RlQ291bnRVcGRhdGVkKG5vZGVJZCwgbmV3VmFsdWUpOwor
ICAgICAgICB0aGlzLl9kb21BZ2VudC5fY2hpbGROb2RlQ291bnRVcGRhdGVkKG5vZGVJZCwgY2hp
bGROb2RlQ291bnQpOwogICAgIH0sCiAKLSAgICBjaGlsZE5vZGVJbnNlcnRlZDogZnVuY3Rpb24o
cGFyZW50SWQsIHByZXZJZCwgcGF5bG9hZCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFn
ZW50Lk5vZGVJZH0gcGFyZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9
IHByZXZpb3VzTm9kZUlkCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlfSBwYXlsb2FkCisg
ICAgICovCisgICAgY2hpbGROb2RlSW5zZXJ0ZWQ6IGZ1bmN0aW9uKHBhcmVudE5vZGVJZCwgcHJl
dmlvdXNOb2RlSWQsIHBheWxvYWQpCiAgICAgewotICAgICAgICB0aGlzLl9kb21BZ2VudC5fY2hp
bGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgcGF5bG9hZCk7CisgICAgICAgIHRoaXMu
X2RvbUFnZW50Ll9jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnROb2RlSWQsIHByZXZpb3VzTm9kZUlk
LCBwYXlsb2FkKTsKICAgICB9LAogCi0gICAgY2hpbGROb2RlUmVtb3ZlZDogZnVuY3Rpb24ocGFy
ZW50SWQsIG5vZGVJZCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0g
cGFyZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAg
ICAqLworICAgIGNoaWxkTm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcmVudE5vZGVJZCwgbm9kZUlk
KQogICAgIHsKLSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50
SWQsIG5vZGVJZCk7CisgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9jaGlsZE5vZGVSZW1vdmVkKHBh
cmVudE5vZGVJZCwgbm9kZUlkKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtB
cnJheS48RE9NQWdlbnQuTm9kZUlkPn0gbm9kZUlkcworICAgICAqLwogICAgIHNlYXJjaFJlc3Vs
dHM6IGZ1bmN0aW9uKG5vZGVJZHMpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZG9tQWdlbnQu
X3NlYXJjaFJlc3VsdENvbGxlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcwppbmRleCA4OGU5YTA0OTUz
MDRlODFmNDhjMzlkMzMwZTU3NWQwNzQxMmY1YTU0Li4xNWI0YzFiMDFkMjNmYjk2Zjk1MTM5NjIw
ZWE5MGUzYjllM2E3ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCkBAIC0zOCwxMCArMzgsMTAgQEAg
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcgPSBmdW5jdGlvbihkb21TdG9yYWdlKQog
CiAgICAgdGhpcy5kZWxldGVCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRv
bihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSIpLCAiZGVsZXRlLXN0b3JhZ2Utc3RhdHVz
LWJhci1pdGVtIik7CiAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOwotICAg
IHRoaXMuZGVsZXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZGVsZXRl
QnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5kZWxldGVCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9kZWxldGVCdXR0b25DbGlja2VkLCB0aGlz
KTsKIAogICAgIHRoaXMucmVmcmVzaEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFy
QnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCIpLCAicmVmcmVzaC1zdG9yYWdl
LXN0YXR1cy1iYXItaXRlbSIpOwotICAgIHRoaXMucmVmcmVzaEJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICB0aGlzLnJlZnJlc2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzCmluZGV4IGJhZDYxMzdkY2Rk
ZjA3NzIwZDZjZDRmYTdkNjEwNDZkNjlhNDIzZDAuLjE4YTVjYWM2NDIzY2RiM2VlMGIwMTQ3MmMz
MjIxMTNkY2JhOTdhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcwpAQCAtMzgsNyArMzgsNyBAQCBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VUYWJsZVZpZXcgPSBmdW5jdGlvbihkYXRhYmFzZSwgdGFibGVOYW1lKQog
ICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ0YWJsZSIpOwogCiAgICAgdGhpcy5yZWZy
ZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7
Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
cmVmcmVzaEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMucmVmcmVz
aEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlj
a2VkLCB0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVWaWV3LnByb3RvdHlw
ZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJNb2RlbC5qcwppbmRleCBmYjdlODQ3NjYwMjAzMmQ2MjliMzk2OWUxNWZiOTJkNGI2NTBmZjEx
Li4yNmMzMDkxNjg4NGUxYWY3MTBhOGUzZTcyNjE0OWNmMWI2ZDlkODZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0z
NCw3ICszNCwxMCBAQAogICovCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCA9IGZ1bmN0aW9u
KCkKIHsKLSAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMgPSB7fTsKKyAgICB0aGlzLl9k
ZWJ1Z2dlclBhdXNlZERldGFpbHMgPSBudWxsOworICAgIC8qKgorICAgICAqIEB0eXBlIHtPYmpl
Y3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLlNjcmlwdD59CisgICAgICovCiAgICAgdGhpcy5fc2Ny
aXB0cyA9IHt9OwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRlYnVnZ2VyRGlzcGF0
Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0Y2hlcih0aGlzKSk7CkBAIC00Miw2
ICs0NSwxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCA9IGZ1bmN0aW9uKCkKIAogLyoq
CiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7QXJyYXkuPERlYnVnZ2VyQWdlbnQuQ2FsbEZy
YW1lPn0gY2FsbEZyYW1lcworICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbgorICogQHBhcmFtIHsq
fSBhdXhEYXRhCisgKi8KK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclBhdXNlZERldGFpbHMgPSBmdW5j
dGlvbihjYWxsRnJhbWVzLCByZWFzb24sIGF1eERhdGEpCit7CisgICAgdGhpcy5jYWxsRnJhbWVz
ID0gY2FsbEZyYW1lczsKKyAgICB0aGlzLnJlYXNvbiA9IHJlYXNvbjsKKyAgICB0aGlzLmF1eERh
dGEgPSBhdXhEYXRhOworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgogICovCiBXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbiA9IGZ1bmN0aW9uKCkKIHsKQEAgLTg3LDExICsxMDMs
MTkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5F
dmVudHMuRGVidWdnZXJXYXNEaXNhYmxlZCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKi8KICAgICBjb250
aW51ZVRvTG9jYXRpb246IGZ1bmN0aW9uKGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgRGVidWdn
ZXJBZ2VudC5jb250aW51ZVRvTG9jYXRpb24obG9jYXRpb24pOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IGxvY2F0aW9uCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGNvbmRpdGlvbgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2Fs
bGJhY2sKKyAgICAgKi8KICAgICBzZXRCcmVha3BvaW50QnlTY3JpcHRMb2NhdGlvbjogZnVuY3Rp
b24obG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgc2Ny
aXB0ID0gdGhpcy5zY3JpcHRGb3JTb3VyY2VJRChsb2NhdGlvbi5zY3JpcHRJZCk7CkBAIC0xMDEs
NiArMTI1LDEzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludEJ5U291cmNlSWQobG9jYXRpb24sIGNvbmRpdGlv
biwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
dXJsCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251
bWJlcj19IGNvbHVtbk51bWJlcgorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gY29uZGl0aW9uCisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFycmF5
LjxEZWJ1Z2dlckFnZW50LkxvY2F0aW9uPik9fSBjYWxsYmFjaworICAgICAqLwogICAgIHNldEJy
ZWFrcG9pbnQ6IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRp
b24sIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgLy8gQWRqdXN0IGNvbHVtbiBpZiBuZWVkZWQu
CkBAIC0xMTIsNiArMTQzLDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgICAgICBjb2x1bW5OdW1iZXIgPSBNYXRoLm1heChjb2x1bW5O
dW1iZXIsIG1pbkNvbHVtbk51bWJlcik7CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0aGlz
IHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0KKyAgICAgICAgICogQHBhcmFtIHs/UHJvdG9j
b2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5CcmVha3Bv
aW50SWR9IGJyZWFrcG9pbnRJZAorICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxEZWJ1Z2dlckFn
ZW50LkxvY2F0aW9uPn0gbG9jYXRpb25zCisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBk
aWRTZXRCcmVha3BvaW50KGVycm9yLCBicmVha3BvaW50SWQsIGxvY2F0aW9ucykKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQpAQCAtMTIxLDggKzE1OCwxOSBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci51
c2VyTWV0cmljcy5TY3JpcHRzQnJlYWtwb2ludFNldC5yZWNvcmQoKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBsb2NhdGlvbgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBjb25kaXRpb24KKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9E
ZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwgQXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+
KT19IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0QnJlYWtwb2ludEJ5U291cmNlSWQ6IGZ1bmN0
aW9uKGxvY2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgLyoqCisg
ICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0KKyAgICAgICAgICog
QHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7RGVidWdn
ZXJBZ2VudC5CcmVha3BvaW50SWR9IGJyZWFrcG9pbnRJZAorICAgICAgICAgKiBAcGFyYW0ge0Rl
YnVnZ2VyQWdlbnQuTG9jYXRpb259IGFjdHVhbExvY2F0aW9uCisgICAgICAgICAqLwogICAgICAg
ICBmdW5jdGlvbiBkaWRTZXRCcmVha3BvaW50KGVycm9yLCBicmVha3BvaW50SWQsIGFjdHVhbExv
Y2F0aW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCkBAIC0xMzIsMTEg
KzE4MCwxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5TY3JpcHRzQnJlYWtwb2ludFNldC5yZWNvcmQo
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkJyZWFr
cG9pbnRJZH0gYnJlYWtwb2ludElkCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wu
RXJyb3IpfSBjYWxsYmFjaworICAgICAqLwogICAgIHJlbW92ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnRJZCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBEZWJ1Z2dlckFnZW50LnJl
bW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWR9IGJyZWFrcG9pbnRJ
ZAorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAg
Ki8KICAgICBfYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihicmVha3BvaW50SWQsIGxvY2F0
aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZXNvbHZlZCwge2JyZWFrcG9p
bnRJZDogYnJlYWtwb2ludElkLCBsb2NhdGlvbjogbG9jYXRpb259KTsKQEAgLTE0NCwyNiArMjAw
LDM5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIHJl
c2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFp
bHMgPSB7fTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fc2NyaXB0cyA9IHt9OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUmVzZXQpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9y
LlNjcmlwdD59CisgICAgICovCiAgICAgZ2V0IHNjcmlwdHMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NjcmlwdHM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVi
dWdnZXJBZ2VudC5TY3JpcHRJZH0gc2NyaXB0SWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuU2NyaXB0fHVuZGVmaW5lZH0KKyAgICAgKi8KICAgICBzY3JpcHRGb3JTb3VyY2VJRDogZnVu
Y3Rpb24oc2NyaXB0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0c1tzY3Jp
cHRJZF07CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAg
ICAgKi8KICAgICBzY3JpcHRzRm9yVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5xdWVyeVNjcmlwdHMoZnVuY3Rpb24ocykgeyByZXR1cm4gcy5zb3VyY2VVUkwg
PT09IHVybDsgfSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
V2ViSW5zcGVjdG9yLlNjcmlwdCk6Ym9vbGVhbn0gZmlsdGVyCisgICAgICovCiAgICAgcXVlcnlT
Y3JpcHRzOiBmdW5jdGlvbihmaWx0ZXIpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0cyA9IFtd
OwpAQCAtMTc1LDExICsyNDQsMjMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gc2NyaXB0czsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LlNjcmlwdElkfSBzY3JpcHRJZAorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5F
cnJvcil9IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0U2NyaXB0U291cmNlOiBmdW5jdGlvbihz
Y3JpcHRJZCwgbmV3U291cmNlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX3Njcmlw
dHNbc2NyaXB0SWRdLmVkaXRTb3VyY2UobmV3U291cmNlLCB0aGlzLl9kaWRFZGl0U2NyaXB0U291
cmNlLmJpbmQodGhpcywgc2NyaXB0SWQsIG5ld1NvdXJjZSwgY2FsbGJhY2spKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LlNjcmlwdElkfSBzY3JpcHRJ
ZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9Qcm90b2NvbC5FcnJvcil9IGNhbGxiYWNrCisgICAgICogQHBhcmFtIHs/UHJvdG9jb2wu
RXJyb3J9IGVycm9yCisgICAgICogQHBhcmFtIHtBcnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJh
bWU+fSBjYWxsRnJhbWVzCisgICAgICovCiAgICAgX2RpZEVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0
aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIGNhbGxiYWNrLCBlcnJvciwgY2FsbEZyYW1lcykKICAg
ICB7CiAgICAgICAgIGlmICghZXJyb3IgJiYgY2FsbEZyYW1lcyAmJiBjYWxsRnJhbWVzLmxlbmd0
aCkKQEAgLTE4NywzOSArMjY4LDY1IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtBcnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJhbWU+fSAKKyAgICAgKi8K
ICAgICBnZXQgY2FsbEZyYW1lcygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGVidWdn
ZXJQYXVzZWREZXRhaWxzLmNhbGxGcmFtZXM7CisgICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z2dl
clBhdXNlZERldGFpbHMgPyB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMuY2FsbEZyYW1lcyA6
IG51bGw7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3Iu
RGVidWdnZXJQYXVzZWREZXRhaWxzfSAKKyAgICAgKi8KICAgICBnZXQgZGVidWdnZXJQYXVzZWRE
ZXRhaWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFp
bHM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPERlYnVnZ2VyQWdl
bnQuQ2FsbEZyYW1lPn0gY2FsbEZyYW1lcworICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24K
KyAgICAgKiBAcGFyYW0geyp9IGF1eERhdGEKKyAgICAgKi8KICAgICBfcGF1c2VkU2NyaXB0OiBm
dW5jdGlvbihjYWxsRnJhbWVzLCByZWFzb24sIGF1eERhdGEpCiAgICAgewotICAgICAgICB2YXIg
ZGV0YWlscyA9IHsgY2FsbEZyYW1lczogY2FsbEZyYW1lcywgcmVhc29uOiByZWFzb24sIGF1eERh
dGE6IGF1eERhdGEgfTsKLSAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzID0gZGV0
YWlsczsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCBkZXRhaWxzKTsKKyAgICAgICAg
dGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBh
dXNlZERldGFpbHMoY2FsbEZyYW1lcywgcmVhc29uLCBhdXhEYXRhKTsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRz
LkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMpOwogICAgIH0sCiAK
ICAgICBfcmVzdW1lZFNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGVi
dWdnZXJQYXVzZWREZXRhaWxzID0ge307CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0
YWlscyA9IG51bGw7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclJlc3VtZWQpOwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuU2NyaXB0SWR9IHNjcmlwdElk
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBzdGFydExpbmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRDb2x1bW4KKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gZW5kTGluZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRDb2x1bW4K
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQ29udGVudFNjcmlwdAorICAgICAqLwogICAgIF9w
YXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGlu
ZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0KQogICAg
IHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KHNjcmlwdElk
LCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwg
dW5kZWZpbmVkLCB1bmRlZmluZWQsIGlzQ29udGVudFNjcmlwdCk7CisgICAgICAgIHZhciBzY3Jp
cHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChzY3JpcHRJZCwgc291cmNlVVJMLCBzdGFydExp
bmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCk7CiAg
ICAgICAgIHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdID0gc2NyaXB0OwogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMu
UGFyc2VkU2NyaXB0U291cmNlLCBzY3JpcHQpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydGluZ0xpbmUKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gZXJyb3JMaW5lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTWVzc2FnZQorICAgICAq
LwogICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2VVUkwsIHNv
dXJjZSwgc3RhcnRpbmdMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSkKICAgICB7Ci0gICAg
ICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChudWxsLCBzb3VyY2VVUkws
IHN0YXJ0aW5nTGluZSwgMCwgMCwgMCwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UsIHVuZGVmaW5l
ZCk7CisgICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChudWxsLCBz
b3VyY2VVUkwsIHN0YXJ0aW5nTGluZSwgMCwgMCwgMCwgZmFsc2UpOwogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMu
RmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgc2NyaXB0KTsKICAgICB9CiB9CkBAIC0yMzUsNiAr
MzQyLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRXZlbnRUeXBlcyA9IHsKIC8qKgogICogQGNv
bnN0cnVjdG9yCiAgKiBAaW1wbGVtZW50cyB7RGVidWdnZXJBZ2VudC5EaXNwYXRjaGVyfQorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0gZGVidWdnZXJNb2RlbAogICovCiBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJEaXNwYXRjaGVyID0gZnVuY3Rpb24oZGVidWdnZXJNb2RlbCkK
IHsKQEAgLTI0Miw2ICszNTAsMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0Y2hlciA9
IGZ1bmN0aW9uKGRlYnVnZ2VyTW9kZWwpCiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRpc3Bh
dGNoZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPERlYnVn
Z2VyQWdlbnQuQ2FsbEZyYW1lPn0gY2FsbEZyYW1lcworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBy
ZWFzb24KKyAgICAgKiBAcGFyYW0geyp9IGF1eERhdGEKKyAgICAgKi8KICAgICBwYXVzZWQ6IGZ1
bmN0aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0YSkKICAgICB7CiAgICAgICAgIHRoaXMu
X2RlYnVnZ2VyTW9kZWwuX3BhdXNlZFNjcmlwdChjYWxsRnJhbWVzLCByZWFzb24sIGF1eERhdGEp
OwpAQCAtMjYyLDE5ICszNzUsMzkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0Y2hlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwuX2RlYnVnZ2VyV2FzRGlz
YWJsZWQoKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50
LlNjcmlwdElkfSBzY3JpcHRJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VVUkwKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5lCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0
YXJ0Q29sdW1uCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZExpbmUKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gZW5kQ29sdW1uCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gaXNDb250ZW50U2Ny
aXB0CisgICAgICovCiAgICAgc2NyaXB0UGFyc2VkOiBmdW5jdGlvbihzY3JpcHRJZCwgc291cmNl
VVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVu
dFNjcmlwdCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwuX3BhcnNlZFNjcmlw
dFNvdXJjZShzY3JpcHRJZCwgc291cmNlVVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRM
aW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2Vy
TW9kZWwuX3BhcnNlZFNjcmlwdFNvdXJjZShzY3JpcHRJZCwgc291cmNlVVJMLCBzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCB8fCBmYWxz
ZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VVUkwK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0
YXJ0aW5nTGluZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckxpbmUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZXJyb3JNZXNzYWdlCisgICAgICovCiAgICAgc2NyaXB0RmFpbGVkVG9QYXJz
ZTogZnVuY3Rpb24oc291cmNlVVJMLCBzb3VyY2UsIHN0YXJ0aW5nTGluZSwgZXJyb3JMaW5lLCBl
cnJvck1lc3NhZ2UpCiAgICAgewogICAgICAgICB0aGlzLl9kZWJ1Z2dlck1vZGVsLl9mYWlsZWRU
b1BhcnNlU2NyaXB0U291cmNlKHNvdXJjZVVSTCwgc291cmNlLCBzdGFydGluZ0xpbmUsIGVycm9y
TGluZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LAogCi0gICAgYnJlYWtwb2ludFJlc29sdmVkOiBm
dW5jdGlvbihicmVha3BvaW50SWQsIHNjcmlwdElkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CisgICAgLyoqCisgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkfSBicmVh
a3BvaW50SWQKKyAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24K
KyAgICAgKi8KKyAgICBicmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJZCwg
bG9jYXRpb24pCiAgICAgewotICAgICAgICB0aGlzLl9kZWJ1Z2dlck1vZGVsLl9icmVha3BvaW50
UmVzb2x2ZWQoYnJlYWtwb2ludElkLCBzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJNb2RlbC5fYnJlYWtwb2ludFJlc29sdmVkKGJyZWFr
cG9pbnRJZCwgbG9jYXRpb24pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LmpzCmluZGV4IDI1MzAyZDBhMDFiZGNiYzhlNzE0NmZjMTY4YWMyYjE0MTAxNTUyZjkuLjhkZWFi
M2RkMDRhNTY1MTgwNTdjN2E5OWNhNDgyMGRmYjY4YjcyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKQEAgLTcyLDYgKzcyLDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIodGhpcyk7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNhbGxGcmFt
ZX0gY2FsbEZyYW1lCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlBsYWNhcmR9CisgICAg
ICovCiAgICAgY3JlYXRlUGxhY2FyZDogZnVuY3Rpb24oY2FsbEZyYW1lKQogICAgIHsKICAgICAg
ICAgdmFyIHRpdGxlID0gY2FsbEZyYW1lLl9jYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKQEAgLTkwLDE2ICs5NCwy
NyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBwbGFjYXJkOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfcGFyc2VkU2NyaXB0
U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2FkZFNjcmlwdChl
dmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlNjcmlwdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYWRkU2NyaXB0KHNjcmlwdCk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBl
dmVudAorICAgICAqLwogICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2FkZFNjcmlwdChldmVudC5kYXRhKTsKKyAgICAg
ICAgdmFyIHNjcmlwdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQu
ZGF0YTsKKyAgICAgICAgdGhpcy5fYWRkU2NyaXB0KHNjcmlwdCk7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICovCiAg
ICAgX2FkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAgICAgICAgdmFyIHJhd1Nv
dXJjZUNvZGVJZCA9IHRoaXMuX2NyZWF0ZVJhd1NvdXJjZUNvZGVJZChzY3JpcHQpOwpAQCAtMTE5
LDEzICsxMzQsMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzLl9z
b3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcyk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwogICAgIF9zb3VyY2VNYXBw
aW5nVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmF3U291cmNl
Q29kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IGV2ZW50
LmRhdGEub2xkVUlTb3VyY2VDb2RlOworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAg
ICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi9ldmVudC5kYXRhWyJvbGRVSVNvdXJjZUNvZGUiXTsKICAgICAgICAgdGhpcy5fdXBk
YXRlU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBvbGRVSVNvdXJjZUNvZGUpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSBy
YXdTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSBv
bGRVSVNvdXJjZUNvZGUKKyAgICAgKi8KICAgICBfdXBkYXRlU291cmNlTWFwcGluZzogZnVuY3Rp
b24ocmF3U291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgaWYgKG9s
ZFVJU291cmNlQ29kZSkgewpAQCAtMTQ5LDYgKzE3MSw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSByYXdTb3Vy
Y2VDb2RlCisgICAgICovCiAgICAgX3Jlc3RvcmVCcmVha3BvaW50czogZnVuY3Rpb24ocmF3U291
cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2Rl
LnNvdXJjZU1hcHBpbmcudWlTb3VyY2VDb2RlOwpAQCAtMTU4LDYgKzE4Myw5IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX2JyZWFrcG9pbnRBZGRlZChicmVha3BvaW50c1tsaW5lTnVtYmVyXSk7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJh
d1NvdXJjZUNvZGUKKyAgICAgKi8KICAgICBfcmVzdG9yZUNvbnNvbGVNZXNzYWdlczogZnVuY3Rp
b24ocmF3U291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHJhd1NvdXJj
ZUNvZGUubWVzc2FnZXM7CkBAIC0xNjUsNiArMTkzLDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIG1lc3NhZ2VzW2ld
Ll9wcmVzZW50YXRpb25NZXNzYWdlID0gdGhpcy5fY3JlYXRlUHJlc2VudGF0aW9uTWVzc2FnZSht
ZXNzYWdlc1tpXSwgcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNv
ZGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGNhbkVkaXRTY3JpcHRT
b3VyY2U6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIGlmICghUHJlZmVy
ZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSB8fCB0aGlzLl9mb3JtYXRTb3VyY2UpCkBAIC0xNzQs
MTEgKzIwNiwyMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzY3JpcHQgJiYgIXNjcmlwdC5saW5lT2Zmc2V0ICYm
ICFzY3JpcHQuY29sdW1uT2Zmc2V0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJv
cil9IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0U2NyaXB0U291cmNlOiBmdW5jdGlvbih1aVNv
dXJjZUNvZGUsIG5ld1NvdXJjZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgcmF3U291
cmNlQ29kZSA9IHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlOwogICAgICAgICB2YXIgc2NyaXB0
ID0gdGhpcy5fc2NyaXB0Rm9yUmF3U291cmNlQ29kZShyYXdTb3VyY2VDb2RlKTsKIAorICAgICAg
ICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsfQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAg
ICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2UoZXJyb3IpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKQEAgLTE5Nyw2ICsyMzgsMTEgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNj
cmlwdElkLCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CiAgICAg
fSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9sZFNvdXJjZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKi8KICAgICBfdXBkYXRlQnJlYWtwb2ludHNB
ZnRlckxpdmVFZGl0OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG9sZFNvdXJjZSwgbmV3U291cmNl
KQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludE1hbmFn
ZXIuYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKQEAgLTIwNiw3ICsy
NTIsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHMpIHsKICAgICAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbbGluZU51bWJlcl07CiAKLSAgICAg
ICAgICAgIHRoaXMucmVtb3ZlQnJlYWtwb2ludCh1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpOwor
ICAgICAgICAgICAgdGhpcy5yZW1vdmVCcmVha3BvaW50KHVpU291cmNlQ29kZSwgcGFyc2VJbnQo
bGluZU51bWJlciwgMTApKTsKIAogICAgICAgICAgICAgdmFyIG5ld0xpbmVOdW1iZXIgPSBkaWZm
LmxlZnRbbGluZU51bWJlcl0ucm93OwogICAgICAgICAgICAgaWYgKG5ld0xpbmVOdW1iZXIgPT09
IHVuZGVmaW5lZCkgewpAQCAtMjI3LDYgKzI3Myw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1hdFNvdXJjZQorICAgICAqLwogICAgIHNl
dEZvcm1hdFNvdXJjZTogZnVuY3Rpb24oZm9ybWF0U291cmNlKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2Zvcm1hdFNvdXJjZSA9PT0gZm9ybWF0U291cmNlKQpAQCAtMjQxLDkgKzI5MCwxMiBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfY29u
c29sZU1lc3NhZ2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVz
c2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50LmRhdGE7CiAgICAgICAgIGlmICghbWVz
c2FnZS51cmwgfHwgIW1lc3NhZ2UuaXNFcnJvck9yV2FybmluZygpIHx8ICFtZXNzYWdlLm1lc3Nh
Z2UpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1OCwxNiArMzEwLDE4IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZX0gbWVzc2FnZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
U291cmNlTWFwcGluZ30gc291cmNlTWFwcGluZworICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZX0KKyAgICAgKi8KICAgICBfY3JlYXRlUHJlc2Vu
dGF0aW9uTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSwgc291cmNlTWFwcGluZykKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBh
cmUgb25lLWJhc2VkLgogICAgICAgICB2YXIgbGluZU51bWJlciA9IG1lc3NhZ2Uuc3RhY2tUcmFj
ZSA/IG1lc3NhZ2Uuc3RhY2tUcmFjZVswXS5saW5lTnVtYmVyIC0gMSA6IG1lc3NhZ2UubGluZSAt
IDE7CiAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSBtZXNzYWdlLnN0YWNrVHJhY2UgPyBtZXNz
YWdlLnN0YWNrVHJhY2VbMF0uY29sdW1uTnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1i
ZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH0pOwotICAgICAgICB2
YXIgcHJlc2VudGF0aW9uTWVzc2FnZSA9IHt9OwotICAgICAgICBwcmVzZW50YXRpb25NZXNzYWdl
LnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOwotICAgICAgICBwcmVzZW50
YXRpb25NZXNzYWdlLmxpbmVOdW1iZXIgPSB1aUxvY2F0aW9uLmxpbmVOdW1iZXI7Ci0gICAgICAg
IHByZXNlbnRhdGlvbk1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdlID0gbWVzc2FnZTsKKyAgICAgICAg
dmFyIHVpTG9jYXRpb24gPSBzb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKC8q
KiBAdHlwZSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gKi8geyBsaW5lTnVtYmVyOiBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9KTsKKyAgICAgICAgdmFyIHByZXNlbnRh
dGlvbk1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdl
KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIsIG1lc3NhZ2Up
OwogICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uTWVzc2FnZTsKICAgICB9LAogCkBAIC0yNzgs
NiArMzMyLDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNvbnNvbGVNZXNzYWdlc0NsZWFy
ZWQpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVy
CisgICAgICovCiAgICAgY29udGludWVUb0xpbmU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGlu
ZU51bWJlcikKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiB1c2UgUmF3U291cmNlQ29kZS51aUxv
Y2F0aW9uVG9SYXdMb2NhdGlvbi4KQEAgLTI4NSw2ICszNDMsMTAgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5jb250aW51ZVRvTG9jYXRpb24ocmF3TG9jYXRpb24pOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVp
U291cmNlQ29kZQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dD59CisgICAgICovCiAgICAgYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVp
U291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50c01hcCA9IHRoaXMuX2Jy
ZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
CkBAIC0yOTQsNiArMzU2LDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnRzTGlzdDsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1
aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlPn0KKyAgICAgKi8KICAgICBtZXNzYWdlc0ZvclVJU291cmNlQ29kZTogZnVuY3Rpb24o
dWlTb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB1aVNvdXJj
ZUNvZGUucmF3U291cmNlQ29kZTsKQEAgLTMwMywxMSArMzY5LDIyIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG1l
c3NhZ2VzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVt
YmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmRpdGlvbgorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gZW5hYmxlZAorICAgICAqLwogICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHVpU291
cmNlQ29kZSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKQogICAgIHsKICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludCh1aVNvdXJjZUNvZGUsIGxpbmVO
dW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQK
KyAgICAgKi8KICAgICBzZXRCcmVha3BvaW50RW5hYmxlZDogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
LCBsaW5lTnVtYmVyLCBlbmFibGVkKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0
aGlzLmZpbmRCcmVha3BvaW50KHVpU291cmNlQ29kZSwgbGluZU51bWJlcik7CkBAIC0zMTcsMjgg
KzM5NCw0OSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQodWlT
b3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwgZW5hYmxlZCk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCisgICAgICogQHBhcmFtIHtib29sZWFufSBlbmFi
bGVkCisgICAgICovCiAgICAgdXBkYXRlQnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
LCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCiAgICAgewogICAgICAgICB0aGlzLl9i
cmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHVpU291cmNlQ29kZSwgbGluZU51bWJl
cik7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQodWlTb3Vy
Y2VDb2RlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29k
ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICovCiAgICAgcmVtb3Zl
QnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh1aVNvdXJjZUNv
ZGUsIGxpbmVOdW1iZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsaW5lTnVtYmVyCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnR8dW5k
ZWZpbmVkfQorICAgICAqLwogICAgIGZpbmRCcmVha3BvaW50OiBmdW5jdGlvbih1aVNvdXJjZUNv
ZGUsIGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludE1h
bmFnZXIuYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKVtsaW5lTnVtYmVy
XTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludH0gYnJlYWtwb2ludAorICAgICAqLwogICAgIF9icmVha3BvaW50QWRkZWQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICBpZiAoYnJlYWtwb2ludC51aVNvdXJjZUNvZGUp
CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBicmVha3Bv
aW50KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludH0gYnJlYWtwb2ludAorICAgICAqLwogICAgIF9icmVha3BvaW50UmVtb3ZlZDogZnVu
Y3Rpb24oYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIGlmIChicmVha3BvaW50LnVpU291cmNl
Q29kZSkKQEAgLTM5MSw2ICs0ODksOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZENhbGxG
cmFtZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZl
bnR9IGV2ZW50CisgICAgICovCiAgICAgX2Rpc3BhdGNoRXhlY3V0aW9uTGluZUNoYW5nZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gdGhpcy5fc2Vs
ZWN0ZWRDYWxsRnJhbWUuX2NhbGxGcmFtZS5sb2NhdGlvbjsKQEAgLTQxNCw4ICs1MTUsMTYgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmF3U291cmNlQ29kZVt0aGlzLl9jcmVhdGVSYXdTb3VyY2VDb2Rl
SWQoc2NyaXB0KV07CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAgICAgKi8KICAgICBfc2NyaXB0Rm9y
UmF3U291cmNlQ29kZTogZnVuY3Rpb24ocmF3U291cmNlQ29kZSkKICAgICB7CisgICAgICAgIC8q
KgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWx9CisgICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAg
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBm
aWx0ZXIoc2NyaXB0KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRl
UmF3U291cmNlQ29kZUlkKHNjcmlwdCkgPT09IHJhd1NvdXJjZUNvZGUuaWQ7CkBAIC00MjMsNiAr
NTMyLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlTY3Jp
cHRzKGZpbHRlci5iaW5kKHRoaXMpKVswXTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKi8KICAgICBfY3JlYXRlUmF3
U291cmNlQ29kZUlkOiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAgICAgICByZXR1cm4gc2Ny
aXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc2NyaXB0SWQ7CkBAIC00NDMsNiArNTU1LDI2IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICogQHBhcmFtIHtudW1i
ZXJ9IGxpbmVOdW1iZXIKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfSBv
cmlnaW5hbE1lc3NhZ2UKKyAqLworV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNz
YWdlID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBvcmlnaW5hbE1lc3NhZ2Up
Cit7CisgICAgdGhpcy51aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgdGhpcy5saW5l
TnVtYmVyID0gbGluZU51bWJlcjsKKyAgICB0aGlzLm9yaWdpbmFsTWVzc2FnZSA9IG9yaWdpbmFs
TWVzc2FnZTsKK30KKworV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlLnBy
b3RvdHlwZSA9IHsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7RGVidWdn
ZXJBZ2VudC5DYWxsRnJhbWV9IGNhbGxGcmFtZQorICogQHBhcmFtIHtudW1iZXJ9IGluZGV4Cisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsfSBtb2RlbAor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291cmNlQ29kZQogICov
CiBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lID0gZnVuY3Rpb24oY2FsbEZyYW1l
LCBpbmRleCwgbW9kZWwsIHJhd1NvdXJjZUNvZGUpCiB7CkBAIC00NTMsNDkgKzU4NSw3NiBAQCBX
ZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lID0gZnVuY3Rpb24oY2FsbEZyYW1lLCBp
bmRleCwgbW9kZWwsIHJhd1NvdXJjZQogfQogCiBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2Fs
bEZyYW1lLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Cisg
ICAgICovCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxG
cmFtZS50eXBlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48RGVi
dWdnZXJBZ2VudC5TY29wZT59CisgICAgICovCiAgICAgZ2V0IHNjb3BlQ2hhaW4oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZS5zY29wZUNoYWluOwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fQorICAgICAq
LwogICAgIGdldCB0aGlzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYWxsRnJhbWUu
dGhpczsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LwogICAgIGdldCBpbmRleCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5kZXg7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlfQorICAgICAqLwogICAgIGdldCByYXdTb3VyY2VDb2RlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9yYXdTb3VyY2VDb2RlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gY29kZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RHcm91cAorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUNvbW1hbmRMaW5lQVBJCisgICAgICogQHBhcmFt
IHtib29sZWFufSByZXR1cm5CeVZhbHVlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UnVudGlt
ZUFnZW50LlJlbW90ZU9iamVjdCwgYm9vbGVhbik9fSBjYWxsYmFjaworICAgICAqLwogICAgIGV2
YWx1YXRlOiBmdW5jdGlvbihjb2RlLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCByZXR1cm5CeVZhbHVlLCBjYWxsYmFjaykKICAgICB7CisgICAgICAgIC8qKgorICAgICAgICAg
KiBAdGhpcyB7V2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNhbGxGcmFtZX0KKyAgICAgICAgICog
QHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7UnVudGlt
ZUFnZW50LlJlbW90ZU9iamVjdH0gcmVzdWx0CisgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
d2FzVGhyb3duCisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZU9uQ2Fs
bEZyYW1lKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVs
bCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKHJldHVybkJ5VmFsdWUgJiYgIXdhc1Rocm93bikKLSAgICAgICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQsIHdhc1Rocm93bik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChy
ZXN1bHQpLCB3YXNUaHJvd24pOworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LCB3YXNUaHJv
d24pOwogICAgICAgICB9CiAgICAgICAgIERlYnVnZ2VyQWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFt
ZSh0aGlzLl9jYWxsRnJhbWUuY2FsbEZyYW1lSWQsIGNvZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGRpZEV2YWx1YXRlT25DYWxsRnJhbWUuYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLlVJTG9jYXRpb24pfSBjYWxsYmFjaworICAgICAqLwogICAgIHVpTG9jYXRpb246
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gc291cmNlTWFwcGlu
Z1JlYWR5KCkKQEAgLTUxMyw2ICs2NzIsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2Fs
bEZyYW1lLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAaW1wbGVtZW50
cyB7V2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nfQorICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbH0gbW9kZWwKICAqLwogV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlv
bihtb2RlbCkKIHsKQEAgLTUyMSw2ICs2ODEsOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZyA9IGZ1bmN0aW9uKG1vZGVsKQogfQogCiBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5
cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJl
c291cmNlCisgICAgICovCiAgICAgY2FuU2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UpCiAg
ICAgewogICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
Ll9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChyZXNvdXJjZS51cmwpCkBAIC01MjksNiAr
NjkyLDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VC
aW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2UocmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nLnVpU291
cmNlQ29kZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50CisgICAg
ICogQHBhcmFtIHtib29sZWFufSBtYWpvckNoYW5nZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
P1Byb3RvY29sLkVycm9yKX0gdXNlckNhbGxiYWNrCisgICAgICovCiAgICAgc2V0Q29udGVudDog
ZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCiAg
ICAgewogICAgICAgICBpZiAoIW1ham9yQ2hhbmdlKQpAQCAtNTQzLDggKzcxMiwxOCBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KHRoaXMuX3NldENvbnRlbnRX
aXRoSW5pdGlhbENvbnRlbnQuYmluZCh0aGlzLCByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcu
dWlTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
P1Byb3RvY29sLkVycm9yKX0gdXNlckNhbGxiYWNrCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9s
ZENvbnRlbnQKKyAgICAgKi8KICAgICBfc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVudDogZnVu
Y3Rpb24odWlTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2ssIG9sZENvbnRlbnQpCiAg
ICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nfQorICAgICAgICAgKiBAcGFyYW0gez9Q
cm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQpAQCAt
NTU4LDYgKzczNyw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVz
b3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9IG1vZGVsCiAgKi8K
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllciA9IGZ1bmN0
aW9uKG1vZGVsKQogewpAQCAtNTY2LDYgKzc0NiwxMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIgPSBmdW5jdGlvbihtb2RlbCkKIH0KIAogV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZSA9IHsK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgICAgICogQHBhcmFt
IHtudW1iZXI9fSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBjb2x1bW5OdW1i
ZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGNsYXNzZXMKKyAgICAgKi8KICAgICBsaW5raWZ5
TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBj
bGFzc2VzKQogICAgIHsKICAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1h
dExpbmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7CkBAIC01OTksMTQgKzc4NSwyMSBAQCBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9hbmNob3JzRm9yUmF3U291cmNlQ29kZSA9IHt9OwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAg
ICAgKi8KICAgICBfdXBkYXRlU291cmNlQW5jaG9yczogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSAqLyBl
dmVudC50YXJnZXQ7CiAgICAgICAgIHZhciBhbmNob3JzID0gdGhpcy5fYW5jaG9yc0ZvclJhd1Nv
dXJjZUNvZGVbcmF3U291cmNlQ29kZS5pZF07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YW5jaG9ycy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdT
b3VyY2VDb2RlLCBhbmNob3JzW2ldKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291cmNlQ29kZQorICAgICAqIEBwYXJh
bSB7RWxlbWVudH0gYW5jaG9yCisgICAgICovCiAgICAgX3VwZGF0ZUFuY2hvcjogZnVuY3Rpb24o
cmF3U291cmNlQ29kZSwgYW5jaG9yKQogICAgIHsKICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBy
YXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oYW5jaG9y
LnJhd0xvY2F0aW9uKTsKQEAgLTYyMiw0ICs4MTUsNCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SQogLyoqCiAgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
fQogICovCi1XZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG51bGw7CitX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG51bGw7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDEzM2IyZGJmNzBhMTViY2IyMjA0NjYzODRiNTUw
NzVhMGFmMzI4NzUuLmY5NjBkZDk2ZmYwNDJkYjdiZmM2MTQ3MTM5YjI5OTRkZTAzNDRlZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFu
ZWwuanMKQEAgLTkxLDcgKzkxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5zaWRlYmFyUmVzaXplRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzLnJpZ2h0U2lkZWJhclJlc2l6ZXJEcmFnU3RhcnQuYmluZCh0aGlzKSwg
ZmFsc2UpOwogCiAgICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5T
dGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3QgYW4gZWxlbWVudCBp
biB0aGUgcGFnZSB0byBpbnNwZWN0IGl0LiIpLCAibm9kZS1zZWFyY2gtc3RhdHVzLWJhci1pdGVt
Iik7Ci0gICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy50b2dnbGVTZWFyY2hpbmdGb3JOb2RlLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlz
Lm5vZGVTZWFyY2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnRvZ2dsZVNl
YXJjaGluZ0Zvck5vZGUsIHRoaXMpOwogCiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuY29udGVudEVsZW1lbnQpOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNp
ZGViYXJFbGVtZW50KTsKQEAgLTE5NCw2ICsxOTQsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5kb21CcmVh
a3BvaW50cy5yZXN0b3JlQnJlYWtwb2ludHMoKTsKIAogICAgICAgICAvKioKKyAgICAgICAgICog
QHRoaXMge1dlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsfQogICAgICAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5ET01Ob2RlPX0gY2FuZGlkYXRlRm9jdXNOb2RlCiAgICAgICAgICAqLwogICAg
ICAgICBmdW5jdGlvbiBzZWxlY3ROb2RlKGNhbmRpZGF0ZUZvY3VzTm9kZSkKQEAgLTIxNSw3ICsy
MTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgLy8gRm9jdXNlZCBub2RlIGhhcyBiZWVuIGV4cGxpY2l0bHkgc2V0IHdoaWxlIHJl
YWNoaW5nIG91dCBmb3IgdGhlIGxhc3Qgc2VsZWN0ZWQgbm9kZS4KICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVJZCA/IFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQobm9kZUlkKSA6IDA7CisgICAgICAgICAgICB2
YXIgbm9kZSA9IG5vZGVJZCA/IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQobm9kZUlk
KSA6IG51bGw7CiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNhbGwodGhpcywgbm9kZSk7CiAgICAg
ICAgIH0KIApAQCAtMzg5LDYgKzM5MCw5IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRET01O
b2RlKCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGZvY3Vz
CisgICAgICovCiAgICAgc2VsZWN0RE9NTm9kZTogZnVuY3Rpb24obm9kZSwgZm9jdXMpCiAgICAg
ewogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdERPTU5vZGUobm9kZSwgZm9jdXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
cwppbmRleCA4ZjQyZjA0NmRmYTk1YmJiNzI4MTYwNTRkZDE2YWQyNDM1MGZlYmJiLi4xYmQ0Y2Mz
NTVlZjNmMTU3MTA2NzhiZGM3NjZjMWNkNzU1ZTUzOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtNjI0LDE0ICs2MjQs
MTQgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICBfY3Jl
YXRlU3RhdHVzYmFyQnV0dG9uczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJl
c2VydmVMb2dUb2dnbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlByZXNlcnZlIExvZyB1cG9uIE5hdmlnYXRpb24iKSwgInJlY29yZC1w
cm9maWxlLXN0YXR1cy1iYXItaXRlbSIpOwotICAgICAgICB0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2ds
ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uUHJlc2VydmVMb2dDbGlja2VkLmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vblByZXNlcnZlTG9nQ2xpY2tlZCwgdGhpcyk7CiAK
ICAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1
dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIiksICJjbGVhci1zdGF0dXMtYmFyLWl0
ZW0iKTsKLSAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9yZXNldC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2NsZWFyQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVzZXQsIHRoaXMpOwogCiAgICAg
ICAgIHRoaXMuX2xhcmdlclJlc291cmNlc0J1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVz
QmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIHNtYWxsIHJlc291cmNlIHJvd3Mu
IiksICJuZXR3b3JrLWxhcmdlci1yZXNvdXJjZXMtc3RhdHVzLWJhci1pdGVtIik7CiAgICAgICAg
IHRoaXMuX2xhcmdlclJlc291cmNlc0J1dHRvbi50b2dnbGVkID0gV2ViSW5zcGVjdG9yLnNldHRp
bmdzLnJlc291cmNlc0xhcmdlUm93cy5nZXQoKTsKLSAgICAgICAgdGhpcy5fbGFyZ2VyUmVzb3Vy
Y2VzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlTGFyZ2VyUmVz
b3VyY2VzLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fbGFyZ2VyUmVzb3VyY2Vz
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlTGFyZ2VyUmVzb3Vy
Y2VzLCB0aGlzKTsKICAgICB9LAogCiAgICAgX29uTG9hZEV2ZW50RmlyZWQ6IGZ1bmN0aW9uKGV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmpl
Y3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcwppbmRl
eCA3YjA3OTVlMzQ1NTI1YzM0MGZhNTc0NmRhY2YzYWQ1MTFhMDdmNzIwLi42MjdkY2NkZGYyYTBl
ZGM2NmZjNDY4OTViODczMzkyMWEyMjVhYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL09iamVjdC5qcwpAQCAtMzAsNiArMzAsMTEgQEAgV2ViSW5zcGVjdG9yLk9i
amVjdCA9IGZ1bmN0aW9uKCkgewogfQogCiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuRXZlbnQpfSBsaXN0ZW5lcgorICAgICAqIEBwYXJh
bSB7T2JqZWN0PX0gdGhpc09iamVjdAorICAgICAqLwogICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1
bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX2xpc3RlbmVycykKQEAgLTM5LDYgKzQ0LDExIEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXS5wdXNo
KHsgdGhpc09iamVjdDogdGhpc09iamVjdCwgbGlzdGVuZXI6IGxpc3RlbmVyIH0pOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuRXZlbnQpfSBsaXN0ZW5lcgorICAgICAqIEBwYXJh
bSB7T2JqZWN0PX0gdGhpc09iamVjdAorICAgICAqLwogICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6
IGZ1bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCkBA
IC02MCw2ICs3MCwxMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZGVsZXRlIHRoaXMuX2xpc3RlbmVyczsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGV2ZW50VHlwZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICov
CiAgICAgaGFzRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fbGlzdGVuZXJzIHx8ICF0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkK
QEAgLTY4LDYgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAg
fSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUKICAgICAgKiBA
cGFyYW0geyo9fSBldmVudERhdGEKICAgICAgKi8KICAgICBkaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRhKQpAQCAtNzUsMjYgKzkwLDExIEBAIFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX2xpc3Rl
bmVycyB8fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgdmFyIHN0b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIGZ1
bmN0aW9uIHN0b3BQcm9wYWdhdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BwZWRQ
cm9wYWdhdGlvbiA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBwcmV2ZW50
RGVmYXVsdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9
IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZXZlbnQgPSB7dGFyZ2V0OiB0aGlzLCB0
eXBlOiBldmVudFR5cGUsIGRhdGE6IGV2ZW50RGF0YSwgZGVmYXVsdFByZXZlbnRlZDogZmFsc2V9
OwotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSBzdG9wUHJvcGFnYXRpb247Ci0gICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gcHJldmVudERlZmF1bHQ7Ci0KKyAgICAgICAgdmFy
IGV2ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudCh0aGlzLCBldmVudFR5cGUsIGV2ZW50RGF0
YSk7CiAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXS5z
bGljZSgwKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5saXN0ZW5lci5jYWxsKGxpc3RlbmVyc1tp
XS50aGlzT2JqZWN0LCBldmVudCk7Ci0gICAgICAgICAgICBpZiAoc3RvcHBlZFByb3BhZ2F0aW9u
KQorICAgICAgICAgICAgaWYgKGV2ZW50Ll9zdG9wcGVkUHJvcGFnYXRpb24pCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTAyLDQgKzEwMiwzMSBAQCBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5PYmplY3R9IHRhcmdldAorICogQHBhcmFtIHtzdHJp
bmd9IHR5cGUKKyAqIEBwYXJhbSB7Kj19IGRhdGEKKyAqLworV2ViSW5zcGVjdG9yLkV2ZW50ID0g
ZnVuY3Rpb24odGFyZ2V0LCB0eXBlLCBkYXRhKQoreworICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0
OworICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgdGhpcy5kYXRhID0gZGF0YTsKKyAgICB0aGlz
LmRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTsKKyAgICB0aGlzLl9zdG9wcGVkUHJvcGFnYXRpb24g
PSBmYWxzZTsKK30KKworV2ViSW5zcGVjdG9yLkV2ZW50LnByb3RvdHlwZSA9IHsKKyAgICBzdG9w
UHJvcGFnYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3N0b3BwZWRQcm9w
YWdhdGlvbiA9IHRydWU7CisgICAgfSwKKworICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOworICAgIH0KK30K
KwogV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3Vy
Y2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VD
b2RlLmpzCmluZGV4IDQxYTkwZDAyMjgyMTYyYWRmNzYyNDg2MmRiOTQ3ZGU0OWY4OTRmN2UuLjNl
MmViYjgxOWUwZTYxMWJhOWU2Mzk5ZjE1Y2RlMTg0NDI4ZTAxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKQEAgLTM0LDYg
KzM0LDExIEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5PYmplY3R9CisgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNjcmlwdH0gc2NyaXB0CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3Vy
Y2UKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlcn0gZm9ybWF0dGVyCisg
KiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1hdHRlZAogICovCiBXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlc291cmNlLCBmb3JtYXR0ZXIsIGZvcm1hdHRl
ZCkKIHsKQEAgLTU5LDE3ICs2NCwyNiBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVu
dHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAq
LwogICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAgICAgICAgdGhpcy5f
c2NyaXB0cy5wdXNoKHNjcmlwdCk7CiAgICAgICAgIHRoaXMuX2hhc05ld1NjcmlwdHMgPSB0cnVl
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZS5Tb3VyY2VNYXBwaW5nfQorICAgICAqLwogICAgIGdldCBzb3VyY2VNYXBwaW5nKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VNYXBwaW5nOwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1hdHRlZAorICAgICAqLwogICAgIHNl
dEZvcm1hdHRlZDogZnVuY3Rpb24oZm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X2Zvcm1hdHRlZCA9PT0gZm9ybWF0dGVkKQpAQCAtNzgsNiArOTIsOSBAQCBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1h
cHBpbmcoKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHByb3Zp
ZGVyIFNob3VsZCBhc3NpZ24gcHJvcGVyIHR5cGUgdXBvbiBmaXJzdCB1c2UKKyAgICAgKi8KICAg
ICBzZXRDb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcjogZnVuY3Rpb24ocHJvdmlkZXIpCiAg
ICAgewogICAgICAgICBpZiAocHJvdmlkZXIpCkBAIC05OSw2ICsxMTYsMTEgQEAgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVTb3Vy
Y2VNYXBwaW5nKCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBs
aW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgorICAgICAqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHR9CisgICAgICovCiAgICAgX3NjcmlwdEZvclJhd0xv
Y2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAg
ICB2YXIgY2xvc2VzdFNjcmlwdCA9IHRoaXMuX3NjcmlwdHNbMF07CkBAIC0xMTMsNiArMTM1LDkg
QEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gY2xvc2VzdFNjcmlwdDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKi8KICAgICBmb3JjZVVwZGF0ZVNvdXJjZU1h
cHBpbmc6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdXNlVGVt
cG9yYXJ5Q29udGVudCB8fCAhdGhpcy5faGFzTmV3U2NyaXB0cykKQEAgLTEzMiw2ICsxNTcsMTAg
QEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX2NyZWF0ZVNvdXJjZU1hcHBpbmcoZGlkQ3JlYXRlU291cmNlTWFwcGluZy5iaW5kKHRoaXMp
KTsKIAorICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlfQorICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNv
dXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKKyAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9u
IGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGluZykKICAgICAgICAgewogICAgICAg
ICAgICAgdGhpcy5fdXBkYXRpbmdTb3VyY2VNYXBwaW5nID0gZmFsc2U7CkBAIC0xNTEsOSArMTgw
LDE2IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRl
cih0aGlzLl9zY3JpcHRzKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Tb3VyY2VNYXBwaW5nKX0gY2FsbGJhY2sK
KyAgICAgKi8KICAgICBfY3JlYXRlU291cmNlTWFwcGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIpIHsK
KyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlfQorICAgICAgICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29tcGlsZXJT
b3VyY2VNYXBwaW5nfSBjb21waWxlclNvdXJjZU1hcHBpbmcKKyAgICAgICAgICAgICAqLwogICAg
ICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJjZU1hcHBpbmcoY29tcGlsZXJTb3VyY2VNYXBw
aW5nKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0
ID0gW107CkBAIC0xNzksOCArMjE1LDE4IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIC8q
KgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9CisgICAgICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZQorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
Y29udGVudAorICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQo
bWltZVR5cGUsIGNvbnRlbnQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAg
ICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfQorICAgICAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZvcm1hdHRlZENvbnRlbnQKKyAgICAgICAgICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmd9IG1hcHBpbmcKKyAgICAgICAgICAg
ICAqLwogICAgICAgICAgICAgZnVuY3Rpb24gZGlkRm9ybWF0Q29udGVudChmb3JtYXR0ZWRDb250
ZW50LCBtYXBwaW5nKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBjb250ZW50
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcihtaW1lVHlw
ZSwgZm9ybWF0dGVkQ29udGVudCkKQEAgLTE5Myw2ICsyMzksOSBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIG9yaWdpbmFsQ29udGVudFByb3ZpZGVy
LnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJj
ZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKKyAgICAgKi8KICAgICBfc2F2ZVNvdXJjZU1hcHBpbmc6
IGZ1bmN0aW9uKHNvdXJjZU1hcHBpbmcpCiAgICAgewogICAgICAgICB2YXIgb2xkVUlTb3VyY2VD
b2RlOwpAQCAtMjA1LDkgKzI1NCwzMyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90
b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAorLyoqCisgKiBAaW50ZXJmYWNl
CisgKi8KK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmcgPSBmdW5jdGlv
bigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmcucHJv
dG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlv
bn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0K
KyAgICAgKi8KKyAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRp
b24pIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAg
ICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqLworICAgIHVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpIHsg
fQorfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmd9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9IHVpU291cmNlQ29kZQogICovCiBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Q
bGFpblNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUp
CiB7CkBAIC0yMTYsMTkgKzI4OSwzMSBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5QbGFp
blNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZQogfQogCiBX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0g
eworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9j
YXRpb24KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KKyAgICAgKi8K
ICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291
cmNlQ29kZSwgcmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlzLl91aVNv
dXJjZUNvZGUsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJl
ciB8fCAwKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51
bWJlcgorICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICovCiAg
ICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVpU291cmNlQ29kZSA9PT0gdGhp
cy5fdWlTb3VyY2VDb2RlKTsKICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0geyBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IDAgfTsKICAgICAgICAgcmF3TG9jYXRpb24uc2Ny
aXB0SWQgPSB0aGlzLl9yYXdTb3VyY2VDb2RlLl9zY3JpcHRGb3JSYXdMb2NhdGlvbihyYXdMb2Nh
dGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpLnNjcmlwdElkOwotICAg
ICAgICByZXR1cm4gcmF3TG9jYXRpb247CisgICAgICAgIHJldHVybiAvKiogQHR5cGUge0RlYnVn
Z2VyQWdlbnQuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqLwogICAgIGdl
dCB1aVNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29k
ZTsKQEAgLTIzNyw2ICszMjIsMTAgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuUGxhaW5T
b3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBp
bXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Tb3VyY2VNYXBwaW5nfQorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291cmNlQ29kZQorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmd9IG1hcHBpbmcKICAqLwogV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHJh
d1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSwgbWFwcGluZykKIHsKQEAgLTI0NiwxMiArMzM1LDIw
IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcgPSBm
dW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvCiB9CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKi8KICAg
ICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgewog
ICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9tYXBwaW5nLm9yaWdpbmFsVG9Gb3JtYXR0ZWQo
cmF3TG9jYXRpb24pOwotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9u
KHRoaXMuX3VpU291cmNlQ29kZSwgbG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1u
TnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlz
Ll91aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJl
ciB8fCAwKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51
bWJlcgorICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICovCiAg
ICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVpU291cmNlQ29kZSA9PT0gdGhp
cy5fdWlTb3VyY2VDb2RlKTsKQEAgLTI2MCw2ICszNTcsOSBAQCBXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHJhd0xvY2F0aW9uOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqLwogICAgIGdldCB1aVNvdXJjZUNvZGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZTsKQEAgLTI2OCw2ICszNjgs
MTAgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGluZy5w
cm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuU291cmNlTWFwcGluZ30KKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAqIEBwYXJhbSB7QXJyYXkuPFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0CisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmd9IG1hcHBpbmcKICAqLwogV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24ocmF3U291
cmNlQ29kZSwgdWlTb3VyY2VDb2RlTGlzdCwgbWFwcGluZykKIHsKQEAgLTI4MCwyMCArMzg0LDMx
IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFwcGluZyA9IGZ1
bmN0aW9uKHJhd1NvdXJjZUNvZGUsIHVpU291CiB9CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqLwogICAg
IHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0g
ICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuY29tcGlsZWRMb2NhdGlvblRvU291
cmNlTG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVt
YmVyKTsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fbWFwcGluZy5jb21waWxlZExvY2F0
aW9uVG9Tb3VyY2VMb2NhdGlvbihyYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5j
b2x1bW5OdW1iZXIgfHwgMCk7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNv
dXJjZUNvZGVCeVVSTFtsb2NhdGlvbi5zb3VyY2VVUkxdOwogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgbG9jYXRpb24ubGluZU51bWJlciwg
bG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRp
b259CisgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291
cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRo
aXMuX21hcHBpbmcuc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRpb24odWlTb3VyY2VDb2Rl
LnVybCwgbGluZU51bWJlcik7CisgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMuX21hcHBp
bmcuc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRpb24odWlTb3VyY2VDb2RlLnVybCwgbGlu
ZU51bWJlciwgMCk7CiAgICAgICAgIHJhd0xvY2F0aW9uLnNjcmlwdElkID0gdGhpcy5fcmF3U291
cmNlQ29kZS5fc2NyaXB0Rm9yUmF3TG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3
TG9jYXRpb24uY29sdW1uTnVtYmVyKS5zY3JpcHRJZDsKLSAgICAgICAgcmV0dXJuIHJhd0xvY2F0
aW9uOworICAgICAgICByZXR1cm4gLyoqIEB0eXBlIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSAq
LyByYXdMb2NhdGlvbjsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXku
PFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQorICAgICAqLwogICAgIGdldCB1aVNvdXJjZUNv
ZGVMaXN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGVMaXN0OwpA
QCAtMzAyLDYgKzQxNyw5IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291
cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICogQHBhcmFtIHtu
dW1iZXJ9IGxpbmVOdW1iZXIKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKICAqLwog
V2ViSW5zcGVjdG9yLlVJTG9jYXRpb24gPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHQuanMKaW5kZXggOGU4NTdmYWM1YmRiNzFkOGRkNGVlYjdlMmY4YzI3MGI1MWEyZjhk
MC4uOTNhZDg4MTI4ODQ1N2ZjN2NhNjdlMmI3ODBiYTY3YTVkNjc0NGUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTI1LDggKzI1LDE1IEBA
CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0gez9zdHJpbmd9IHNjcmlwdElkCisg
KiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5l
CisgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRDb2x1bW4KKyAqIEBwYXJhbSB7bnVtYmVyfSBlbmRM
aW5lCisgKiBAcGFyYW0ge251bWJlcn0gZW5kQ29sdW1uCisgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
Q29udGVudFNjcmlwdAogICovCi1XZWJJbnNwZWN0b3IuU2NyaXB0ID0gZnVuY3Rpb24oc2NyaXB0
SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1u
LCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSwgaXNDb250ZW50U2NyaXB0KQorV2ViSW5zcGVjdG9y
LlNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRD
b2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0KQogewogICAgIHRoaXMu
c2NyaXB0SWQgPSBzY3JpcHRJZDsKICAgICB0aGlzLnNvdXJjZVVSTCA9IHNvdXJjZVVSTDsKQEAg
LTM0LDEyICs0MSwxMyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0ID0gZnVuY3Rpb24oc2NyaXB0SWQs
IHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTAogICAgIHRoaXMuY29sdW1u
T2Zmc2V0ID0gc3RhcnRDb2x1bW47CiAgICAgdGhpcy5lbmRMaW5lID0gZW5kTGluZTsKICAgICB0
aGlzLmVuZENvbHVtbiA9IGVuZENvbHVtbjsKLSAgICB0aGlzLmVycm9yTGluZSA9IGVycm9yTGlu
ZTsKLSAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKICAgICB0aGlzLmlzQ29u
dGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdC5w
cm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpfSBj
YWxsYmFjaworICAgICAqLwogICAgIHJlcXVlc3RTb3VyY2U6IGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZSkgewpAQCAtNDcsMTYgKzU1LDM0IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuU2Ny
aXB0fQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZQorICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24g
ZGlkR2V0U2NyaXB0U291cmNlKGVycm9yLCBzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHRoaXMuX3NvdXJjZSA9IGVycm9yID8gIiIgOiBzb3VyY2U7CiAgICAgICAgICAgICBjYWxsYmFj
ayh0aGlzLl9zb3VyY2UpOwogICAgICAgICB9Ci0gICAgICAgIERlYnVnZ2VyQWdlbnQuZ2V0U2Ny
aXB0U291cmNlKHRoaXMuc2NyaXB0SWQsIGRpZEdldFNjcmlwdFNvdXJjZS5iaW5kKHRoaXMpKTsK
KyAgICAgICAgaWYgKHRoaXMuc2NyaXB0SWQpIHsKKyAgICAgICAgICAgIC8vIFNjcmlwdCBmYWls
ZWQgdG8gcGFyc2UuCisgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LmdldFNjcmlwdFNvdXJjZSh0
aGlzLnNjcmlwdElkLCBkaWRHZXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgY2FsbGJhY2soIiIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxQ
YWdlQWdlbnQuU2VhcmNoTWF0Y2g+KX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBzZWFyY2hJbkNv
bnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKICAgICB7CisgICAgICAgIC8qKgorICAg
ICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLlNjcmlwdH0KKyAgICAgICAgICogQHBhcmFtIHs/
UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPFBhZ2VBZ2Vu
dC5TZWFyY2hNYXRjaD59IHNlYXJjaE1hdGNoZXMKKyAgICAgICAgICovCiAgICAgICAgIGZ1bmN0
aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIHNlYXJjaE1hdGNoZXMpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChlcnJvcikKQEAgLTY0LDE3ICs5MCwzNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhbGxiYWNrKHNlYXJjaE1hdGNoZXMgfHwgW10p
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBEZWJ1Z2dlckFnZW50LnNlYXJjaEluQ29u
dGVudCh0aGlzLnNjcmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgaWYgKHRoaXMuc2NyaXB0SWQpIHsKKyAgICAgICAgICAgIC8vIFNjcmlwdCBmYWlsZWQg
dG8gcGFyc2UuCisgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LnNlYXJjaEluQ29udGVudCh0aGlz
LnNjcmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjYWxsYmFjayhbXSk7CiAgICAgfSwKICAgICAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3U291cmNlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/
UHJvdG9jb2wuRXJyb3IsIEFycmF5LjxEZWJ1Z2dlckFnZW50LkNhbGxGcmFtZT49KX0gY2FsbGJh
Y2sKKyAgICAgKi8KICAgICBlZGl0U291cmNlOiBmdW5jdGlvbihuZXdTb3VyY2UsIGNhbGxiYWNr
KQogICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuU2Ny
aXB0fQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAg
ICogQHBhcmFtIHtBcnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJhbWU+fHVuZGVmaW5lZH0gY2Fs
bEZyYW1lcworICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlkRWRpdFNjcmlwdFNvdXJj
ZShlcnJvciwgY2FsbEZyYW1lcykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFlcnJvcikK
ICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2UgPSBuZXdTb3VyY2U7CiAgICAgICAgICAgICBj
YWxsYmFjayhlcnJvciwgY2FsbEZyYW1lcyk7CiAgICAgICAgIH0KLSAgICAgICAgRGVidWdnZXJB
Z2VudC5zZXRTY3JpcHRTb3VyY2UodGhpcy5zY3JpcHRJZCwgbmV3U291cmNlLCB1bmRlZmluZWQs
IGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CisgICAgICAgIGlmICh0aGlzLnNjcmlw
dElkKSB7CisgICAgICAgICAgICAvLyBTY3JpcHQgZmFpbGVkIHRvIHBhcnNlLgorICAgICAgICAg
ICAgRGVidWdnZXJBZ2VudC5zZXRTY3JpcHRTb3VyY2UodGhpcy5zY3JpcHRJZCwgbmV3U291cmNl
LCB1bmRlZmluZWQsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgY2FsbGJhY2soIlNjcmlwdCBmYWlsZWQgdG8gcGFyc2UiKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c1BhbmVsLmpzCmluZGV4IDYzNzA3OWRiZThmNTI1MTU3ZTVkNzUxNTkxMzZkMmZlMDI4Y2EzODAu
LjI3MDhiM2FjZDdiZGQzNzQyNWZmMjA3YjdlZjkwYjBmYjg1NWRhZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC04Myw3
ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihwcmVzZW50YXRp
b25Nb2RlbCkKIAogICAgIHRoaXMudG9nZ2xlQnJlYWtwb2ludHNCdXR0b24gPSBuZXcgV2ViSW5z
cGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYWN0aXZhdGUg
YWxsIGJyZWFrcG9pbnRzLiIpLCAidG9nZ2xlLWJyZWFrcG9pbnRzIik7CiAgICAgdGhpcy50b2dn
bGVCcmVha3BvaW50c0J1dHRvbi50b2dnbGVkID0gdHJ1ZTsKLSAgICB0aGlzLnRvZ2dsZUJyZWFr
cG9pbnRzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlQnJlYWtw
b2ludHNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLnRvZ2dsZUJyZWFrcG9p
bnRzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlQnJlYWtwb2lu
dHNDbGlja2VkLCB0aGlzKTsKICAgICB0aGlzLnNpZGViYXJCdXR0b25zRWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmVsZW1lbnQpOwogCiAgICAgdGhpcy5k
ZWJ1Z2dlclN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAg
LTE0OCwxNiArMTQ4LDE2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihw
cmVzZW50YXRpb25Nb2RlbCkKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRl
YmFyUmVzaXplRWxlbWVudCk7CiAKICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAiZW5hYmxlLXRvZ2dsZS1zdGF0dXMtYmFy
LWl0ZW0iKTsKLSAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3RvZ2dsZURlYnVnZ2luZy5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhp
cy5lbmFibGVUb2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dn
bGVEZWJ1Z2dpbmcsIHRoaXMpOwogICAgIGlmIChQcmVmZXJlbmNlcy5kZWJ1Z2dlckFsd2F5c0Vu
YWJsZWQpCiAgICAgICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLmVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiaGlkZGVuIik7CiAKICAgICB0aGlzLl9wYXVzZU9uRXhjZXB0aW9uQnV0dG9uID0gbmV3
IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJzY3JpcHRzLXBhdXNlLW9uLWV4Y2Vw
dGlvbnMtc3RhdHVzLWJhci1pdGVtIiwgMyk7Ci0gICAgdGhpcy5fcGF1c2VPbkV4Y2VwdGlvbkJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZVBhdXNlT25FeGNlcHRp
b25zLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl9wYXVzZU9uRXhjZXB0aW9uQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlUGF1c2VPbkV4Y2VwdGlvbnMs
IHRoaXMpOwogCiAgICAgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uID0gbmV3IFdlYklu
c3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJp
bnQiKSwgInNjcmlwdHMtdG9nZ2xlLXByZXR0eS1wcmludC1zdGF0dXMtYmFyLWl0ZW0iKTsKICAg
ICB0aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24udG9nZ2xlZCA9IGZhbHNlOwotICAgIHRo
aXMuX3RvZ2dsZUZvcm1hdFNvdXJjZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX3RvZ2dsZUZvcm1hdFNvdXJjZS5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5fdG9n
Z2xlRm9ybWF0U291cmNlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9n
Z2xlRm9ybWF0U291cmNlLCB0aGlzKTsKIAogICAgIHRoaXMuX3NjcmlwdFZpZXdTdGF0dXNCYXJJ
dGVtc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMu
X3NjcmlwdFZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gImlubGlu
ZS1ibG9jayI7CkBAIC00MzgsMTMgKzQzOCwyMyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuanNCcmVha3BvaW50cy5y
ZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQudWlTb3VyY2VDb2RlLCBicmVha3BvaW50LmxpbmVO
dW1iZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LCBib29sZWFuLCBSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0
PSl9IGNhbGxiYWNrCisgICAgICovCiAgICAgZXZhbHVhdGVJblNlbGVjdGVkQ2FsbEZyYW1lOiBm
dW5jdGlvbihjb2RlLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5C
eVZhbHVlLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZEV2YWx1YXRlKCkK
KyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1J1bnRpbWVBZ2VudC5SZW1vdGVPYmpl
Y3R9IHJlc3VsdAorICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHdhc1Rocm93bgorICAgICAg
ICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVzdWx0LCB3YXNUaHJvd24pCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChvYmplY3RHcm91cCA9PT0gImNvbnNvbGUiKQogICAg
ICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLnNjb3BlY2hhaW4udXBkYXRlKHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lKTsKLSAgICAgICAgICAgIGNhbGxiYWNr
LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICBpZiAocmV0dXJuQnlWYWx1ZSkK
KyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB3YXNUaHJvd24sIHdhc1Rocm93biA/IHJl
c3VsdCA6IG51bGwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxiYWNr
KFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSwgd2FzVGhyb3du
KTsKICAgICAgICAgfQogICAgICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUgPSB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5zZWxlY3RlZENhbGxGcmFtZTsKICAgICAgICAgc2VsZWN0ZWRDYWxsRnJh
bWUuZXZhbHVhdGUoY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmV0
dXJuQnlWYWx1ZSwgZGlkRXZhbHVhdGUuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggNmE3YWEyZGVl
NWM3OGExMTc3NzNlM2JhYTUzY2VhM2E1NjVkNDRmYy4uYThhMTJjMzM3YjY1MTMxMDgzYmE5MTE2
ZDI3OTQxZjE0M2Q4MDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMjMxLDE2ICsyMzEsMTYgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVTdGF0dXNiYXJCdXR0
b25zOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2dsZVRpbWVsaW5lQnV0dG9u
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZWNvcmQiKSwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSIpOwotICAgICAgICB0
aGlzLnRvZ2dsZVRpbWVsaW5lQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
dG9nZ2xlVGltZWxpbmVCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAg
dGhpcy50b2dnbGVUaW1lbGluZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X3RvZ2dsZVRpbWVsaW5lQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5jbGVh
ckJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2xlYXIiKSwgImNsZWFyLXN0YXR1cy1iYXItaXRlbSIpOwotICAgICAgICB0aGlz
LmNsZWFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xlYXJQYW5lbC5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuY2xlYXJCdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVhclBhbmVsLCB0aGlzKTsKIAogICAgICAgICB0aGlzLnRv
Z2dsZUZpbHRlckJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKHRoaXMu
X2hpZGVTaG9ydFJlY29yZHNUaXRsZVRleHQsICJ0aW1lbGluZS1maWx0ZXItc3RhdHVzLWJhci1p
dGVtIik7Ci0gICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKICAgICAgICAg
dGhpcy5nYXJiYWdlQ29sbGVjdEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0
dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBHYXJiYWdlIiksICJnYXJiYWdlLWNv
bGxlY3Qtc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgICAgIHRoaXMuZ2FyYmFnZUNvbGxlY3RCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9nYXJiYWdlQ29sbGVjdEJ1dHRvbkNs
aWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0QnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ2FyYmFnZUNvbGxlY3RCdXR0b25D
bGlja2VkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLnJlY29yZHNDb3VudGVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0aGlzLnJlY29yZHNDb3VudGVyLmNsYXNz
TmFtZSA9ICJ0aW1lbGluZS1yZWNvcmRzLWNvdW50ZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwppbmRleCAyM2ZmYmRhZDA1Mzhi
MDlmNTJlNmJmYzkxYjg2ZjRkZmJmMmNjNjQwLi5lYzc3ZDU2N2Q1NzY0ZWE2YjMxNTM2YWUwZjhk
MmUyOTNhNzQzOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1VJU291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1VJU291cmNlQ29kZS5qcwpAQCAtMzAsNiArMzAsMTEgQEAKIAogLyoqCiAgKiBAY29uc3Ry
dWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICogQHBhcmFtIHtzdHJpbmd9IHVybAorICog
QHBhcmFtIHtib29sZWFufSBpc0NvbnRlbnRTY3JpcHQKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNv
bnRlbnRQcm92aWRlcn0gY29udGVudFByb3ZpZGVyCiAgKi8KIFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUgPSBmdW5jdGlvbihpZCwgdXJsLCBpc0NvbnRlbnRTY3JpcHQsIHJhd1NvdXJjZUNvZGUs
IGNvbnRlbnRQcm92aWRlcikKIHsKQEAgLTM4LDMwICs0Myw0OCBAQCBXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlID0gZnVuY3Rpb24oaWQsIHVybCwgaXNDb250ZW50U2NyaXB0LCByYXdTb3VyY2VD
b2RlLCBjbwogICAgIHRoaXMuX2lzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKICAg
ICB0aGlzLl9yYXdTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZTsKICAgICB0aGlzLl9jb250ZW50
UHJvdmlkZXIgPSBjb250ZW50UHJvdmlkZXI7CisgICAgLyoqCisgICAgICogQHR5cGUgQXJyYXku
PGZ1bmN0aW9uKHN0cmluZyxzdHJpbmcpPgorICAgICAqLwogICAgIHRoaXMuX3JlcXVlc3RDb250
ZW50Q2FsbGJhY2tzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90
eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBn
ZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0IHVybCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdXJsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGdldCBpc0NvbnRlbnRTY3JpcHQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29udGVudFNjcmlwdDsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9CisgICAgICov
CiAgICAgZ2V0IHJhd1NvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jh
d1NvdXJjZUNvZGU7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
c3RyaW5nLHN0cmluZyl9IGNhbGxiYWNrCisgICAgICovCiAgICAgcmVxdWVzdENvbnRlbnQ6IGZ1
bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRMb2FkZWQp
IHsKQEAgLTc0LDYgKzk3LDEwIEBAIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyLnJlcXVlc3RDb250ZW50KHRo
aXMuX2RpZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29u
dGVudAorICAgICAqLwogICAgIF9kaWRSZXF1ZXN0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUs
IGNvbnRlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50TG9hZGVkID0gdHJ1ZTsKQEAg
LTkwLDYgKzExNywyNCBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsK
ICAqLwogV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKCkgeyB9CiBXZWJJ
bnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKHN0cmluZyxzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLwogICAgIHJl
cXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykgeyB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHF1ZXJ5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2Vi
SW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5TZWFyY2hNYXRjaD4pfSBjYWxsYmFjaworICAgICAq
LwogICAgIHNlYXJjaEluQ29udGVudDogZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKSB7IH0KIH0K
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisg
KiBAcGFyYW0ge3N0cmluZ30gbGluZUNvbnRlbnQKKyAqLworV2ViSW5zcGVjdG9yLkNvbnRlbnRQ
cm92aWRlci5TZWFyY2hNYXRjaCA9IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGxpbmVDb250ZW50KSB7
CisgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICB0aGlzLmxpbmVDb250ZW50
ID0gbGluZUNvbnRlbnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCmluZGV4
IDJjZDQ0NGEzNDQxZmJjZDNjZjA3MDhhZTFjZmQ1NmE0NWVhZjIzOGYuLmUwM2UwNGFmNWY1OGFl
MzllOGI1ZTFlOTZjNjE3MmNkMjY1MDBhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQ
YW5lLmpzCkBAIC0xOTksNyArMTk5LDcgQEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNT
ZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGVW
aWV3LmV2YWxJbkluc3BlY3RlZFdpbmRvdyhleHByZXNzaW9uLCB0aGlzLl93YXRjaE9iamVjdEdy
b3VwSWQsIGZhbHNlLCB0cnVlLCB1bmRlZmluZWQsIGFwcGVuZFJlc3VsdC5iaW5kKHRoaXMsIGV4
cHJlc3Npb24sIGkpKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlVmlldy5ldmFs
SW5JbnNwZWN0ZWRXaW5kb3coZXhwcmVzc2lvbiwgdGhpcy5fd2F0Y2hPYmplY3RHcm91cElkLCBm
YWxzZSwgdHJ1ZSwgZmFsc2UsIGFwcGVuZFJlc3VsdC5iaW5kKHRoaXMsIGV4cHJlc3Npb24sIGkp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcHJvcGVydHlDb3VudCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCmluZGV4IDliZmViMDk3OTQ2
YTFmNzY2MzMxYTVkNWQwYmIwZWM5NmZkN2NmY2QuLjZlODdjMjUzODk1NTFiNGZhYWI5NmM1NGNk
OGYzNTIxYmM5NzAwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2V4dGVybnMuanMKQEAgLTY2LDcgKzY2LDcgQEAgV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJj
ZUFzTm9kZSA9IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY2xhc3NlcywgdG9vbHRpcFQKIAog
LyoqCiAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCi0gKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJl
cgorICogQHBhcmFtIHtudW1iZXI9fSBsaW5lTnVtYmVyCiAgKi8KIFdlYkluc3BlY3Rvci5mb3Jt
YXRMaW5rVGV4dCA9IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlcikge30KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2dlbmVyYXRlLXByb3RvY29sLWV4dGVybnMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtcHJvdG9jb2wtZXh0ZXJucwppbmRleCBhMjM5
ZmNhZThhYzgwNmEyOWIyMGMxNTQwY2IwNzk2ODFlYjkzZjM3Li4yOTlkOWZjNjgyNDUwZTg3NGM3
YjJlZWQyMjllMjU0MmE3ZTZkYzRiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZ2VuZXJhdGUtcHJvdG9jb2wtZXh0ZXJucworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZ2VuZXJhdGUtcHJvdG9jb2wtZXh0ZXJucwpAQCAtNDYsNiArNDYsMTIgQEAganNvbl9hcGkg
PSBldmFsKGpzb25fc3RyaW5nKVsiZG9tYWlucyJdCiAKIG91dHB1dF9maWxlID0gb3BlbihvdXRw
dXRfcGF0aCwgInciKQogCitvdXRwdXRfZmlsZS53cml0ZSgiIiIKK3ZhciBQcm90b2NvbCA9IHt9
OworLyoqIEB0eXBlZGVmIHtzdHJpbmd9Ki8KK1Byb3RvY29sLkVycm9yOworIiIiKQorCiB0eXBl
X3RyYWl0cyA9IHsKICAgICAiYW55IjogIioiLAogICAgICJzdHJpbmciOiAic3RyaW5nIiwKQEAg
LTEyMiw3ICsxMjgsNyBAQCBmb3IgZG9tYWluIGluIGpzb25fYXBpOgogICAgICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChpbl9wYXJh
bVsibmFtZSJdKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIiAq
IEBwYXJhbSB7JXN9ICVzXG4iICUgKHBhcmFtX3R5cGUoZG9tYWluX25hbWUsIGluX3BhcmFtKSwg
aW5fcGFyYW1bIm5hbWUiXSkpCi0gICAgICAgICAgICByZXR1cm5zID0gW10KKyAgICAgICAgICAg
IHJldHVybnMgPSBbIj9Qcm90b2NvbC5FcnJvciJdCiAgICAgICAgICAgICBpZiAoInJldHVybnMi
IGluIGNvbW1hbmQpOgogICAgICAgICAgICAgICAgIGZvciBvdXRfcGFyYW0gaW4gY29tbWFuZFsi
cmV0dXJucyJdOgogICAgICAgICAgICAgICAgICAgICBpZiAoIm9wdGlvbmFsIiBpbiBvdXRfcGFy
YW0pOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110358</attachid>
            <date>2011-10-10 07:44:17 -0700</date>
            <delta_ts>2011-10-10 08:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69726-20111010184414.patch</filename>
            <type>text/plain</type>
            <size>113094</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcwNTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NGQzOGU3ZmViM2RlNzk5MGNmNDYz
NzAxODlmMWVjNGY4NmRlZGJjLi4xNGM3MDc0YzlhZWQ4NmVhNzY2MDEyMDgwYmNmYzdmMDliOWIw
MDUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMTAgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFubm90YXRlIERP
TUFnZW50LCBEZWJ1Z2dlcihQcmVzZW50YXRpb24pTW9kZWwgd2l0aCB0eXBlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NzI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWw6CisKIDIwMTEtMTAtMDYgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2F2aW5n
IEphdmFTY3JpcHQgYWZ0ZXIgbGl2ZSBlZGl0IHJlc2V0cyBzY3JvbGxlciBwb3NpdGlvbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRt
bAppbmRleCBmMjlkM2RhOTNlYjAzOGI1YmNiZDBjNWJiMzFiNTc4MmVhYmUyMGFmLi5jNDI3MWY5
MGVjMjQ1YTE1ZDk4MWFlOGI3YzdmMjgxN2ViYzdlMzBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCkBAIC0xMSw3ICsxMSw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB2YXIgbGluZUNvdW50ID0gc291cmNlLmxpbmVF
bmRpbmdzKCkubGVuZ3RoOwogICAgICAgICB2YXIgZW5kTGluZSA9IHN0YXJ0TGluZSArIGxpbmVD
b3VudCAtIDE7CiAgICAgICAgIHZhciBlbmRDb2x1bW4gPSBsaW5lQ291bnQgPT09IDEgPyBzdGFy
dENvbHVtbiArIHNvdXJjZS5sZW5ndGggOiBzb3VyY2UubGVuZ3RoIC0gc291cmNlLmxpbmVFbmRp
bmdzKClbbGluZUNvdW50IC0gMl07Ci0gICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVj
dG9yLlNjcmlwdChudWxsLCB1cmwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVu
ZENvbHVtbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGlzQ29udGVudFNjcmlwdCk7CisgICAgICAg
IHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChudWxsLCB1cmwsIHN0YXJ0TGlu
ZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0KTsKICAg
ICAgICAgc2NyaXB0LnJlcXVlc3RTb3VyY2UgPSBmdW5jdGlvbihjYWxsYmFjaykgeyBjYWxsYmFj
ayhzb3VyY2UpOyB9OwogICAgICAgICByZXR1cm4gc2NyaXB0OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzYmU4MDEyYjViMjUzYzZiZjhiZDZhMzkzNThjY2FlZjJlODkzMzFlLi5iOTQyNDMzZmQwM2Ey
MTQ0YjdkM2VmNDAxNTYzNGFhM2JmZTEyY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAK
KzIwMTEtMTAtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGFubm90YXRlIERPTUFnZW50LCBEZWJ1Z2dlcihQcmVzZW50YXRp
b24pTW9kZWwgd2l0aCB0eXBlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY5NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2g6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRzUGFuZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90
eXBlLl9icmVha3BvaW50UmVzb2x2ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U291cmNlTWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1h
cHBpbmcucHJvdG90eXBlLmNvbXBpbGVkTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnNvdXJjZUxv
Y2F0aW9uVG9Db21waWxlZExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnNvdXJjZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZp
ZXcucHJvdG90eXBlLl9jb21wbGV0aW9ucy5ldmFsdWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fY29tcGxldGlvbnMucmVjZWl2ZWRQcm9wZXJ0eU5h
bWVzRnJvbUV2YWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5ldmFsSW5JbnNwZWN0ZWRXaW5kb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
Q29va2llSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmll
dyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5pc1hNTE5vZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTURvY3VtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuX2Rpc3BhdGNoV2hlbkRvY3VtZW50QXZhaWxhYmxlLm9uRG9jdW1lbnRBdmFpbGFi
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fZGlzcGF0Y2hX
aGVuRG9jdW1lbnRBdmFpbGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNo
ZXIucHJvdG90eXBlLmNoYXJhY3RlckRhdGFNb2RpZmllZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUuY2hpbGROb2RlQ291bnRVcGRhdGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyLnByb3RvdHlwZS5jaGlsZE5vZGVJbnNlcnRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUuY2hpbGRO
b2RlUmVtb3ZlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRl
bXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBhdXNlZERldGFpbHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnJlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5nZXQgY2FsbEZy
YW1lcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX3Bh
dXNlZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5
cGUuX3Jlc3VtZWRTY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
cHJvdG90eXBlLl9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwucHJvdG90eXBlLl9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRpc3BhdGNoZXIucHJvdG90eXBlLnNjcmlwdFBhcnNl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJEaXNwYXRjaGVyLnByb3RvdHlwZS5i
cmVha3BvaW50UmVzb2x2ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fcGFyc2VkU2NyaXB0U291cmNlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZmFpbGVk
VG9QYXJzZVNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NvdXJjZU1hcHBpbmdVcGRhdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fdXBkYXRl
QnJlYWtwb2ludHNBZnRlckxpdmVFZGl0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2Ny
ZWF0ZVByZXNlbnRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRh
dGlvbkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25D
YWxsRnJhbWUucHJvdG90eXBlLmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUuX3VwZGF0ZVNvdXJjZUFu
Y2hvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fZG9jdW1lbnRVcGRhdGVkLnNlbGVjdExhc3RT
ZWxlY3RlZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlLl9kb2N1bWVudFVwZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRXZlbnQucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5Tb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlLlNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmcucHJvdG90
eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLlBsYWluU291cmNlTWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuUGxhaW5Tb3VyY2VN
YXBwaW5nLnByb3RvdHlwZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5Db21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNl
TWFwcGluZy5wcm90b3R5cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24pOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5yZXF1ZXN0U291cmNl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLnNlYXJjaEluQ29udGVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5lZGl0U291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmV2YWx1YXRlSW5TZWxlY3RlZENh
bGxGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9jcmVhdGVT
dGF0dXNiYXJCdXR0b25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNl
Q29kZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5TZWFyY2hNYXRjaCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzOgorICAgICAgICAqIGlu
c3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zOgorCiAyMDExLTEwLTA2ICBQYXZlbCBQ
b2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNhdmluZyBKYXZhU2NyaXB0IGFmdGVyIGxpdmUgZWRpdCByZXNldHMgc2Nyb2xsZXIgcG9z
aXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQuc2ggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gK
aW5kZXggOWViNmNiNTIxMzVkOGQ5ODRmZTQ4NjNmYTgzYTMzNjM3NDQ2OWFmNC4uZjkxODZjNWNj
NWRjNmJkMjM4YjgzYTliY2JjNDI4YjcxYWU3YjhlOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaApAQCAtMTA3LDcgKzEwNyw3IEBAIGphdmEgLWph
ciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tY29tcGlsYXRpb25fbGV2ZWwgU0lNUExFX09QVElN
SVpBVElPTlMgLS13YXJuCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9VSVV0aWxzLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1ZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2VsY29tZVZpZXcuanMgXAotICAgIC0tbW9kdWxlIGpzbW9kdWxlX2Nv
bXBvbmVudHM6MTg6anNtb2R1bGVfc2RrLGpzbW9kdWxlX3VpIFwKKyAgICAtLW1vZHVsZSBqc21v
ZHVsZV9jb21wb25lbnRzOjE1OmpzbW9kdWxlX3Nkayxqc21vZHVsZV91aSBcCiAgICAgICAgIC0t
anMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcyBc
CiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3Bv
aW50c1NpZGViYXJQYW5lLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMgXApAQCAtMTE4LDkgKzEx
OCw2IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tY29tcGlsYXRpb25fbGV2
ZWwgU0lNUExFX09QVElNSVpBVElPTlMgLS13YXJuCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanMgXAogICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3Zl
ckhlbHBlci5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcyBcCi0gICAgICAgIC0tanMgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6ZXIuanMgXAotICAgICAg
ICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlSFRNTFRva2Vu
aXplci5qcyBcCi0gICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIFwKICAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVRva2VuaXplci5qcyBcCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFn
ZW50LmpzIFwKQEAgLTE3MSw3ICsxNjgsMTEgQEAgamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxl
ci5qYXIgLS1jb21waWxhdGlvbl9sZXZlbCBTSU1QTEVfT1BUSU1JWkFUSU9OUyAtLXdhcm4KICAg
ICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0
Vmlldy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJ1bGVzLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCi0gICAgCisjICAgICAtLW1vZHVsZSBqc21vZHVsZV90
b2tlbml6ZXJzOjM6anNtb2R1bGVfY29tcG9uZW50cyBcCisjICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlQ1NTVG9rZW5pemVyLmpzIFwKKyMgICAg
ICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VIVE1MVG9r
ZW5pemVyLmpzIFwKKyMgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIFwKKwogCiAjIFRvIGJlIGNvbXBpbGVk
Li4uCiAjIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
cHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzCmluZGV4IDgyYzZhMThiZmY0N2Uz
NDBkYzUzOTJkZmEwMWU5MTE2ZDc2Mzk4ODIuLjhjY2M4OGI2NGI5YjE5YWM4NTM0YTc0NzI5N2Y1
NWI0ZmEwYmVhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMKQEAgLTM3LDExICsz
NywxMSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldyA9IGZ1bmN0aW9u
KHRyZWVFbGVtZW50LCBhcHBjYWNoZURvbWFpbikKICAgICAvLyBGSVhNRTogTmVlZHMgYmV0dGVy
IHRvb2x0aXAuIChMb2NhbGl6ZWQpCiAgICAgdGhpcy5kZWxldGVCdXR0b24gPSBuZXcgV2ViSW5z
cGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSIpLCAi
ZGVsZXRlLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7CiAgICAgdGhpcy5kZWxldGVCdXR0b24u
dmlzaWJsZSA9IGZhbHNlOwotICAgIHRoaXMuZGVsZXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fZGVsZXRlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7Cisg
ICAgdGhpcy5kZWxldGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9kZWxl
dGVCdXR0b25DbGlja2VkLCB0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBOZWVkcyBiZXR0ZXIgdG9v
bHRpcC4gKExvY2FsaXplZCkKICAgICB0aGlzLnJlZnJlc2hCdXR0b24gPSBuZXcgV2ViSW5zcGVj
dG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgInJl
ZnJlc2gtc3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLnJlZnJlc2hCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZC5iaW5k
KHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwogCiAgICAgaWYgKFBy
ZWZlcmVuY2VzLm9ubGluZURldGVjdGlvbkVuYWJsZWQpIHsKICAgICAgICAgdGhpcy5jb25uZWN0
aXZpdHlJY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwppbmRleCA2ZThmYzkx
YzBjN2MwYjQ0ZmQ3MmI2NmQwYzgwM2ViNzM2Y2MyYzcxLi5jYzE0MmYwYmM3NmVmNmEzNDYyYjk1
ZjNkN2UyZTVhYzE4YWVmZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTUwLDcgKzUwLDcgQEAgV2ViSW5zcGVjdG9yLkF1
ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuYXVkaXRSZXN1bHRzVHJlZUVsZW1lbnQu
ZXhwYW5kKCk7CiAKICAgICB0aGlzLmNsZWFyUmVzdWx0c0J1dHRvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgYXVkaXQgcmVz
dWx0cy4iKSwgImNsZWFyLXN0YXR1cy1iYXItaXRlbSIpOwotICAgIHRoaXMuY2xlYXJSZXN1bHRz
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xlYXJCdXR0b25DbGlja2Vk
LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLmNsZWFyUmVzdWx0c0J1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsZWFyQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKICAg
ICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50LmlkID0gImF1ZGl0LXZpZXdzIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9p
bnRNYW5hZ2VyLmpzCmluZGV4IGM4NDk4ZmU0ODE2MTMzYzdiODY5ZTdhZjQ4NjVmMzYzNmM3OWYy
MzMuLjJmNTdiNTg2N2QyNDk5ZjI5Y2Q2NWEyYTNiNWU4MTI1N2IzMjg2MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdl
ci5qcwpAQCAtMzAsMTUgKzMwLDI2IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TZXR0aW5nfSBicmVha3BvaW50U3RvcmFnZQorICogQHBhcmFtIHtm
dW5jdGlvbihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCl9IGJyZWFrcG9pbnRBZGRlZERlbGVnYXRl
CisgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5CcmVha3BvaW50KX0gYnJlYWtwb2lu
dFJlbW92ZWREZWxlZ2F0ZQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0g
ZGVidWdnZXJNb2RlbAogICovCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIgPSBmdW5j
dGlvbihicmVha3BvaW50U3RvcmFnZSwgYnJlYWtwb2ludEFkZGVkRGVsZWdhdGUsIGJyZWFrcG9p
bnRSZW1vdmVkRGVsZWdhdGUsIGRlYnVnZ2VyTW9kZWwpCiB7CiAgICAgdGhpcy5fYnJlYWtwb2lu
dFN0b3JhZ2UgPSBicmVha3BvaW50U3RvcmFnZTsKICAgICB0aGlzLl9icmVha3BvaW50QWRkZWRE
ZWxlZ2F0ZSA9IGJyZWFrcG9pbnRBZGRlZERlbGVnYXRlOwogICAgIHRoaXMuX2JyZWFrcG9pbnRS
ZW1vdmVkRGVsZWdhdGUgPSBicmVha3BvaW50UmVtb3ZlZERlbGVnYXRlOworICAgIC8qKgorICAg
ICAqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgT2JqZWN0LjxzdHJpbmcsV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQ+Pn0KKyAgICAgKi8KICAgICB0aGlzLl9icmVha3BvaW50c0J5VUlMb2NhdGlvbiA9
IHt9OwogCiAgICAgdGhpcy5fZGVidWdnZXJNb2RlbCA9IGRlYnVnZ2VyTW9kZWw7CisKKyAgICAv
KioKKyAgICAgKiBAdHlwZSB7T2JqZWN0LjxEZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQ+fQorICAgICAqLwogICAgIHRoaXMuX2JyZWFrcG9pbnRzQnlE
ZWJ1Z2dlcklkID0ge307CiAgICAgdGhpcy5fZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVzb2x2ZWQsIHRo
aXMuX2JyZWFrcG9pbnRSZXNvbHZlZCwgdGhpcyk7CiAKQEAgLTUxLDYgKzYyLDkgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oYnJlYWtwb2ludFN0b3JhZ2UsIGJy
ZWFrcG9pbnRBZGRlZERlbGUKIH0KIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqLwogICAgIHVpU291cmNlQ29kZUFkZGVkOiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlz
Ll9icmVha3BvaW50cyh1aVNvdXJjZUNvZGUuaWQpOwpAQCAtNjMsMTEgKzc3LDIwIEBAIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9
LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1
aVNvdXJjZUNvZGUKKyAgICAgKi8KICAgICBicmVha3BvaW50c0ZvclVJU291cmNlQ29kZTogZnVu
Y3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9p
bnRzKHVpU291cmNlQ29kZS5pZCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCisgICAg
ICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkCisgICAgICovCiAgICAgc2V0QnJlYWtwb2ludDog
ZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludCh1aVNvdXJjZUNvZGUuaWQsIGxpbmVO
dW1iZXIpKQpAQCAtODAsNiArMTAzLDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21hdGVyaWFsaXplQnJlYWtwb2ludChicmVh
a3BvaW50LCB1aVNvdXJjZUNvZGUucmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nLCB1aVNvdXJj
ZUNvZGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVt
YmVyCisgICAgICovCiAgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
LCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9icmVh
a3BvaW50KHVpU291cmNlQ29kZS5pZCwgbGluZU51bWJlcik7CkBAIC04OSw2ICsxMTYsMTEgQEAg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcmVtb3ZlQnJlYWtwb2ludEZyb21EZWJ1Z2dlcihicmVha3BvaW50KTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtwb2lu
dAorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuU291cmNlTWFwcGlu
Z30gc291cmNlTWFwcGluZworICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCisgICAgICovCiAgICAgX21hdGVyaWFsaXplQnJlYWtwb2ludDogZnVu
Y3Rpb24oYnJlYWtwb2ludCwgc291cmNlTWFwcGluZywgdWlTb3VyY2VDb2RlKQogICAgIHsKICAg
ICAgICAgaWYgKCFicmVha3BvaW50LmVuYWJsZWQgfHwgYnJlYWtwb2ludC5fbWF0ZXJpYWxpemVk
KQpAQCAtOTksNiArMTMxLDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludEluRGVidWdnZXIoYnJlYWtwb2lu
dCwgcmF3TG9jYXRpb24pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5CcmVha3BvaW50fSBicmVha3BvaW50CisgICAgICovCiAgICAgX2JyZWFrcG9pbnRE
ZWJ1Z2dlckxvY2F0aW9uQ2hhbmdlZDogZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICB7CiAgICAg
ICAgIGlmICghYnJlYWtwb2ludC51aVNvdXJjZUNvZGUpCkBAIC0xMTEsNiArMTQ2LDkgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoYnJlYWtwb2ludCk7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnR9IGJyZWFrcG9p
bnQKKyAgICAgKi8KICAgICBfYWRkQnJlYWtwb2ludFRvVUk6IGZ1bmN0aW9uKGJyZWFrcG9pbnQp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYnJlYWtwb2ludChicmVha3Bv
aW50LnVpU291cmNlQ29kZUlkLCBicmVha3BvaW50LmxpbmVOdW1iZXIpKTsKQEAgLTExOSw2ICsx
NTcsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9icmVha3BvaW50QWRkZWREZWxlZ2F0ZShicmVha3BvaW50KTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtw
b2ludAorICAgICAqLwogICAgIF9kZWxldGVCcmVha3BvaW50RnJvbVVJOiBmdW5jdGlvbihicmVh
a3BvaW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYnJlYWtwb2ludChi
cmVha3BvaW50LnVpU291cmNlQ29kZUlkLCBicmVha3BvaW50LmxpbmVOdW1iZXIpID09PSBicmVh
a3BvaW50KTsKQEAgLTEyNyw2ICsxNjgsMTAgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWREZWxlZ2F0
ZShicmVha3BvaW50KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtwb2ludAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCisgICAgICovCiAgICAgX21vdmVCcmVha3BvaW50SW5VSTogZnVuY3Rpb24oYnJlYWtw
b2ludCwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2RlbGV0ZUJyZWFrcG9pbnRG
cm9tVUkoYnJlYWtwb2ludCk7CkBAIC0xMzcsNiArMTgyLDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1aVNvdXJjZUNvZGVJZAorICAgICAq
LwogICAgIF9icmVha3BvaW50czogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2JyZWFrcG9pbnRzQnlVSUxvY2F0aW9uW3VpU291cmNlQ29kZUlkXSkK
QEAgLTE0NCwxMSArMTkyLDE4IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50c0J5VUlMb2NhdGlvblt1
aVNvdXJjZUNvZGVJZF07CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB1aVNvdXJjZUNvZGVJZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAg
ICovCiAgICAgX2JyZWFrcG9pbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRzKHVpU291cmNlQ29kZUlk
KVtsaW5lTnVtYmVyXTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlv
bihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCl9IGhhbmRsZXIKKyAgICAgKi8KICAgICBfZm9yRWFj
aEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGhhbmRsZXIpCiAgICAgewogICAgICAgICBmb3IgKHZhciB1
aVNvdXJjZUNvZGVJZCBpbiB0aGlzLl9icmVha3BvaW50c0J5VUlMb2NhdGlvbikgewpAQCAtMTU4
LDggKzIxMywxNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnR9IGJyZWFrcG9pbnQKKyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQu
TG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICovCiAgICAgX3NldEJyZWFrcG9pbnRJbkRlYnVn
Z2VyOiBmdW5jdGlvbihicmVha3BvaW50LCByYXdMb2NhdGlvbikKICAgICB7CisgICAgICAgIC8q
KgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyfQorICAg
ICAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkfSBicmVha3BvaW50SWQK
KyAgICAgICAgICogQHBhcmFtIHtBcnJheS48RGVidWdnZXJBZ2VudC5Mb2NhdGlvbj59IGxvY2F0
aW9ucworICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChicmVh
a3BvaW50SWQsIGxvY2F0aW9ucykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGJyZWFrcG9p
bnQgPT09IHRoaXMuX2JyZWFrcG9pbnQoYnJlYWtwb2ludC51aVNvdXJjZUNvZGVJZCwgYnJlYWtw
b2ludC5saW5lTnVtYmVyKSkgewpAQCAtMTgyLDYgKzI0Niw5IEBAIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwu
c2V0QnJlYWtwb2ludEJ5U2NyaXB0TG9jYXRpb24ocmF3TG9jYXRpb24sIGJyZWFrcG9pbnQuY29u
ZGl0aW9uLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5CcmVha3BvaW50fSBicmVha3BvaW50CisgICAg
ICovCiAgICAgX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXI6IGZ1bmN0aW9uKGJyZWFrcG9p
bnQpCiAgICAgewogICAgICAgICBpZiAoISgiX2RlYnVnZ2VySWQiIGluIGJyZWFrcG9pbnQpKQpA
QCAtMTkyLDE2ICsyNTksMjMgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZGVsZXRlIGJyZWFrcG9pbnQuX2RlYnVnZ2VyTG9jYXRpb247CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVu
dAorICAgICAqLwogICAgIF9icmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9icmVha3BvaW50c0J5RGVidWdnZXJJ
ZFtldmVudC5kYXRhLmJyZWFrcG9pbnRJZF07Ci0gICAgICAgIGJyZWFrcG9pbnQuX2RlYnVnZ2Vy
TG9jYXRpb24gPSBldmVudC5kYXRhLmxvY2F0aW9uOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IHRoaXMuX2JyZWFrcG9pbnRzQnlEZWJ1Z2dlcklkW2V2ZW50LmRhdGFbImJyZWFrcG9pbnRJZCJd
XTsKKyAgICAgICAgYnJlYWtwb2ludC5fZGVidWdnZXJMb2NhdGlvbiA9IGV2ZW50LmRhdGFbImxv
Y2F0aW9uIl07CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnREZWJ1Z2dlckxvY2F0aW9uQ2hhbmdl
ZChicmVha3BvaW50KTsKICAgICB9LAogCiAgICAgX3NhdmVCcmVha3BvaW50czogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdmFyIHNlcmlhbGl6ZWRCcmVha3BvaW50cyA9IFtdOworICAgICAg
ICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcn0K
KyAgICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtwb2ludAor
ICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gc2VyaWFsaXplUGVyc2lzdGVudChicmVha3Bv
aW50KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5wZXJzaXN0ZW50KQpA
QCAtMjEzLDYgKzI4NywxMCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90
eXBlID0gewogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIC8qKgorICAg
ICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyfQorICAgICAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5CcmVha3BvaW50fSBicmVha3BvaW50CisgICAgICAgICAq
LwogICAgICAgICBmdW5jdGlvbiByZXNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICAgICAg
ewogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludEZyb21EZWJ1Z2dlcihicmVha3Bv
aW50KTsKQEAgLTIyMyw2ICszMDEsMTAgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKIAogICAgIGRlYnVnZ2VyUmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Cisg
ICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyfQorICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5CcmVha3BvaW50fSBicmVha3Bv
aW50CisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiByZXNldE9yRGVsZXRlQnJlYWtwb2lu
dChicmVha3BvaW50KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5wZXJz
aXN0ZW50KSB7CkBAIC0yNDksNiArMzMxLDExIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0
cmluZ30gdWlTb3VyY2VDb2RlSWQKKyAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgKiBA
cGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCisgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQKKyAq
IEBwYXJhbSB7Ym9vbGVhbn0gcGVyc2lzdGVudAogICovCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dCA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJs
ZWQsIHBlcnNpc3RlbnQpCiB7CkBAIC0yNjAsNiArMzQ3LDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBl
bmFibGUKIH0KIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0geworICAgIC8q
KgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KICAgICBzZXJpYWxpemU6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBzZXJpYWxpemVkQnJlYWtwb2ludCA9IHt9OwpAQCAt
MjcxLDYgKzM2MSwxMCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAg
ICAgfQogfQogCisvKioKKyAqIEBwYXJhbSB7T2JqZWN0fSBzZXJpYWxpemVkQnJlYWtwb2ludAor
ICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnR9CisgKi8KIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50LmRlc2VyaWFsaXplID0gZnVuY3Rpb24oc2VyaWFsaXplZEJyZWFrcG9pbnQpCiB7
CiAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAwMWE4
NzQxODc4ZTk1ZjFjYjQxMjRmMDFjOTE2NjBiMzgyNzhhNzFmLi44OWZjZDg2YmY2M2UzMDRhYTVl
NWQzY2UwNDc3ZDAwMjljNDczZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC00Niw3ICs0Niw3IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCA9IGZ1bmN0aW9uKHJ1bGVB
cnJheSkKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewotICAgIFN0
eWxlU2hlZXRDaGFuZ2VkOiAwCisgICAgU3R5bGVTaGVldENoYW5nZWQ6ICJTdHlsZVNoZWV0Q2hh
bmdlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJj
ZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U291cmNlTWFwcGluZy5qcwppbmRleCAxM2ZhMWYzYTM2ZTE4ZWY5YTVlYWFkN2YwYmFmYjBkYjJi
NDBmYzlhLi4wMGYyOTc0ZTE1YWM2OGE0OTA0OTcyZmNkZDNlYTgzOGUxN2Q4ODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFw
cGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U291cmNlTWFwcGluZy5qcwpAQCAtMjksMjcgKzI5LDMyIEBACiAgKi8KIAogLyoqCi0gKiBAY29u
c3RydWN0b3IKKyAqIEBpbnRlcmZhY2UKICAqLwogV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNl
TWFwcGluZyA9IGZ1bmN0aW9uKCkKIHsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNl
TWFwcGluZy5wcm90b3R5cGUgPSB7Ci0gICAgY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRp
b246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIC8v
IFNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCi0KLSAgICBzb3Vy
Y2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAotCi0gICAgc291cmNlczogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAg
fQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAg
Ki8KKyAgICBjb21waWxlZExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24obGluZU51
bWJlciwgY29sdW1uTnVtYmVyKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gc291cmNlVVJMCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAg
ICAqLworICAgIHNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9uOiBmdW5jdGlvbihzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgeyB9LAorCisgICAgLyoqCisgICAgICog
QHJldHVybiB7QXJyYXkuPHN0cmluZz59CisgICAgICovCisgICAgc291cmNlczogZnVuY3Rpb24o
KSB7IH0KIH0KIAogLyoqCkBAIC02NCw3ICs2OSw3IEBAIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29t
cGlsZXJTb3VyY2VNYXBwaW5nUGF5bG9hZCA9IGZ1bmN0aW9uKCkKIC8qKgogICogSW1wbGVtZW50
cyBTb3VyY2UgTWFwIFYzIGNvbnN1bWVyLiBTZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Ns
b3N1cmUtY29tcGlsZXIvd2lraS9Tb3VyY2VNYXBzCiAgKiBmb3IgZm9ybWF0IGRlc2NyaXB0aW9u
LgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmd9CisgKiBA
aW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30KICAqIEBjb25z
dHJ1Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFw
cGluZ1BheWxvYWR9IG1hcHBpbmdQYXlsb2FkCiAgKi8KQEAgLTg2LDYgKzkxLDExIEBAIFdlYklu
c3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24obWFwcGluZ1Bh
eWxvYWQpCiB9CiAKIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnBy
b3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKKyAgICAgKiBAcmV0dXJuIHtPYmpl
Y3R9CisgICAgICovCiAgICAgY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0
aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIHZhciBtYXBwaW5n
ID0gdGhpcy5fZmluZE1hcHBpbmcobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKQEAgLTEwMiw2
ICsxMTIsOSBAQCBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7
QXJyYXkuPHN0cmluZz59CisgICAgICovCiAgICAgc291cmNlczogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCAzYjExZTczNWQ1NjUxYTI3NDY0
ZWI3MTE3NjNhMzljOTBmMDdhN2EyLi44NGQwMTExMDdmOWE2YjQ4ODZmNmZiZTM5OGVmY2U5MzY2
MjQ0MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0g
ZnVuY3Rpb24oaGlkZUNvbnRleHRTZWxlY3RvcikKICAgICB0aGlzLm1lc3NhZ2VzID0gW107CiAK
ICAgICB0aGlzLl9jbGVhckNvbnNvbGVCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0Jh
ckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIGNvbnNvbGUgbG9nLiIpLCAiY2xl
YXItc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgdGhpcy5fY2xlYXJDb25zb2xlQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVxdWVzdENsZWFyTWVzc2FnZXMuYmluZCh0aGlz
KSwgZmFsc2UpOworICAgIHRoaXMuX2NsZWFyQ29uc29sZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX3JlcXVlc3RDbGVhck1lc3NhZ2VzLCB0aGlzKTsKIAogICAgIHRoaXMu
X2NvbnRleHRTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7
CiAgICAgdGhpcy5fY29udGV4dFNlbGVjdEVsZW1lbnQuaWQgPSAiY29uc29sZS1jb250ZXh0IjsK
QEAgLTM2NSw3ICszNjUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIWV4cHJlc3Npb25TdHJpbmcgJiYgV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLnBhdXNlZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5n
ZXRTZWxlY3RlZENhbGxGcmFtZVZhcmlhYmxlcyhyZWNlaXZlZFByb3BlcnR5TmFtZXMuYmluZCh0
aGlzKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuZXZhbEluSW5zcGVjdGVkV2lu
ZG93KGV4cHJlc3Npb25TdHJpbmcsICJjb21wbGV0aW9uIiwgdHJ1ZSwgdHJ1ZSwgdW5kZWZpbmVk
LCBldmFsdWF0ZWQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3Rl
ZFdpbmRvdyhleHByZXNzaW9uU3RyaW5nLCAiY29tcGxldGlvbiIsIHRydWUsIHRydWUsIGZhbHNl
LCBldmFsdWF0ZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgZnVuY3Rpb24gZXZhbHVhdGVkKHJl
c3VsdCwgd2FzVGhyb3duKQogICAgICAgICB7CkBAIC00MDEsMTAgKzQwMSwxMCBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHJlc3VsdC50
eXBlID09PSAib2JqZWN0IiB8fCByZXN1bHQudHlwZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAg
ICAgICAgICByZXN1bHQuY2FsbEZ1bmN0aW9uSlNPTihnZXRDb21wbGV0aW9ucywgcmVjZWl2ZWRQ
cm9wZXJ0eU5hbWVzLmJpbmQodGhpcykpOwogICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LnR5
cGUgPT09ICJzdHJpbmciIHx8IHJlc3VsdC50eXBlID09PSAibnVtYmVyIiB8fCByZXN1bHQudHlw
ZSA9PT0gImJvb2xlYW4iKQotICAgICAgICAgICAgICAgIHRoaXMuZXZhbEluSW5zcGVjdGVkV2lu
ZG93KCIoIiArIGdldENvbXBsZXRpb25zICsgIikoXCIiICsgcmVzdWx0LnR5cGUgKyAiXCIpIiwg
ImNvbXBsZXRpb24iLCB1bmRlZmluZWQsIHRydWUsIHRydWUsIHJlY2VpdmVkUHJvcGVydHlOYW1l
c0Zyb21FdmFsLmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIHRoaXMuZXZhbEluSW5zcGVj
dGVkV2luZG93KCIoIiArIGdldENvbXBsZXRpb25zICsgIikoXCIiICsgcmVzdWx0LnR5cGUgKyAi
XCIpIiwgImNvbXBsZXRpb24iLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgcmVjZWl2ZWRQcm9wZXJ0eU5h
bWVzRnJvbUV2YWwuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBy
ZWNlaXZlZFByb3BlcnR5TmFtZXNGcm9tRXZhbChyZXN1bHQsIHdhc1Rocm93bikKKyAgICAgICAg
ZnVuY3Rpb24gcmVjZWl2ZWRQcm9wZXJ0eU5hbWVzRnJvbUV2YWwobm90UmVsZXZhbnQsIHdhc1Ro
cm93biwgcmVzdWx0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVzdWx0ICYmICF3YXNU
aHJvd24pCiAgICAgICAgICAgICAgICAgcmVjZWl2ZWRQcm9wZXJ0eU5hbWVzLmNhbGwodGhpcywg
cmVzdWx0LnZhbHVlKTsKQEAgLTU2NCw2ICs1NjQsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RH
cm91cAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUNvbW1hbmRMaW5lQVBJCisgICAg
ICogQHBhcmFtIHtib29sZWFufSBkb05vdFBhdXNlT25FeGNlcHRpb25zCisgICAgICogQHBhcmFt
IHtib29sZWFufSByZXR1cm5CeVZhbHVlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdCwgYm9vbGVhbiwgUnVudGltZUFnZW50LlJlbW90ZU9iamVjdD0p
fSBjYWxsYmFjaworICAgICAqLwogICAgIGV2YWxJbkluc3BlY3RlZFdpbmRvdzogZnVuY3Rpb24o
ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9ucywgcmV0dXJuQnlWYWx1ZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnBhdXNlZCkgewpAQCAtNTgwLDEyICs1ODgs
MTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihl
cnJvcik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAgICAg
Y2FsbGJhY2sobnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHJldHVybkJ5VmFsdWUgJiYgIXdhc1Rocm93bikKLSAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQsIHdhc1Rocm93bik7CisgICAgICAgICAgICBp
ZiAocmV0dXJuQnlWYWx1ZSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB3YXNUaHJv
d24sIHdhc1Rocm93biA/IG51bGwgOiByZXN1bHQpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQo
cmVzdWx0KSwgd2FzVGhyb3duKTsKICAgICAgICAgfQpAQCAtNjIzLDcgKzYzMSw3IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHRoaXMuX2Fw
cGVuZENvbnNvbGVNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQo
cmVzdWx0LCB3YXNUaHJvd24sIGNvbW1hbmRNZXNzYWdlLCB0aGlzLl9saW5raWZpZXIpKTsKICAg
ICAgICAgfQotICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdyhzdHIsICJjb25zb2xl
IiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHByaW50UmVzdWx0LmJpbmQodGhpcykpOwor
ICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdyhzdHIsICJjb25zb2xlIiwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlLCBwcmludFJlc3VsdC5iaW5kKHRoaXMpKTsKIAogICAgICAgICBXZWJJbnNw
ZWN0b3IudXNlck1ldHJpY3MuQ29uc29sZUV2YWx1YXRlZC5yZWNvcmQoKTsKICAgICB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1Zp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmll
dy5qcwppbmRleCAwY2JmNmVhODkwNTZjODg0MTUwNGIwMDhmODk3N2RhYjYxOWQ2YWMyLi5iZWE4
MzY0NTcyMGM2ZWIzZWViMTI4ODYyNGY3YWZiY2VkZDA2YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwpAQCAtMzks
MTAgKzM5LDEwIEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcgPSBmdW5jdGlvbih0cmVl
RWxlbWVudCwgY29va2llRG9tYWluKQogCiAgICAgdGhpcy5fZGVsZXRlQnV0dG9uID0gbmV3IFdl
Ykluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUi
KSwgImRlbGV0ZS1zdG9yYWdlLXN0YXR1cy1iYXItaXRlbSIpOwogICAgIHRoaXMuX2RlbGV0ZUJ1
dHRvbi52aXNpYmxlID0gZmFsc2U7Ci0gICAgdGhpcy5fZGVsZXRlQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fZGVsZXRlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgdGhpcy5fZGVsZXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fZGVsZXRlQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKICAgICB0aGlzLl9yZWZyZXNoQnV0dG9u
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgdGhp
cy5fcmVmcmVzaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2hC
dXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl9yZWZyZXNoQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRo
aXMpOwogCiAgICAgdGhpcy5fdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKICAgICB0aGlzLl9j
b29raWVEb21haW4gPSBjb29raWVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCAxZjJmOWVkOTlmNWVjNDcyYTg0ZGYwZDk5MmM5
ODBkZTkyOGIwMWNhLi41ZTdiMWQ3ZWJjYWQ2ZDgxY2NmOWVlZDFjZGMyODA3MmI1YWQzZWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAg
LTMxLDYgKzMxLDcgQEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkRPTURvY3VtZW50fSBkb2MKICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZX0gcGF5bG9h
ZAogICovCiBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGZ1bmN0aW9uKGRvYywgcGF5bG9hZCkgewpA
QCAtODUsNzIgKzg2LDEyMiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGZ1bmN0aW9uKGRvYywg
cGF5bG9hZCkgewogfQogCiBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CisgICAg
LyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KICAgICBoYXNBdHRyaWJ1dGVz
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlcy5sZW5n
dGggPiAwOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAg
ICAqLwogICAgIGhhc0NoaWxkTm9kZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9jaGlsZE5vZGVDb3VudCA+IDA7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge251bWJlcn0KKyAgICAgKi8KICAgICBub2RlVHlwZTogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVUeXBlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgbm9kZU5hbWU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlTmFtZTsKICAgICB9LAogCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIG5vZGVOYW1lSW5Db3JyZWN0Q2Fz
ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuaXNYTUxOb2RlKCkgPyB0
aGlzLm5vZGVOYW1lKCkgOiB0aGlzLm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKCk9fSBjYWxsYmFjaworICAgICAqLwogICAgIHNldE5vZGVOYW1lOiBmdW5jdGlvbihu
YW1lLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldE5vZGVOYW1lKHRoaXMu
aWQsIG5hbWUsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLwogICAgIGxvY2FsTmFtZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2xvY2FsTmFtZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIG5vZGVWYWx1ZTogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVWYWx1ZTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9j
b2wuRXJyb3IpPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBzZXROb2RlVmFsdWU6IGZ1bmN0aW9u
KHZhbHVlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldE5vZGVWYWx1ZSh0
aGlzLmlkLCB2YWx1ZSwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBn
ZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUpCiAgICAgewogICAgICAgICB2YXIgYXR0ciA9IHRo
aXMuX2F0dHJpYnV0ZXNNYXBbbmFtZV07CiAgICAgICAgIHJldHVybiBhdHRyID8gYXR0ci52YWx1
ZSA6IHVuZGVmaW5lZDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAorICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oKT19IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0QXR0cmlidXRlOiBmdW5jdGlvbihuYW1l
LCB0ZXh0LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldEF0dHJpYnV0ZXNB
c1RleHQodGhpcy5pZCwgdGV4dCwgbmFtZSwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1
ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKT19IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0
QXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIERPTUFnZW50LnNldEF0dHJpYnV0ZVZhbHVlKHRoaXMuaWQsIG5hbWUsIHZhbHVlLCBj
YWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAg
ICAgKi8KICAgICBhdHRyaWJ1dGVzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fYXR0cmlidXRlczsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFjaworICAgICAqLwog
ICAgIHJlbW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKQpAQCAtMTcxLDYgKzIyMiw5
IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgRE9NQWdlbnQu
cmVtb3ZlQXR0cmlidXRlKHRoaXMuaWQsIG5hbWUsIG15Y2FsbGJhY2suYmluZCh0aGlzKSk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3Bl
Y3Rvci5ET01Ob2RlPik9fSBjYWxsYmFjaworICAgICAqLwogICAgIGdldENoaWxkTm9kZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4pIHsKQEAg
LTE3OSw2ICsyMzMsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0
aGlzIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0KKyAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wu
RXJyb3J9IGVycm9yCisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVy
cm9yKSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yICYmIGNhbGxiYWNrKQogICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHRoaXMuY2hpbGRyZW4pOwpAQCAtMTg2LDMxICsyNDQsNTAgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICBET01BZ2VudC5yZXF1ZXN0Q2hp
bGROb2Rlcyh0aGlzLmlkLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvcik9fSBjYWxsYmFjawor
ICAgICAqLwogICAgIGdldE91dGVySFRNTDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBET01BZ2VudC5nZXRPdXRlckhUTUwodGhpcy5pZCwgY2FsbGJhY2spOwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaHRtbAorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0T3V0ZXJI
VE1MOiBmdW5jdGlvbihodG1sLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNl
dE91dGVySFRNTCh0aGlzLmlkLCBodG1sLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisgICAg
ICovCiAgICAgcmVtb3ZlTm9kZTogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBE
T01BZ2VudC5yZW1vdmVOb2RlKHRoaXMuaWQsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpPX0gY2FsbGJhY2sKKyAg
ICAgKi8KICAgICBjb3B5Tm9kZTogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBE
T01BZ2VudC5jb3B5Tm9kZSh0aGlzLmlkLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisgICAg
ICovCiAgICAgZXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAg
ICAgRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKHRoaXMuaWQsIGNhbGxiYWNrKTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAg
IHBhdGg6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBwYXRoID0gW107CkBAIC0yMjMs
NiArMzAwLDEwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHBhdGguam9pbigiLCIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGp1c3RTZWxlY3RvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8K
ICAgICBhcHByb3ByaWF0ZVNlbGVjdG9yRm9yOiBmdW5jdGlvbihqdXN0U2VsZWN0b3IpCiAgICAg
ewogICAgICAgICB2YXIgbG93ZXJDYXNlTmFtZSA9IHRoaXMubG9jYWxOYW1lKCkgfHwgdGhpcy5u
b2RlTmFtZSgpLnRvTG93ZXJDYXNlKCk7CkBAIC0yNDUsNiArMzI2LDEwIEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGxvd2VyQ2FzZU5hbWU7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9IG5v
ZGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGlzQW5jZXN0b3I6IGZ1
bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUpCkBAIC0yNTksMTEgKzM0NCwx
OCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9N
Tm9kZX0gZGVzY2VuZGFudAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAg
aXNEZXNjZW5kYW50OiBmdW5jdGlvbihkZXNjZW5kYW50KQogICAgIHsKICAgICAgICAgcmV0dXJu
IGRlc2NlbmRhbnQgIT09IG51bGwgJiYgZGVzY2VuZGFudC5pc0FuY2VzdG9yKHRoaXMpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBhdHRycworICAg
ICAqLwogICAgIF9zZXRBdHRyaWJ1dGVzUGF5bG9hZDogZnVuY3Rpb24oYXR0cnMpCiAgICAgewog
ICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzID0gW107CkBAIC0yNzMsNyArMzY1LDkgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5ET01Ob2RlfSBwcmV2CiAgICAgICogQHBhcmFtIHtET01BZ2Vu
dC5Ob2RlfSBwYXlsb2FkCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9CiAg
ICAgICovCiAgICAgX2luc2VydENoaWxkOiBmdW5jdGlvbihwcmV2LCBwYXlsb2FkKQogICAgIHsK
QEAgLTI5MCw2ICszODQsOSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiBub2RlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5ET01Ob2RlfSBub2RlCisgICAgICovCiAgICAgX3JlbW92ZUNoaWxkOiBmdW5j
dGlvbihub2RlKQogICAgIHsKICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UodGhpcy5jaGls
ZHJlbi5pbmRleE9mKG5vZGUpLCAxKTsKQEAgLTI5Nyw2ICszOTQsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlbnVtYmVyKCk7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPERPTUFnZW50Lk5vZGU+fSBwYXlsb2Fk
cworICAgICAqLwogICAgIF9zZXRDaGlsZHJlblBheWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWRzKQog
ICAgIHsKICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwpAQCAtMzI3LDYgKzQyNywxMCBAQCBX
ZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdmFsdWUKKyAgICAgKi8KICAgICBfYWRkQXR0cmlidXRlOiBmdW5jdGlvbihuYW1lLCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gewpAQCAtMzM4LDYgKzQ0MiwxMCBAQCBXZWJJ
bnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXMu
cHVzaChhdHRyKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKKyAgICAgKi8KICAgICBfc2V0QXR0cmli
dXRlOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gdGhp
cy5fYXR0cmlidXRlc01hcFtuYW1lXTsKQEAgLTM0Nyw2ICs0NTUsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hZGRBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAqLwogICAgIF9yZW1vdmVBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUpCiAgICAgewog
ICAgICAgICB2YXIgYXR0ciA9IHRoaXMuX2F0dHJpYnV0ZXNNYXBbbmFtZV07CkBAIC0zNTYsNiAr
NDY3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5ET01Ob2RlfQor
ICAgICAqLwogICAgIG93bmVyRG9jdW1lbnRFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICAvLyBkb2N1bWVudCBlbGVtZW50IGlzIHRoZSBjaGlsZCBvZiB0aGUgZG9jdW1lbnQgLyBm
cmFtZSBvd25lciBub2RlIHRoYXQgaGFzIGRvY3VtZW50VVJMIHByb3BlcnR5LgpAQCAtMzY2LDI1
ICs0ODAsMzkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRE9NTm9kZX0gdGFyZ2V0Tm9kZQorICAgICAqIEBwYXJhbSB7P1dlYkluc3BlY3Rvci5ET01O
b2RlfSBhbmNob3JOb2RlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3Ip
PX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBtb3ZlVG86IGZ1bmN0aW9uKHRhcmdldE5vZGUsIGFu
Y2hvck5vZGUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQubW92ZVRvKHRoaXMu
aWQsIHRhcmdldE5vZGUuaWQsIGFuY2hvck5vZGUgPyBhbmNob3JOb2RlLmlkIDogdW5kZWZpbmVk
LCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgICovCiAgICAgaXNYTUxOb2RlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5vd25lckRvY3VtZW50ICYmICEhdGhpcy5vd25lckRvY3VtZW50LnhtbFZlcnNpb247
CisgICAgICAgIHJldHVybiAhIXRoaXMub3duZXJEb2N1bWVudCAmJiAhIXRoaXMub3duZXJEb2N1
bWVudC54bWxWZXJzaW9uOwogICAgIH0KIH0KIAogLyoqCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLkRPTU5vZGV9CiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRP
TUFnZW50fSBkb21BZ2VudAogICogQHBhcmFtIHtET01BZ2VudC5Ob2RlfSBwYXlsb2FkCiAgKi8K
IFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudCA9IGZ1bmN0aW9uKGRvbUFnZW50LCBwYXlsb2FkKQog
ewogICAgIFdlYkluc3BlY3Rvci5ET01Ob2RlLmNhbGwodGhpcywgdGhpcywgcGF5bG9hZCk7CisK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7c3RyaW5nfSBEb2N1bWVudCBub2RlcyBhbHdheXMgaGF2
ZSBkb2N1bWVudFVSTAorICAgICAqLworICAgIHRoaXMuZG9jdW1lbnRVUkw7CiAgICAgdGhpcy5f
bGlzdGVuZXJzID0ge307CiAgICAgdGhpcy5fZG9tQWdlbnQgPSBkb21BZ2VudDsKIH0KQEAgLTQz
NCw2ICs1NjIsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gW2NhbGxiYWNrXTsK
IAorICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5ET01BZ2VudH0K
KyAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBw
YXJhbSB7RE9NQWdlbnQuTm9kZX0gcm9vdAorICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24g
b25Eb2N1bWVudEF2YWlsYWJsZShlcnJvciwgcm9vdCkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFlcnJvcikKQEAgLTQ1MCwxNiArNTgzLDI4IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIERPTUFnZW50LmdldERvY3VtZW50KG9uRG9jdW1lbnRBdmFp
bGFibGUuYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7UnVu
dGltZUFnZW50LlJlbW90ZU9iamVjdElkfSBvYmplY3RJZAorICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oKT19IGNhbGxiYWNrCisgICAgICovCiAgICAgcHVzaE5vZGVUb0Zyb250ZW5kOiBmdW5jdGlv
bihvYmplY3RJZCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9kaXNwYXRjaFdoZW5E
b2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5yZXF1ZXN0Tm9kZS5iaW5kKERPTUFnZW50KSwgb2Jq
ZWN0SWQsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHBhdGgKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuRE9NTm9kZSk9
fSBjYWxsYmFjaworICAgICAqLwogICAgIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZDogZnVuY3Rp
b24ocGF0aCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9kaXNwYXRjaFdoZW5Eb2N1
bWVudEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQuYmluZChET01B
Z2VudCksIHBhdGgsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbigqKT19IGNhbGxiYWNrCisgICAgICogQHJldHVybiB7ZnVuY3Rpb24oP1Byb3Rv
Y29sLkVycm9yLCo9KXx1bmRlZmluZWR9CisgICAgICovCiAgICAgX3dyYXBDbGllbnRDYWxsYmFj
azogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIWNhbGxiYWNrKQpAQCAt
NDcyLDIzICs2MTcsMzIgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGZ1
bmN0aW9uKCk9KX0gZnVuYworICAgICAqIEBwYXJhbSB7Kn0gYXJnCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbigpPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBfZGlzcGF0Y2hXaGVuRG9jdW1lbnRB
dmFpbGFibGU6IGZ1bmN0aW9uKGZ1bmMsIGFyZywgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAoY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjayA9IHRoaXMuX3dyYXBDbGllbnRDYWxs
YmFjayhjYWxsYmFjayk7CisgICAgICAgIHZhciBjYWxsYmFja1dyYXBwZXIgPSB0aGlzLl93cmFw
Q2xpZW50Q2FsbGJhY2soY2FsbGJhY2spOwogCiAgICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRB
dmFpbGFibGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnQpCi0g
ICAgICAgICAgICAgICAgZnVuYy5jYWxsKG51bGwsIGFyZywgY2FsbGJhY2spOworICAgICAgICAg
ICAgICAgIGZ1bmMuY2FsbChudWxsLCBhcmcsIGNhbGxiYWNrV3JhcHBlcik7CiAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKCJObyBkb2N1bWVudCIpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFj
a1dyYXBwZXIpCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrV3JhcHBlcigiTm8gZG9jdW1l
bnQiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0aGlzLnJlcXVlc3REb2N1
bWVudChvbkRvY3VtZW50QXZhaWxhYmxlLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKKyAgICAgKi8KICAgICBf
YXR0cmlidXRlTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmFtZSwgdmFsdWUpCiAgICAgewog
ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CkBAIC00OTgsNiAr
NjUyLDEwIEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMu
QXR0ck1vZGlmaWVkLCB7IG5vZGU6IG5vZGUsIG5hbWU6IG5hbWUgfSk7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICAgICAqLwogICAgIF9hdHRyaWJ1dGVSZW1vdmVkOiBmdW5jdGlv
bihub2RlSWQsIG5hbWUpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01O
b2RlW25vZGVJZF07CkBAIC01MDcsNiArNjY1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyUmVtb3ZlZCwgeyBub2RlOiBub2RlLCBuYW1lOiBu
YW1lIH0pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2Vu
dC5Ob2RlSWQ+fSBub2RlSWRzCisgICAgICovCiAgICAgX2lubGluZVN0eWxlSW52YWxpZGF0ZWQ6
IGZ1bmN0aW9uKG5vZGVJZHMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5v
ZGVJZHMubGVuZ3RoOyArK2kpCkBAIC01MTgsNiArNjc5LDExIEBAIFdlYkluc3BlY3Rvci5ET01B
Z2VudC5wcm90b3R5cGUgPSB7CiAKICAgICBfbG9hZE5vZGVBdHRyaWJ1dGVzOiBmdW5jdGlvbigp
CiAgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5ET01B
Z2VudH0KKyAgICAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAg
ICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBhdHRyaWJ1dGVzCisgICAgICAgICAqLwogICAg
ICAgICBmdW5jdGlvbiBjYWxsYmFjayhub2RlSWQsIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghYXR0cmlidXRlcykKQEAgLTUzNyw2ICs3MDMsMTAgQEAgV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlTG9hZE5v
ZGVJZHMgPSB7fTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5O
b2RlSWR9IG5vZGVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWYWx1ZQorICAgICAqLwog
ICAgIF9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmV3VmFsdWUpCiAg
ICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CkBAIC01
NDQsNiArNzE0LDEwIEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01BZ2VudC5F
dmVudHMuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCBub2RlKTsKICAgICB9LAogCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5ET01Ob2RlfHVuZGVmaW5lZH0KKyAgICAgKi8KICAgICBub2RlRm9ySWQ6IGZ1
bmN0aW9uKG5vZGVJZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZFRvRE9NTm9kZVtu
b2RlSWRdOwpAQCAtNTgwLDYgKzc1NCwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZVtwYXlsb2FkLm5vZGVJZF0gPSByb290
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gcGFy
ZW50SWQKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlPn0gcGF5bG9hZHMKKyAg
ICAgKi8KICAgICBfc2V0Q2hpbGROb2RlczogZnVuY3Rpb24ocGFyZW50SWQsIHBheWxvYWRzKQog
ICAgIHsKICAgICAgICAgaWYgKCFwYXJlbnRJZCAmJiBwYXlsb2Fkcy5sZW5ndGgpIHsKQEAgLTU5
Miw2ICs3NzAsOSBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9iaW5kTm9kZXMocGFyZW50LmNoaWxkcmVuKTsKICAgICB9LAogCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkRPTU5vZGU+fSBjaGlsZHJlbgorICAg
ICAqLwogICAgIF9iaW5kTm9kZXM6IGZ1bmN0aW9uKGNoaWxkcmVuKQogICAgIHsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgewpAQCAtNjAyLDYgKzc4
MywxMCBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3VmFsdWUKKyAgICAgKi8KICAgICBfY2hpbGROb2Rl
Q291bnRVcGRhdGVkOiBmdW5jdGlvbihub2RlSWQsIG5ld1ZhbHVlKQogICAgIHsKICAgICAgICAg
dmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpAQCAtNjA5LDYgKzc5NCwxMSBA
QCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkNoaWxkTm9k
ZUNvdW50VXBkYXRlZCwgbm9kZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
RE9NQWdlbnQuTm9kZUlkfSBwYXJlbnRJZAorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlk
fSBwcmV2SWQKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGV9IHBheWxvYWQKKyAgICAgKi8K
ICAgICBfY2hpbGROb2RlSW5zZXJ0ZWQ6IGZ1bmN0aW9uKHBhcmVudElkLCBwcmV2SWQsIHBheWxv
YWQpCiAgICAgewogICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50
SWRdOwpAQCAtNjE4LDYgKzgwOCwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQuRXZlbnRzLk5vZGVJbnNlcnRlZCwgbm9kZSk7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBwYXJlbnRJZAorICAgICAqIEBwYXJhbSB7
RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKi8KICAgICBfY2hpbGROb2RlUmVtb3ZlZDog
ZnVuY3Rpb24ocGFyZW50SWQsIG5vZGVJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJlbnQgPSB0
aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07CkBAIC02MzgsNiArODMyLDggQEAgV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IHF1ZXJ5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48RE9NQWdl
bnQuTm9kZT4pfSBzZWFyY2hSZXN1bHRDb2xsZWN0b3IKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49
fSBzZWFyY2hTeW5jaHJvbm91c2x5CiAgICAgICovCiAgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rp
b24ocXVlcnksIHNlYXJjaFJlc3VsdENvbGxlY3Rvciwgc2VhcmNoU3luY2hyb25vdXNseSkKQEAg
LTY1MiwxMSArODQ4LDIxIEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIERPTUFnZW50LmNhbmNlbFNlYXJjaCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHNlbGVjdG9ycworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKik9fSBjYWxsYmFjaworICAgICAq
LwogICAgIHF1ZXJ5U2VsZWN0b3I6IGZ1bmN0aW9uKG5vZGVJZCwgc2VsZWN0b3JzLCBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3Iobm9kZUlkLCBzZWxlY3Rv
cnMsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykpOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IHNlbGVjdG9ycworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKik9fSBjYWxsYmFj
aworICAgICAqLwogICAgIHF1ZXJ5U2VsZWN0b3JBbGw6IGZ1bmN0aW9uKG5vZGVJZCwgc2VsZWN0
b3JzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
bm9kZUlkLCBzZWxlY3RvcnMsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykpOwpA
QCAtNjg1LDEyICs4OTEsMTkgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5oaWdobGlnaHRET01Ob2RlKDApOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0gez9ET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqLwogICAgIGhpZ2hs
aWdodERPTU5vZGVGb3JUd29TZWNvbmRzOiBmdW5jdGlvbihub2RlSWQpCiAgICAgewogICAgICAg
ICB0aGlzLmhpZ2hsaWdodERPTU5vZGUobm9kZUlkKTsKICAgICAgICAgdGhpcy5faGlkZURPTU5v
ZGVIaWdobGlnaHRUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLmhpZGVET01Ob2RlSGlnaGxpZ2h0
LmJpbmQodGhpcyksIDIwMDApOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGVuYWJsZWQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFjaworICAg
ICAqLwogICAgIHNldEluc3BlY3RNb2RlRW5hYmxlZDogZnVuY3Rpb24oZW5hYmxlZCwgY2FsbGJh
Y2spCiAgICAgewogICAgICAgICBET01BZ2VudC5zZXRJbnNwZWN0TW9kZUVuYWJsZWQoZW5hYmxl
ZCwgdGhpcy5fYnVpbGRIaWdobGlnaHRDb25maWcoKSwgY2FsbGJhY2spOwpAQCAtNzI0LDYgKzkz
Nyw3IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxl
bWVudHMge0RPTUFnZW50LkRpc3BhdGNoZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01B
Z2VudH0gZG9tQWdlbnQKICAqLwogV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIgPSBmdW5jdGlv
bihkb21BZ2VudCkKIHsKQEAgLTczNiw0NiArOTUwLDgyIEBAIFdlYkluc3BlY3Rvci5ET01EaXNw
YXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2RvY3VtZW50VXBk
YXRlZCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJ
ZH0gbm9kZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdmFsdWUKKyAgICAgKi8KICAgICBhdHRyaWJ1dGVNb2RpZmllZDogZnVuY3Rpb24obm9k
ZUlkLCBuYW1lLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9hdHRyaWJ1
dGVNb2RpZmllZChub2RlSWQsIG5hbWUsIHZhbHVlKTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBuYW1lCisgICAgICovCiAgICAgYXR0cmlidXRlUmVtb3ZlZDogZnVuY3Rpb24obm9kZUlkLCBu
YW1lKQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2F0dHJpYnV0ZVJlbW92ZWQobm9k
ZUlkLCBuYW1lKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48RE9N
QWdlbnQuTm9kZUlkPn0gbm9kZUlkcworICAgICAqLwogICAgIGlubGluZVN0eWxlSW52YWxpZGF0
ZWQ6IGZ1bmN0aW9uKG5vZGVJZHMpCiAgICAgewogICAgICAgICB0aGlzLl9kb21BZ2VudC5faW5s
aW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKTsKICAgICB9LAogCi0gICAgY2hhcmFjdGVyRGF0
YU1vZGlmaWVkOiBmdW5jdGlvbihub2RlSWQsIG5ld1ZhbHVlKQorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hh
cmFjdGVyRGF0YQorICAgICAqLworICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24o
bm9kZUlkLCBjaGFyYWN0ZXJEYXRhKQogICAgIHsKLSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2No
YXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQsIG5ld1ZhbHVlKTsKKyAgICAgICAgdGhpcy5fZG9t
QWdlbnQuX2NoYXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQsIGNoYXJhY3RlckRhdGEpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gcGFyZW50SWQK
KyAgICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlPn0gcGF5bG9hZHMKKyAgICAgKi8K
ICAgICBzZXRDaGlsZE5vZGVzOiBmdW5jdGlvbihwYXJlbnRJZCwgcGF5bG9hZHMpCiAgICAgewog
ICAgICAgICB0aGlzLl9kb21BZ2VudC5fc2V0Q2hpbGROb2RlcyhwYXJlbnRJZCwgcGF5bG9hZHMp
OwogICAgIH0sCiAKLSAgICBjaGlsZE5vZGVDb3VudFVwZGF0ZWQ6IGZ1bmN0aW9uKG5vZGVJZCwg
bmV3VmFsdWUpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJ
ZAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjaGlsZE5vZGVDb3VudAorICAgICAqLworICAgIGNo
aWxkTm9kZUNvdW50VXBkYXRlZDogZnVuY3Rpb24obm9kZUlkLCBjaGlsZE5vZGVDb3VudCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2RvbUFnZW50Ll9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlk
LCBuZXdWYWx1ZSk7CisgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9jaGlsZE5vZGVDb3VudFVwZGF0
ZWQobm9kZUlkLCBjaGlsZE5vZGVDb3VudCk7CiAgICAgfSwKIAotICAgIGNoaWxkTm9kZUluc2Vy
dGVkOiBmdW5jdGlvbihwYXJlbnRJZCwgcHJldklkLCBwYXlsb2FkKQorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBwYXJlbnROb2RlSWQKKyAgICAgKiBAcGFyYW0ge0RP
TUFnZW50Lk5vZGVJZH0gcHJldmlvdXNOb2RlSWQKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5v
ZGV9IHBheWxvYWQKKyAgICAgKi8KKyAgICBjaGlsZE5vZGVJbnNlcnRlZDogZnVuY3Rpb24ocGFy
ZW50Tm9kZUlkLCBwcmV2aW91c05vZGVJZCwgcGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X2RvbUFnZW50Ll9jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklkLCBwYXlsb2FkKTsK
KyAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2NoaWxkTm9kZUluc2VydGVkKHBhcmVudE5vZGVJZCwg
cHJldmlvdXNOb2RlSWQsIHBheWxvYWQpOwogICAgIH0sCiAKLSAgICBjaGlsZE5vZGVSZW1vdmVk
OiBmdW5jdGlvbihwYXJlbnRJZCwgbm9kZUlkKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9N
QWdlbnQuTm9kZUlkfSBwYXJlbnROb2RlSWQKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJ
ZH0gbm9kZUlkCisgICAgICovCisgICAgY2hpbGROb2RlUmVtb3ZlZDogZnVuY3Rpb24ocGFyZW50
Tm9kZUlkLCBub2RlSWQpCiAgICAgewotICAgICAgICB0aGlzLl9kb21BZ2VudC5fY2hpbGROb2Rl
UmVtb3ZlZChwYXJlbnRJZCwgbm9kZUlkKTsKKyAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2NoaWxk
Tm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlSWQ+fSBub2RlSWRzCisgICAgICovCiAg
ICAgc2VhcmNoUmVzdWx0czogZnVuY3Rpb24obm9kZUlkcykKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9kb21BZ2VudC5fc2VhcmNoUmVzdWx0Q29sbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCmlu
ZGV4IDg4ZTlhMDQ5NTMwNGU4MWY0OGMzOWQzMzBlNTc1ZDA3NDEyZjVhNTQuLjE1YjRjMWIwMWQy
M2ZiOTZmOTUxMzk2MjBlYTkwZTNiOWUzYTc4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMKQEAgLTM4
LDEwICszOCwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldyA9IGZ1bmN0aW9u
KGRvbVN0b3JhZ2UpCiAKICAgICB0aGlzLmRlbGV0ZUJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
U3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIiksICJkZWxldGUt
c3RvcmFnZS1zdGF0dXMtYmFyLWl0ZW0iKTsKICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxl
ID0gZmFsc2U7Ci0gICAgdGhpcy5kZWxldGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9kZWxldGVCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlz
LmRlbGV0ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2RlbGV0ZUJ1dHRv
bkNsaWNrZWQsIHRoaXMpOwogCiAgICAgdGhpcy5yZWZyZXNoQnV0dG9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJy
ZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQuYmlu
ZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMucmVmcmVzaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLCB0aGlzKTsKIH0KIAogV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMKaW5k
ZXggYmFkNjEzN2RjZGRmMDc3MjBkNmNkNGZhN2Q2MTA0NmQ2OWE0MjNkMC4uMThhNWNhYzY0MjNj
ZGIzZWUwYjAxNDcyYzMyMjExM2RjYmE5N2FmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzCkBAIC0zOCw3ICsz
OCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVmlldyA9IGZ1bmN0aW9uKGRhdGFiYXNl
LCB0YWJsZU5hbWUpCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRhYmxlIik7CiAK
ICAgICB0aGlzLnJlZnJlc2hCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRv
bihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgInJlZnJlc2gtc3RvcmFnZS1zdGF0
dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLnJlZnJlc2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7Cisg
ICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVm
cmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJs
ZVZpZXcucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IGZiN2U4NDc2NjAyMDMyZDYyOWIzOTY5ZTE1
ZmI5MmQ0YjY1MGZmMTEuLmQ1MGU5MTY4ZWI5YWQ4OGUzZWMzZjkyZTJiYjFhN2QxNTdhM2MxMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJN
b2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
TW9kZWwuanMKQEAgLTM0LDcgKzM0LDEwIEBACiAgKi8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IHt9
OworICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IG51bGw7CisgICAgLyoqCisgICAg
ICogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuU2NyaXB0Pn0KKyAgICAgKi8K
ICAgICB0aGlzLl9zY3JpcHRzID0ge307CiAKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
RGVidWdnZXJEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJEaXNwYXRjaGVyKHRo
aXMpKTsKQEAgLTQyLDYgKzQ1LDE5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsID0gZnVu
Y3Rpb24oKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheS48RGVidWdn
ZXJBZ2VudC5DYWxsRnJhbWU+fSBjYWxsRnJhbWVzCisgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29u
CisgKiBAcGFyYW0geyp9IGF1eERhdGEKKyAqLworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUGF1c2Vk
RGV0YWlscyA9IGZ1bmN0aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0YSkKK3sKKyAgICB0
aGlzLmNhbGxGcmFtZXMgPSBjYWxsRnJhbWVzOworICAgIHRoaXMucmVhc29uID0gcmVhc29uOwor
ICAgIHRoaXMuYXV4RGF0YSA9IGF1eERhdGE7Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAg
Ki8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uID0gZnVuY3Rpb24oKQogewpA
QCAtODcsMTEgKzEwMywxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlcldhc0Rpc2FibGVkKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBsb2NhdGlvbgorICAg
ICAqLwogICAgIGNvbnRpbnVlVG9Mb2NhdGlvbjogZnVuY3Rpb24obG9jYXRpb24pCiAgICAgewog
ICAgICAgICBEZWJ1Z2dlckFnZW50LmNvbnRpbnVlVG9Mb2NhdGlvbihsb2NhdGlvbik7CiAgICAg
fSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9j
YXRpb24KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbigpfSBjYWxsYmFjaworICAgICAqLwogICAgIHNldEJyZWFrcG9pbnRCeVNjcmlwdExv
Y2F0aW9uOiBmdW5jdGlvbihsb2NhdGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLnNjcmlwdEZvclNvdXJjZUlEKGxvY2F0aW9uLnNjcmlw
dElkKTsKQEAgLTEwMSw2ICsxMjUsMTMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zZXRCcmVha3BvaW50QnlTb3VyY2VJZChsb2Nh
dGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyPX0gY29sdW1uTnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmc9
fSBjb25kaXRpb24KKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFr
cG9pbnRJZCwgQXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KT19IGNhbGxiYWNrCisgICAg
ICovCiAgICAgc2V0QnJlYWtwb2ludDogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAgICAgewogICAgICAgICAvLyBBZGp1c3QgY29s
dW1uIGlmIG5lZWRlZC4KQEAgLTExMiw2ICsxNDMsMTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIGNvbHVtbk51bWJlciA9IE1h
dGgubWF4KGNvbHVtbk51bWJlciwgbWluQ29sdW1uTnVtYmVyKTsKIAorICAgICAgICAvKioKKyAg
ICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsfQorICAgICAgICAgKiBA
cGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtEZWJ1Z2dl
ckFnZW50LkJyZWFrcG9pbnRJZH0gYnJlYWtwb2ludElkCisgICAgICAgICAqIEBwYXJhbSB7QXJy
YXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+fSBsb2NhdGlvbnMKKyAgICAgICAgICovCiAgICAg
ICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoZXJyb3IsIGJyZWFrcG9pbnRJZCwgbG9jYXRp
b25zKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCkBAIC0xMjEsOCArMTU4
LDE5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlNjcmlwdHNCcmVha3BvaW50U2V0LnJlY29yZCgpOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259
IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmRpdGlvbgorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oP0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkLCBBcnJheS48RGVidWdnZXJB
Z2VudC5Mb2NhdGlvbj4pPX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBzZXRCcmVha3BvaW50QnlT
b3VyY2VJZDogZnVuY3Rpb24obG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAgICAgewor
ICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
fQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICog
QHBhcmFtIHtEZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZH0gYnJlYWtwb2ludElkCisgICAgICAg
ICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gYWN0dWFsTG9jYXRpb24KKyAgICAg
ICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoZXJyb3IsIGJyZWFrcG9p
bnRJZCwgYWN0dWFsTG9jYXRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChjYWxsYmFj
aykKQEAgLTEzMiwxMSArMTgwLDE5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlNjcmlwdHNCcmVha3Bv
aW50U2V0LnJlY29yZCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RlYnVn
Z2VyQWdlbnQuQnJlYWtwb2ludElkfSBicmVha3BvaW50SWQKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9Qcm90b2NvbC5FcnJvcik9fSBjYWxsYmFjaworICAgICAqLwogICAgIHJlbW92ZUJyZWFr
cG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJZCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBE
ZWJ1Z2dlckFnZW50LnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBjYWxsYmFjayk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5CcmVha3BvaW50
SWR9IGJyZWFrcG9pbnRJZAorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0g
bG9jYXRpb24KKyAgICAgKi8KICAgICBfYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihicmVh
a3BvaW50SWQsIGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZXNv
bHZlZCwge2JyZWFrcG9pbnRJZDogYnJlYWtwb2ludElkLCBsb2NhdGlvbjogbG9jYXRpb259KTsK
QEAgLTE0NCwyNiArMjAwLDM5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlw
ZSA9IHsKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9kZWJ1
Z2dlclBhdXNlZERldGFpbHMgPSB7fTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRh
aWxzID0gbnVsbDsKICAgICAgICAgdGhpcy5fc2NyaXB0cyA9IHt9OwogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMu
UmVzZXQpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmlu
ZywgV2ViSW5zcGVjdG9yLlNjcmlwdD59CisgICAgICovCiAgICAgZ2V0IHNjcmlwdHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHM7CiAgICAgfSwKIAorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5TY3JpcHRJZH0gc2NyaXB0SWQKKyAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuU2NyaXB0fHVuZGVmaW5lZH0KKyAgICAgKi8KICAgICBzY3JpcHRG
b3JTb3VyY2VJRDogZnVuY3Rpb24oc2NyaXB0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc2NyaXB0c1tzY3JpcHRJZF07CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSB1cmwKKyAgICAgKi8KICAgICBzY3JpcHRzRm9yVVJMOiBmdW5jdGlvbih1cmwpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5xdWVyeVNjcmlwdHMoZnVuY3Rpb24ocykgeyByZXR1
cm4gcy5zb3VyY2VVUkwgPT09IHVybDsgfSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlNjcmlwdCk6Ym9vbGVhbn0gZmlsdGVyCisgICAg
ICovCiAgICAgcXVlcnlTY3JpcHRzOiBmdW5jdGlvbihmaWx0ZXIpCiAgICAgewogICAgICAgICB2
YXIgc2NyaXB0cyA9IFtdOwpAQCAtMTc1LDExICsyNDQsMjMgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gc2NyaXB0czsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LlNjcmlwdElkfSBzY3JpcHRJ
ZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9Qcm90b2NvbC5FcnJvcil9IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0U2NyaXB0U291
cmNlOiBmdW5jdGlvbihzY3JpcHRJZCwgbmV3U291cmNlLCBjYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdLmVkaXRTb3VyY2UobmV3U291cmNlLCB0aGlzLl9k
aWRFZGl0U2NyaXB0U291cmNlLmJpbmQodGhpcywgc2NyaXB0SWQsIG5ld1NvdXJjZSwgY2FsbGJh
Y2spKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LlNj
cmlwdElkfSBzY3JpcHRJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvcil9IGNhbGxiYWNrCisgICAgICogQHBh
cmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICogQHBhcmFtIHtBcnJheS48RGVidWdn
ZXJBZ2VudC5DYWxsRnJhbWU+fSBjYWxsRnJhbWVzCisgICAgICovCiAgICAgX2RpZEVkaXRTY3Jp
cHRTb3VyY2U6IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2UsIGNhbGxiYWNrLCBlcnJvciwg
Y2FsbEZyYW1lcykKICAgICB7CiAgICAgICAgIGlmICghZXJyb3IgJiYgY2FsbEZyYW1lcyAmJiBj
YWxsRnJhbWVzLmxlbmd0aCkKQEAgLTE4NywzOSArMjY4LDY1IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJh
bWU+fSAKKyAgICAgKi8KICAgICBnZXQgY2FsbEZyYW1lcygpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzLmNhbGxGcmFtZXM7CisgICAgICAgIHJldHVy
biB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMgPyB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFp
bHMuY2FsbEZyYW1lcyA6IG51bGw7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4g
ez9XZWJJbnNwZWN0b3IuRGVidWdnZXJQYXVzZWREZXRhaWxzfSAKKyAgICAgKi8KICAgICBnZXQg
ZGVidWdnZXJQYXVzZWREZXRhaWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWJ1
Z2dlclBhdXNlZERldGFpbHM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJy
YXkuPERlYnVnZ2VyQWdlbnQuQ2FsbEZyYW1lPn0gY2FsbEZyYW1lcworICAgICAqIEBwYXJhbSB7
c3RyaW5nfSByZWFzb24KKyAgICAgKiBAcGFyYW0geyp9IGF1eERhdGEKKyAgICAgKi8KICAgICBf
cGF1c2VkU2NyaXB0OiBmdW5jdGlvbihjYWxsRnJhbWVzLCByZWFzb24sIGF1eERhdGEpCiAgICAg
ewotICAgICAgICB2YXIgZGV0YWlscyA9IHsgY2FsbEZyYW1lczogY2FsbEZyYW1lcywgcmVhc29u
OiByZWFzb24sIGF1eERhdGE6IGF1eERhdGEgfTsKLSAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVz
ZWREZXRhaWxzID0gZGV0YWlsczsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCBkZXRh
aWxzKTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclBhdXNlZERldGFpbHMoY2FsbEZyYW1lcywgcmVhc29uLCBhdXhEYXRhKTsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFp
bHMpOwogICAgIH0sCiAKICAgICBfcmVzdW1lZFNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzID0ge307CisgICAgICAgIHRoaXMuX2Rl
YnVnZ2VyUGF1c2VkRGV0YWlscyA9IG51bGw7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclJlc3Vt
ZWQpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuU2Ny
aXB0SWR9IHNjcmlwdElkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBzdGFydExpbmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRD
b2x1bW4KKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kTGluZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBlbmRDb2x1bW4KKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQ29udGVudFNjcmlwdAor
ICAgICAqLwogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNjcmlwdElkLCBzb3Vy
Y2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250
ZW50U2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2NyaXB0KHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExp
bmUsIGVuZENvbHVtbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGlzQ29udGVudFNjcmlwdCk7Cisg
ICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChzY3JpcHRJZCwgc291
cmNlVVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29u
dGVudFNjcmlwdCk7CiAgICAgICAgIHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdID0gc2NyaXB0Owog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuUGFyc2VkU2NyaXB0U291cmNlLCBzY3JpcHQpOwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHNvdXJjZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydGluZ0xpbmUKKyAgICAg
KiBAcGFyYW0ge251bWJlcn0gZXJyb3JMaW5lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9y
TWVzc2FnZQorICAgICAqLwogICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlOiBmdW5jdGlv
bihzb3VyY2VVUkwsIHNvdXJjZSwgc3RhcnRpbmdMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2Fn
ZSkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChu
dWxsLCBzb3VyY2VVUkwsIHN0YXJ0aW5nTGluZSwgMCwgMCwgMCwgZXJyb3JMaW5lLCBlcnJvck1l
c3NhZ2UsIHVuZGVmaW5lZCk7CisgICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9y
LlNjcmlwdChudWxsLCBzb3VyY2VVUkwsIHN0YXJ0aW5nTGluZSwgMCwgMCwgMCwgZmFsc2UpOwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuRmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgc2NyaXB0KTsKICAgICB9
CiB9CkBAIC0yMzUsNiArMzQyLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRXZlbnRUeXBlcyA9
IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAaW1wbGVtZW50cyB7RGVidWdnZXJBZ2VudC5E
aXNwYXRjaGVyfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0gZGVidWdn
ZXJNb2RlbAogICovCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJEaXNwYXRjaGVyID0gZnVuY3Rpb24o
ZGVidWdnZXJNb2RlbCkKIHsKQEAgLTI0Miw2ICszNTAsMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGlzcGF0Y2hlciA9IGZ1bmN0aW9uKGRlYnVnZ2VyTW9kZWwpCiB9CiAKIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlckRpc3BhdGNoZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7QXJyYXkuPERlYnVnZ2VyQWdlbnQuQ2FsbEZyYW1lPn0gY2FsbEZyYW1lcworICAgICAqIEBw
YXJhbSB7c3RyaW5nfSByZWFzb24KKyAgICAgKiBAcGFyYW0geyp9IGF1eERhdGEKKyAgICAgKi8K
ICAgICBwYXVzZWQ6IGZ1bmN0aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgYXV4RGF0YSkKICAgICB7
CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwuX3BhdXNlZFNjcmlwdChjYWxsRnJhbWVzLCBy
ZWFzb24sIGF1eERhdGEpOwpAQCAtMjYyLDE5ICszNzUsMzkgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwu
X2RlYnVnZ2VyV2FzRGlzYWJsZWQoKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtEZWJ1Z2dlckFnZW50LlNjcmlwdElkfSBzY3JpcHRJZAorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBzb3VyY2VVUkwKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5lCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHN0YXJ0Q29sdW1uCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZExpbmUK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kQ29sdW1uCisgICAgICogQHBhcmFtIHtib29sZWFu
PX0gaXNDb250ZW50U2NyaXB0CisgICAgICovCiAgICAgc2NyaXB0UGFyc2VkOiBmdW5jdGlvbihz
Y3JpcHRJZCwgc291cmNlVVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRD
b2x1bW4sIGlzQ29udGVudFNjcmlwdCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9k
ZWwuX3BhcnNlZFNjcmlwdFNvdXJjZShzY3JpcHRJZCwgc291cmNlVVJMLCBzdGFydExpbmUsIHN0
YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCk7CisgICAgICAg
IHRoaXMuX2RlYnVnZ2VyTW9kZWwuX3BhcnNlZFNjcmlwdFNvdXJjZShzY3JpcHRJZCwgc291cmNl
VVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVu
dFNjcmlwdCB8fCBmYWxzZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBzb3VyY2VVUkwKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlCisgICAgICogQHBh
cmFtIHtudW1iZXJ9IHN0YXJ0aW5nTGluZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckxp
bmUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNZXNzYWdlCisgICAgICovCiAgICAgc2Ny
aXB0RmFpbGVkVG9QYXJzZTogZnVuY3Rpb24oc291cmNlVVJMLCBzb3VyY2UsIHN0YXJ0aW5nTGlu
ZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpCiAgICAgewogICAgICAgICB0aGlzLl9kZWJ1Z2dl
ck1vZGVsLl9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlKHNvdXJjZVVSTCwgc291cmNlLCBzdGFy
dGluZ0xpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LAogCi0gICAgYnJlYWtw
b2ludFJlc29sdmVkOiBmdW5jdGlvbihicmVha3BvaW50SWQsIHNjcmlwdElkLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCisgICAgLyoqCisgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuQnJl
YWtwb2ludElkfSBicmVha3BvaW50SWQKKyAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2Nh
dGlvbn0gbG9jYXRpb24KKyAgICAgKi8KKyAgICBicmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnRJZCwgbG9jYXRpb24pCiAgICAgewotICAgICAgICB0aGlzLl9kZWJ1Z2dlck1v
ZGVsLl9icmVha3BvaW50UmVzb2x2ZWQoYnJlYWtwb2ludElkLCBzY3JpcHRJZCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJNb2RlbC5fYnJlYWtwb2lu
dFJlc29sdmVkKGJyZWFrcG9pbnRJZCwgbG9jYXRpb24pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzCmluZGV4IDYyZGRiMjYwZWE5MWE4NmMyY2U0ZTIxZDk0MTJhMjhk
YTEzYzNhZjIuLjc5MjlmYWI2MjQ3NTY1MWQ5MTQ4MjM2MGZiODBhNmMwZGNlMTJkZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTczLDYgKzczLDEwIEBAIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIodGhp
cyk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByZXNl
bnRhdGlvbkNhbGxGcmFtZX0gY2FsbEZyYW1lCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9y
LlBsYWNhcmR9CisgICAgICovCiAgICAgY3JlYXRlUGxhY2FyZDogZnVuY3Rpb24oY2FsbEZyYW1l
KQogICAgIHsKICAgICAgICAgdmFyIHRpdGxlID0gY2FsbEZyYW1lLl9jYWxsRnJhbWUuZnVuY3Rp
b25OYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsK
QEAgLTkxLDE2ICs5NSwyNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBwbGFjYXJkOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAg
ICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRo
aXMuX2FkZFNjcmlwdChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYWRk
U2NyaXB0KHNjcmlwdCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwogICAgIF9mYWlsZWRUb1BhcnNlU2NyaXB0U291
cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2FkZFNjcmlwdChldmVu
dC5kYXRhKTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNj
cmlwdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYWRkU2NyaXB0KHNjcmlwdCk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2Ny
aXB0CisgICAgICovCiAgICAgX2FkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAg
ICAgICAgdmFyIHJhd1NvdXJjZUNvZGVJZCA9IHRoaXMuX2NyZWF0ZVJhd1NvdXJjZUNvZGVJZChz
Y3JpcHQpOwpAQCAtMTIwLDEzICsxMzUsMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdV
cGRhdGVkLCB0aGlzLl9zb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcyk7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwog
ICAgIF9zb3VyY2VNYXBwaW5nVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgdmFyIG9sZFVJU291
cmNlQ29kZSA9IGV2ZW50LmRhdGEub2xkVUlTb3VyY2VDb2RlOworICAgICAgICB2YXIgcmF3U291
cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9ICovIGV2ZW50
LnRhcmdldDsKKyAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gKi9ldmVudC5kYXRhWyJvbGRVSVNvdXJjZUNvZGUiXTsKICAg
ICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBvbGRVSVNvdXJj
ZUNvZGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSBvbGRVSVNvdXJjZUNvZGUKKyAgICAgKi8KICAgICBfdXBkYXRlU291cmNl
TWFwcGluZzogZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKQogICAgIHsK
ICAgICAgICAgaWYgKG9sZFVJU291cmNlQ29kZSkgewpAQCAtMTUwLDYgKzE3Miw5IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlfSByYXdTb3VyY2VDb2RlCisgICAgICovCiAgICAgX3Jlc3RvcmVCcmVha3BvaW50czog
ZnVuY3Rpb24ocmF3U291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcudWlTb3VyY2VDb2RlOwpAQCAtMTU5LDYgKzE4
NCw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRBZGRlZChicmVha3BvaW50c1tsaW5lTnVt
YmVyXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAgICAgKi8KICAgICBfcmVzdG9yZUNvbnNvbGVN
ZXNzYWdlczogZnVuY3Rpb24ocmF3U291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZhciBtZXNz
YWdlcyA9IHJhd1NvdXJjZUNvZGUubWVzc2FnZXM7CkBAIC0xNjYsNiArMTk0LDEwIEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIG1lc3NhZ2VzW2ldLl9wcmVzZW50YXRpb25NZXNzYWdlID0gdGhpcy5fY3JlYXRlUHJlc2Vu
dGF0aW9uTWVzc2FnZShtZXNzYWdlc1tpXSwgcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nKTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAg
IGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7CiAgICAg
ICAgIGlmICghUHJlZmVyZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSB8fCB0aGlzLl9mb3JtYXRT
b3VyY2UpCkBAIC0xNzUsMTEgKzIwNywyMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzY3JpcHQgJiYgIXNjcmlw
dC5saW5lT2Zmc2V0ICYmICFzY3JpcHQuY29sdW1uT2Zmc2V0OwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KD9Qcm90b2NvbC5FcnJvcil9IGNhbGxiYWNrCisgICAgICovCiAgICAgc2V0U2NyaXB0U291cmNl
OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG5ld1NvdXJjZSwgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlOwogICAg
ICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yUmF3U291cmNlQ29kZShyYXdTb3VyY2VD
b2RlKTsKIAorICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsfQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJv
cn0gZXJyb3IKKyAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3Vy
Y2UoZXJyb3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTsKQEAgLTE5
OCw2ICsyMzksMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRTY3JpcHRT
b3VyY2Uoc2NyaXB0LnNjcmlwdElkLCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9sZFNv
dXJjZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAgICAgKi8KICAgICBfdXBk
YXRlQnJlYWtwb2ludHNBZnRlckxpdmVFZGl0OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG9sZFNv
dXJjZSwgbmV3U291cmNlKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5f
YnJlYWtwb2ludE1hbmFnZXIuYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2Rl
KTsKQEAgLTIwNyw3ICsyNTMsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtw
b2ludHMpIHsKICAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbbGluZU51
bWJlcl07CiAKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlQnJlYWtwb2ludCh1aVNvdXJjZUNvZGUs
IGxpbmVOdW1iZXIpOworICAgICAgICAgICAgdGhpcy5yZW1vdmVCcmVha3BvaW50KHVpU291cmNl
Q29kZSwgcGFyc2VJbnQobGluZU51bWJlciwgMTApKTsKIAogICAgICAgICAgICAgdmFyIG5ld0xp
bmVOdW1iZXIgPSBkaWZmLmxlZnRbbGluZU51bWJlcl0ucm93OwogICAgICAgICAgICAgaWYgKG5l
d0xpbmVOdW1iZXIgPT09IHVuZGVmaW5lZCkgewpAQCAtMjI4LDYgKzI3NCw5IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1hdFNvdXJjZQor
ICAgICAqLwogICAgIHNldEZvcm1hdFNvdXJjZTogZnVuY3Rpb24oZm9ybWF0U291cmNlKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX2Zvcm1hdFNvdXJjZSA9PT0gZm9ybWF0U291cmNlKQpAQCAt
MjQyLDkgKzI5MSwxMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZCgpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAg
ICAgKi8KICAgICBfY29uc29sZU1lc3NhZ2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50LmRhdGE7CiAg
ICAgICAgIGlmICghbWVzc2FnZS51cmwgfHwgIW1lc3NhZ2UuaXNFcnJvck9yV2FybmluZygpIHx8
ICFtZXNzYWdlLm1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1OSwxNiArMzEx
LDE4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZX0gbWVzc2FnZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUuU291cmNlTWFwcGluZ30gc291cmNlTWFwcGluZworICAgICAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZX0KKyAgICAgKi8KICAg
ICBfY3JlYXRlUHJlc2VudGF0aW9uTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSwgc291cmNlTWFw
cGluZykKICAgICB7CiAgICAgICAgIC8vIEZJWE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9j
b2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2VkLgogICAgICAgICB2YXIgbGluZU51bWJlciA9IG1l
c3NhZ2Uuc3RhY2tUcmFjZSA/IG1lc3NhZ2Uuc3RhY2tUcmFjZVswXS5saW5lTnVtYmVyIC0gMSA6
IG1lc3NhZ2UubGluZSAtIDE7CiAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSBtZXNzYWdlLnN0
YWNrVHJhY2UgPyBtZXNzYWdlLnN0YWNrVHJhY2VbMF0uY29sdW1uTnVtYmVyIC0gMSA6IDA7Ci0g
ICAgICAgIHZhciB1aUxvY2F0aW9uID0gc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2Nh
dGlvbih7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVy
IH0pOwotICAgICAgICB2YXIgcHJlc2VudGF0aW9uTWVzc2FnZSA9IHt9OwotICAgICAgICBwcmVz
ZW50YXRpb25NZXNzYWdlLnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOwot
ICAgICAgICBwcmVzZW50YXRpb25NZXNzYWdlLmxpbmVOdW1iZXIgPSB1aUxvY2F0aW9uLmxpbmVO
dW1iZXI7Ci0gICAgICAgIHByZXNlbnRhdGlvbk1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdlID0gbWVz
c2FnZTsKKyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBzb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uKC8qKiBAdHlwZSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gKi8geyBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9KTsKKyAgICAg
ICAgdmFyIHByZXNlbnRhdGlvbk1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlv
bkNvbnNvbGVNZXNzYWdlKHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLmxpbmVO
dW1iZXIsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uTWVzc2FnZTsKICAg
ICB9LAogCkBAIC0yNzksNiArMzMzLDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNvbnNv
bGVNZXNzYWdlc0NsZWFyZWQpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBsaW5lTnVtYmVyCisgICAgICovCiAgICAgY29udGludWVUb0xpbmU6IGZ1bmN0aW9uKHVp
U291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiB1c2UgUmF3
U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbi4KQEAgLTI4Niw2ICszNDQsMTAgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jb250aW51ZVRvTG9jYXRpb24ocmF3TG9j
YXRpb24pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludD59CisgICAgICovCiAgICAgYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNv
ZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50
c01hcCA9IHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZSk7CkBAIC0yOTUsNiArMzU3LDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGJyZWFrcG9p
bnRzTGlzdDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlPn0KKyAgICAgKi8KICAgICBtZXNzYWdlc0ZvclVJU291cmNl
Q29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdmFyIHJhd1NvdXJj
ZUNvZGUgPSB1aVNvdXJjZUNvZGUucmF3U291cmNlQ29kZTsKQEAgLTMwNCwxMSArMzcwLDIyIEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIG1lc3NhZ2VzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmRpdGlvbgorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZAorICAgICAqLwogICAgIHNldEJyZWFrcG9pbnQ6
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKQog
ICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludCh1aVNv
dXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VD
b2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IGVuYWJsZWQKKyAgICAgKi8KICAgICBzZXRCcmVha3BvaW50RW5hYmxlZDogZnVuY3Rp
b24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBlbmFibGVkKQogICAgIHsKICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSB0aGlzLmZpbmRCcmVha3BvaW50KHVpU291cmNlQ29kZSwgbGluZU51bWJl
cik7CkBAIC0zMTgsMjggKzM5NSw0OSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnNl
dEJyZWFrcG9pbnQodWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlv
biwgZW5hYmxlZCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxp
bmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCisgICAgICogQHBhcmFt
IHtib29sZWFufSBlbmFibGVkCisgICAgICovCiAgICAgdXBkYXRlQnJlYWtwb2ludDogZnVuY3Rp
b24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCiAgICAgewog
ICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHVpU291cmNl
Q29kZSwgbGluZU51bWJlcik7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnNldEJy
ZWFrcG9pbnQodWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAg
ICovCiAgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVt
YmVyKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtw
b2ludCh1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnR8dW5kZWZpbmVkfQorICAgICAqLwogICAgIGZpbmRCcmVha3BvaW50OiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fYnJlYWtwb2ludE1hbmFnZXIuYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VD
b2RlKVtsaW5lTnVtYmVyXTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtwb2ludAorICAgICAqLwogICAgIF9icmVha3BvaW50
QWRkZWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICBpZiAoYnJlYWtwb2lu
dC51aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2lu
dEFkZGVkLCBicmVha3BvaW50KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludH0gYnJlYWtwb2ludAorICAgICAqLwogICAgIF9icmVha3Bv
aW50UmVtb3ZlZDogZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIGlmIChicmVh
a3BvaW50LnVpU291cmNlQ29kZSkKQEAgLTM5Miw2ICs0OTAsOSBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zZWxlY3RlZENhbGxGcmFtZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCiAgICAgX2Rpc3BhdGNoRXhlY3V0aW9u
TGluZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJhd0xvY2F0
aW9uID0gdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWUuX2NhbGxGcmFtZS5sb2NhdGlvbjsKQEAgLTQx
NSw4ICs1MTYsMTYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fcmF3U291cmNlQ29kZVt0aGlzLl9jcmVh
dGVSYXdTb3VyY2VDb2RlSWQoc2NyaXB0KV07CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAgICAgKi8K
ICAgICBfc2NyaXB0Rm9yUmF3U291cmNlQ29kZTogZnVuY3Rpb24ocmF3U291cmNlQ29kZSkKICAg
ICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWx9CisgICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlw
dH0gc2NyaXB0CisgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICAgICAqLwogICAg
ICAgICBmdW5jdGlvbiBmaWx0ZXIoc2NyaXB0KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fY3JlYXRlUmF3U291cmNlQ29kZUlkKHNjcmlwdCkgPT09IHJhd1NvdXJjZUNvZGUu
aWQ7CkBAIC00MjQsNiArNTMzLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwucXVlcnlTY3JpcHRzKGZpbHRlci5iaW5kKHRoaXMpKVswXTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKi8K
ICAgICBfY3JlYXRlUmF3U291cmNlQ29kZUlkOiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAg
ICAgICByZXR1cm4gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc2NyaXB0SWQ7CkBAIC00NDcs
NiArNTU5LDI2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKIC8qKgogICogQGNvbnN0cnVj
dG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQor
ICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlfSBvcmlnaW5hbE1lc3NhZ2UKKyAqLworV2ViSW5zcGVjdG9yLlByZXNlbnRh
dGlvbkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBv
cmlnaW5hbE1lc3NhZ2UpCit7CisgICAgdGhpcy51aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7
CisgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICB0aGlzLm9yaWdpbmFsTWVz
c2FnZSA9IG9yaWdpbmFsTWVzc2FnZTsKK30KKworV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNv
bnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBwYXJhbSB7RGVidWdnZXJBZ2VudC5DYWxsRnJhbWV9IGNhbGxGcmFtZQorICogQHBhcmFtIHtu
dW1iZXJ9IGluZGV4CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsfSBtb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3
U291cmNlQ29kZQogICovCiBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lID0gZnVu
Y3Rpb24oY2FsbEZyYW1lLCBpbmRleCwgbW9kZWwsIHJhd1NvdXJjZUNvZGUpCiB7CkBAIC00NTcs
NDkgKzU4OSw3NiBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lID0gZnVuY3Rp
b24oY2FsbEZyYW1lLCBpbmRleCwgbW9kZWwsIHJhd1NvdXJjZQogfQogCiBXZWJJbnNwZWN0b3Iu
UHJlc2VudGF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NhbGxGcmFtZS50eXBlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtBcnJheS48RGVidWdnZXJBZ2VudC5TY29wZT59CisgICAgICovCiAgICAgZ2V0IHNjb3Bl
Q2hhaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZS5zY29wZUNoYWlu
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtSdW50aW1lQWdlbnQuUmVtb3Rl
T2JqZWN0fQorICAgICAqLwogICAgIGdldCB0aGlzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jYWxsRnJhbWUudGhpczsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHJldHVybiB7
bnVtYmVyfQorICAgICAqLwogICAgIGdldCBpbmRleCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faW5kZXg7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlfQorICAgICAqLwogICAgIGdldCByYXdTb3VyY2VDb2RlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yYXdTb3VyY2VDb2RlOwogICAgIH0sCiAKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBv
YmplY3RHcm91cAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
CisgICAgICogQHBhcmFtIHtib29sZWFufSByZXR1cm5CeVZhbHVlCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbig/UnVudGltZUFnZW50LlJlbW90ZU9iamVjdCwgYm9vbGVhbik9fSBjYWxsYmFjawor
ICAgICAqLwogICAgIGV2YWx1YXRlOiBmdW5jdGlvbihjb2RlLCBvYmplY3RHcm91cCwgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCByZXR1cm5CeVZhbHVlLCBjYWxsYmFjaykKICAgICB7CisgICAgICAg
IC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNhbGxGcmFt
ZX0KKyAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAq
IEBwYXJhbSB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0gcmVzdWx0CisgICAgICAgICAqIEBw
YXJhbSB7Ym9vbGVhbn0gd2FzVGhyb3duCisgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBk
aWRFdmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2sobnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHJldHVybkJ5VmFsdWUgJiYgIXdhc1Rocm93bikK
LSAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQsIHdhc1Rocm93bik7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChyZXN1bHQpLCB3YXNUaHJvd24pOworICAgICAgICAgICAgY2FsbGJhY2so
cmVzdWx0LCB3YXNUaHJvd24pOwogICAgICAgICB9CiAgICAgICAgIERlYnVnZ2VyQWdlbnQuZXZh
bHVhdGVPbkNhbGxGcmFtZSh0aGlzLl9jYWxsRnJhbWUuY2FsbEZyYW1lSWQsIGNvZGUsIG9iamVj
dEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGRpZEV2YWx1YXRl
T25DYWxsRnJhbWUuYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24pfSBjYWxsYmFjaworICAgICAqLwog
ICAgIHVpTG9jYXRpb246IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rp
b24gc291cmNlTWFwcGluZ1JlYWR5KCkKQEAgLTUxNyw2ICs2NzYsNyBAQCBXZWJJbnNwZWN0b3Iu
UHJlc2VudGF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9y
CiAgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5n
fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbH0gbW9k
ZWwKICAqLwogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJp
bmRpbmcgPSBmdW5jdGlvbihtb2RlbCkKIHsKQEAgLTUyNSw2ICs2ODUsOSBAQCBXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZyA9IGZ1bmN0aW9uKG1v
ZGVsKQogfQogCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNl
QmluZGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICovCiAgICAgY2FuU2V0Q29udGVudDogZnVuY3Rp
b24ocmVzb3VyY2UpCiAgICAgewogICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChyZXNvdXJjZS51
cmwpCkBAIC01MzMsNiArNjk2LDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2UocmF3U291cmNlQ29kZS5zb3Vy
Y2VNYXBwaW5nLnVpU291cmNlQ29kZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBjb250ZW50CisgICAgICogQHBhcmFtIHtib29sZWFufSBtYWpvckNoYW5nZQorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKX0gdXNlckNhbGxiYWNrCisgICAgICovCiAg
ICAgc2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1
c2VyQ2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIW1ham9yQ2hhbmdlKQpAQCAtNTQ3LDgg
KzcxNiwxOCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNl
QmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KHRo
aXMuX3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQuYmluZCh0aGlzLCByYXdTb3VyY2VDb2Rl
LnNvdXJjZU1hcHBpbmcudWlTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2spKTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudAorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKX0gdXNlckNhbGxiYWNrCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IG9sZENvbnRlbnQKKyAgICAgKi8KICAgICBfc2V0Q29udGVudFdpdGhJbml0
aWFsQ29udGVudDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2ss
IG9sZENvbnRlbnQpCiAgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nfQorICAgICAg
ICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICovCiAgICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodXNl
ckNhbGxiYWNrKQpAQCAtNTYyLDYgKzc0MSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29u
c3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWx9IG1vZGVsCiAgKi8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxp
bmtpZmllciA9IGZ1bmN0aW9uKG1vZGVsKQogewpAQCAtNTcwLDYgKzc1MCwxMiBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIgPSBmdW5jdGlvbihtb2Rl
bCkKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVy
LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJM
CisgICAgICogQHBhcmFtIHtudW1iZXI9fSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1i
ZXI9fSBjb2x1bW5OdW1iZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IGNsYXNzZXMKKyAgICAg
Ki8KICAgICBsaW5raWZ5TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjbGFzc2VzKQogICAgIHsKICAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2Vi
SW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7CkBAIC02MDMs
MTQgKzc4OSwyMSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5r
aWZpZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9hbmNob3JzRm9yUmF3U291cmNlQ29k
ZSA9IHt9OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5F
dmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfdXBkYXRlU291cmNlQW5jaG9yczogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsK
KyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlfSAqLyBldmVudC50YXJnZXQ7CiAgICAgICAgIHZhciBhbmNob3JzID0gdGhpcy5f
YW5jaG9yc0ZvclJhd1NvdXJjZUNvZGVbcmF3U291cmNlQ29kZS5pZF07CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUFuY2hvcihyYXdTb3VyY2VDb2RlLCBhbmNob3JzW2ldKTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291cmNlQ29k
ZQorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gYW5jaG9yCisgICAgICovCiAgICAgX3VwZGF0ZUFu
Y2hvcjogZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgYW5jaG9yKQogICAgIHsKICAgICAgICAgdmFy
IHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24oYW5jaG9yLnJhd0xvY2F0aW9uKTsKQEAgLTYyNiw0ICs4MTksNCBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSQogLyoqCiAgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsfQogICovCi1XZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbCA9IG51bGw7CitXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG51
bGw7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDEzM2IyZGJmNzBhMTVi
Y2IyMjA0NjYzODRiNTUwNzVhMGFmMzI4NzUuLmY5NjBkZDk2ZmYwNDJkYjdiZmM2MTQ3MTM5YjI5
OTRkZTAzNDRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTkxLDcgKzkxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaWRlYmFyUmVzaXplRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLnJpZ2h0U2lkZWJhclJlc2l6ZXJEcmFnU3Rh
cnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uID0gbmV3
IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxl
Y3QgYW4gZWxlbWVudCBpbiB0aGUgcGFnZSB0byBpbnNwZWN0IGl0LiIpLCAibm9kZS1zZWFyY2gt
c3RhdHVzLWJhci1pdGVtIik7Ci0gICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy50b2dnbGVTZWFyY2hpbmdGb3JOb2RlLmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICB0aGlzLm5vZGVTZWFyY2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLnRvZ2dsZVNlYXJjaGluZ0Zvck5vZGUsIHRoaXMpOwogCiAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1lbnQpOwogICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLnNpZGViYXJFbGVtZW50KTsKQEAgLTE5NCw2ICsxOTQsNyBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5kb21CcmVha3BvaW50cy5yZXN0b3JlQnJlYWtwb2ludHMoKTsKIAogICAgICAgICAv
KioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsfQogICAgICAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Ob2RlPX0gY2FuZGlkYXRlRm9jdXNOb2RlCiAg
ICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBzZWxlY3ROb2RlKGNhbmRpZGF0ZUZvY3VzTm9k
ZSkKQEAgLTIxNSw3ICsyMTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgLy8gRm9jdXNlZCBub2RlIGhhcyBiZWVuIGV4cGxpY2l0
bHkgc2V0IHdoaWxlIHJlYWNoaW5nIG91dCBmb3IgdGhlIGxhc3Qgc2VsZWN0ZWQgbm9kZS4KICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbm9k
ZSA9IG5vZGVJZCA/IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQobm9kZUlkKSA6IDA7
CisgICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVJZCA/IFdlYkluc3BlY3Rvci5kb21BZ2VudC5u
b2RlRm9ySWQobm9kZUlkKSA6IG51bGw7CiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNhbGwodGhp
cywgbm9kZSk7CiAgICAgICAgIH0KIApAQCAtMzg5LDYgKzM5MCw5IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMudHJlZU91dGxp
bmUuc2VsZWN0ZWRET01Ob2RlKCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Ym9vbGVhbj19IGZvY3VzCisgICAgICovCiAgICAgc2VsZWN0RE9NTm9kZTogZnVuY3Rpb24obm9k
ZSwgZm9jdXMpCiAgICAgewogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdERPTU5vZGUo
bm9kZSwgZm9jdXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qcwppbmRleCA4ZjQyZjA0NmRmYTk1YmJiNzI4MTYwNTRkZDE2YWQyNDM1
MGZlYmJiLi4xYmQ0Y2MzNTVlZjNmMTU3MTA2NzhiZGM3NjZjMWNkNzU1ZTUzOTc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpA
QCAtNjI0LDE0ICs2MjQsMTQgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICBfY3JlYXRlU3RhdHVzYmFyQnV0dG9uczogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fcHJlc2VydmVMb2dUb2dnbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0Jh
ckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXNlcnZlIExvZyB1cG9uIE5hdmlnYXRp
b24iKSwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSIpOwotICAgICAgICB0aGlzLl9w
cmVzZXJ2ZUxvZ1RvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uUHJlc2Vy
dmVMb2dDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fcHJlc2VydmVM
b2dUb2dnbGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vblByZXNlcnZlTG9nQ2xp
Y2tlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVj
dG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIiksICJjbGVh
ci1zdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICAgICAgdGhpcy5fY2xlYXJCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZXNldC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAg
IHRoaXMuX2NsZWFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVzZXQs
IHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2xhcmdlclJlc291cmNlc0J1dHRvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIHNtYWxs
IHJlc291cmNlIHJvd3MuIiksICJuZXR3b3JrLWxhcmdlci1yZXNvdXJjZXMtc3RhdHVzLWJhci1p
dGVtIik7CiAgICAgICAgIHRoaXMuX2xhcmdlclJlc291cmNlc0J1dHRvbi50b2dnbGVkID0gV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cy5nZXQoKTsKLSAgICAgICAgdGhp
cy5fbGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
dG9nZ2xlTGFyZ2VyUmVzb3VyY2VzLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5f
bGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9n
Z2xlTGFyZ2VyUmVzb3VyY2VzLCB0aGlzKTsKICAgICB9LAogCiAgICAgX29uTG9hZEV2ZW50Rmly
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9PYmplY3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L09iamVjdC5qcwppbmRleCA3YjA3OTVlMzQ1NTI1YzM0MGZhNTc0NmRhY2YzYWQ1MTFhMDdmNzIw
Li42MjdkY2NkZGYyYTBlZGM2NmZjNDY4OTViODczMzkyMWEyMjVhYWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcwpAQCAtMzAsNiArMzAsMTEgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdCA9IGZ1bmN0aW9uKCkgewogfQogCiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRU
eXBlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuRXZlbnQpfSBsaXN0ZW5l
cgorICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gdGhpc09iamVjdAorICAgICAqLwogICAgIGFkZEV2
ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycykKQEAgLTM5LDYgKzQ0LDExIEBAIFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9saXN0ZW5lcnNb
ZXZlbnRUeXBlXS5wdXNoKHsgdGhpc09iamVjdDogdGhpc09iamVjdCwgbGlzdGVuZXI6IGxpc3Rl
bmVyIH0pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRU
eXBlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuRXZlbnQpfSBsaXN0ZW5l
cgorICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gdGhpc09iamVjdAorICAgICAqLwogICAgIHJlbW92
ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3Qp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhpcy5fbGlzdGVuZXJz
W2V2ZW50VHlwZV0pCkBAIC02MCw2ICs3MCwxMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2xpc3RlbmVyczsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZQorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCiAgICAgaGFzRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlw
ZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJzIHx8ICF0aGlzLl9saXN0ZW5l
cnNbZXZlbnRUeXBlXSkKQEAgLTY4LDYgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVu
dFR5cGUKICAgICAgKiBAcGFyYW0geyo9fSBldmVudERhdGEKICAgICAgKi8KICAgICBkaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnREYXRhKQpAQCAtNzUs
MjYgKzkwLDExIEBAIFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHN0b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNl
OwotCi0gICAgICAgIGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0b3BwZWRQcm9wYWdhdGlvbiA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBwcmV2ZW50RGVmYXVsdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZGVm
YXVsdFByZXZlbnRlZCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZXZlbnQgPSB7
dGFyZ2V0OiB0aGlzLCB0eXBlOiBldmVudFR5cGUsIGRhdGE6IGV2ZW50RGF0YSwgZGVmYXVsdFBy
ZXZlbnRlZDogZmFsc2V9OwotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSBzdG9wUHJv
cGFnYXRpb247Ci0gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gcHJldmVudERlZmF1bHQ7
Ci0KKyAgICAgICAgdmFyIGV2ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudCh0aGlzLCBldmVu
dFR5cGUsIGV2ZW50RGF0YSk7CiAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5l
cnNbZXZlbnRUeXBlXS5zbGljZSgwKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0
ZW5lcnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5saXN0ZW5lci5j
YWxsKGxpc3RlbmVyc1tpXS50aGlzT2JqZWN0LCBldmVudCk7Ci0gICAgICAgICAgICBpZiAoc3Rv
cHBlZFByb3BhZ2F0aW9uKQorICAgICAgICAgICAgaWYgKGV2ZW50Ll9zdG9wcGVkUHJvcGFnYXRp
b24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTAyLDQgKzEwMiwz
MSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5PYmplY3R9IHRhcmdldAor
ICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKKyAqIEBwYXJhbSB7Kj19IGRhdGEKKyAqLworV2ViSW5z
cGVjdG9yLkV2ZW50ID0gZnVuY3Rpb24odGFyZ2V0LCB0eXBlLCBkYXRhKQoreworICAgIHRoaXMu
dGFyZ2V0ID0gdGFyZ2V0OworICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgdGhpcy5kYXRhID0g
ZGF0YTsKKyAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTsKKyAgICB0aGlzLl9zdG9w
cGVkUHJvcGFnYXRpb24gPSBmYWxzZTsKK30KKworV2ViSW5zcGVjdG9yLkV2ZW50LnByb3RvdHlw
ZSA9IHsKKyAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3N0b3BwZWRQcm9wYWdhdGlvbiA9IHRydWU7CisgICAgfSwKKworICAgIHByZXZlbnREZWZh
dWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0
cnVlOworICAgIH0KK30KKwogV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMgPSBuZXcgV2ViSW5z
cGVjdG9yLk9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SYXdTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SYXdTb3VyY2VDb2RlLmpzCmluZGV4IDhmMDNiYjdhNGZjZjI3NWQ3NDA4NWMzNWZlOWNk
ZDU0MzUwMDU4YjMuLjgwNjYyY2ZlM2I5YTA1ZmY1OTM3Y2NjMzc5MGM3MTA3NmRkMTkwNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29k
ZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNv
ZGUuanMKQEAgLTM0LDYgKzM0LDExIEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZX0gcmVzb3VyY2UKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRl
cn0gZm9ybWF0dGVyCisgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1hdHRlZAogICovCiBXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlc291cmNlLCBmb3Jt
YXR0ZXIsIGZvcm1hdHRlZCkKIHsKQEAgLTU5LDE3ICs2NCwyNiBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnBy
b3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9
IHNjcmlwdAorICAgICAqLwogICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsK
ICAgICAgICAgdGhpcy5fc2NyaXB0cy5wdXNoKHNjcmlwdCk7CiAgICAgICAgIHRoaXMuX2hhc05l
d1NjcmlwdHMgPSB0cnVlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5Tb3VyY2VNYXBwaW5nfQorICAgICAqLwogICAgIGdldCBz
b3VyY2VNYXBwaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VNYXBwaW5n
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcm1hdHRlZAor
ICAgICAqLwogICAgIHNldEZvcm1hdHRlZDogZnVuY3Rpb24oZm9ybWF0dGVkKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2Zvcm1hdHRlZCA9PT0gZm9ybWF0dGVkKQpAQCAtNzgsNiArOTIsOSBA
QCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtudW1iZXJ9IHByb3ZpZGVyIFNob3VsZCBhc3NpZ24gcHJvcGVyIHR5cGUgdXBvbiBmaXJzdCB1
c2UKKyAgICAgKi8KICAgICBzZXRDb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcjogZnVuY3Rp
b24ocHJvdmlkZXIpCiAgICAgewogICAgICAgICBpZiAocHJvdmlkZXIpCkBAIC05NCw2ICsxMTEs
MTEgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51
bWJlcgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHR9CisgICAgICovCiAgICAg
X3NjcmlwdEZvclJhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgewogICAgICAgICB2YXIgY2xvc2VzdFNjcmlwdCA9IHRoaXMuX3NjcmlwdHNbMF07CkBA
IC0xMDgsNiArMTMwLDkgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gY2xvc2VzdFNjcmlwdDsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKi8KICAgICBmb3Jj
ZVVwZGF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCB8fCAhdGhpcy5faGFzTmV3U2NyaXB0cykKQEAg
LTEyNyw2ICsxNTIsMTAgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuX2NyZWF0ZVNvdXJjZU1hcHBpbmcoZGlkQ3JlYXRlU291cmNlTWFw
cGluZy5iaW5kKHRoaXMpKTsKIAorICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlfQorICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKKyAgICAgICAgICovCiAg
ICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGluZykKICAg
ICAgICAgewogICAgICAgICAgICAgdGhpcy5fdXBkYXRpbmdTb3VyY2VNYXBwaW5nID0gZmFsc2U7
CkBAIC0xNDYsOSArMTc1LDE2IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0
c0NvbnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRzKTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Tb3VyY2VNYXBw
aW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBfY3JlYXRlU291cmNlTWFwcGluZzogZnVuY3Rp
b24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3VyY2VNYXBw
aW5nUHJvdmlkZXIpIHsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHRoaXMge1dl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfQorICAgICAgICAgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nfSBjb21waWxlclNvdXJjZU1hcHBpbmcKKyAgICAg
ICAgICAgICAqLwogICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJjZU1hcHBpbmcoY29t
cGlsZXJTb3VyY2VNYXBwaW5nKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciB1
aVNvdXJjZUNvZGVMaXN0ID0gW107CkBAIC0xNzQsOCArMjEwLDE4IEBAIFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCisgICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGV9CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZQorICAgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gY29udGVudAorICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlk
UmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IC8qKgorICAgICAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfQor
ICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdHRlZENvbnRlbnQKKyAgICAgICAg
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmd9IG1hcHBp
bmcKKyAgICAgICAgICAgICAqLwogICAgICAgICAgICAgZnVuY3Rpb24gZGlkRm9ybWF0Q29udGVu
dChmb3JtYXR0ZWRDb250ZW50LCBtYXBwaW5nKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQ
cm92aWRlcihtaW1lVHlwZSwgZm9ybWF0dGVkQ29udGVudCkKQEAgLTE4OCw2ICsyMzQsOSBAQCBX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIG9yaWdpbmFs
Q29udGVudFByb3ZpZGVyLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50LmJpbmQodGhp
cykpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKKyAgICAgKi8KICAgICBfc2F2
ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKHNvdXJjZU1hcHBpbmcpCiAgICAgewogICAgICAgICB2
YXIgb2xkVUlTb3VyY2VDb2RlOwpAQCAtMjAwLDkgKzI0OSwzMyBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAorLyoq
CisgKiBAaW50ZXJmYWNlCisgKi8KK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1h
cHBpbmcgPSBmdW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNv
dXJjZU1hcHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdn
ZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuVUlMb2NhdGlvbn0KKyAgICAgKi8KKyAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVu
Y3Rpb24ocmF3TG9jYXRpb24pIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKKyAgICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAg
ICAqLworICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUs
IGxpbmVOdW1iZXIpIHsgfQorfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVu
dHMge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmd9CisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICovCiBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2Rl
LCB1aVNvdXJjZUNvZGUpCiB7CkBAIC0yMTEsMTkgKzI4NCwzMSBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1
aVNvdXJjZQogfQogCiBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBp
bmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5M
b2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2Nh
dGlvbn0KKyAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3
TG9jYXRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0
aW9uKHRoaXMuX3VpU291cmNlQ29kZSwgcmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRp
b24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2Nh
dGlvbih0aGlzLl91aVNvdXJjZUNvZGUsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0
aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRp
b259CisgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291
cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVpU291
cmNlQ29kZSA9PT0gdGhpcy5fdWlTb3VyY2VDb2RlKTsKICAgICAgICAgdmFyIHJhd0xvY2F0aW9u
ID0geyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IDAgfTsKICAgICAgICAg
cmF3TG9jYXRpb24uc2NyaXB0SWQgPSB0aGlzLl9yYXdTb3VyY2VDb2RlLl9zY3JpcHRGb3JSYXdM
b2NhdGlvbihyYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIp
LnNjcmlwdElkOwotICAgICAgICByZXR1cm4gcmF3TG9jYXRpb247CisgICAgICAgIHJldHVybiAv
KiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQor
ICAgICAqLwogICAgIGdldCB1aVNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3VpU291cmNlQ29kZTsKQEAgLTIzMiw2ICszMTcsMTAgQEAgV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUuUGxhaW5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29u
c3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Tb3Vy
Y2VNYXBwaW5nfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291
cmNlQ29kZQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNv
ZGUKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmd9IG1hcHBp
bmcKICAqLwogV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGlu
ZyA9IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSwgbWFwcGluZykKIHsKQEAg
LTI0MSwxMiArMzMwLDIwIEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkZvcm1hdHRlZFNv
dXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvCiB9CiAKIFdlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRp
b24KKyAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9j
YXRpb24pCiAgICAgewogICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9tYXBwaW5nLm9yaWdp
bmFsVG9Gb3JtYXR0ZWQocmF3TG9jYXRpb24pOwotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNlQ29kZSwgbG9jYXRpb24ubGluZU51bWJlciwg
bG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
VUlMb2NhdGlvbih0aGlzLl91aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0
aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRp
b259CisgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291
cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVpU291
cmNlQ29kZSA9PT0gdGhpcy5fdWlTb3VyY2VDb2RlKTsKQEAgLTI1NSw2ICszNTIsOSBAQCBXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIHJhd0xvY2F0aW9uOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqLwogICAgIGdldCB1
aVNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZTsK
QEAgLTI2Myw2ICszNjMsMTAgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVk
U291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBA
aW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuU291cmNlTWFwcGluZ30KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUKKyAqIEBw
YXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmd9IG1hcHBpbmcK
ICAqLwogV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nID0g
ZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlTGlzdCwgbWFwcGluZykKIHsKQEAg
LTI3NSwyMCArMzc5LDMxIEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291
cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIHVpU291CiB9CiAKIFdlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7Cisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlv
bgorICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2Nh
dGlvbikKICAgICB7Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuY29tcGls
ZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9j
YXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fbWFwcGlu
Zy5jb21waWxlZExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihyYXdMb2NhdGlvbi5saW5lTnVtYmVy
LCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7CiAgICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFtsb2NhdGlvbi5zb3VyY2VVUkxdOwogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgbG9jYXRp
b24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEByZXR1cm4ge0RlYnVn
Z2VyQWdlbnQuTG9jYXRpb259CisgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBy
YXdMb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRp
b24odWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlcik7CisgICAgICAgIHZhciByYXdMb2NhdGlv
biA9IHRoaXMuX21hcHBpbmcuc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLnVybCwgbGluZU51bWJlciwgMCk7CiAgICAgICAgIHJhd0xvY2F0aW9uLnNjcmlwdElk
ID0gdGhpcy5fcmF3U291cmNlQ29kZS5fc2NyaXB0Rm9yUmF3TG9jYXRpb24ocmF3TG9jYXRpb24u
bGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyKS5zY3JpcHRJZDsKLSAgICAgICAg
cmV0dXJuIHJhd0xvY2F0aW9uOworICAgICAgICByZXR1cm4gLyoqIEB0eXBlIHtEZWJ1Z2dlckFn
ZW50LkxvY2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
QHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQorICAgICAqLwogICAg
IGdldCB1aVNvdXJjZUNvZGVMaXN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl91aVNv
dXJjZUNvZGVMaXN0OwpAQCAtMjk3LDYgKzQxMiw5IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29k
ZQorICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1
bW5OdW1iZXIKICAqLwogV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24gPSBmdW5jdGlvbih1aVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKaW5kZXggOGU4NTdmYWM1YmRiNzFkOGRkNGVlYjdl
MmY4YzI3MGI1MWEyZjhkMC4uOTNhZDg4MTI4ODQ1N2ZjN2NhNjdlMmI3ODBiYTY3YTVkNjc0NGUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAg
LTI1LDggKzI1LDE1IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0gez9zdHJp
bmd9IHNjcmlwdElkCisgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgKiBAcGFyYW0ge251
bWJlcn0gc3RhcnRMaW5lCisgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRDb2x1bW4KKyAqIEBwYXJh
bSB7bnVtYmVyfSBlbmRMaW5lCisgKiBAcGFyYW0ge251bWJlcn0gZW5kQ29sdW1uCisgKiBAcGFy
YW0ge2Jvb2xlYW59IGlzQ29udGVudFNjcmlwdAogICovCi1XZWJJbnNwZWN0b3IuU2NyaXB0ID0g
ZnVuY3Rpb24oc2NyaXB0SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5k
TGluZSwgZW5kQ29sdW1uLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSwgaXNDb250ZW50U2NyaXB0
KQorV2ViSW5zcGVjdG9yLlNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0
YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0
KQogewogICAgIHRoaXMuc2NyaXB0SWQgPSBzY3JpcHRJZDsKICAgICB0aGlzLnNvdXJjZVVSTCA9
IHNvdXJjZVVSTDsKQEAgLTM0LDEyICs0MSwxMyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0ID0gZnVu
Y3Rpb24oc2NyaXB0SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTAog
ICAgIHRoaXMuY29sdW1uT2Zmc2V0ID0gc3RhcnRDb2x1bW47CiAgICAgdGhpcy5lbmRMaW5lID0g
ZW5kTGluZTsKICAgICB0aGlzLmVuZENvbHVtbiA9IGVuZENvbHVtbjsKLSAgICB0aGlzLmVycm9y
TGluZSA9IGVycm9yTGluZTsKLSAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsK
ICAgICB0aGlzLmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKIH0KIAogV2ViSW5z
cGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLwogICAgIHJlcXVlc3RTb3VyY2U6IGZ1bmN0
aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZSkgewpAQCAtNDcs
MTYgKzU1LDM0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0aGlzIHtX
ZWJJbnNwZWN0b3IuU2NyaXB0fQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0g
ZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZQorICAgICAgICAgKi8KICAg
ICAgICAgZnVuY3Rpb24gZGlkR2V0U2NyaXB0U291cmNlKGVycm9yLCBzb3VyY2UpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHRoaXMuX3NvdXJjZSA9IGVycm9yID8gIiIgOiBzb3VyY2U7CiAgICAg
ICAgICAgICBjYWxsYmFjayh0aGlzLl9zb3VyY2UpOwogICAgICAgICB9Ci0gICAgICAgIERlYnVn
Z2VyQWdlbnQuZ2V0U2NyaXB0U291cmNlKHRoaXMuc2NyaXB0SWQsIGRpZEdldFNjcmlwdFNvdXJj
ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKHRoaXMuc2NyaXB0SWQpIHsKKyAgICAgICAgICAg
IC8vIFNjcmlwdCBmYWlsZWQgdG8gcGFyc2UuCisgICAgICAgICAgICBEZWJ1Z2dlckFnZW50Lmdl
dFNjcmlwdFNvdXJjZSh0aGlzLnNjcmlwdElkLCBkaWRHZXRTY3JpcHRTb3VyY2UuYmluZCh0aGlz
KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbGJhY2soIiIpOwogICAgIH0sCiAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKEFycmF5LjxQYWdlQWdlbnQuU2VhcmNoTWF0Y2g+KX0gY2FsbGJhY2sKKyAgICAgKi8K
ICAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykKICAgICB7Cisg
ICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLlNjcmlwdH0KKyAgICAg
ICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJhbSB7
QXJyYXkuPFBhZ2VBZ2VudC5TZWFyY2hNYXRjaD59IHNlYXJjaE1hdGNoZXMKKyAgICAgICAgICov
CiAgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIHNlYXJjaE1hdGNoZXMpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKQEAgLTY0LDE3ICs5MCwzNCBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhbGxiYWNrKHNlYXJj
aE1hdGNoZXMgfHwgW10pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBEZWJ1Z2dlckFn
ZW50LnNlYXJjaEluQ29udGVudCh0aGlzLnNjcmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5i
aW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKHRoaXMuc2NyaXB0SWQpIHsKKyAgICAgICAgICAgIC8v
IFNjcmlwdCBmYWlsZWQgdG8gcGFyc2UuCisgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LnNlYXJj
aEluQ29udGVudCh0aGlzLnNjcmlwdElkLCBxdWVyeSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsYmFjayhbXSk7CiAgICAgfSwKICAg
ICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3U291cmNlCisgICAgICogQHBh
cmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IsIEFycmF5LjxEZWJ1Z2dlckFnZW50LkNhbGxG
cmFtZT49KX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBlZGl0U291cmNlOiBmdW5jdGlvbihuZXdT
b3VyY2UsIGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEB0aGlzIHtX
ZWJJbnNwZWN0b3IuU2NyaXB0fQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0g
ZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtBcnJheS48RGVidWdnZXJBZ2VudC5DYWxsRnJhbWU+
fHVuZGVmaW5lZH0gY2FsbEZyYW1lcworICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlk
RWRpdFNjcmlwdFNvdXJjZShlcnJvciwgY2FsbEZyYW1lcykKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFlcnJvcikKICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2UgPSBuZXdTb3VyY2U7
CiAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciwgY2FsbEZyYW1lcyk7CiAgICAgICAgIH0KLSAg
ICAgICAgRGVidWdnZXJBZ2VudC5zZXRTY3JpcHRTb3VyY2UodGhpcy5zY3JpcHRJZCwgbmV3U291
cmNlLCB1bmRlZmluZWQsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CisgICAgICAg
IGlmICh0aGlzLnNjcmlwdElkKSB7CisgICAgICAgICAgICAvLyBTY3JpcHQgZmFpbGVkIHRvIHBh
cnNlLgorICAgICAgICAgICAgRGVidWdnZXJBZ2VudC5zZXRTY3JpcHRTb3VyY2UodGhpcy5zY3Jp
cHRJZCwgbmV3U291cmNlLCB1bmRlZmluZWQsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlz
KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbGJhY2soIlNjcmlwdCBmYWlsZWQg
dG8gcGFyc2UiKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDhhMGEwZmVjNzkzZmQ5Mzg3MjMxMTQ5MjM2
ZWIzZmZiYzg3OWJhMGQuLjg0NjZiODcwOGYxNzZiNWNjMWJhMGMzMmQ4MGFjODg2YjI3MTkzM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzCkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5j
dGlvbihwcmVzZW50YXRpb25Nb2RlbCkKIAogICAgIHRoaXMudG9nZ2xlQnJlYWtwb2ludHNCdXR0
b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkRlYWN0aXZhdGUgYWxsIGJyZWFrcG9pbnRzLiIpLCAidG9nZ2xlLWJyZWFrcG9pbnRzIik7
CiAgICAgdGhpcy50b2dnbGVCcmVha3BvaW50c0J1dHRvbi50b2dnbGVkID0gdHJ1ZTsKLSAgICB0
aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fdG9nZ2xlQnJlYWtwb2ludHNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlz
LnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
dG9nZ2xlQnJlYWtwb2ludHNDbGlja2VkLCB0aGlzKTsKICAgICB0aGlzLnNpZGViYXJCdXR0b25z
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmVsZW1lbnQp
OwogCiAgICAgdGhpcy5kZWJ1Z2dlclN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKQEAgLTE0OCwxNiArMTQ4LDE2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5zaWRlYmFyUmVzaXplRWxlbWVudCk7CiAKICAgICB0aGlzLmVuYWJsZVRvZ2ds
ZUJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAiZW5hYmxlLXRv
Z2dsZS1zdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZURlYnVnZ2luZy5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgdGhpcy5lbmFibGVUb2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl90b2dnbGVEZWJ1Z2dpbmcsIHRoaXMpOwogICAgIGlmIChQcmVmZXJlbmNlcy5k
ZWJ1Z2dlckFsd2F5c0VuYWJsZWQpCiAgICAgICAgIHRoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLmVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAKICAgICB0aGlzLl9wYXVzZU9uRXhjZXB0
aW9uQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJzY3JpcHRz
LXBhdXNlLW9uLWV4Y2VwdGlvbnMtc3RhdHVzLWJhci1pdGVtIiwgMyk7Ci0gICAgdGhpcy5fcGF1
c2VPbkV4Y2VwdGlvbkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2ds
ZVBhdXNlT25FeGNlcHRpb25zLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl9wYXVzZU9u
RXhjZXB0aW9uQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlUGF1
c2VPbkV4Y2VwdGlvbnMsIHRoaXMpOwogCiAgICAgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0
dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJQcmV0dHkgcHJpbnQiKSwgInNjcmlwdHMtdG9nZ2xlLXByZXR0eS1wcmludC1zdGF0dXMt
YmFyLWl0ZW0iKTsKICAgICB0aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24udG9nZ2xlZCA9
IGZhbHNlOwotICAgIHRoaXMuX3RvZ2dsZUZvcm1hdFNvdXJjZUJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZUZvcm1hdFNvdXJjZS5iaW5kKHRoaXMpLCBmYWxzZSk7
CisgICAgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlLCB0aGlzKTsKIAogICAgIHRoaXMuX3Njcmlw
dFZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgIHRoaXMuX3NjcmlwdFZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5zdHlsZS5k
aXNwbGF5ID0gImlubGluZS1ibG9jayI7CkBAIC00NDYsMTMgKzQ0NiwyMyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
anNCcmVha3BvaW50cy5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQudWlTb3VyY2VDb2RlLCBi
cmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LCBib29sZWFuLCBSdW50aW1lQWdl
bnQuUmVtb3RlT2JqZWN0PSl9IGNhbGxiYWNrCisgICAgICovCiAgICAgZXZhbHVhdGVJblNlbGVj
dGVkQ2FsbEZyYW1lOiBmdW5jdGlvbihjb2RlLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCByZXR1cm5CeVZhbHVlLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9u
IGRpZEV2YWx1YXRlKCkKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1J1bnRpbWVB
Z2VudC5SZW1vdGVPYmplY3R9IHJlc3VsdAorICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHdh
c1Rocm93bgorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUocmVzdWx0
LCB3YXNUaHJvd24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChvYmplY3RHcm91cCA9PT0g
ImNvbnNvbGUiKQogICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLnNjb3BlY2hhaW4u
dXBkYXRlKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lKTsKLSAgICAg
ICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICBpZiAo
cmV0dXJuQnlWYWx1ZSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB3YXNUaHJvd24s
IHdhc1Rocm93biA/IG51bGwgOiByZXN1bHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVz
dWx0KSwgd2FzVGhyb3duKTsKICAgICAgICAgfQogICAgICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJh
bWUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zZWxlY3RlZENhbGxGcmFtZTsKICAgICAgICAg
c2VsZWN0ZWRDYWxsRnJhbWUuZXZhbHVhdGUoY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgZGlkRXZhbHVhdGUuYmluZCh0aGlzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMK
aW5kZXggNmE3YWEyZGVlNWM3OGExMTc3NzNlM2JhYTUzY2VhM2E1NjVkNDRmYy4uYThhMTJjMzM3
YjY1MTMxMDgzYmE5MTE2ZDI3OTQxZjE0M2Q4MDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMjMxLDE2ICsyMzEs
MTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIF9jcmVh
dGVTdGF0dXNiYXJCdXR0b25zOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2ds
ZVRpbWVsaW5lQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWNvcmQiKSwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRl
bSIpOwotICAgICAgICB0aGlzLnRvZ2dsZVRpbWVsaW5lQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fdG9nZ2xlVGltZWxpbmVCdXR0b25DbGlja2VkLmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX3RvZ2dsZVRpbWVsaW5lQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKICAg
ICAgICAgdGhpcy5jbGVhckJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9u
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIiKSwgImNsZWFyLXN0YXR1cy1iYXItaXRlbSIp
OwotICAgICAgICB0aGlzLmNsZWFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fY2xlYXJQYW5lbC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuY2xlYXJCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVhclBhbmVsLCB0aGlzKTsKIAog
ICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVz
QmFyQnV0dG9uKHRoaXMuX2hpZGVTaG9ydFJlY29yZHNUaXRsZVRleHQsICJ0aW1lbGluZS1maWx0
ZXItc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZC5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZCwgdGhp
cyk7CiAKICAgICAgICAgdGhpcy5nYXJiYWdlQ29sbGVjdEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBHYXJiYWdl
IiksICJnYXJiYWdlLWNvbGxlY3Qtc3RhdHVzLWJhci1pdGVtIik7Ci0gICAgICAgIHRoaXMuZ2Fy
YmFnZUNvbGxlY3RCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9nYXJiYWdl
Q29sbGVjdEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmdh
cmJhZ2VDb2xsZWN0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ2FyYmFn
ZUNvbGxlY3RCdXR0b25DbGlja2VkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLnJlY29yZHNDb3Vu
dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0aGlzLnJlY29y
ZHNDb3VudGVyLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1yZWNvcmRzLWNvdW50ZXIiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwppbmRl
eCA5NjRlNzg5ZjQxMjkxMjk3MTk0NDY2NDQ1ODczYTU5YmM2NmY1ZjIxLi4zYThmYjY3ZDZiYjcx
MmUwOTU4Y2M5MWM1NzkwOWNjNjcwNjlmOTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwpAQCAtMzAsNiArMzAsMTIgQEAKIAog
LyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQor
ICogQHBhcmFtIHtzdHJpbmd9IGlkCisgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgKiBAcGFyYW0g
e2Jvb2xlYW59IGlzQ29udGVudFNjcmlwdAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZX0gcmF3U291cmNlQ29kZQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29udGVudFBy
b3ZpZGVyfSBjb250ZW50UHJvdmlkZXIKICAqLwogV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSA9
IGZ1bmN0aW9uKGlkLCB1cmwsIGlzQ29udGVudFNjcmlwdCwgcmF3U291cmNlQ29kZSwgY29udGVu
dFByb3ZpZGVyKQogewpAQCAtMzgsNiArNDQsOSBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
ID0gZnVuY3Rpb24oaWQsIHVybCwgaXNDb250ZW50U2NyaXB0LCByYXdTb3VyY2VDb2RlLCBjbwog
ICAgIHRoaXMuX2lzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKICAgICB0aGlzLl9y
YXdTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZTsKICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXIg
PSBjb250ZW50UHJvdmlkZXI7CisgICAgLyoqCisgICAgICogQHR5cGUgQXJyYXkuPGZ1bmN0aW9u
KHN0cmluZyxzdHJpbmcpPgorICAgICAqLwogICAgIHRoaXMuX3JlcXVlc3RDb250ZW50Q2FsbGJh
Y2tzID0gW107CiB9CiAKQEAgLTQ2LDI2ICs1NSw0MSBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlLkV2ZW50cyA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUg
PSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwogICAgIGdldCBp
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQ7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBnZXQgdXJsKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl91cmw7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgZ2V0IGlzQ29udGVudFNjcmlwdCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faXNDb250ZW50U2NyaXB0OwogICAgIH0sCiAKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0KKyAgICAgKi8KICAg
ICBnZXQgcmF3U291cmNlQ29kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmF3U291
cmNlQ29kZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJp
bmcsc3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rp
b24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY29udGVudExvYWRlZCkgewpA
QCAtNzgsNiArMTAyLDkgQEAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXIucmVxdWVzdENvbnRlbnQodGhpcy5f
ZGlkUmVxdWVzdENvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBuZXdDb250ZW50CisgICAgICovCiAgICAgY29udGVudENoYW5nZWQ6
IGZ1bmN0aW9uKG5ld0NvbnRlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9jb250ZW50TG9hZGVkKTsKQEAgLTg1LDYgKzExMiwxMCBAQCBXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5FdmVudHMuQ29udGVudENoYW5nZWQpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gY29udGVudAorICAgICAqLwogICAgIF9kaWRSZXF1ZXN0Q29udGVudDog
ZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50
TG9hZGVkID0gdHJ1ZTsKQEAgLTEwMyw2ICsxMzQsMjQgQEAgV2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7
CiAgKi8KIFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbigpIHsgfQogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtmdW5jdGlvbihzdHJpbmcsc3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBy
ZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spIHsgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdl
Ykluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0gY2FsbGJhY2sKKyAgICAg
Ki8KICAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYWxsYmFjaykgeyB9CiB9
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgor
ICogQHBhcmFtIHtzdHJpbmd9IGxpbmVDb250ZW50CisgKi8KK1dlYkluc3BlY3Rvci5Db250ZW50
UHJvdmlkZXIuU2VhcmNoTWF0Y2ggPSBmdW5jdGlvbihsaW5lTnVtYmVyLCBsaW5lQ29udGVudCkg
eworICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgdGhpcy5saW5lQ29udGVu
dCA9IGxpbmVDb250ZW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwppbmRl
eCAyY2Q0NDRhMzQ0MWZiY2QzY2YwNzA4YWUxY2ZkNTZhNDVlYWYyMzhmLi5lMDNlMDRhZjVmNThh
ZTM5ZThiNWUxZTk2YzYxNzJjZDI2NTAwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFy
UGFuZS5qcwpAQCAtMTk5LDcgKzE5OSw3IEBAIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25z
U2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24pCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xl
Vmlldy5ldmFsSW5JbnNwZWN0ZWRXaW5kb3coZXhwcmVzc2lvbiwgdGhpcy5fd2F0Y2hPYmplY3RH
cm91cElkLCBmYWxzZSwgdHJ1ZSwgdW5kZWZpbmVkLCBhcHBlbmRSZXN1bHQuYmluZCh0aGlzLCBl
eHByZXNzaW9uLCBpKSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcuZXZh
bEluSW5zcGVjdGVkV2luZG93KGV4cHJlc3Npb24sIHRoaXMuX3dhdGNoT2JqZWN0R3JvdXBJZCwg
ZmFsc2UsIHRydWUsIGZhbHNlLCBhcHBlbmRSZXN1bHQuYmluZCh0aGlzLCBleHByZXNzaW9uLCBp
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXByb3BlcnR5Q291bnQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwppbmRleCA5YmZlYjA5Nzk0
NmExZjc2NjMzMWE1ZDVkMGJiMGVjOTZmZDdjZmNkLi42ZTg3YzI1Mzg5NTUxYjRmYWFiOTZjNTRj
ZDhmMzUyMWJjOTcwMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2V4dGVybnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9leHRlcm5zLmpzCkBAIC02Niw3ICs2Niw3IEBAIFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3Vy
Y2VBc05vZGUgPSBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNsYXNzZXMsIHRvb2x0aXBUCiAK
IC8qKgogICogQHBhcmFtIHtzdHJpbmd9IHVybAotICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1i
ZXIKKyAqIEBwYXJhbSB7bnVtYmVyPX0gbGluZU51bWJlcgogICovCiBXZWJJbnNwZWN0b3IuZm9y
bWF0TGlua1RleHQgPSBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIpIHt9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2dlbmVyYXRlLXByb3RvY29sLWV4dGVybnMKaW5kZXggYTIz
OWZjYWU4YWM4MDZhMjliMjBjMTU0MGNiMDc5NjgxZWI5M2YzNy4uMjk5ZDlmYzY4MjQ1MGU4NzRj
N2IyZWVkMjI5ZTI1NDJhN2U2ZGM0YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2dlbmVyYXRlLXByb3RvY29sLWV4dGVybnMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2dlbmVyYXRlLXByb3RvY29sLWV4dGVybnMKQEAgLTQ2LDYgKzQ2LDEyIEBAIGpzb25fYXBp
ID0gZXZhbChqc29uX3N0cmluZylbImRvbWFpbnMiXQogCiBvdXRwdXRfZmlsZSA9IG9wZW4ob3V0
cHV0X3BhdGgsICJ3IikKIAorb3V0cHV0X2ZpbGUud3JpdGUoIiIiCit2YXIgUHJvdG9jb2wgPSB7
fTsKKy8qKiBAdHlwZWRlZiB7c3RyaW5nfSovCitQcm90b2NvbC5FcnJvcjsKKyIiIikKKwogdHlw
ZV90cmFpdHMgPSB7CiAgICAgImFueSI6ICIqIiwKICAgICAic3RyaW5nIjogInN0cmluZyIsCkBA
IC0xMjIsNyArMTI4LDcgQEAgZm9yIGRvbWFpbiBpbiBqc29uX2FwaToKICAgICAgICAgICAgICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoaW5fcGFy
YW1bIm5hbWUiXSkKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCIg
KiBAcGFyYW0geyVzfSAlc1xuIiAlIChwYXJhbV90eXBlKGRvbWFpbl9uYW1lLCBpbl9wYXJhbSks
IGluX3BhcmFtWyJuYW1lIl0pKQotICAgICAgICAgICAgcmV0dXJucyA9IFtdCisgICAgICAgICAg
ICByZXR1cm5zID0gWyI/UHJvdG9jb2wuRXJyb3IiXQogICAgICAgICAgICAgaWYgKCJyZXR1cm5z
IiBpbiBjb21tYW5kKToKICAgICAgICAgICAgICAgICBmb3Igb3V0X3BhcmFtIGluIGNvbW1hbmRb
InJldHVybnMiXToKICAgICAgICAgICAgICAgICAgICAgaWYgKCJvcHRpb25hbCIgaW4gb3V0X3Bh
cmFtKToK
</data>
<flag name="review"
          id="107854"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>