<?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>59476</bug_id>
          
          <creation_ts>2011-04-26 11:41:57 -0700</creation_ts>
          <short_desc>Web Inspector: breakpoints set in original and formatted scripts are messed up after navigation.</short_desc>
          <delta_ts>2011-04-29 06:15:58 -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>
          <dependson>59792</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</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>392597</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-26 11:41:57 -0700</bug_when>
    <thetext>Web Inspector: breakpoints set in original and formatted scripts are messed up after navigation.

Also, sometimes breakpoints disappear from DebuggerPresentationModel (removed from _breakpointsWithoutSourceFile and never added to sourceFile.breakpoints).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392601</commentid>
    <comment_count>1</comment_count>
      <attachid>91134</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-26 11:46:26 -0700</bug_when>
    <thetext>Created attachment 91134
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393523</commentid>
    <comment_count>2</comment_count>
      <attachid>91275</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-27 06:28:49 -0700</bug_when>
    <thetext>Created attachment 91275
Add test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394406</commentid>
    <comment_count>3</comment_count>
      <attachid>91485</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-28 06:53:37 -0700</bug_when>
    <thetext>Created attachment 91485
Remove all breakpoints when formatting mode is changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394538</commentid>
    <comment_count>4</comment_count>
      <attachid>91485</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-28 10:46:14 -0700</bug_when>
    <thetext>Comment on attachment 91485
Remove all breakpoints when formatting mode is changed.

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:346
&gt; +        if (callback)

Why did you make this call synchronous?

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:478
&gt; +        for (var id in this._sourceFileIdToSourceFrame) {

Is this change related?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395205</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-29 04:26:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 91485 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91485&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:346
&gt; &gt; +        if (callback)
&gt; 
&gt; Why did you make this call synchronous?

Right after the call to WebInspector.debuggerModel.removeBreakpoint breakpoint is left in inconsistent state - it still have debuggerId. After dpm.reset breakpoint will be in that state forever. 
From the other side, since the order of calls is preserved, the calls are effectively synchronous, and it is safe to ignore the callback here.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:478
&gt; &gt; +        for (var id in this._sourceFileIdToSourceFrame) {
&gt; 
&gt; Is this change related?

It&apos;s a drive-by fix for minor problem with source frames that are loaded too late (after reset when there are no source files).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395207</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-29 04:36:23 -0700</bug_when>
    <thetext>Committed r85315: &lt;http://trac.webkit.org/changeset/85315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395237</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-29 06:15:58 -0700</bug_when>
    <thetext>Committed r85321: &lt;http://trac.webkit.org/changeset/85321&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91134</attachid>
            <date>2011-04-26 11:46:26 -0700</date>
            <delta_ts>2011-04-27 06:28:49 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34209</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YmM4ZGY2Li5kNDhkZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTEtMDQtMjYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogYnJlYWtwb2ludHMgc2V0IGluIG9yaWdpbmFsIGFuZCBmb3JtYXR0ZWQgc2NyaXB0
cyBhcmUgbWVzc2VkIHVwIGFmdGVyIG5hdmlnYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQ3NgorCisgICAgICAgIEludHJvZHVjZSBTb3Vy
Y2VGaWxlQnJlYWtwb2ludHMgaGVscGVyIGNsYXNzIHRoYXQgbWFuYWdlcyBicmVha3BvaW50cyBp
biBhIHNpbmdsZSBzb3VyY2UgZmlsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5yZW1vdmVCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5h
ZGRCcmVha3BvaW50UmVzb2x2ZWRMaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZXNvbHZlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9kZWJ1Z2dlcldhc0Vu
YWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLl9hZGRTY3JpcHQuZGlkUmVxdWVzdFNvdXJjZU1hcHBpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9hZGRTY3Jp
cHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLl91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnRvZ2dsZUZvcm1hdFNv
dXJjZUZpbGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS5icmVha3BvaW50c0ZvclNvdXJjZUZpbGVJZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2lu
dC5kaWRSZXF1ZXN0U291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtw
b2ludEVuYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmZpbmRCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5f
YnJlYWtwb2ludEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlbW92ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9yZXN0b3JlQnJlYWtw
b2ludHNGcm9tU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLl9zYXZlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9jcmVhdGVTb3VyY2VG
aWxlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQnJl
YWtwb2ludC5wcm90b3R5cGUubG9hZFNuaXBwZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUuX3NvdXJjZUZpbGVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdC5vcHRpb25Db21wYXJl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9hZGRPcHRp
b25Ub0ZpbGVzU2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVha3BvaW50cyk6IEhlbHBlciBjbGFzcyBm
b3IgbWFuYWdpbmcgYnJlYWtwb2ludHMgc2V0IGluIG9yaWdpbmFsL2Zvcm1hdHRlZCBzY3JpcHRz
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVha3BvaW50cy5wcm90b3R5cGUu
c2V0SXNGb3JtYXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVha3Bv
aW50cy5wcm90b3R5cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291
cmNlRmlsZUJyZWFrcG9pbnRzLnByb3RvdHlwZS5fc2V0QnJlYWtwb2ludCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlRmlsZUJyZWFrcG9pbnRzLnByb3RvdHlwZS5yZW1vdmVCcmVha3Bv
aW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMucHJvdG90
eXBlLl9yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxl
QnJlYWtwb2ludHMucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLl9zZXRCcmVha3BvaW50SW5EZWJ1Z2dlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZUJyZWFrcG9pbnRzLnByb3RvdHlwZS5fYnJl
YWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtw
b2ludHMucHJvdG90eXBlLmJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLnNlcmlhbGl6ZUJyZWFrcG9pbnRzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLl9zZXJpYWxp
emVCcmVha3BvaW50KToKKwogMjAxMS0wNC0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByODQ4NzcgYW5kIFN0eWxl
UmFyZUluaGVyaXRlZERhdGEuY3BwIGNoYW5nZXMgb2Ygcjg0ODkyLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IGEzM2Q2
OWIuLjY1YzVmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAgLTMyLDYgKzMyLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxz
ID0ge307CiAgICAgdGhpcy5fc2NyaXB0cyA9IHt9OworICAgIHRoaXMuX2JyZWFrcG9pbnRSZXNv
bHZlZExpc3RlbmVycyA9IHt9OwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFp
bkRpc3BhdGNoZXIoIkRlYnVnZ2VyIiwgbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRpc3BhdGNo
ZXIodGhpcykpOwogfQpAQCAtNDMsNyArNDQsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMgPSB7CiAgICAgRGVidWdnZXJSZXN1bWVkOiAiZGVidWdnZXItcmVzdW1lZCIsCiAg
ICAgUGFyc2VkU2NyaXB0U291cmNlOiAicGFyc2VkLXNjcmlwdC1zb3VyY2UiLAogICAgIEZhaWxl
ZFRvUGFyc2VTY3JpcHRTb3VyY2U6ICJmYWlsZWQtdG8tcGFyc2Utc2NyaXB0LXNvdXJjZSIsCi0g
ICAgQnJlYWtwb2ludFJlc29sdmVkOiAiYnJlYWtwb2ludC1yZXNvbHZlZCIsCiAgICAgUmVzZXQ6
ICJyZXNldCIKIH0KIApAQCAtNzUsNiArNzUsOCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUgPSB7CiAKICAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbih1cmwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBjYWxsYmFjaykKICAgICB7CisgICAgICAg
IGlmICh0eXBlb2YgY29sdW1uTnVtYmVyICE9PSAibnVtYmVyIikKKyAgICAgICAgICAgIGNvbnNv
bGUubG9nKG5ldyBFcnJvcigpLnN0YWNrKTsKICAgICAgICAgLy8gQWRqdXN0IGNvbHVtbiBpZiBu
ZWVkZWQuCiAgICAgICAgIHZhciBtaW5Db2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBmb3IgKHZh
ciBpZCBpbiB0aGlzLl9zY3JpcHRzKSB7CkBAIC0xMDQsMTIgKzEwNiwyMCBAQCBXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICByZW1vdmVCcmVha3BvaW50OiBm
dW5jdGlvbihicmVha3BvaW50SWQsIGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX2JyZWFrcG9pbnRSZXNvbHZlZExpc3RlbmVyc1ticmVha3BvaW50SWRdOwogICAgICAgICBE
ZWJ1Z2dlckFnZW50LnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBjYWxsYmFjayk7CiAg
ICAgfSwKIAorICAgIGFkZEJyZWFrcG9pbnRSZXNvbHZlZExpc3RlbmVyOiBmdW5jdGlvbihicmVh
a3BvaW50SWQsIGhhbmRsZXIsIHRoaXNPYmplY3QpCisgICAgeworICAgICAgICB0aGlzLl9icmVh
a3BvaW50UmVzb2x2ZWRMaXN0ZW5lcnNbYnJlYWtwb2ludElkXSA9IHsgaGFuZGxlcjogaGFuZGxl
ciwgdGhpc09iamVjdDogdGhpc09iamVjdCB9OworICAgIH0sCisKICAgICBfYnJlYWtwb2ludFJl
c29sdmVkOiBmdW5jdGlvbihicmVha3BvaW50SWQsIGxvY2F0aW9uKQogICAgIHsKLSAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
RXZlbnRzLkJyZWFrcG9pbnRSZXNvbHZlZCwge2JyZWFrcG9pbnRJZDogYnJlYWtwb2ludElkLCBs
b2NhdGlvbjogbG9jYXRpb259KTsKKyAgICAgICAgdmFyIGxpc3RlbmVyID0gdGhpcy5fYnJlYWtw
b2ludFJlc29sdmVkTGlzdGVuZXJzW2JyZWFrcG9pbnRJZF07CisgICAgICAgIGlmIChsaXN0ZW5l
cikKKyAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZXIuY2FsbChsaXN0ZW5lci50aGlzT2JqZWN0
LCBicmVha3BvaW50SWQsIGxvY2F0aW9uKTsKICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCAxMDZkNjJmLi45ODZiNWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zMiwxNiArMzIsMTYgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhp
cy5fc291cmNlRmlsZXMgPSB7fTsKICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdOwotICAgIHRoaXMu
X2JyZWFrcG9pbnRzQnlEZWJ1Z2dlcklkID0ge307Ci0gICAgdGhpcy5fYnJlYWtwb2ludHNXaXRo
b3V0U291cmNlRmlsZSA9IHt9OworICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307CiAKICAgICB0
aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107CiAgICAgdGhpcy5fc2VsZWN0ZWRDYWxs
RnJhbWVJbmRleCA9IDA7CiAKKyAgICB0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcyA9IGZhbHNlOwor
CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJXYXNFbmFibGVkLCB0aGlzLl9kZWJ1
Z2dlcldhc0VuYWJsZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNj
cmlwdFNvdXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkV2ZW50cy5GYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0aGlzLl9mYWlsZWRUb1Bh
cnNlU2NyaXB0U291cmNlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3Bv
aW50UmVzb2x2ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZCwgdGhpcyk7CiAgICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0aGlz
KTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclJlc3VtZWQsIHRoaXMuX2RlYnVn
Z2VyUmVzdW1lZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUmVzZXQsIHRoaXMu
X2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwpAQCAtNjMsNiArNjMsOSBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgX2RlYnVnZ2VyV2FzRW5hYmxlZDog
ZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgZm9yICh2YXIgc291cmNlRmlsZUlkIGluIHRoaXMu
X2JyZWFrcG9pbnRzKQorICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNbc291cmNlRmlsZUlk
XS5jbGVhcigpOworICAgICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9OwogICAgICAgICB0aGlz
Ll9yZXN0b3JlQnJlYWtwb2ludHNGcm9tU2V0dGluZ3MoKTsKICAgICB9LAogCkBAIC0xMDgsMjgg
KzExMSwyMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBzb3VyY2VGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlKHNvdXJjZUZpbGVJZCwgc2NyaXB0LCBjb250ZW50Q2hhbmdlZC5iaW5kKHRoaXMpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc291cmNlRmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRm9y
bWF0dGVkU291cmNlRmlsZShzb3VyY2VGaWxlSWQsIHNjcmlwdCwgY29udGVudENoYW5nZWQuYmlu
ZCh0aGlzKSwgdGhpcy5fZm9ybWF0dGVyKCkpOwotICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tz
b3VyY2VGaWxlSWRdID0gc291cmNlRmlsZTsKIAotICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtw
b2ludHMoc291cmNlRmlsZSk7CisgICAgICAgIHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSB0
aGlzLl9icmVha3BvaW50c1tzb3VyY2VGaWxlSWRdOworICAgICAgICBpZiAoc291cmNlRmlsZUJy
ZWFrcG9pbnRzKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0U291cmNlTWFwcGlu
ZyhtYXBwaW5nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNvdXJjZUZpbGVCcmVh
a3BvaW50cy5zZXRJc0Zvcm1hdHRlZCh0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcywgbWFwcGluZyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzb3VyY2VGaWxlLnJlcXVlc3RTb3VyY2VNYXBw
aW5nKGRpZFJlcXVlc3RTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykpOworICAgICAgICB9CiAKKyAg
ICAgICAgdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGU7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3VyY2VGaWxlQWRkZWQsIHNvdXJjZUZpbGUpOwogICAg
IH0sCiAKLSAgICBfcmVzdG9yZUJyZWFrcG9pbnRzOiBmdW5jdGlvbihzb3VyY2VGaWxlKQotICAg
IHsKLSAgICAgICAgdmFyIHBlbmRpbmdCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzV2l0
aG91dFNvdXJjZUZpbGVbc291cmNlRmlsZS5pZF07Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBw
ZW5kaW5nQnJlYWtwb2ludHMgJiYgaSA8IHBlbmRpbmdCcmVha3BvaW50cy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnREYXRhID0gcGVuZGluZ0JyZWFrcG9pbnRzW2ld
OwotICAgICAgICAgICAgaWYgKCJkZWJ1Z2dlcklkIiBpbiBicmVha3BvaW50RGF0YSkgewotICAg
ICAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5QcmVzZW50YXRp
b25CcmVha3BvaW50KHNvdXJjZUZpbGUsIGJyZWFrcG9pbnREYXRhLmxpbmVOdW1iZXIsIGJyZWFr
cG9pbnREYXRhLmNvbmRpdGlvbiwgYnJlYWtwb2ludERhdGEuZW5hYmxlZCk7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fYmluZERlYnVnZ2VySWQoYnJlYWtwb2ludCwgYnJlYWtwb2ludERhdGEuZGVi
dWdnZXJJZCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9p
bnQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5zZXRCcmVha3Bv
aW50KHNvdXJjZUZpbGUuaWQsIGJyZWFrcG9pbnREYXRhLmxpbmVOdW1iZXIsIGJyZWFrcG9pbnRE
YXRhLmNvbmRpdGlvbiwgYnJlYWtwb2ludERhdGEuZW5hYmxlZCwgdHJ1ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNvdXJjZUZpbGVbc291cmNl
RmlsZS5pZF07Ci0gICAgfSwKLQogICAgIGNhbkVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNv
dXJjZUZpbGVJZCkKICAgICB7CiAgICAgICAgIGlmICghUHJlZmVyZW5jZXMuY2FuRWRpdFNjcmlw
dFNvdXJjZSB8fCB0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcykKQEAgLTE2OCwxMiArMTYzLDE1IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIF91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJ
ZCwgb2xkU291cmNlLCBuZXdTb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgc291cmNlRmlsZSA9
IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CisgICAgICAgIHZhciBzb3VyY2VGaWxl
QnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50c1tzb3VyY2VGaWxlSWRdOworICAgICAgICBp
ZiAoIXNvdXJjZUZpbGVCcmVha3BvaW50cykKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAvLyBDbGVhciBhbmQgcmUtY3JlYXRlIGJyZWFrcG9pbnRzIGFjY29yZGluZyB0byB0ZXh0IGRp
ZmYuCiAgICAgICAgIHZhciBkaWZmID0gQXJyYXkuZGlmZihvbGRTb3VyY2Uuc3BsaXQoIlxuIiks
IG5ld1NvdXJjZS5zcGxpdCgiXG4iKSk7Ci0gICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4g
c291cmNlRmlsZS5icmVha3BvaW50cykgewotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBz
b3VyY2VGaWxlLmJyZWFrcG9pbnRzW2xpbmVOdW1iZXJdOworICAgICAgICB2YXIgYnJlYWtwb2lu
dHMgPSBzb3VyY2VGaWxlQnJlYWtwb2ludHMuYnJlYWtwb2ludHMoKTsKKyAgICAgICAgZm9yICh2
YXIgbGluZU51bWJlciBpbiBicmVha3BvaW50cykgeworICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBicmVha3BvaW50c1tsaW5lTnVtYmVyXTsKIAogICAgICAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSBicmVha3BvaW50LmxpbmVOdW1iZXI7CiAgICAgICAgICAgICB0aGlzLnJlbW92ZUJyZWFr
cG9pbnQoc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKQEAgLTIwMSwxMiArMTk5LDYgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIHsK
ICAgICAgICAgdGhpcy5fZm9ybWF0U291cmNlRmlsZXMgPSAhdGhpcy5fZm9ybWF0U291cmNlRmls
ZXM7CiAKLSAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fc291cmNlRmlsZXMpIHsKLSAgICAg
ICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbaWRdOwotICAgICAgICAg
ICAgZm9yICh2YXIgbGluZSBpbiBzb3VyY2VGaWxlLmJyZWFrcG9pbnRzKQotICAgICAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoc291cmNlRmlsZS5icmVha3Bv
aW50c1tsaW5lXSk7Ci0gICAgICAgIH0KLQogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl9t
ZXNzYWdlczsKICAgICAgICAgdGhpcy5fcmVzZXQoKTsKIApAQCAtMjcyLDExMyArMjY0LDU3IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIGJyZWFrcG9pbnRzRm9yU291cmNlRmlsZUlkOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCiAg
ICAgewotICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuc291cmNlRmlsZShzb3VyY2VGaWxl
SWQpOwotICAgICAgICBpZiAoIXNvdXJjZUZpbGUpCi0gICAgICAgICAgICByZXR1cm4gW107Ci0g
ICAgICAgIHZhciBicmVha3BvaW50cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVy
IGluIHNvdXJjZUZpbGUuYnJlYWtwb2ludHMpCi0gICAgICAgICAgICBicmVha3BvaW50cy5wdXNo
KHNvdXJjZUZpbGUuYnJlYWtwb2ludHNbbGluZU51bWJlcl0pOwotICAgICAgICByZXR1cm4gYnJl
YWtwb2ludHM7Ci0gICAgfSwKLQotICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZp
bGVJZCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkLCBkb250U2F2ZUJyZWFrcG9pbnRz
KQotICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3Vy
Y2VGaWxlSWRdOwogICAgICAgICBpZiAoIXNvdXJjZUZpbGUpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gW107CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkJyZWFrcG9pbnQoc291cmNlRmlsZSwgbGluZU51bWJl
ciwgY29uZGl0aW9uLCBlbmFibGVkKTsKLSAgICAgICAgaWYgKCFlbmFibGVkKSB7Ci0gICAgICAg
ICAgICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBpZiAo
IWRvbnRTYXZlQnJlYWtwb2ludHMpCi0gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUJyZWFrcG9p
bnRzKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIHNvdXJj
ZUZpbGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF07CisgICAg
ICAgIGlmICghc291cmNlRmlsZUJyZWFrcG9pbnRzKQorICAgICAgICAgICAgcmV0dXJuIFtdOwog
Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgaWYgKCFkb250U2F2
ZUJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwor
ICAgICAgICB2YXIgcHJlc2VudGF0aW9uQnJlYWtwb2ludHMgPSBbXTsKKyAgICAgICAgdmFyIGJy
ZWFrcG9pbnRzID0gc291cmNlRmlsZUJyZWFrcG9pbnRzLmJyZWFrcG9pbnRzKCk7CisgICAgICAg
IGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIHZhciBi
cmVha3BvaW50ID0gYnJlYWtwb2ludHNbbGluZU51bWJlcl07CisgICAgICAgICAgICBicmVha3Bv
aW50Ll9wcmVzZW50YXRpb25CcmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5QcmVzZW50YXRp
b25CcmVha3BvaW50KHNvdXJjZUZpbGUsIGJyZWFrcG9pbnQubGluZU51bWJlciwgYnJlYWtwb2lu
dC5jb25kaXRpb24sIGJyZWFrcG9pbnQuZW5hYmxlZCk7CisgICAgICAgICAgICBwcmVzZW50YXRp
b25CcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnQpOwog
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnRJbkRlYnVnZ2VyKGJyZWFrcG9p
bnQsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICByZXR1cm4gcHJlc2VudGF0aW9uQnJl
YWtwb2ludHM7CiAgICAgfSwKIAotICAgIF9zZXRCcmVha3BvaW50SW5EZWJ1Z2dlcjogZnVuY3Rp
b24oYnJlYWtwb2ludCwgY2FsbGJhY2spCisgICAgc2V0QnJlYWtwb2ludDogZnVuY3Rpb24oc291
cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCiAgICAgewotICAgICAg
ICBmdW5jdGlvbiBkaWRTZXRCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgbG9jYXRpb25zKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnRJZCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuX2JpbmREZWJ1Z2dlcklkKGJyZWFrcG9pbnQsIGJy
ZWFrcG9pbnRJZCk7Ci0gICAgICAgICAgICBicmVha3BvaW50LmxvY2F0aW9uID0gbG9jYXRpb25z
WzBdOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGVCcmVh
a3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF07CisgICAgICAgIGlmIChz
b3VyY2VGaWxlQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIHNvdXJjZUZpbGVCcmVha3BvaW50
cy5zZXRCcmVha3BvaW50KGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CisgICAgICAg
ICAgICB0aGlzLl9zYXZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbc291cmNl
RmlsZUlkXTsKICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZU1hcHBpbmcobWFwcGlu
ZykKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbWFwcGluZy5zb3VyY2VM
aW5lVG9TY3JpcHRMb2NhdGlvbihicmVha3BvaW50LmxpbmVOdW1iZXIpOwotICAgICAgICAgICAg
dmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvclNvdXJjZUlE
KGxvY2F0aW9uLnNvdXJjZUlEKTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQuc291cmNlVVJMKQot
ICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNldEJyZWFrcG9pbnQo
c2NyaXB0LnNvdXJjZVVSTCwgbG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVt
YmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGxvY2F0aW9uLnNvdXJjZUlEID0g
c2NyaXB0LnNvdXJjZUlEOwotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLnNldEJyZWFrcG9pbnRCeVNvdXJjZUlkKGxvY2F0aW9uLCBicmVha3BvaW50LmNvbmRpdGlv
biwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGVCcmVha3BvaW50cyhbXSwgc291cmNlRmlsZUlkLCBzb3VyY2VGaWxlLnVybCwgc291cmNlRmls
ZUlkLCB0aGlzLl9icmVha3BvaW50QWRkZWQuYmluZCh0aGlzKSwgdGhpcy5fYnJlYWtwb2ludFJl
bW92ZWQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBzb3VyY2VGaWxlQnJlYWtwb2ludHMuc2V0
SXNGb3JtYXR0ZWQodGhpcy5fZm9ybWF0U291cmNlRmlsZXMsIG1hcHBpbmcpOworICAgICAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNbc291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGVCcmVha3BvaW50
czsKKyAgICAgICAgICAgIHNvdXJjZUZpbGVCcmVha3BvaW50cy5zZXRCcmVha3BvaW50KGxpbmVO
dW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CisgICAgICAgICAgICB0aGlzLl9zYXZlQnJlYWtw
b2ludHMoKTsKICAgICAgICAgfQotICAgICAgICBicmVha3BvaW50LnNvdXJjZUZpbGUucmVxdWVz
dFNvdXJjZU1hcHBpbmcoZGlkUmVxdWVzdFNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CisgICAg
ICAgIHNvdXJjZUZpbGUucmVxdWVzdFNvdXJjZU1hcHBpbmcoZGlkUmVxdWVzdFNvdXJjZU1hcHBp
bmcuYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIF9yZW1vdmVCcmVha3BvaW50RnJvbURlYnVn
Z2VyOiBmdW5jdGlvbihicmVha3BvaW50LCBjYWxsYmFjaykKKyAgICBzZXRCcmVha3BvaW50RW5h
YmxlZDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBlbmFibGVkKQogICAgIHsK
LSAgICAgICAgaWYgKCEoImRlYnVnZ2VySWQiIGluIGJyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAg
ICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgdmFy
IHNvdXJjZUZpbGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF07
CisgICAgICAgIGlmICghc291cmNlRmlsZUJyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZGlkUmVtb3ZlQnJlYWtwb2ludCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VuYmluZERlYnVnZ2VySWQoYnJlYWtwb2ludCk7
Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsK
LSAgICAgICAgfQotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5yZW1vdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnQuZGVidWdnZXJJZCwgZGlkUmVtb3ZlQnJlYWtwb2ludC5iaW5kKHRo
aXMpKTsKLSAgICB9LAogCi0gICAgX2JpbmREZWJ1Z2dlcklkOiBmdW5jdGlvbihicmVha3BvaW50
LCBkZWJ1Z2dlcklkKQotICAgIHsKLSAgICAgICAgYnJlYWtwb2ludC5kZWJ1Z2dlcklkID0gZGVi
dWdnZXJJZDsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNCeURlYnVnZ2VySWRbZGVidWdnZXJJ
ZF0gPSBicmVha3BvaW50OwotICAgIH0sCi0KLSAgICBfdW5iaW5kRGVidWdnZXJJZDogZnVuY3Rp
b24oYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3BvaW50c0J5
RGVidWdnZXJJZFticmVha3BvaW50LmRlYnVnZ2VySWRdOwotICAgICAgICBkZWxldGUgYnJlYWtw
b2ludC5kZWJ1Z2dlcklkOwotICAgIH0sCi0KLSAgICBzZXRCcmVha3BvaW50RW5hYmxlZDogZnVu
Y3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBlbmFibGVkKQotICAgIHsKLSAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSB0aGlzLmZpbmRCcmVha3BvaW50KHNvdXJjZUZpbGVJZCwgbGluZU51
bWJlcik7CisgICAgICAgIHZhciBicmVha3BvaW50ID0gc291cmNlRmlsZUJyZWFrcG9pbnRzLmJy
ZWFrcG9pbnRzKClbbGluZU51bWJlcl07CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludFJl
bW92ZWQsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGJyZWFrcG9pbnQuZW5hYmxlZCA9IGVuYWJs
ZWQ7Ci0KLSAgICAgICAgZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBicmVha3BvaW50KTsKLSAg
ICAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFlbmFibGVkKQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludEZyb21EZWJ1
Z2dlcihicmVha3BvaW50LCBhZnRlclVwZGF0ZS5jYWxsKHRoaXMpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludEluRGVidWdnZXIoYnJlYWtwb2ludCwgYWZ0
ZXJVcGRhdGUuYmluZCh0aGlzKSk7CisgICAgICAgIHNvdXJjZUZpbGVCcmVha3BvaW50cy5yZW1v
dmVCcmVha3BvaW50KGxpbmVOdW1iZXIpOworICAgICAgICBzb3VyY2VGaWxlQnJlYWtwb2ludHMu
c2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwgZW5hYmxlZCk7
CisgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwogICAgIH0sCiAKICAgICB1cGRhdGVC
cmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwg
ZW5hYmxlZCkKQEAgLTM4OSwxMTcgKzMyNSw2MiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICByZW1vdmVCcmVha3BvaW50OiBmdW5j
dGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCiAgICAgewotICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IHRoaXMuZmluZEJyZWFrcG9pbnQoc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKLSAg
ICAgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICB2YXIgc291cmNlRmlsZUJyZWFrcG9pbnRz
ID0gdGhpcy5fYnJlYWtwb2ludHNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgaWYgKCFzb3VyY2VG
aWxlQnJlYWtwb2ludHMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50UmVtb3Zl
ZChicmVha3BvaW50KTsKLSAgICAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwotICAg
ICAgICB9Ci0gICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoYnJlYWtw
b2ludCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIHNvdXJjZUZpbGVCcmVha3BvaW50
cy5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLl9zYXZlQnJlYWtw
b2ludHMoKTsKICAgICB9LAogCiAgICAgZmluZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZp
bGVJZCwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5z
b3VyY2VGaWxlKHNvdXJjZUZpbGVJZCk7Ci0gICAgICAgIGlmIChzb3VyY2VGaWxlKQotICAgICAg
ICAgICAgcmV0dXJuIHNvdXJjZUZpbGUuYnJlYWtwb2ludHNbbGluZU51bWJlcl07CisgICAgICAg
IHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50c1tzb3VyY2VGaWxl
SWRdOworICAgICAgICByZXR1cm4gc291cmNlRmlsZUJyZWFrcG9pbnRzICYmIHNvdXJjZUZpbGVC
cmVha3BvaW50cy5icmVha3BvaW50cygpW2xpbmVOdW1iZXJdOwogICAgIH0sCiAKICAgICBfYnJl
YWtwb2ludEFkZGVkOiBmdW5jdGlvbihicmVha3BvaW50KQogICAgIHsKLSAgICAgICAgdmFyIHNv
dXJjZUZpbGUgPSBicmVha3BvaW50LnNvdXJjZUZpbGU7Ci0gICAgICAgIGlmICghc291cmNlRmls
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0U291
cmNlTWFwcGluZyhtYXBwaW5nKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZWZpbmUgbGlu
ZSBudW1iZXIgYmFzZWQgb24gcmVzb2x2ZWQgbG9jYXRpb24uCi0gICAgICAgICAgICBpZiAoYnJl
YWtwb2ludC5sb2NhdGlvbikKLSAgICAgICAgICAgICAgICBicmVha3BvaW50LmxpbmVOdW1iZXIg
PSBtYXBwaW5nLnNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMaW5lKGJyZWFrcG9pbnQubG9jYXRpb24p
OwotCi0gICAgICAgICAgICB2YXIgZXhpc3RpbmdCcmVha3BvaW50ID0gdGhpcy5maW5kQnJlYWtw
b2ludChzb3VyY2VGaWxlLmlkLCBicmVha3BvaW50LmxpbmVOdW1iZXIpOwotICAgICAgICAgICAg
aWYgKGV4aXN0aW5nQnJlYWtwb2ludCkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHNo
b3cgbW9yZSB0aGFuIG9uZSBicmVha3BvaW50IG9uIGEgc2luZ2xlIHNvdXJjZSBmaWxlIGxpbmUu
Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludEZyb21EZWJ1Z2dlcihicmVh
a3BvaW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzb3VyY2VGaWxlLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnQubGluZU51bWJlcl0gPSBicmVh
a3BvaW50OwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwg
YnJlYWtwb2ludCk7CisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNb
YnJlYWtwb2ludC5zb3VyY2VGaWxlSWRdOworICAgICAgICBpZiAoc291cmNlRmlsZSkgeworICAg
ICAgICAgICAgYnJlYWtwb2ludC5fcHJlc2VudGF0aW9uQnJlYWtwb2ludCA9IG5ldyBXZWJJbnNw
ZWN0b3IuUHJlc2VudGF0aW9uQnJlYWtwb2ludChzb3VyY2VGaWxlLCBicmVha3BvaW50LmxpbmVO
dW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBicmVha3BvaW50LmVuYWJsZWQpOworICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwgYnJlYWtwb2ludC5fcHJl
c2VudGF0aW9uQnJlYWtwb2ludCk7CiAgICAgICAgIH0KLSAgICAgICAgc291cmNlRmlsZS5yZXF1
ZXN0U291cmNlTWFwcGluZyhkaWRSZXF1ZXN0U291cmNlTWFwcGluZy5iaW5kKHRoaXMpKTsKICAg
ICB9LAogCiAgICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBmdW5jdGlvbihicmVha3BvaW50KQogICAg
IHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSBicmVha3BvaW50LnNvdXJjZUZpbGU7Ci0gICAg
ICAgIGlmIChzb3VyY2VGaWxlLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnQubGluZU51bWJlcl0gPT09
IGJyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGNhbiBhbHJlYWR5IGJlIGEgbmV3
ZXIgYnJlYWtwb2ludDsKLSAgICAgICAgICAgIGRlbGV0ZSBzb3VyY2VGaWxlLmJyZWFrcG9pbnRz
W2JyZWFrcG9pbnQubGluZU51bWJlcl07Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMu
QnJlYWtwb2ludFJlbW92ZWQsIGJyZWFrcG9pbnQpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IF9icmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFy
IGRlYnVnZ2VySWQgPSBldmVudC5kYXRhLmJyZWFrcG9pbnRJZDsKLSAgICAgICAgaWYgKCEoZGVi
dWdnZXJJZCBpbiB0aGlzLl9icmVha3BvaW50c0J5RGVidWdnZXJJZCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludHNCeURlYnVn
Z2VySWRbZGVidWdnZXJJZF07Ci0KLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQoYnJl
YWtwb2ludCk7Ci0gICAgICAgIGJyZWFrcG9pbnQubG9jYXRpb24gPSBldmVudC5kYXRhLmxvY2F0
aW9uOwotICAgICAgICB0aGlzLl9icmVha3BvaW50QWRkZWQoYnJlYWtwb2ludCk7CisgICAgICAg
IGlmIChicmVha3BvaW50Ll9wcmVzZW50YXRpb25CcmVha3BvaW50KQorICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCBicmVha3BvaW50Ll9wcmVzZW50YXRp
b25CcmVha3BvaW50KTsKICAgICB9LAogCiAgICAgX3Jlc3RvcmVCcmVha3BvaW50c0Zyb21TZXR0
aW5nczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmJyZWFrcG9pbnRzOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgYnJlYWtwb2ludERh
dGEgPSBicmVha3BvaW50c1tpXTsKKyAgICAgICAgdmFyIHBlcnNpc3RlbnRCcmVha3BvaW50cyA9
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5icmVha3BvaW50czsKKyAgICAgICAgdmFyIGJyZWFrcG9p
bnRzID0ge307CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVyc2lzdGVudEJyZWFrcG9p
bnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludERhdGEgPSBwZXJz
aXN0ZW50QnJlYWtwb2ludHNbaV07CiAgICAgICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gYnJl
YWtwb2ludERhdGEuc291cmNlRmlsZUlkOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VGaWxlSWQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIgc291cmNlRmlsZSA9
IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07Ci0gICAgICAgICAgICBpZiAoc291cmNl
RmlsZSkgewotICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChzb3VyY2VGaWxlSWQs
IGJyZWFrcG9pbnREYXRhLmxpbmVOdW1iZXIsIGJyZWFrcG9pbnREYXRhLmNvbmRpdGlvbiwgYnJl
YWtwb2ludERhdGEuZW5hYmxlZCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB2YXIgc291cmNlRmlsZUJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHNbc291cmNlRmlsZUlk
XTsKKyAgICAgICAgICAgIGlmICghc291cmNlRmlsZUJyZWFrcG9pbnRzKSB7CisgICAgICAgICAg
ICAgICAgc291cmNlRmlsZUJyZWFrcG9pbnRzID0gW107CisgICAgICAgICAgICAgICAgYnJlYWtw
b2ludHNbc291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGVCcmVha3BvaW50czsKICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gQWRkIGJyZWFrcG9pbnQgb25jZSBzb3VyY2UgZmlsZSBiZWNv
bWVzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgIHZhciBwZW5kaW5nQnJlYWtwb2ludHMgPSB0aGlz
Ll9icmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGVJZF07Ci0gICAgICAgICAg
ICBpZiAoIXBlbmRpbmdCcmVha3BvaW50cykgewotICAgICAgICAgICAgICAgIHBlbmRpbmdCcmVh
a3BvaW50cyA9IFtdOwotICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNv
dXJjZUZpbGVbc291cmNlRmlsZUlkXSA9IHBlbmRpbmdCcmVha3BvaW50czsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHBlbmRpbmdCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnREYXRhKTsK
KyAgICAgICAgICAgIHNvdXJjZUZpbGVCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnREYXRhKTsK
ICAgICAgICAgfQorICAgICAgICB2YXIgYWRkZWRIYW5kbGVyID0gdGhpcy5fYnJlYWtwb2ludEFk
ZGVkLmJpbmQodGhpcyk7CisgICAgICAgIHZhciByZW1vdmVkSGFuZGxlciA9IHRoaXMuX2JyZWFr
cG9pbnRSZW1vdmVkLmJpbmQodGhpcyk7CisgICAgICAgIGZvciAodmFyIHNvdXJjZUZpbGVJZCBp
biBicmVha3BvaW50cykKKyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZpbGVJ
ZF0gPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVha3BvaW50cyhicmVha3BvaW50c1tz
b3VyY2VGaWxlSWRdLCBzb3VyY2VGaWxlSWQsIHNvdXJjZUZpbGVJZCwgbnVsbCwgYWRkZWRIYW5k
bGVyLCByZW1vdmVkSGFuZGxlcik7CiAgICAgfSwKIAogICAgIF9zYXZlQnJlYWtwb2ludHM6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBzZXJpYWxpemVkQnJlYWtwb2ludHMgPSBbXTsK
LQotICAgICAgICAvLyBTdG9yZSBhZGRlZCBicmVha3BvaW50cy4KLSAgICAgICAgZm9yICh2YXIg
c291cmNlRmlsZUlkIGluIHRoaXMuX3NvdXJjZUZpbGVzKSB7Ci0gICAgICAgICAgICB2YXIgc291
cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07Ci0gICAgICAgICAgICBp
ZiAoIXNvdXJjZUZpbGUudXJsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIHNvdXJjZUZpbGUuYnJlYWtwb2ludHMpCi0gICAg
ICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnRzLnB1c2goc291cmNlRmlsZS5icmVha3Bv
aW50c1tsaW5lTnVtYmVyXS5zZXJpYWxpemUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBT
dG9yZSBub3QgYWRkZWQgYnJlYWtwb2ludHMuCi0gICAgICAgIGZvciAodmFyIHNvdXJjZUZpbGVJ
ZCBpbiB0aGlzLl9icmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlKQotICAgICAgICAgICAgc2Vy
aWFsaXplZEJyZWFrcG9pbnRzID0gc2VyaWFsaXplZEJyZWFrcG9pbnRzLmNvbmNhdCh0aGlzLl9i
cmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGVJZF0pOwotCi0gICAgICAgIC8v
IFNhbml0aXplIGRlYnVnZ2VyIGlkcy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJp
YWxpemVkQnJlYWtwb2ludHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkZWxldGUgc2VyaWFs
aXplZEJyZWFrcG9pbnRzW2ldLmRlYnVnZ2VySWQ7Ci0KKyAgICAgICAgZm9yICh2YXIgc291cmNl
RmlsZUlkIGluIHRoaXMuX2JyZWFrcG9pbnRzKQorICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHNbc291cmNlRmlsZUlkXS5zZXJpYWxpemVCcmVha3BvaW50cyhzZXJpYWxpemVkQnJlYWtwb2lu
dHMpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtwb2ludHMgPSBzZXJpYWxp
emVkQnJlYWtwb2ludHM7CiAgICAgfSwKIApAQCAtNTU2LDI3ICs0MzcsMjEgQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgX2NyZWF0
ZVNvdXJjZUZpbGVJZDogZnVuY3Rpb24oc291cmNlVVJMLCBzb3VyY2VJRCkKICAgICB7Ci0gICAg
ICAgIHZhciBwcmVmaXggPSB0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcyA/ICJkZW9iZnVzY2F0ZWQ6
IiA6ICIiOwotICAgICAgICByZXR1cm4gcHJlZml4ICsgKHNvdXJjZVVSTCB8fCBzb3VyY2VJRCk7
CisgICAgICAgIHJldHVybiBzb3VyY2VVUkwgfHwgc291cmNlSUQ7CiAgICAgfSwKIAogICAgIF9y
ZXNldDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fc291
cmNlRmlsZXMpIHsKLSAgICAgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmls
ZXNbaWRdOwotICAgICAgICAgICAgZm9yICh2YXIgbGluZSBpbiBzb3VyY2VGaWxlLmJyZWFrcG9p
bnRzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2lu
dHNXaXRob3V0U291cmNlRmlsZVtzb3VyY2VGaWxlLmlkXTsKLSAgICAgICAgICAgICAgICBpZiAo
IWJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzID0gW107Ci0g
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNvdXJjZUZpbGVbc291
cmNlRmlsZS5pZF0gPSBicmVha3BvaW50czsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgYnJlYWtwb2ludHMucHVzaChzb3VyY2VGaWxlLmJyZWFrcG9pbnRzW2xpbmVdLnNlcmlh
bGl6ZSgpKTsKKyAgICAgICAgICAgIHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSB0aGlzLl9i
cmVha3BvaW50c1tpZF07CisgICAgICAgICAgICBpZiAoc291cmNlRmlsZUJyZWFrcG9pbnRzICYm
ICF0aGlzLl9zb3VyY2VGaWxlc1tpZF0udXJsKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludHNbaWRdLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFr
cG9pbnRzW2lkXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Nv
dXJjZUZpbGVzID0ge307CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRzQnlEZWJ1Z2dlcklkID0ge307CiAgICAgfSwKIAogICAgIF9kZWJ1Z2dl
clJlc2V0OiBmdW5jdGlvbigpCkBAIC02MjQsMTcgKzQ5OSw2IEBAIFdlYkluc3BlY3Rvci5QcmVz
ZW50YXRpb25CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICB0aGlzLnNvdXJjZUZpbGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVz
dENvbnRlbnQuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdmFyIHNlcmlhbGl6ZWRCcmVha3BvaW50ID0ge307Ci0gICAgICAg
IHNlcmlhbGl6ZWRCcmVha3BvaW50LnNvdXJjZUZpbGVJZCA9IHRoaXMuc291cmNlRmlsZS5pZDsK
LSAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQubGluZU51bWJlciA9IHRoaXMubGluZU51bWJl
cjsKLSAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuY29uZGl0aW9uID0gdGhpcy5jb25kaXRp
b247Ci0gICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LmVuYWJsZWQgPSB0aGlzLmVuYWJsZWQ7
Ci0gICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LmRlYnVnZ2VySWQgPSB0aGlzLmRlYnVnZ2Vy
SWQ7Ci0gICAgICAgIHJldHVybiBzZXJpYWxpemVkQnJlYWtwb2ludDsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
aW5kZXggYzE3MGNkZS4uZWIwMGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTI3MSw2ICsyNzEsMTAgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGUgPSBsYXN0Vmlld2VkVVJMOwogICAgICAg
ICB9IGVsc2UgaWYgKHNvdXJjZUZpbGUudXJsID09PSBsYXN0Vmlld2VkVVJMKQogICAgICAgICAg
ICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHNvdXJjZUZpbGUuaWQpOwor
CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmJyZWFr
cG9pbnRzRm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGUuaWQpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5zaWRl
YmFyUGFuZXMuanNCcmVha3BvaW50cy5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnRzW2ldKTsKICAg
ICB9LAogCiAgICAgX2FkZE9wdGlvblRvRmlsZXNTZWxlY3Q6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJ
ZCkKQEAgLTI5MCw5ICsyOTQsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gYS5pc0NvbnRlbnRTY3JpcHQgPyAxIDogLTE7
CiAKICAgICAgICAgICAgIGlmIChhLmlzQ29udGVudFNjcmlwdCAmJiAhYi5pc0NvbnRlbnRTY3Jp
cHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IAorICAgICAgICAgICAgICAgIHJldHVybiAx
OwogICAgICAgICAgICAgaWYgKCFhLmlzQ29udGVudFNjcmlwdCAmJiBiLmlzQ29udGVudFNjcmlw
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICAgICAgICAgIHJldHVybiAt
MTsKIAogICAgICAgICAgICAgaWYgKGEudGV4dCA9PT0gYi50ZXh0KQogICAgICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtNTk3LDYgKzYwMSw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBldmVudC50YXJnZXQ7CiAg
ICAgICAgIHZhciBzb3VyY2VGaWxlSWQgPSBzb3VyY2VGcmFtZS5fc291cmNlRmlsZUlkOwogICAg
ICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNvdXJjZUZpbGUo
c291cmNlRmlsZUlkKTsKKyAgICAgICAgaWYgKCFzb3VyY2VGaWxlKQorICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHNvdXJjZUZpbGUubWVzc2FnZXM7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCAxYWM3
ZTgxLi43MjNkNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGaWxlLmpzCkBAIC00MCw3ICs0MCw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxl
ID0gZnVuY3Rpb24oaWQsIHNjcmlwdCwgY29udGVudENoYW5nZWREZWxlZ2F0ZSkKICAgICB0aGlz
LnVybCA9IHNjcmlwdC5zb3VyY2VVUkw7CiAgICAgdGhpcy5pc0NvbnRlbnRTY3JpcHQgPSBzY3Jp
cHQuaXNDb250ZW50U2NyaXB0OwogICAgIHRoaXMubWVzc2FnZXMgPSBbXTsKLSAgICB0aGlzLmJy
ZWFrcG9pbnRzID0ge307CiAKICAgICBpZiAodGhpcy5faGFzUGVuZGluZ1Jlc291cmNlKCkpCiAg
ICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5y
ZWxvYWQuYmluZCh0aGlzKSk7CkBAIC0zMjYsMyArMzI1LDE3MyBAQCBXZWJJbnNwZWN0b3IuRm9y
bWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5Gb3Jt
YXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291
cmNlTWFwcGluZy5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2lu
dHMgPSBmdW5jdGlvbihicmVha3BvaW50cywgc291cmNlRmlsZUlkLCB1cmwsIHNvdXJjZUlkLCBh
ZGRlZERlbGVnYXRlLCByZW1vdmVkRGVsZWdhdGUpCit7CisgICAgdGhpcy5fb3JpZ2luYWxCcmVh
a3BvaW50cyA9IHt9OworICAgIHRoaXMuX2Zvcm1hdHRlZEJyZWFrcG9pbnRzID0ge307CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzW2ldOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQu
Zm9ybWF0dGVkKQorICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxCcmVha3BvaW50c1ticmVha3Bv
aW50LmxpbmVOdW1iZXJdID0gYnJlYWtwb2ludDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGhpcy5fZm9ybWF0dGVkQnJlYWtwb2ludHNbYnJlYWtwb2ludC5saW5lTnVtYmVyXSA9IGJyZWFr
cG9pbnQ7CisgICAgfQorCisgICAgdGhpcy5fc291cmNlRmlsZUlkID0gc291cmNlRmlsZUlkOwor
ICAgIHRoaXMuX3VybCA9IHVybDsKKyAgICB0aGlzLl9zb3VyY2VJZCA9IHNvdXJjZUlkOworICAg
IHRoaXMuX2FkZGVkRGVsZWdhdGUgPSBhZGRlZERlbGVnYXRlOworICAgIHRoaXMuX3JlbW92ZWRE
ZWxlZ2F0ZSA9IHJlbW92ZWREZWxlZ2F0ZTsKKworICAgIHRoaXMuX2lzRm9ybWF0dGVkID0gZmFs
c2U7CisgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50cygpOworICAgIGZvciAo
dmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHMpCisgICAgICAgIHRoaXMuX3NldEJyZWFrcG9p
bnQoYnJlYWtwb2ludHNbbGluZU51bWJlcl0pOworfQorCitXZWJJbnNwZWN0b3IuU291cmNlRmls
ZUJyZWFrcG9pbnRzLnByb3RvdHlwZSA9IHsKKyAgICBzZXRJc0Zvcm1hdHRlZDogZnVuY3Rpb24o
aXNGb3JtYXR0ZWQsIG1hcHBpbmcpCisgICAgeworICAgICAgICBpZiAodGhpcy5faXNGb3JtYXR0
ZWQgPT0gaXNGb3JtYXR0ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIG9s
ZEJyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50cygpOworICAgICAgICBmb3IgKHZhciBsaW5l
TnVtYmVyIGluIG9sZEJyZWFrcG9pbnRzKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtw
b2ludChvbGRCcmVha3BvaW50c1tsaW5lTnVtYmVyXSk7CisKKyAgICAgICAgdGhpcy5faXNGb3Jt
YXR0ZWQgPSBpc0Zvcm1hdHRlZDsKKyAgICAgICAgdGhpcy5fbWFwcGluZyA9IG1hcHBpbmc7CisK
KyAgICAgICAgdmFyIG5ld0JyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50cygpOworICAgICAg
ICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIG5ld0JyZWFrcG9pbnRzKQorICAgICAgICAgICAgdGhp
cy5fc2V0QnJlYWtwb2ludChuZXdCcmVha3BvaW50c1tsaW5lTnVtYmVyXSk7CisgICAgfSwKKwor
ICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxl
ZCkKKyAgICB7CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuYnJlYWtwb2ludHMoKTsK
KyAgICAgICAgaWYgKGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHMpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHZhciBicmVha3BvaW50ID0geyBzb3VyY2VGaWxlSWQ6IHRoaXMuX3NvdXJj
ZUZpbGVJZCwgbGluZU51bWJlcjogbGluZU51bWJlciwgY29uZGl0aW9uOiBjb25kaXRpb24sIGVu
YWJsZWQ6IGVuYWJsZWQgfTsKKyAgICAgICAgYnJlYWtwb2ludHNbbGluZU51bWJlcl0gPSBicmVh
a3BvaW50OworICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0s
CisKKyAgICBfc2V0QnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2FkZGVkRGVsZWdhdGUoYnJlYWtwb2ludCk7CisgICAgICAgIGlmIChicmVha3Bv
aW50LmVuYWJsZWQpCisgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50SW5EZWJ1Z2dlcihi
cmVha3BvaW50KTsKKyAgICB9LAorCisgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24obGlu
ZU51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuYnJlYWtwb2lu
dHMoKTsKKyAgICAgICAgaWYgKCEobGluZU51bWJlciBpbiBicmVha3BvaW50cykpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbbGluZU51
bWJlcl07CisgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAg
ICAgIGRlbGV0ZSBicmVha3BvaW50c1tsaW5lTnVtYmVyXTsKKyAgICB9LAorCisgICAgX3JlbW92
ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICBpZiAoYnJl
YWtwb2ludC5kZWJ1Z2dlcklkKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQuZGVidWdnZXJJZCk7CisgICAgICAgICAg
ICBkZWxldGUgYnJlYWtwb2ludC5kZWJ1Z2dlcklkOworICAgICAgICB9CisgICAgICAgIHRoaXMu
X3JlbW92ZWREZWxlZ2F0ZShicmVha3BvaW50KTsKKyAgICB9LAorCisgICAgY2xlYXI6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuYnJlYWtwb2ludHMo
KTsKKyAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBicmVha3BvaW50cykKKyAgICAgICAg
ICAgIHRoaXMucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVyKTsKKyAgICB9LAorCisgICAgX3Nl
dEJyZWFrcG9pbnRJbkRlYnVnZ2VyOiBmdW5jdGlvbihicmVha3BvaW50KQorICAgIHsKKyAgICAg
ICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChicmVha3BvaW50SWQsIGxvY2F0aW9ucykKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5icmVha3BvaW50cygp
OworCisgICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnRJZCkgeworICAgICAgICAgICAgICAgIHRo
aXMuX3JlbW92ZWREZWxlZ2F0ZShicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBkZWxldGUg
YnJlYWtwb2ludHNbYnJlYWtwb2ludC5saW5lTnVtYmVyXTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50c1ticmVha3Bv
aW50LmxpbmVOdW1iZXJdICE9PSBicmVha3BvaW50KSB7CisgICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50SWQpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtw
b2ludC5kZWJ1Z2dlcklkID0gYnJlYWtwb2ludElkOworICAgICAgICAgICAgaWYgKGxvY2F0aW9u
cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkKGJyZWFr
cG9pbnQsIGJyZWFrcG9pbnRJZCwgbG9jYXRpb25zWzBdKTsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEJyZWFrcG9pbnRSZXNvbHZlZExpc3RlbmVyKGJyZWFrcG9p
bnRJZCwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkLmJpbmQodGhpcywgYnJlYWtwb2ludCkpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGxvY2F0aW9uID0geyBsaW5lTnVtYmVyOiBicmVha3Bv
aW50LmxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogMCB9OworICAgICAgICBpZiAodGhpcy5faXNG
b3JtYXR0ZWQpCisgICAgICAgICAgICBsb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuc291cmNlTGlu
ZVRvU2NyaXB0TG9jYXRpb24oYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKworICAgICAgICBpZiAo
dGhpcy5fdXJsKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0QnJl
YWtwb2ludCh0aGlzLl91cmwsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51
bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbG9jYXRpb24uc291cmNlSUQgPSB0aGlzLl9z
b3VyY2VJZDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNldEJyZWFr
cG9pbnRCeVNvdXJjZUlkKGxvY2F0aW9uLCBicmVha3BvaW50LmNvbmRpdGlvbiwgZGlkU2V0QnJl
YWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfYnJlYWtwb2lu
dFJlc29sdmVkOiBmdW5jdGlvbihicmVha3BvaW50LCBicmVha3BvaW50SWQsIGxvY2F0aW9uKQor
ICAgIHsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBsb2NhdGlvbi5saW5lTnVtYmVyOworICAg
ICAgICBpZiAodGhpcy5faXNGb3JtYXR0ZWQpCisgICAgICAgICAgICBsaW5lTnVtYmVyID0gdGhp
cy5fbWFwcGluZy5zY3JpcHRMb2NhdGlvblRvU291cmNlTGluZShsb2NhdGlvbik7CisKKyAgICAg
ICAgaWYgKGxpbmVOdW1iZXIgPT09IGJyZWFrcG9pbnQubGluZU51bWJlcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLmJyZWFrcG9pbnRzKCk7
CisgICAgICAgIGlmIChsaW5lTnVtYmVyIGluIGJyZWFrcG9pbnRzKSB7CisgICAgICAgICAgICB0
aGlzLnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlbGV0ZSBicmVha3BvaW50c1ticmVha3Bv
aW50LmxpbmVOdW1iZXJdOworICAgICAgICB0aGlzLl9yZW1vdmVkRGVsZWdhdGUoYnJlYWtwb2lu
dCk7CisKKyAgICAgICAgYnJlYWtwb2ludC5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICAg
ICAgYnJlYWtwb2ludHNbYnJlYWtwb2ludC5saW5lTnVtYmVyXSA9IGJyZWFrcG9pbnQ7CisgICAg
ICAgIHRoaXMuX2FkZGVkRGVsZWdhdGUoYnJlYWtwb2ludCk7CisgICAgfSwKKworICAgIGJyZWFr
cG9pbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMuX2lzRm9ybWF0
dGVkID8gdGhpcy5fb3JpZ2luYWxCcmVha3BvaW50cyA6IHRoaXMuX2Zvcm1hdHRlZEJyZWFrcG9p
bnRzOworICAgIH0sCisKKyAgICBzZXJpYWxpemVCcmVha3BvaW50czogZnVuY3Rpb24oYnJlYWtw
b2ludHMpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3VybCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiB0aGlzLl9vcmlnaW5hbEJyZWFrcG9p
bnRzKQorICAgICAgICAgICAgYnJlYWtwb2ludHMucHVzaCh0aGlzLl9zZXJpYWxpemVCcmVha3Bv
aW50KHRoaXMuX29yaWdpbmFsQnJlYWtwb2ludHNbbGluZU51bWJlcl0sIGZhbHNlKSk7CisgICAg
ICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gdGhpcy5fZm9ybWF0dGVkQnJlYWtwb2ludHMpCisg
ICAgICAgICAgICBicmVha3BvaW50cy5wdXNoKHRoaXMuX3NlcmlhbGl6ZUJyZWFrcG9pbnQodGhp
cy5fZm9ybWF0dGVkQnJlYWtwb2ludHNbbGluZU51bWJlcl0sIHRydWUpKTsKKyAgICB9LAorCisg
ICAgX3NlcmlhbGl6ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIGZvcm1hdHRlZCkK
KyAgICB7CisgICAgICAgIHZhciBzZXJpYWxpemVkQnJlYWtwb2ludCA9IHt9OworICAgICAgICBz
ZXJpYWxpemVkQnJlYWtwb2ludC5zb3VyY2VGaWxlSWQgPSBicmVha3BvaW50LnNvdXJjZUZpbGVJ
ZDsKKyAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQubGluZU51bWJlciA9IGJyZWFrcG9pbnQu
bGluZU51bWJlcjsKKyAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuY29uZGl0aW9uID0gYnJl
YWtwb2ludC5jb25kaXRpb247CisgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LmVuYWJsZWQg
PSBicmVha3BvaW50LmVuYWJsZWQ7CisgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LmZvcm1h
dHRlZCA9IGZvcm1hdHRlZDsKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZWRCcmVha3BvaW50Owor
ICAgIH0KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91275</attachid>
            <date>2011-04-27 06:28:49 -0700</date>
            <delta_ts>2011-04-28 06:53:37 -0700</delta_ts>
            <desc>Add test.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41647</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzcwNTdmLi45ZWY0MTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQt
MjcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJl
YWtwb2ludHMgc2V0IGluIG9yaWdpbmFsIGFuZCBmb3JtYXR0ZWQgc2NyaXB0cyBhcmUgbWVzc2Vk
IHVwIGFmdGVyIG5hdmlnYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTQ3NgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVj
dG9yVGVzdC5uYXZpZ2F0ZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5z
cGVjdG9yVGVzdC5yZWxvYWRQYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVz
dC5JbnNwZWN0b3JUZXN0LnBhZ2VMb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0
b3JUZXN0Lkluc3BlY3RvclRlc3QucnVuV2hlblBhZ2VMb2Fkcyk6CisgICAgICAgICgpOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sOgorCiAy
MDExLTA0LTI2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDlkMDE2ZjMuLjhhZTA1NmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzCkBAIC0xNTAsMzYgKzE1MCw0NSBAQCBJbnNwZWN0b3JUZXN0LmFzc2VydEdyZWF0ZXJP
ckVxdWFsID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGFjdHVhbCwgbWVzc2FnZSkKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUxFRDogIiArIChtZXNzYWdlID8gbWVzc2FnZSArICI6
ICIgOiAiIikgKyBhY3R1YWwgKyAiIDwgIiArIGV4cGVjdGVkKTsKIH0KIAorSW5zcGVjdG9yVGVz
dC5uYXZpZ2F0ZSA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVz
dC5fcGFnZUxvYWRlZENhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7
CisKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrKQorICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLm5ldHdvcmsuX3Jlc2V0KCk7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluQ29uc29sZSgid2luZG93LmxvY2F0aW9uID0gJyIgKyB1cmwgKyAiJyIpOworfQorCiBJbnNw
ZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKLSAgICBJbnNwZWN0
b3JUZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxi
YWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2sgPSBJbnNwZWN0b3JU
ZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKIAogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmspCiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fcmVzZXQoKTsKICAg
ICBQYWdlQWdlbnQucmVsb2FkKGZhbHNlKTsKIH0KIAotSW5zcGVjdG9yVGVzdC5wYWdlUmVsb2Fk
ZWQgPSBmdW5jdGlvbigpCitJbnNwZWN0b3JUZXN0LnBhZ2VMb2FkZWQgPSBmdW5jdGlvbigpCiB7
CiAgICAgcmVzdWx0c1N5bmNocm9uaXplZCA9IGZhbHNlOwogICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJQYWdlIHJlbG9hZGVkLiIpOwotICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9yZWxvYWRQ
YWdlQ2FsbGJhY2spIHsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fcmVs
b2FkUGFnZUNhbGxiYWNrOwotICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFn
ZUNhbGxiYWNrOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2spIHsK
KyAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNr
OworICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrOwogICAg
ICAgICBjYWxsYmFjaygpOwogICAgIH0KIH0KIAogSW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxv
YWRzID0gZnVuY3Rpb24oY2FsbGJhY2spCiB7Ci0gICAgdmFyIG9sZENhbGxiYWNrID0gSW5zcGVj
dG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrOworICAgIHZhciBvbGRDYWxsYmFjayA9IEluc3Bl
Y3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjazsKICAgICBmdW5jdGlvbiBjaGFpbmVkQ2FsbGJh
Y2soKQogICAgIHsKICAgICAgICAgaWYgKG9sZENhbGxiYWNrKQogICAgICAgICAgICAgb2xkQ2Fs
bGJhY2soKTsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9Ci0gICAgSW5zcGVjdG9yVGVzdC5f
cmVsb2FkUGFnZUNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjaGFpbmVkQ2FsbGJh
Y2spOworICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3BlY3RvclRl
c3Quc2FmZVdyYXAoY2hhaW5lZENhbGxiYWNrKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5ydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzID0gZnVuY3Rpb24oY2FsbGJhY2spCkBAIC0zNDEsNyArMzUwLDcg
QEAgZnVuY3Rpb24gcnVuVGVzdChlbmFibGVXYXRjaERvZ1doaWxlRGVidWdnaW5nKQogICAgIGZ1
bmN0aW9uIHJ1blRlc3RJbkZyb250ZW5kKGluaXRpYWxpemF0aW9uRnVuY3Rpb25zLCB0ZXN0RnVu
Y3Rpb24sIGNvbXBsZXRlVGVzdENhbGxJZCkKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cuSW5z
cGVjdG9yVGVzdCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYWdlUmVsb2FkZWQoKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFnZUxvYWRlZCgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHQtZm9ybWF0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLWV4cGVjdGVkLnR4dAppbmRleCAxODhiYjM2Li5j
NGM0OGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
LWZvcm1hdHRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdC1mb3JtYXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0xNCw1ICsxNCwyMSBAQCBmdW5j
dGlvbiBmKCkgewogZnVuY3Rpb24gZygpIHsKIH0KIDwvc2NyaXB0PjwvYm9keT48L2h0bWw+CisK
K1J1bm5pbmc6IHRlc3RCcmVha3BvaW50c0luT3JpZ2luYWxBbmRGb3JtYXR0ZWRTb3VyY2UKK1Nj
cmlwdCBleGVjdXRpb24gcGF1c2VkLgorQ2FsbCBzdGFjazoKKyAgICAwKSBmMSAoc2NyaXB0LWZv
cm1hdHRlci5odG1sOjEyKQorICAgIDEpICAoc2NyaXB0LWZvcm1hdHRlci5odG1sOjEpCitTY3Jp
cHQgZXhlY3V0aW9uIHJlc3VtZWQuCitQYWdlIHJlbG9hZGVkLgorTmF2aWdhdGVkIHRvIHRlc3Qt
bmF2aWdhdGlvbi5odG1sCitQYWdlIHJlbG9hZGVkLgorTmF2aWdhdGVkIGJhY2sgdG8gdGVzdCBw
YWdlLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIGYyIChz
Y3JpcHQtZm9ybWF0dGVyLmh0bWw6MTcpCisgICAgMSkgIChzY3JpcHQtZm9ybWF0dGVyLmh0bWw6
MSkKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIERlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVy
Lmh0bWwKaW5kZXggZjhlNzk4Ni4uZjQ0MWZhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCkBAIC02LDggKzYsMjIgQEAK
IAogPHNjcmlwdD4KIAorZnVuY3Rpb24gZjEoKQoreworICAgIHZhciBhPTA7dmFyIGI9MTt2YXIg
Yz0zO3ZhciBkPTQ7dmFyIGU9NTsKKyAgICB2YXIgZj0wOworICAgIHJldHVybiAwOworfQorCitm
dW5jdGlvbiBmMigpCit7CisgICAgdmFyIHggPSAwOworICAgIHJldHVybiAwOworfQorCiB2YXIg
dGVzdCA9IGZ1bmN0aW9uKCkKIHsKKyAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHM7CiAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoIlNjcmlwdEZvcm1hdHRlcldv
cmtlci5qcyIpOwogCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCkBA
IC04NCw2ICs5OCw2NSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIAogICAgICAgICAgICAgdmFy
IGNvbnRlbnQgPSAiPGh0bWw+PGJvZHk+PHNjcmlwdD5mdW5jdGlvbiBmKCl7fTwiICsgIi9zY3Jp
cHQ+PHNjcmlwdD5mdW5jdGlvbiBnKCl7fTwiICsgIi9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iOwog
ICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsgbWltZVR5cGU6ICJ0ZXh0L2h0bWwiLCBj
b250ZW50OiBjb250ZW50IH0pOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RC
cmVha3BvaW50c0luT3JpZ2luYWxBbmRGb3JtYXR0ZWRTb3VyY2UobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHJvb3Q7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3Jp
cHRTb3VyY2UoInNjcmlwdC1mb3JtYXR0ZXIuaHRtbCIsIGRpZFNob3dTY3JpcHRTb3VyY2UpOwor
CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRTaG93U2NyaXB0U291cmNlKHNvdXJjZUZyYW1lKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJvb3QgPSBzb3VyY2VGcmFtZS5fdXJsLnN1
YnN0cigwLCBzb3VyY2VGcmFtZS5fdXJsLmxhc3RJbmRleE9mKCIvIikgKyAxKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnNldEJyZWFrcG9pbnQoc291cmNlRnJhbWUsIDExLCAiIiwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQocGF1
c2VkSW5GMSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZVdp
dGhUaW1lb3V0KCJmMSgpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHBhdXNlZEluRjEoY2FsbEZyYW1lcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKHJlc3VtZWQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXN1bWVkKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5hdmlnYXRlKHJvb3QgKyAicmVzb3VyY2VzL3Rlc3Qt
bmF2aWdhdGlvbi5odG1sIiwgZGlkTmF2aWdhdGVBbm90aGVyUGFnZSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZE5hdmlnYXRlQW5vdGhlclBhZ2UoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYXZpZ2F0
ZWQgdG8gdGVzdC1uYXZpZ2F0aW9uLmh0bWwiKTsKKyAgICAgICAgICAgICAgICBwYW5lbC5fcHJl
c2VudGF0aW9uTW9kZWwudG9nZ2xlRm9ybWF0U291cmNlRmlsZXMoKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UoInRlc3QtbmF2aWdhdGlvbi5odG1sIiwg
ZGlkU2hvd0Fub3RoZXJQYWdlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZGlkU2hvd0Fub3RoZXJQYWdlKHNvdXJjZUZyYW1lKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmF2aWdhdGUocm9vdCArICJzY3JpcHQtZm9ybWF0dGVy
Lmh0bWwiLCBkaWROYXZpZ2F0ZUJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBkaWROYXZpZ2F0ZUJhY2soKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYXZpZ2F0ZWQgYmFjayB0byB0ZXN0IHBhZ2UuIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKCJzY3JpcHQt
Zm9ybWF0dGVyLmh0bWwiLCBkaWRTaG93Rm9ybWF0dGVkU2NyaXB0U291cmNlKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkU2hvd0Zvcm1hdHRlZFNjcmlwdFNvdXJj
ZShzb3VyY2VGcmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBz
aG91bGQgYmUgbm8gYnJlYWtwb2ludCBpbiBmMSBzaW5jZSBzY3JpcHQgaXMgcHJldHR5LXByaW50
ZWQgbm93LgorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2VXaXRo
VGltZW91dCgiZjEoKSIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRCcmVh
a3BvaW50KHBhbmVsLnZpc2libGVWaWV3LCAyNCwgIiIsIHRydWUpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHBhdXNlZEluRjIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2VXaXRoVGltZW91dCgiZjIoKSIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBwYXVzZWRJbkYyKGNhbGxGcmFtZXMp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3Rh
Y2tUcmFjZShjYWxsRnJhbWVzKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICBdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNWJmOGM4Li5iYmIzYTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMDQtMjcgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJlYWtwb2ludHMgc2V0IGluIG9y
aWdpbmFsIGFuZCBmb3JtYXR0ZWQgc2NyaXB0cyBhcmUgbWVzc2VkIHVwIGFmdGVyIG5hdmlnYXRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQ3
NgorCisgICAgICAgIEludHJvZHVjZSBTb3VyY2VGaWxlQnJlYWtwb2ludHMgaGVscGVyIGNsYXNz
IHRoYXQgbWFuYWdlcyBicmVha3BvaW50cyBzZXQgaW4gb3JpZ2luYWwgYW5kCisgICAgICAgIGZv
cm1hdHRlZCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBzb3VyY2UgZmlsZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnBy
b3RvdHlwZS5yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLnByb3RvdHlwZS5hZGRCcmVha3BvaW50UmVzb2x2ZWRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZXNvbHZl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlLl9kZWJ1Z2dlcldhc0VuYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9hZGRTY3JpcHQuZGlkUmVxdWVzdFNvdXJjZU1h
cHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlLnRvZ2dsZUZvcm1hdFNvdXJjZUZpbGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5icmVha3BvaW50c0ZvclNvdXJjZUZpbGVJ
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuc2V0QnJlYWtwb2ludC5kaWRSZXF1ZXN0U291cmNlTWFwcGluZyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5w
cm90b3R5cGUuc2V0QnJlYWtwb2ludEVuYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmZp
bmRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlbW92ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlLl9yZXN0b3JlQnJlYWtwb2ludHNGcm9tU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9zYXZlQnJlYWtwb2ludHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlLl9jcmVhdGVTb3VyY2VGaWxlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJlc2VudGF0aW9uQnJlYWtwb2ludC5wcm90b3R5cGUubG9hZFNuaXBwZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3NvdXJjZUZpbGVBZGRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkT3B0aW9uVG9GaWxlc1Nl
bGVjdC5vcHRpb25Db21wYXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVha3BvaW50
cyk6IEhlbHBlciBjbGFzcyBmb3IgbWFuYWdpbmcgYnJlYWtwb2ludHMgc2V0IGluIG9yaWdpbmFs
L2Zvcm1hdHRlZCBzY3JpcHRzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVh
a3BvaW50cy5wcm90b3R5cGUuc2V0SXNGb3JtYXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUZpbGVCcmVha3BvaW50cy5wcm90b3R5cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU291cmNlRmlsZUJyZWFrcG9pbnRzLnByb3RvdHlwZS5fc2V0QnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZUJyZWFrcG9pbnRzLnByb3Rv
dHlwZS5yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxl
QnJlYWtwb2ludHMucHJvdG90eXBlLl9yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLl9zZXRCcmVha3Bv
aW50SW5EZWJ1Z2dlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZUJyZWFrcG9p
bnRzLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLmJyZWFrcG9pbnRzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMucHJvdG90eXBlLnNlcmlhbGl6ZUJy
ZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMu
cHJvdG90eXBlLl9zZXJpYWxpemVCcmVha3BvaW50KToKKwogMjAxMS0wNC0yNiAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJNb2RlbC5qcwppbmRleCBhMzNkNjliLi42NWM1ZmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0zMiw2
ICszMiw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsID0gZnVuY3Rpb24oKQogewogICAg
IHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IHt9OwogICAgIHRoaXMuX3NjcmlwdHMgPSB7
fTsKKyAgICB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRMaXN0ZW5lcnMgPSB7fTsKIAogICAgIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJEZWJ1Z2dlciIsIG5ldyBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJEaXNwYXRjaGVyKHRoaXMpKTsKIH0KQEAgLTQzLDcgKzQ0LDYg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzID0gewogICAgIERlYnVnZ2VyUmVz
dW1lZDogImRlYnVnZ2VyLXJlc3VtZWQiLAogICAgIFBhcnNlZFNjcmlwdFNvdXJjZTogInBhcnNl
ZC1zY3JpcHQtc291cmNlIiwKICAgICBGYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlOiAiZmFpbGVk
LXRvLXBhcnNlLXNjcmlwdC1zb3VyY2UiLAotICAgIEJyZWFrcG9pbnRSZXNvbHZlZDogImJyZWFr
cG9pbnQtcmVzb2x2ZWQiLAogICAgIFJlc2V0OiAicmVzZXQiCiB9CiAKQEAgLTc1LDYgKzc1LDgg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgc2V0QnJl
YWtwb2ludDogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlv
biwgY2FsbGJhY2spCiAgICAgeworICAgICAgICBpZiAodHlwZW9mIGNvbHVtbk51bWJlciAhPT0g
Im51bWJlciIpCisgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgRXJyb3IoKS5zdGFjayk7CiAg
ICAgICAgIC8vIEFkanVzdCBjb2x1bW4gaWYgbmVlZGVkLgogICAgICAgICB2YXIgbWluQ29sdW1u
TnVtYmVyID0gMDsKICAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fc2NyaXB0cykgewpAQCAt
MTA0LDEyICsxMDYsMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0g
ewogCiAgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludElkLCBjYWxsYmFj
aykKICAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRMaXN0ZW5l
cnNbYnJlYWtwb2ludElkXTsKICAgICAgICAgRGVidWdnZXJBZ2VudC5yZW1vdmVCcmVha3BvaW50
KGJyZWFrcG9pbnRJZCwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICBhZGRCcmVha3BvaW50UmVz
b2x2ZWRMaXN0ZW5lcjogZnVuY3Rpb24oYnJlYWtwb2ludElkLCBoYW5kbGVyLCB0aGlzT2JqZWN0
KQorICAgIHsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkTGlzdGVuZXJzW2JyZWFr
cG9pbnRJZF0gPSB7IGhhbmRsZXI6IGhhbmRsZXIsIHRoaXNPYmplY3Q6IHRoaXNPYmplY3QgfTsK
KyAgICB9LAorCiAgICAgX2JyZWFrcG9pbnRSZXNvbHZlZDogZnVuY3Rpb24oYnJlYWtwb2ludElk
LCBsb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVzb2x2ZWQsIHti
cmVha3BvaW50SWQ6IGJyZWFrcG9pbnRJZCwgbG9jYXRpb246IGxvY2F0aW9ufSk7CisgICAgICAg
IHZhciBsaXN0ZW5lciA9IHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZExpc3RlbmVyc1ticmVha3Bv
aW50SWRdOworICAgICAgICBpZiAobGlzdGVuZXIpCisgICAgICAgICAgICBsaXN0ZW5lci5oYW5k
bGVyLmNhbGwobGlzdGVuZXIudGhpc09iamVjdCwgYnJlYWtwb2ludElkLCBsb2NhdGlvbik7CiAg
ICAgfSwKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
anMKaW5kZXggMTA2ZDYyZi4uOTg2YjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5q
cwpAQCAtMzIsMTYgKzMyLDE2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CiAgICAgdGhp
cy5fbWVzc2FnZXMgPSBbXTsKLSAgICB0aGlzLl9icmVha3BvaW50c0J5RGVidWdnZXJJZCA9IHt9
OwotICAgIHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNvdXJjZUZpbGUgPSB7fTsKKyAgICB0aGlz
Ll9icmVha3BvaW50cyA9IHt9OwogCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9
IFtdOwogICAgIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXggPSAwOwogCisgICAgdGhpcy5f
Zm9ybWF0U291cmNlRmlsZXMgPSBmYWxzZTsKKwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRl
YnVnZ2VyV2FzRW5hYmxlZCwgdGhpcy5fZGVidWdnZXJXYXNFbmFibGVkLCB0aGlzKTsKICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkV2ZW50cy5QYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlw
dFNvdXJjZSwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRmFpbGVkVG9QYXJzZVNj
cmlwdFNvdXJjZSwgdGhpcy5fZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgdGhpcyk7Ci0gICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludFJlc29sdmVkLCB0aGlzLl9icmVha3BvaW50
UmVzb2x2ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2Vk
LCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMu
RGVidWdnZXJSZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwogICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzLlJlc2V0LCB0aGlzLl9kZWJ1Z2dlclJlc2V0LCB0aGlzKTsKQEAgLTYz
LDYgKzYzLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRz
ID0gewogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0g
ewogICAgIF9kZWJ1Z2dlcldhc0VuYWJsZWQ6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIGZv
ciAodmFyIHNvdXJjZUZpbGVJZCBpbiB0aGlzLl9icmVha3BvaW50cykKKyAgICAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF0uY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fYnJl
YWtwb2ludHMgPSB7fTsKICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzRnJvbVNldHRp
bmdzKCk7CiAgICAgfSwKIApAQCAtMTA4LDI4ICsxMTEsMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgc291cmNlRmls
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRmlsZShzb3VyY2VGaWxlSWQsIHNjcmlwdCwgY29u
dGVudENoYW5nZWQuYmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNvdXJj
ZUZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZUZpbGUoc291cmNlRmlsZUlk
LCBzY3JpcHQsIGNvbnRlbnRDaGFuZ2VkLmJpbmQodGhpcyksIHRoaXMuX2Zvcm1hdHRlcigpKTsK
LSAgICAgICAgdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGU7CiAK
LSAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKHNvdXJjZUZpbGUpOworICAgICAgICB2
YXIgc291cmNlRmlsZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbc291cmNlRmlsZUlk
XTsKKyAgICAgICAgaWYgKHNvdXJjZUZpbGVCcmVha3BvaW50cykgeworICAgICAgICAgICAgZnVu
Y3Rpb24gZGlkUmVxdWVzdFNvdXJjZU1hcHBpbmcobWFwcGluZykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzb3VyY2VGaWxlQnJlYWtwb2ludHMuc2V0SXNGb3JtYXR0ZWQodGhpcy5f
Zm9ybWF0U291cmNlRmlsZXMsIG1hcHBpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c291cmNlRmlsZS5yZXF1ZXN0U291cmNlTWFwcGluZyhkaWRSZXF1ZXN0U291cmNlTWFwcGluZy5i
aW5kKHRoaXMpKTsKKyAgICAgICAgfQogCisgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJj
ZUZpbGVJZF0gPSBzb3VyY2VGaWxlOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNl
RmlsZUFkZGVkLCBzb3VyY2VGaWxlKTsKICAgICB9LAogCi0gICAgX3Jlc3RvcmVCcmVha3BvaW50
czogZnVuY3Rpb24oc291cmNlRmlsZSkKLSAgICB7Ci0gICAgICAgIHZhciBwZW5kaW5nQnJlYWtw
b2ludHMgPSB0aGlzLl9icmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGUuaWRd
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgcGVuZGluZ0JyZWFrcG9pbnRzICYmIGkgPCBwZW5k
aW5nQnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50
RGF0YSA9IHBlbmRpbmdCcmVha3BvaW50c1tpXTsKLSAgICAgICAgICAgIGlmICgiZGVidWdnZXJJ
ZCIgaW4gYnJlYWtwb2ludERhdGEpIHsKLSAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IG5ldyBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQnJlYWtwb2ludChzb3VyY2VGaWxlLCBicmVh
a3BvaW50RGF0YS5saW5lTnVtYmVyLCBicmVha3BvaW50RGF0YS5jb25kaXRpb24sIGJyZWFrcG9p
bnREYXRhLmVuYWJsZWQpOwotICAgICAgICAgICAgICAgIHRoaXMuX2JpbmREZWJ1Z2dlcklkKGJy
ZWFrcG9pbnQsIGJyZWFrcG9pbnREYXRhLmRlYnVnZ2VySWQpOwotICAgICAgICAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRBZGRlZChicmVha3BvaW50KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChzb3VyY2VGaWxlLmlkLCBicmVha3BvaW50
RGF0YS5saW5lTnVtYmVyLCBicmVha3BvaW50RGF0YS5jb25kaXRpb24sIGJyZWFrcG9pbnREYXRh
LmVuYWJsZWQsIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3Bv
aW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGUuaWRdOwotICAgIH0sCi0KICAgICBjYW5F
ZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCiAgICAgewogICAgICAgICBp
ZiAoIVByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgfHwgdGhpcy5fZm9ybWF0U291cmNl
RmlsZXMpCkBAIC0xNjgsMTIgKzE2MywxNSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfdXBkYXRlQnJlYWtwb2ludHNBZnRlckxp
dmVFZGl0OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIG9sZFNvdXJjZSwgbmV3U291cmNlKQogICAg
IHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxl
SWRdOworICAgICAgICB2YXIgc291cmNlRmlsZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2lu
dHNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgaWYgKCFzb3VyY2VGaWxlQnJlYWtwb2ludHMpCisg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gQ2xlYXIgYW5kIHJlLWNyZWF0ZSBicmVh
a3BvaW50cyBhY2NvcmRpbmcgdG8gdGV4dCBkaWZmLgogICAgICAgICB2YXIgZGlmZiA9IEFycmF5
LmRpZmYob2xkU291cmNlLnNwbGl0KCJcbiIpLCBuZXdTb3VyY2Uuc3BsaXQoIlxuIikpOwotICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIHNvdXJjZUZpbGUuYnJlYWtwb2ludHMpIHsKLSAg
ICAgICAgICAgIHZhciBicmVha3BvaW50ID0gc291cmNlRmlsZS5icmVha3BvaW50c1tsaW5lTnVt
YmVyXTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gc291cmNlRmlsZUJyZWFrcG9pbnRzLmJy
ZWFrcG9pbnRzKCk7CisgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHMp
IHsKKyAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbbGluZU51bWJlcl07
CiAKICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gYnJlYWtwb2ludC5saW5lTnVtYmVyOwog
ICAgICAgICAgICAgdGhpcy5yZW1vdmVCcmVha3BvaW50KHNvdXJjZUZpbGVJZCwgbGluZU51bWJl
cik7CkBAIC0yMDEsMTIgKzE5OSw2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX2Zvcm1hdFNvdXJjZUZp
bGVzID0gIXRoaXMuX2Zvcm1hdFNvdXJjZUZpbGVzOwogCi0gICAgICAgIGZvciAodmFyIGlkIGlu
IHRoaXMuX3NvdXJjZUZpbGVzKSB7Ci0gICAgICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMu
X3NvdXJjZUZpbGVzW2lkXTsKLSAgICAgICAgICAgIGZvciAodmFyIGxpbmUgaW4gc291cmNlRmls
ZS5icmVha3BvaW50cykKLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50RnJv
bURlYnVnZ2VyKHNvdXJjZUZpbGUuYnJlYWtwb2ludHNbbGluZV0pOwotICAgICAgICB9Ci0KICAg
ICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXM7CiAgICAgICAgIHRoaXMuX3Jlc2V0
KCk7CiAKQEAgLTI3MiwxMTMgKzI2NCw1NyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBicmVha3BvaW50c0ZvclNvdXJjZUZpbGVJ
ZDogZnVuY3Rpb24oc291cmNlRmlsZUlkKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUg
PSB0aGlzLnNvdXJjZUZpbGUoc291cmNlRmlsZUlkKTsKLSAgICAgICAgaWYgKCFzb3VyY2VGaWxl
KQotICAgICAgICAgICAgcmV0dXJuIFtdOwotICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBbXTsK
LSAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBzb3VyY2VGaWxlLmJyZWFrcG9pbnRzKQot
ICAgICAgICAgICAgYnJlYWtwb2ludHMucHVzaChzb3VyY2VGaWxlLmJyZWFrcG9pbnRzW2xpbmVO
dW1iZXJdKTsKLSAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnRzOwotICAgIH0sCi0KLSAgICBzZXRC
cmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwg
ZW5hYmxlZCwgZG9udFNhdmVCcmVha3BvaW50cykKLSAgICB7CiAgICAgICAgIHZhciBzb3VyY2VG
aWxlID0gdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKICAgICAgICAgaWYgKCFzb3Vy
Y2VGaWxlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIFtdOwogCi0g
ICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25CcmVh
a3BvaW50KHNvdXJjZUZpbGUsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7Ci0gICAg
ICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJy
ZWFrcG9pbnQpOwotICAgICAgICAgICAgaWYgKCFkb250U2F2ZUJyZWFrcG9pbnRzKQotICAgICAg
ICAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSB0aGlzLl9icmVh
a3BvaW50c1tzb3VyY2VGaWxlSWRdOworICAgICAgICBpZiAoIXNvdXJjZUZpbGVCcmVha3BvaW50
cykKKyAgICAgICAgICAgIHJldHVybiBbXTsKIAotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRBZGRlZChicmVha3BvaW50
KTsKLSAgICAgICAgICAgIGlmICghZG9udFNhdmVCcmVha3BvaW50cykKLSAgICAgICAgICAgICAg
ICB0aGlzLl9zYXZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgdmFyIHByZXNlbnRhdGlvbkJyZWFr
cG9pbnRzID0gW107CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHNvdXJjZUZpbGVCcmVha3Bv
aW50cy5icmVha3BvaW50cygpOworICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIGJyZWFr
cG9pbnRzKSB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzW2xpbmVO
dW1iZXJdOworICAgICAgICAgICAgYnJlYWtwb2ludC5fcHJlc2VudGF0aW9uQnJlYWtwb2ludCA9
IG5ldyBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQnJlYWtwb2ludChzb3VyY2VGaWxlLCBicmVh
a3BvaW50LmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBicmVha3BvaW50LmVuYWJs
ZWQpOworICAgICAgICAgICAgcHJlc2VudGF0aW9uQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50
Ll9wcmVzZW50YXRpb25CcmVha3BvaW50KTsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9zZXRC
cmVha3BvaW50SW5EZWJ1Z2dlcihicmVha3BvaW50LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgcmV0dXJuIHByZXNlbnRhdGlvbkJyZWFrcG9pbnRzOwogICAgIH0sCiAKLSAgICBfc2V0
QnJlYWtwb2ludEluRGVidWdnZXI6IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIGNhbGxiYWNrKQorICAg
IHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlciwgY29uZGl0
aW9uLCBlbmFibGVkKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChi
cmVha3BvaW50SWQsIGxvY2F0aW9ucykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFicmVh
a3BvaW50SWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB0aGlzLl9i
aW5kRGVidWdnZXJJZChicmVha3BvaW50LCBicmVha3BvaW50SWQpOwotICAgICAgICAgICAgYnJl
YWtwb2ludC5sb2NhdGlvbiA9IGxvY2F0aW9uc1swXTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50c1tz
b3VyY2VGaWxlSWRdOworICAgICAgICBpZiAoc291cmNlRmlsZUJyZWFrcG9pbnRzKSB7CisgICAg
ICAgICAgICBzb3VyY2VGaWxlQnJlYWtwb2ludHMuc2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCBj
b25kaXRpb24sIGVuYWJsZWQpOworICAgICAgICAgICAgdGhpcy5fc2F2ZUJyZWFrcG9pbnRzKCk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICB2YXIgc291cmNlRmls
ZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CiAgICAgICAgIGZ1bmN0aW9uIGRp
ZFJlcXVlc3RTb3VyY2VNYXBwaW5nKG1hcHBpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZh
ciBsb2NhdGlvbiA9IG1hcHBpbmcuc291cmNlTGluZVRvU2NyaXB0TG9jYXRpb24oYnJlYWtwb2lu
dC5saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChsb2NhdGlvbi5zb3VyY2VJRCk7Ci0gICAgICAg
ICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50KHNjcmlwdC5zb3VyY2VVUkwsIGxvY2F0aW9uLmxp
bmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGRp
ZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBsb2NhdGlvbi5zb3VyY2VJRCA9IHNjcmlwdC5zb3VyY2VJRDsKLSAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50QnlTb3VyY2VJZChs
b2NhdGlvbiwgYnJlYWtwb2ludC5jb25kaXRpb24sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlz
KSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc291cmNlRmlsZUJyZWFrcG9pbnRz
ID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlQnJlYWtwb2ludHMoW10sIHNvdXJjZUZpbGVJ
ZCwgc291cmNlRmlsZS51cmwsIHNvdXJjZUZpbGVJZCwgdGhpcy5fYnJlYWtwb2ludEFkZGVkLmJp
bmQodGhpcyksIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLmJpbmQodGhpcykpOworICAgICAgICAg
ICAgc291cmNlRmlsZUJyZWFrcG9pbnRzLnNldElzRm9ybWF0dGVkKHRoaXMuX2Zvcm1hdFNvdXJj
ZUZpbGVzLCBtYXBwaW5nKTsKKyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZp
bGVJZF0gPSBzb3VyY2VGaWxlQnJlYWtwb2ludHM7CisgICAgICAgICAgICBzb3VyY2VGaWxlQnJl
YWtwb2ludHMuc2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpOwor
ICAgICAgICAgICAgdGhpcy5fc2F2ZUJyZWFrcG9pbnRzKCk7CiAgICAgICAgIH0KLSAgICAgICAg
YnJlYWtwb2ludC5zb3VyY2VGaWxlLnJlcXVlc3RTb3VyY2VNYXBwaW5nKGRpZFJlcXVlc3RTb3Vy
Y2VNYXBwaW5nLmJpbmQodGhpcykpOworICAgICAgICBzb3VyY2VGaWxlLnJlcXVlc3RTb3VyY2VN
YXBwaW5nKGRpZFJlcXVlc3RTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAg
ICBfcmVtb3ZlQnJlYWtwb2ludEZyb21EZWJ1Z2dlcjogZnVuY3Rpb24oYnJlYWtwb2ludCwgY2Fs
bGJhY2spCisgICAgc2V0QnJlYWtwb2ludEVuYWJsZWQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwg
bGluZU51bWJlciwgZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIGlmICghKCJkZWJ1Z2dlcklkIiBp
biBicmVha3BvaW50KSkgewotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHZhciBzb3VyY2VGaWxlQnJlYWtwb2ludHMgPSB0aGlz
Ll9icmVha3BvaW50c1tzb3VyY2VGaWxlSWRdOworICAgICAgICBpZiAoIXNvdXJjZUZpbGVCcmVh
a3BvaW50cykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIGRpZFJlbW92ZUJyZWFrcG9pbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl91
bmJpbmREZWJ1Z2dlcklkKGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50LmRlYnVnZ2VySWQs
IGRpZFJlbW92ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgfSwKIAotICAgIF9iaW5kRGVi
dWdnZXJJZDogZnVuY3Rpb24oYnJlYWtwb2ludCwgZGVidWdnZXJJZCkKLSAgICB7Ci0gICAgICAg
IGJyZWFrcG9pbnQuZGVidWdnZXJJZCA9IGRlYnVnZ2VySWQ7Ci0gICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzQnlEZWJ1Z2dlcklkW2RlYnVnZ2VySWRdID0gYnJlYWtwb2ludDsKLSAgICB9LAotCi0g
ICAgX3VuYmluZERlYnVnZ2VySWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCi0gICAgewotICAgICAg
ICBkZWxldGUgdGhpcy5fYnJlYWtwb2ludHNCeURlYnVnZ2VySWRbYnJlYWtwb2ludC5kZWJ1Z2dl
cklkXTsKLSAgICAgICAgZGVsZXRlIGJyZWFrcG9pbnQuZGVidWdnZXJJZDsKLSAgICB9LAotCi0g
ICAgc2V0QnJlYWtwb2ludEVuYWJsZWQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJl
ciwgZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5maW5kQnJl
YWtwb2ludChzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IHNvdXJjZUZpbGVCcmVha3BvaW50cy5icmVha3BvaW50cygpW2xpbmVOdW1iZXJdOwogICAg
ICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCBicmVha3BvaW50KTsKLQotICAgICAg
ICBicmVha3BvaW50LmVuYWJsZWQgPSBlbmFibGVkOwotCi0gICAgICAgIGZ1bmN0aW9uIGFmdGVy
VXBkYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFr
cG9pbnRBZGRlZCwgYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICB0aGlzLl9zYXZlQnJlYWtwb2lu
dHMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZW5hYmxlZCkKLSAgICAgICAgICAgIHRo
aXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoYnJlYWtwb2ludCwgYWZ0ZXJVcGRhdGUu
Y2FsbCh0aGlzKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9p
bnRJbkRlYnVnZ2VyKGJyZWFrcG9pbnQsIGFmdGVyVXBkYXRlLmJpbmQodGhpcykpOworICAgICAg
ICBzb3VyY2VGaWxlQnJlYWtwb2ludHMucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVyKTsKKyAg
ICAgICAgc291cmNlRmlsZUJyZWFrcG9pbnRzLnNldEJyZWFrcG9pbnQobGluZU51bWJlciwgYnJl
YWtwb2ludC5jb25kaXRpb24sIGVuYWJsZWQpOworICAgICAgICB0aGlzLl9zYXZlQnJlYWtwb2lu
dHMoKTsKICAgICB9LAogCiAgICAgdXBkYXRlQnJlYWtwb2ludDogZnVuY3Rpb24oc291cmNlRmls
ZUlkLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCkBAIC0zODksMTE3ICszMjUsNjIg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewog
CiAgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVy
KQogICAgIHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLmZpbmRCcmVha3BvaW50KHNv
dXJjZUZpbGVJZCwgbGluZU51bWJlcik7Ci0gICAgICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAg
ICAgdmFyIHNvdXJjZUZpbGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZp
bGVJZF07CisgICAgICAgIGlmICghc291cmNlRmlsZUJyZWFrcG9pbnRzKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICB0
aGlzLl9zYXZlQnJlYWtwb2ludHMoKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9yZW1vdmVC
cmVha3BvaW50RnJvbURlYnVnZ2VyKGJyZWFrcG9pbnQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwor
ICAgICAgICBzb3VyY2VGaWxlQnJlYWtwb2ludHMucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVy
KTsKKyAgICAgICAgdGhpcy5fc2F2ZUJyZWFrcG9pbnRzKCk7CiAgICAgfSwKIAogICAgIGZpbmRC
cmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCiAgICAgewotICAg
ICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOwotICAg
ICAgICBpZiAoc291cmNlRmlsZSkKLSAgICAgICAgICAgIHJldHVybiBzb3VyY2VGaWxlLmJyZWFr
cG9pbnRzW2xpbmVOdW1iZXJdOworICAgICAgICB2YXIgc291cmNlRmlsZUJyZWFrcG9pbnRzID0g
dGhpcy5fYnJlYWtwb2ludHNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgcmV0dXJuIHNvdXJjZUZp
bGVCcmVha3BvaW50cyAmJiBzb3VyY2VGaWxlQnJlYWtwb2ludHMuYnJlYWtwb2ludHMoKVtsaW5l
TnVtYmVyXTsKICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24oYnJlYWtw
b2ludCkKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gYnJlYWtwb2ludC5zb3VyY2VG
aWxlOwotICAgICAgICBpZiAoIXNvdXJjZUZpbGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZU1hcHBpbmcobWFwcGluZykKLSAgICAgICAg
ewotICAgICAgICAgICAgLy8gUmVmaW5lIGxpbmUgbnVtYmVyIGJhc2VkIG9uIHJlc29sdmVkIGxv
Y2F0aW9uLgotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQubG9jYXRpb24pCi0gICAgICAgICAg
ICAgICAgYnJlYWtwb2ludC5saW5lTnVtYmVyID0gbWFwcGluZy5zY3JpcHRMb2NhdGlvblRvU291
cmNlTGluZShicmVha3BvaW50LmxvY2F0aW9uKTsKLQotICAgICAgICAgICAgdmFyIGV4aXN0aW5n
QnJlYWtwb2ludCA9IHRoaXMuZmluZEJyZWFrcG9pbnQoc291cmNlRmlsZS5pZCwgYnJlYWtwb2lu
dC5saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ0JyZWFrcG9pbnQpIHsKLSAg
ICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBzaG93IG1vcmUgdGhhbiBvbmUgYnJlYWtwb2ludCBv
biBhIHNpbmdsZSBzb3VyY2UgZmlsZSBsaW5lLgotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92
ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc291cmNlRmlsZS5icmVha3BvaW50c1ti
cmVha3BvaW50LmxpbmVOdW1iZXJdID0gYnJlYWtwb2ludDsKLSAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLkV2ZW50cy5CcmVha3BvaW50QWRkZWQsIGJyZWFrcG9pbnQpOworICAgICAgICB2YXIgc291
cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW2JyZWFrcG9pbnQuc291cmNlRmlsZUlkXTsKKyAg
ICAgICAgaWYgKHNvdXJjZUZpbGUpIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuX3ByZXNlbnRh
dGlvbkJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkJyZWFrcG9pbnQo
c291cmNlRmlsZSwgYnJlYWtwb2ludC5saW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwg
YnJlYWtwb2ludC5lbmFibGVkKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVh
a3BvaW50QWRkZWQsIGJyZWFrcG9pbnQuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnQpOwogICAgICAg
ICB9Ci0gICAgICAgIHNvdXJjZUZpbGUucmVxdWVzdFNvdXJjZU1hcHBpbmcoZGlkUmVxdWVzdFNv
dXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9icmVha3BvaW50UmVtb3Zl
ZDogZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0g
YnJlYWtwb2ludC5zb3VyY2VGaWxlOwotICAgICAgICBpZiAoc291cmNlRmlsZS5icmVha3BvaW50
c1ticmVha3BvaW50LmxpbmVOdW1iZXJdID09PSBicmVha3BvaW50KSB7Ci0gICAgICAgICAgICAv
LyBUaGVyZSBjYW4gYWxyZWFkeSBiZSBhIG5ld2VyIGJyZWFrcG9pbnQ7Ci0gICAgICAgICAgICBk
ZWxldGUgc291cmNlRmlsZS5icmVha3BvaW50c1ticmVha3BvaW50LmxpbmVOdW1iZXJdOwotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCBicmVha3BvaW50
KTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlv
bihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBkZWJ1Z2dlcklkID0gZXZlbnQuZGF0YS5icmVh
a3BvaW50SWQ7Ci0gICAgICAgIGlmICghKGRlYnVnZ2VySWQgaW4gdGhpcy5fYnJlYWtwb2ludHNC
eURlYnVnZ2VySWQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IHRoaXMuX2JyZWFrcG9pbnRzQnlEZWJ1Z2dlcklkW2RlYnVnZ2VySWRdOwotCi0gICAgICAg
IHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkKGJyZWFrcG9pbnQpOwotICAgICAgICBicmVha3BvaW50
LmxvY2F0aW9uID0gZXZlbnQuZGF0YS5sb2NhdGlvbjsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dEFkZGVkKGJyZWFrcG9pbnQpOworICAgICAgICBpZiAoYnJlYWtwb2ludC5fcHJlc2VudGF0aW9u
QnJlYWtwb2ludCkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVt
b3ZlZCwgYnJlYWtwb2ludC5fcHJlc2VudGF0aW9uQnJlYWtwb2ludCk7CiAgICAgfSwKIAogICAg
IF9yZXN0b3JlQnJlYWtwb2ludHNGcm9tU2V0dGluZ3M6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5icmVha3BvaW50czsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnREYXRhID0gYnJlYWtwb2ludHNbaV07CisgICAgICAg
IHZhciBwZXJzaXN0ZW50QnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtw
b2ludHM7CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHt9OworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHBlcnNpc3RlbnRCcmVha3BvaW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgdmFyIGJyZWFrcG9pbnREYXRhID0gcGVyc2lzdGVudEJyZWFrcG9pbnRzW2ldOwogICAgICAg
ICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IGJyZWFrcG9pbnREYXRhLnNvdXJjZUZpbGVJZDsKICAg
ICAgICAgICAgIGlmICghc291cmNlRmlsZUlkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxl
SWRdOwotICAgICAgICAgICAgaWYgKHNvdXJjZUZpbGUpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LnNldEJyZWFrcG9pbnQoc291cmNlRmlsZUlkLCBicmVha3BvaW50RGF0YS5saW5lTnVtYmVyLCBi
cmVha3BvaW50RGF0YS5jb25kaXRpb24sIGJyZWFrcG9pbnREYXRhLmVuYWJsZWQpOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdmFyIHNvdXJjZUZpbGVCcmVha3BvaW50
cyA9IGJyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF07CisgICAgICAgICAgICBpZiAoIXNvdXJjZUZp
bGVCcmVha3BvaW50cykgeworICAgICAgICAgICAgICAgIHNvdXJjZUZpbGVCcmVha3BvaW50cyA9
IFtdOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF0gPSBzb3VyY2VG
aWxlQnJlYWtwb2ludHM7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFkZCBicmVh
a3BvaW50IG9uY2Ugc291cmNlIGZpbGUgYmVjb21lcyBhdmFpbGFibGUuCi0gICAgICAgICAgICB2
YXIgcGVuZGluZ0JyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNXaXRob3V0U291cmNlRmls
ZVtzb3VyY2VGaWxlSWRdOwotICAgICAgICAgICAgaWYgKCFwZW5kaW5nQnJlYWtwb2ludHMpIHsK
LSAgICAgICAgICAgICAgICBwZW5kaW5nQnJlYWtwb2ludHMgPSBbXTsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9icmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGVJZF0gPSBwZW5k
aW5nQnJlYWtwb2ludHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwZW5kaW5nQnJlYWtw
b2ludHMucHVzaChicmVha3BvaW50RGF0YSk7CisgICAgICAgICAgICBzb3VyY2VGaWxlQnJlYWtw
b2ludHMucHVzaChicmVha3BvaW50RGF0YSk7CiAgICAgICAgIH0KKyAgICAgICAgdmFyIGFkZGVk
SGFuZGxlciA9IHRoaXMuX2JyZWFrcG9pbnRBZGRlZC5iaW5kKHRoaXMpOworICAgICAgICB2YXIg
cmVtb3ZlZEhhbmRsZXIgPSB0aGlzLl9icmVha3BvaW50UmVtb3ZlZC5iaW5kKHRoaXMpOworICAg
ICAgICBmb3IgKHZhciBzb3VyY2VGaWxlSWQgaW4gYnJlYWtwb2ludHMpCisgICAgICAgICAgICB0
aGlzLl9icmVha3BvaW50c1tzb3VyY2VGaWxlSWRdID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlQnJlYWtwb2ludHMoYnJlYWtwb2ludHNbc291cmNlRmlsZUlkXSwgc291cmNlRmlsZUlkLCBz
b3VyY2VGaWxlSWQsIG51bGwsIGFkZGVkSGFuZGxlciwgcmVtb3ZlZEhhbmRsZXIpOwogICAgIH0s
CiAKICAgICBfc2F2ZUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIg
c2VyaWFsaXplZEJyZWFrcG9pbnRzID0gW107Ci0KLSAgICAgICAgLy8gU3RvcmUgYWRkZWQgYnJl
YWtwb2ludHMuCi0gICAgICAgIGZvciAodmFyIHNvdXJjZUZpbGVJZCBpbiB0aGlzLl9zb3VyY2VG
aWxlcykgewotICAgICAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tz
b3VyY2VGaWxlSWRdOwotICAgICAgICAgICAgaWYgKCFzb3VyY2VGaWxlLnVybCkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBz
b3VyY2VGaWxlLmJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3Bv
aW50cy5wdXNoKHNvdXJjZUZpbGUuYnJlYWtwb2ludHNbbGluZU51bWJlcl0uc2VyaWFsaXplKCkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3RvcmUgbm90IGFkZGVkIGJyZWFrcG9pbnRzLgot
ICAgICAgICBmb3IgKHZhciBzb3VyY2VGaWxlSWQgaW4gdGhpcy5fYnJlYWtwb2ludHNXaXRob3V0
U291cmNlRmlsZSkKLSAgICAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50cyA9IHNlcmlhbGl6
ZWRCcmVha3BvaW50cy5jb25jYXQodGhpcy5fYnJlYWtwb2ludHNXaXRob3V0U291cmNlRmlsZVtz
b3VyY2VGaWxlSWRdKTsKLQotICAgICAgICAvLyBTYW5pdGl6ZSBkZWJ1Z2dlciBpZHMuCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEJyZWFrcG9pbnRzLmxlbmd0aDsgKytp
KQotICAgICAgICAgICAgZGVsZXRlIHNlcmlhbGl6ZWRCcmVha3BvaW50c1tpXS5kZWJ1Z2dlcklk
OwotCisgICAgICAgIGZvciAodmFyIHNvdXJjZUZpbGVJZCBpbiB0aGlzLl9icmVha3BvaW50cykK
KyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF0uc2VyaWFsaXplQnJl
YWtwb2ludHMoc2VyaWFsaXplZEJyZWFrcG9pbnRzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmJyZWFrcG9pbnRzID0gc2VyaWFsaXplZEJyZWFrcG9pbnRzOwogICAgIH0sCiAKQEAg
LTU1NiwyNyArNDM3LDIxIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKIAogICAgIF9jcmVhdGVTb3VyY2VGaWxlSWQ6IGZ1bmN0aW9uKHNvdXJj
ZVVSTCwgc291cmNlSUQpCiAgICAgewotICAgICAgICB2YXIgcHJlZml4ID0gdGhpcy5fZm9ybWF0
U291cmNlRmlsZXMgPyAiZGVvYmZ1c2NhdGVkOiIgOiAiIjsKLSAgICAgICAgcmV0dXJuIHByZWZp
eCArIChzb3VyY2VVUkwgfHwgc291cmNlSUQpOworICAgICAgICByZXR1cm4gc291cmNlVVJMIHx8
IHNvdXJjZUlEOwogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIGZvciAodmFyIGlkIGluIHRoaXMuX3NvdXJjZUZpbGVzKSB7Ci0gICAgICAgICAgICB2YXIg
c291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW2lkXTsKLSAgICAgICAgICAgIGZvciAodmFy
IGxpbmUgaW4gc291cmNlRmlsZS5icmVha3BvaW50cykgewotICAgICAgICAgICAgICAgIHZhciBi
cmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzV2l0aG91dFNvdXJjZUZpbGVbc291cmNlRmls
ZS5pZF07Ci0gICAgICAgICAgICAgICAgaWYgKCFicmVha3BvaW50cykgewotICAgICAgICAgICAg
ICAgICAgICBicmVha3BvaW50cyA9IFtdOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9icmVh
a3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlW3NvdXJjZUZpbGUuaWRdID0gYnJlYWtwb2ludHM7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2goc291cmNl
RmlsZS5icmVha3BvaW50c1tsaW5lXS5zZXJpYWxpemUoKSk7CisgICAgICAgICAgICB2YXIgc291
cmNlRmlsZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbaWRdOworICAgICAgICAgICAg
aWYgKHNvdXJjZUZpbGVCcmVha3BvaW50cyAmJiAhdGhpcy5fc291cmNlRmlsZXNbaWRdLnVybCkg
eworICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW2lkXS5jbGVhcigpOworICAgICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3BvaW50c1tpZF07CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zb3VyY2VGaWxlcyA9IHt9OwogICAgICAgICB0aGlz
Ll9tZXNzYWdlcyA9IFtdOwotICAgICAgICB0aGlzLl9icmVha3BvaW50c0J5RGVidWdnZXJJZCA9
IHt9OwogICAgIH0sCiAKICAgICBfZGVidWdnZXJSZXNldDogZnVuY3Rpb24oKQpAQCAtNjI0LDE3
ICs0OTksNiBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQnJlYWtwb2ludC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5zb3VyY2VG
aWxlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOwotICAgIH0s
Ci0KLSAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBzZXJpYWxp
emVkQnJlYWtwb2ludCA9IHt9OwotICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5zb3VyY2VG
aWxlSWQgPSB0aGlzLnNvdXJjZUZpbGUuaWQ7Ci0gICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50
LmxpbmVOdW1iZXIgPSB0aGlzLmxpbmVOdW1iZXI7Ci0gICAgICAgIHNlcmlhbGl6ZWRCcmVha3Bv
aW50LmNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uOwotICAgICAgICBzZXJpYWxpemVkQnJlYWtw
b2ludC5lbmFibGVkID0gdGhpcy5lbmFibGVkOwotICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2lu
dC5kZWJ1Z2dlcklkID0gdGhpcy5kZWJ1Z2dlcklkOwotICAgICAgICByZXR1cm4gc2VyaWFsaXpl
ZEJyZWFrcG9pbnQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGMxNzBjZGUuLmViMDBhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
CkBAIC0yNzEsNiArMjcxLDEwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRG
aWxlID0gbGFzdFZpZXdlZFVSTDsKICAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VGaWxlLnVybCA9
PT0gbGFzdFZpZXdlZFVSTCkKICAgICAgICAgICAgIHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFk
ZFRvSGlzdG9yeShzb3VyY2VGaWxlLmlkKTsKKworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5icmVha3BvaW50c0ZvclNvdXJjZUZpbGVJZChzb3VyY2VG
aWxlLmlkKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmpzQnJlYWtwb2ludHMuYWRkQnJl
YWtwb2ludChicmVha3BvaW50c1tpXSk7CiAgICAgfSwKIAogICAgIF9hZGRPcHRpb25Ub0ZpbGVz
U2VsZWN0OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCkBAIC0yOTAsOSArMjk0LDkgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGEuaXNDb250ZW50U2NyaXB0ID8gMSA6IC0xOwogCiAgICAgICAgICAgICBpZiAoYS5pc0NvbnRl
bnRTY3JpcHQgJiYgIWIuaXNDb250ZW50U2NyaXB0KQotICAgICAgICAgICAgICAgIHJldHVybiAx
OyAKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIGlmICghYS5pc0NvbnRl
bnRTY3JpcHQgJiYgYi5pc0NvbnRlbnRTY3JpcHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0x
OyAKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgICAgIGlmIChhLnRleHQg
PT09IGIudGV4dCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTU5Nyw2ICs2MDEsOCBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNv
dXJjZUZyYW1lID0gZXZlbnQudGFyZ2V0OwogICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gc291
cmNlRnJhbWUuX3NvdXJjZUZpbGVJZDsKICAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9w
cmVzZW50YXRpb25Nb2RlbC5zb3VyY2VGaWxlKHNvdXJjZUZpbGVJZCk7CisgICAgICAgIGlmICgh
c291cmNlRmlsZSkKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgbWVzc2FnZXMg
PSBzb3VyY2VGaWxlLm1lc3NhZ2VzOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3Nh
Z2VzLmxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanMKaW5kZXggMWFjN2U4MS4uNzIzZDc4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwpAQCAtNDAsNyArNDAs
NiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRmlsZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIGNvbnRl
bnRDaGFuZ2VkRGVsZWdhdGUpCiAgICAgdGhpcy51cmwgPSBzY3JpcHQuc291cmNlVVJMOwogICAg
IHRoaXMuaXNDb250ZW50U2NyaXB0ID0gc2NyaXB0LmlzQ29udGVudFNjcmlwdDsKICAgICB0aGlz
Lm1lc3NhZ2VzID0gW107Ci0gICAgdGhpcy5icmVha3BvaW50cyA9IHt9OwogCiAgICAgaWYgKHRo
aXMuX2hhc1BlbmRpbmdSZXNvdXJjZSgpKQogICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVu
dExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMucmVsb2FkLmJpbmQodGhpcykpOwpAQCAtMzI2LDMg
KzMyNSwxNzMgQEAgV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBl
ID0gewogfQogCiBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmcucHJvdG90eXBlOworCitXZWJJ
bnNwZWN0b3IuU291cmNlRmlsZUJyZWFrcG9pbnRzID0gZnVuY3Rpb24oYnJlYWtwb2ludHMsIHNv
dXJjZUZpbGVJZCwgdXJsLCBzb3VyY2VJZCwgYWRkZWREZWxlZ2F0ZSwgcmVtb3ZlZERlbGVnYXRl
KQoreworICAgIHRoaXMuX29yaWdpbmFsQnJlYWtwb2ludHMgPSB7fTsKKyAgICB0aGlzLl9mb3Jt
YXR0ZWRCcmVha3BvaW50cyA9IHt9OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2lu
dHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tp
XTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmZvcm1hdHRlZCkKKyAgICAgICAgICAgIHRoaXMu
X29yaWdpbmFsQnJlYWtwb2ludHNbYnJlYWtwb2ludC5saW5lTnVtYmVyXSA9IGJyZWFrcG9pbnQ7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZEJyZWFrcG9pbnRzW2Jy
ZWFrcG9pbnQubGluZU51bWJlcl0gPSBicmVha3BvaW50OworICAgIH0KKworICAgIHRoaXMuX3Nv
dXJjZUZpbGVJZCA9IHNvdXJjZUZpbGVJZDsKKyAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgdGhp
cy5fc291cmNlSWQgPSBzb3VyY2VJZDsKKyAgICB0aGlzLl9hZGRlZERlbGVnYXRlID0gYWRkZWRE
ZWxlZ2F0ZTsKKyAgICB0aGlzLl9yZW1vdmVkRGVsZWdhdGUgPSByZW1vdmVkRGVsZWdhdGU7CisK
KyAgICB0aGlzLl9pc0Zvcm1hdHRlZCA9IGZhbHNlOworICAgIHZhciBicmVha3BvaW50cyA9IHRo
aXMuYnJlYWtwb2ludHMoKTsKKyAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIGJyZWFrcG9pbnRz
KQorICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnRzW2xpbmVOdW1iZXJdKTsK
K30KKworV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGVCcmVha3BvaW50cy5wcm90b3R5cGUgPSB7Cisg
ICAgc2V0SXNGb3JtYXR0ZWQ6IGZ1bmN0aW9uKGlzRm9ybWF0dGVkLCBtYXBwaW5nKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2lzRm9ybWF0dGVkID09IGlzRm9ybWF0dGVkKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciBvbGRCcmVha3BvaW50cyA9IHRoaXMuYnJlYWtwb2lu
dHMoKTsKKyAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBvbGRCcmVha3BvaW50cykKKyAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQob2xkQnJlYWtwb2ludHNbbGluZU51bWJl
cl0pOworCisgICAgICAgIHRoaXMuX2lzRm9ybWF0dGVkID0gaXNGb3JtYXR0ZWQ7CisgICAgICAg
IHRoaXMuX21hcHBpbmcgPSBtYXBwaW5nOworCisgICAgICAgIHZhciBuZXdCcmVha3BvaW50cyA9
IHRoaXMuYnJlYWtwb2ludHMoKTsKKyAgICAgICAgZm9yICh2YXIgbGluZU51bWJlciBpbiBuZXdC
cmVha3BvaW50cykKKyAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQobmV3QnJlYWtwb2lu
dHNbbGluZU51bWJlcl0pOworICAgIH0sCisKKyAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihs
aW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCisgICAgeworICAgICAgICB2YXIgYnJlYWtw
b2ludHMgPSB0aGlzLmJyZWFrcG9pbnRzKCk7CisgICAgICAgIGlmIChsaW5lTnVtYmVyIGluIGJy
ZWFrcG9pbnRzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IHsgc291cmNlRmlsZUlkOiB0aGlzLl9zb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXI6IGxpbmVOdW1i
ZXIsIGNvbmRpdGlvbjogY29uZGl0aW9uLCBlbmFibGVkOiBlbmFibGVkIH07CisgICAgICAgIGJy
ZWFrcG9pbnRzW2xpbmVOdW1iZXJdID0gYnJlYWtwb2ludDsKKyAgICAgICAgdGhpcy5fc2V0QnJl
YWtwb2ludChicmVha3BvaW50KTsKKyAgICB9LAorCisgICAgX3NldEJyZWFrcG9pbnQ6IGZ1bmN0
aW9uKGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICB0aGlzLl9hZGRlZERlbGVnYXRlKGJyZWFr
cG9pbnQpOworICAgICAgICBpZiAoYnJlYWtwb2ludC5lbmFibGVkKQorICAgICAgICAgICAgdGhp
cy5fc2V0QnJlYWtwb2ludEluRGVidWdnZXIoYnJlYWtwb2ludCk7CisgICAgfSwKKworICAgIHJl
bW92ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCisgICAgeworICAgICAgICB2YXIg
YnJlYWtwb2ludHMgPSB0aGlzLmJyZWFrcG9pbnRzKCk7CisgICAgICAgIGlmICghKGxpbmVOdW1i
ZXIgaW4gYnJlYWtwb2ludHMpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IGJyZWFrcG9pbnRzW2xpbmVOdW1iZXJdOworICAgICAgICB0aGlzLl9yZW1vdmVC
cmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICBkZWxldGUgYnJlYWtwb2ludHNbbGluZU51
bWJlcl07CisgICAgfSwKKworICAgIF9yZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3Bv
aW50KQorICAgIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGVidWdnZXJJZCkgeworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtwb2ludChicmVha3Bv
aW50LmRlYnVnZ2VySWQpOworICAgICAgICAgICAgZGVsZXRlIGJyZWFrcG9pbnQuZGVidWdnZXJJ
ZDsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZW1vdmVkRGVsZWdhdGUoYnJlYWtwb2ludCk7
CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgYnJl
YWtwb2ludHMgPSB0aGlzLmJyZWFrcG9pbnRzKCk7CisgICAgICAgIGZvciAodmFyIGxpbmVOdW1i
ZXIgaW4gYnJlYWtwb2ludHMpCisgICAgICAgICAgICB0aGlzLnJlbW92ZUJyZWFrcG9pbnQobGlu
ZU51bWJlcik7CisgICAgfSwKKworICAgIF9zZXRCcmVha3BvaW50SW5EZWJ1Z2dlcjogZnVuY3Rp
b24oYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQo
YnJlYWtwb2ludElkLCBsb2NhdGlvbnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBicmVh
a3BvaW50cyA9IHRoaXMuYnJlYWtwb2ludHMoKTsKKworICAgICAgICAgICAgaWYgKCFicmVha3Bv
aW50SWQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVkRGVsZWdhdGUoYnJlYWtwb2lu
dCk7CisgICAgICAgICAgICAgICAgZGVsZXRlIGJyZWFrcG9pbnRzW2JyZWFrcG9pbnQubGluZU51
bWJlcl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoYnJlYWtwb2ludHNbYnJlYWtwb2ludC5saW5lTnVtYmVyXSAhPT0gYnJlYWtwb2lu
dCkgeworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnJlbW92ZUJy
ZWFrcG9pbnQoYnJlYWtwb2ludElkKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuZGVidWdnZXJJZCA9IGJyZWFrcG9pbnRJ
ZDsKKyAgICAgICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRSZXNvbHZlZChicmVha3BvaW50LCBicmVha3BvaW50SWQsIGxvY2F0aW9u
c1swXSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRCcmVha3Bv
aW50UmVzb2x2ZWRMaXN0ZW5lcihicmVha3BvaW50SWQsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZl
ZC5iaW5kKHRoaXMsIGJyZWFrcG9pbnQpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBsb2Nh
dGlvbiA9IHsgbGluZU51bWJlcjogYnJlYWtwb2ludC5saW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6
IDAgfTsKKyAgICAgICAgaWYgKHRoaXMuX2lzRm9ybWF0dGVkKQorICAgICAgICAgICAgbG9jYXRp
b24gPSB0aGlzLl9tYXBwaW5nLnNvdXJjZUxpbmVUb1NjcmlwdExvY2F0aW9uKGJyZWFrcG9pbnQu
bGluZU51bWJlcik7CisKKyAgICAgICAgaWYgKHRoaXMuX3VybCkKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNldEJyZWFrcG9pbnQodGhpcy5fdXJsLCBsb2NhdGlvbi5s
aW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBk
aWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGxvY2F0aW9uLnNvdXJjZUlEID0gdGhpcy5fc291cmNlSWQ7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50QnlTb3VyY2VJZChsb2NhdGlvbiwgYnJl
YWtwb2ludC5jb25kaXRpb24sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CisgICAgICAg
IH0KKyAgICB9LAorCisgICAgX2JyZWFrcG9pbnRSZXNvbHZlZDogZnVuY3Rpb24oYnJlYWtwb2lu
dCwgYnJlYWtwb2ludElkLCBsb2NhdGlvbikKKyAgICB7CisgICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gbG9jYXRpb24ubGluZU51bWJlcjsKKyAgICAgICAgaWYgKHRoaXMuX2lzRm9ybWF0dGVkKQor
ICAgICAgICAgICAgbGluZU51bWJlciA9IHRoaXMuX21hcHBpbmcuc2NyaXB0TG9jYXRpb25Ub1Nv
dXJjZUxpbmUobG9jYXRpb24pOworCisgICAgICAgIGlmIChsaW5lTnVtYmVyID09PSBicmVha3Bv
aW50LmxpbmVOdW1iZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGJyZWFr
cG9pbnRzID0gdGhpcy5icmVha3BvaW50cygpOworICAgICAgICBpZiAobGluZU51bWJlciBpbiBi
cmVha3BvaW50cykgeworICAgICAgICAgICAgdGhpcy5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9p
bnQubGluZU51bWJlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBkZWxldGUgYnJlYWtwb2ludHNbYnJlYWtwb2ludC5saW5lTnVtYmVyXTsKKyAgICAgICAgdGhp
cy5fcmVtb3ZlZERlbGVnYXRlKGJyZWFrcG9pbnQpOworCisgICAgICAgIGJyZWFrcG9pbnQubGlu
ZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgICAgIGJyZWFrcG9pbnRzW2JyZWFrcG9pbnQubGlu
ZU51bWJlcl0gPSBicmVha3BvaW50OworICAgICAgICB0aGlzLl9hZGRlZERlbGVnYXRlKGJyZWFr
cG9pbnQpOworICAgIH0sCisKKyAgICBicmVha3BvaW50czogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICF0aGlzLl9pc0Zvcm1hdHRlZCA/IHRoaXMuX29yaWdpbmFsQnJlYWtwb2lu
dHMgOiB0aGlzLl9mb3JtYXR0ZWRCcmVha3BvaW50czsKKyAgICB9LAorCisgICAgc2VyaWFsaXpl
QnJlYWtwb2ludHM6IGZ1bmN0aW9uKGJyZWFrcG9pbnRzKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl91cmwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAodmFyIGxpbmVOdW1i
ZXIgaW4gdGhpcy5fb3JpZ2luYWxCcmVha3BvaW50cykKKyAgICAgICAgICAgIGJyZWFrcG9pbnRz
LnB1c2godGhpcy5fc2VyaWFsaXplQnJlYWtwb2ludCh0aGlzLl9vcmlnaW5hbEJyZWFrcG9pbnRz
W2xpbmVOdW1iZXJdLCBmYWxzZSkpOworICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIHRo
aXMuX2Zvcm1hdHRlZEJyZWFrcG9pbnRzKQorICAgICAgICAgICAgYnJlYWtwb2ludHMucHVzaCh0
aGlzLl9zZXJpYWxpemVCcmVha3BvaW50KHRoaXMuX2Zvcm1hdHRlZEJyZWFrcG9pbnRzW2xpbmVO
dW1iZXJdLCB0cnVlKSk7CisgICAgfSwKKworICAgIF9zZXJpYWxpemVCcmVha3BvaW50OiBmdW5j
dGlvbihicmVha3BvaW50LCBmb3JtYXR0ZWQpCisgICAgeworICAgICAgICB2YXIgc2VyaWFsaXpl
ZEJyZWFrcG9pbnQgPSB7fTsKKyAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuc291cmNlRmls
ZUlkID0gYnJlYWtwb2ludC5zb3VyY2VGaWxlSWQ7CisgICAgICAgIHNlcmlhbGl6ZWRCcmVha3Bv
aW50LmxpbmVOdW1iZXIgPSBicmVha3BvaW50LmxpbmVOdW1iZXI7CisgICAgICAgIHNlcmlhbGl6
ZWRCcmVha3BvaW50LmNvbmRpdGlvbiA9IGJyZWFrcG9pbnQuY29uZGl0aW9uOworICAgICAgICBz
ZXJpYWxpemVkQnJlYWtwb2ludC5lbmFibGVkID0gYnJlYWtwb2ludC5lbmFibGVkOworICAgICAg
ICBzZXJpYWxpemVkQnJlYWtwb2ludC5mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7CisgICAgICAgIHJl
dHVybiBzZXJpYWxpemVkQnJlYWtwb2ludDsKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91485</attachid>
            <date>2011-04-28 06:53:37 -0700</date>
            <delta_ts>2011-04-28 10:46:14 -0700</delta_ts>
            <desc>Remove all breakpoints when formatting mode is changed.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11880</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTEwN2RjLi5iODFiZTI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQt
MjggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJl
YWtwb2ludHMgc2V0IGluIG9yaWdpbmFsIGFuZCBmb3JtYXR0ZWQgc2NyaXB0cyBhcmUgbWVzc2Vk
IHVwIGFmdGVyIG5hdmlnYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTQ3CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0
b3JUZXN0Lm5hdmlnYXRlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNw
ZWN0b3JUZXN0LnJlbG9hZFBhZ2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0
Lkluc3BlY3RvclRlc3QucGFnZUxvYWRlZCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3Rv
clRlc3QuSW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxvYWRzKToKKyAgICAgICAgKCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWw6CisKIDIw
MTEtMDQtMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBDb252ZXJ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3V0LWRlYWQtbm9kZS5odG1s
IGZyb20gcGl4ZWwgdGVzdCB0byB0ZXh0LWJhc2VkIHRlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXggOWQwMTZmMy4uOGFl
MDU2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMKQEAgLTE1MCwzNiArMTUwLDQ1IEBAIEluc3BlY3RvclRlc3QuYXNzZXJ0R3Jl
YXRlck9yRXF1YWwgPSBmdW5jdGlvbihleHBlY3RlZCwgYWN0dWFsLCBtZXNzYWdlKQogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTEVEOiAiICsgKG1lc3NhZ2UgPyBtZXNzYWdl
ICsgIjogIiA6ICIiKSArIGFjdHVhbCArICIgPCAiICsgZXhwZWN0ZWQpOwogfQogCitJbnNwZWN0
b3JUZXN0Lm5hdmlnYXRlID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0
b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxi
YWNrKTsKKworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmspCisgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5fcmVzZXQoKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9jYXRpb24gPSAnIiArIHVybCArICInIik7Cit9CisK
IEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewotICAgIElu
c3BlY3RvclRlc3QuX3JlbG9hZFBhZ2VDYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAo
Y2FsbGJhY2spOworICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3Bl
Y3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwogCiAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yaykKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9yZXNldCgp
OwogICAgIFBhZ2VBZ2VudC5yZWxvYWQoZmFsc2UpOwogfQogCi1JbnNwZWN0b3JUZXN0LnBhZ2VS
ZWxvYWRlZCA9IGZ1bmN0aW9uKCkKK0luc3BlY3RvclRlc3QucGFnZUxvYWRlZCA9IGZ1bmN0aW9u
KCkKIHsKICAgICByZXN1bHRzU3luY2hyb25pemVkID0gZmFsc2U7CiAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIlBhZ2UgcmVsb2FkZWQuIik7Ci0gICAgaWYgKEluc3BlY3RvclRlc3QuX3Jl
bG9hZFBhZ2VDYWxsYmFjaykgewotICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0
Ll9yZWxvYWRQYWdlQ2FsbGJhY2s7Ci0gICAgICAgIGRlbGV0ZSBJbnNwZWN0b3JUZXN0Ll9yZWxv
YWRQYWdlQ2FsbGJhY2s7CisgICAgaWYgKEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFj
aykgeworICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2Fs
bGJhY2s7CisgICAgICAgIGRlbGV0ZSBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7
CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfQogfQogCiBJbnNwZWN0b3JUZXN0LnJ1bldoZW5Q
YWdlTG9hZHMgPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKLSAgICB2YXIgb2xkQ2FsbGJhY2sgPSBJ
bnNwZWN0b3JUZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2s7CisgICAgdmFyIG9sZENhbGxiYWNrID0g
SW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrOwogICAgIGZ1bmN0aW9uIGNoYWluZWRD
YWxsYmFjaygpCiAgICAgewogICAgICAgICBpZiAob2xkQ2FsbGJhY2spCiAgICAgICAgICAgICBv
bGRDYWxsYmFjaygpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0KLSAgICBJbnNwZWN0b3JU
ZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNoYWluZWRD
YWxsYmFjayk7CisgICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrID0gSW5zcGVj
dG9yVGVzdC5zYWZlV3JhcChjaGFpbmVkQ2FsbGJhY2spOwogfQogCiBJbnNwZWN0b3JUZXN0LnJ1
bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKQEAgLTM0MSw3ICsz
NTAsNyBAQCBmdW5jdGlvbiBydW5UZXN0KGVuYWJsZVdhdGNoRG9nV2hpbGVEZWJ1Z2dpbmcpCiAg
ICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQoaW5pdGlhbGl6YXRpb25GdW5jdGlvbnMsIHRl
c3RGdW5jdGlvbiwgY29tcGxldGVUZXN0Q2FsbElkKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRv
dy5JbnNwZWN0b3JUZXN0KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhZ2VSZWxvYWRl
ZCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYWdlTG9hZGVkKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXItZXhwZWN0ZWQudHh0CmluZGV4IDE4OGJi
MzYuLmM0YzQ4ZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHQtZm9ybWF0dGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci1leHBlY3RlZC50eHQKQEAgLTE0LDUgKzE0LDIxIEBA
IGZ1bmN0aW9uIGYoKSB7CiBmdW5jdGlvbiBnKCkgewogfQogPC9zY3JpcHQ+PC9ib2R5PjwvaHRt
bD4KKworUnVubmluZzogdGVzdEJyZWFrcG9pbnRzSW5PcmlnaW5hbEFuZEZvcm1hdHRlZFNvdXJj
ZQorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIGYxIChzY3Jp
cHQtZm9ybWF0dGVyLmh0bWw6MTIpCisgICAgMSkgIChzY3JpcHQtZm9ybWF0dGVyLmh0bWw6MSkK
K1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK1BhZ2UgcmVsb2FkZWQuCitOYXZpZ2F0ZWQgdG8g
dGVzdC1uYXZpZ2F0aW9uLmh0bWwKK1BhZ2UgcmVsb2FkZWQuCitOYXZpZ2F0ZWQgYmFjayB0byB0
ZXN0IHBhZ2UuCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkg
ZjIgKHNjcmlwdC1mb3JtYXR0ZXIuaHRtbDoxNykKKyAgICAxKSAgKHNjcmlwdC1mb3JtYXR0ZXIu
aHRtbDoxKQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogRGVidWdnZXIgd2FzIGRpc2FibGVk
LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZv
cm1hdHRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3Jt
YXR0ZXIuaHRtbAppbmRleCBmOGU3OTg2Li5mNDQxZmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwKQEAgLTYsOCArNiwy
MiBAQAogCiA8c2NyaXB0PgogCitmdW5jdGlvbiBmMSgpCit7CisgICAgdmFyIGE9MDt2YXIgYj0x
O3ZhciBjPTM7dmFyIGQ9NDt2YXIgZT01OworICAgIHZhciBmPTA7CisgICAgcmV0dXJuIDA7Cit9
CisKK2Z1bmN0aW9uIGYyKCkKK3sKKyAgICB2YXIgeCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisK
IHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogeworICAgIHZhciBwYW5lbCA9IFdlYkluc3BlY3Rvci5w
YW5lbHMuc2NyaXB0czsKICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigiU2NyaXB0Rm9ybWF0
dGVyV29ya2VyLmpzIik7CiAKICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRl
KFsKQEAgLTg0LDYgKzk4LDY1IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogCiAgICAgICAgICAg
ICB2YXIgY29udGVudCA9ICI8aHRtbD48Ym9keT48c2NyaXB0PmZ1bmN0aW9uIGYoKXt9PCIgKyAi
L3NjcmlwdD48c2NyaXB0PmZ1bmN0aW9uIGcoKXt9PCIgKyAiL3NjcmlwdD48L2JvZHk+PC9odG1s
PiI7CiAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoeyBtaW1lVHlwZTogInRleHQvaHRt
bCIsIGNvbnRlbnQ6IGNvbnRlbnQgfSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdEJyZWFrcG9pbnRzSW5PcmlnaW5hbEFuZEZvcm1hdHRlZFNvdXJjZShuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcm9vdDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2hv
d1NjcmlwdFNvdXJjZSgic2NyaXB0LWZvcm1hdHRlci5odG1sIiwgZGlkU2hvd1NjcmlwdFNvdXJj
ZSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dTY3JpcHRTb3VyY2Uoc291cmNlRnJh
bWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcm9vdCA9IHNvdXJjZUZyYW1lLl91
cmwuc3Vic3RyKDAsIHNvdXJjZUZyYW1lLl91cmwubGFzdEluZGV4T2YoIi8iKSArIDEpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2V0QnJlYWtwb2ludChzb3VyY2VGcmFtZSwgMTEs
ICIiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNl
ZChwYXVzZWRJbkYxKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlV2l0aFRpbWVvdXQoImYxKCkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gcGF1c2VkSW5GMShjYWxsRnJhbWVzKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24ocmVzdW1lZCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlc3VtZWQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmF2aWdhdGUocm9vdCArICJyZXNvdXJjZXMv
dGVzdC1uYXZpZ2F0aW9uLmh0bWwiLCBkaWROYXZpZ2F0ZUFub3RoZXJQYWdlKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkTmF2aWdhdGVBbm90aGVyUGFnZSgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5h
dmlnYXRlZCB0byB0ZXN0LW5hdmlnYXRpb24uaHRtbCIpOworICAgICAgICAgICAgICAgIHBhbmVs
Ll9wcmVzZW50YXRpb25Nb2RlbC50b2dnbGVGb3JtYXRTb3VyY2VGaWxlcygpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSgidGVzdC1uYXZpZ2F0aW9uLmh0
bWwiLCBkaWRTaG93QW5vdGhlclBhZ2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBkaWRTaG93QW5vdGhlclBhZ2Uoc291cmNlRnJhbWUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uYXZpZ2F0ZShyb290ICsgInNjcmlwdC1mb3Jt
YXR0ZXIuaHRtbCIsIGRpZE5hdmlnYXRlQmFjayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZE5hdmlnYXRlQmFjaygpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hdmlnYXRlZCBiYWNrIHRvIHRlc3QgcGFn
ZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UoInNj
cmlwdC1mb3JtYXR0ZXIuaHRtbCIsIGRpZFNob3dGb3JtYXR0ZWRTY3JpcHRTb3VyY2UpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRTaG93Rm9ybWF0dGVkU2NyaXB0
U291cmNlKHNvdXJjZUZyYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRo
ZXJlIHNob3VsZCBiZSBubyBicmVha3BvaW50IGluIGYxIHNpbmNlIHNjcmlwdCBpcyBwcmV0dHkt
cHJpbnRlZCBub3cuCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZVdpdGhUaW1lb3V0KCJmMSgpIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNl
dEJyZWFrcG9pbnQocGFuZWwudmlzaWJsZVZpZXcsIDI0LCAiIiwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQocGF1c2VkSW5GMik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZVdpdGhUaW1lb3V0KCJmMigpIik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBhdXNlZEluRjIoY2FsbEZy
YW1lcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNhcHR1
cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIF0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkYmMwNDEuLjFh
YzRkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0yOCAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBicmVha3BvaW50cyBzZXQg
aW4gb3JpZ2luYWwgYW5kIGZvcm1hdHRlZCBzY3JpcHRzIGFyZSBtZXNzZWQgdXAgYWZ0ZXIgbmF2
aWdhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5NDcKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS50b2dnbGVGb3JtYXRTb3VyY2VGaWxlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3JlbW92ZUJyZWFrcG9p
bnRGcm9tRGVidWdnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkJyZWFr
cG9pbnQucHJvdG90eXBlLnNlcmlhbGl6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdC5vcHRpb25Db21wYXJlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9hZGRPcHRpb25Ub0ZpbGVzU2Vs
ZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnJlc2V0
KToKKwogMjAxMS0wNC0yOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCmlu
ZGV4IDEwNmQ2MmYuLjc1ZDM1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAg
LTIwNyw2ICsyMDcsMTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9t
RGVidWdnZXIoc291cmNlRmlsZS5icmVha3BvaW50c1tsaW5lXSk7CiAgICAgICAgIH0KIAorICAg
ICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9icmVha3BvaW50c1dpdGhvdXRTb3VyY2VGaWxlKSB7
CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50c1dpdGhvdXRT
b3VyY2VGaWxlW2lkXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2lu
dHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludEZy
b21EZWJ1Z2dlcihicmVha3BvaW50c1tpXSk7CisgICAgICAgIH0KKwogICAgICAgICB2YXIgbWVz
c2FnZXMgPSB0aGlzLl9tZXNzYWdlczsKICAgICAgICAgdGhpcy5fcmVzZXQoKTsKIApAQCAtMzMy
LDE5ICszMzgsMTMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogCiAgICAgX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXI6IGZ1bmN0aW9u
KGJyZWFrcG9pbnQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCEoImRlYnVnZ2VySWQi
IGluIGJyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGRpZFJlbW92ZUJyZWFrcG9pbnQoKQotICAgICAgICB7CisgICAgICAgIGlm
ICgiZGVidWdnZXJJZCIgaW4gYnJlYWtwb2ludCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50LmRlYnVnZ2VySWQpOwog
ICAgICAgICAgICAgdGhpcy5fdW5iaW5kRGVidWdnZXJJZChicmVha3BvaW50KTsKLSAgICAgICAg
ICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnJlbW92ZUJyZWFrcG9pbnQoYnJl
YWtwb2ludC5kZWJ1Z2dlcklkLCBkaWRSZW1vdmVCcmVha3BvaW50LmJpbmQodGhpcykpOworCisg
ICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSwKIAog
ICAgIF9iaW5kRGVidWdnZXJJZDogZnVuY3Rpb24oYnJlYWtwb2ludCwgZGVidWdnZXJJZCkKQEAg
LTYzMyw3ICs2MzMsOCBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQnJlYWtwb2ludC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LmxpbmVOdW1iZXIgPSB0aGlz
LmxpbmVOdW1iZXI7CiAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LmNvbmRpdGlvbiA9IHRo
aXMuY29uZGl0aW9uOwogICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5lbmFibGVkID0gdGhp
cy5lbmFibGVkOwotICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5kZWJ1Z2dlcklkID0gdGhp
cy5kZWJ1Z2dlcklkOworICAgICAgICBpZiAoImRlYnVnZ2VySWQiIGluIHRoaXMpCisgICAgICAg
ICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5kZWJ1Z2dlcklkID0gdGhpcy5kZWJ1Z2dlcklkOwog
ICAgICAgICByZXR1cm4gc2VyaWFsaXplZEJyZWFrcG9pbnQ7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA5
ZGZiNjBjLi5kODU5MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjkxLDkgKzI5MSw5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiBhLmlzQ29u
dGVudFNjcmlwdCA/IDEgOiAtMTsKIAogICAgICAgICAgICAgaWYgKGEuaXNDb250ZW50U2NyaXB0
ICYmICFiLmlzQ29udGVudFNjcmlwdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsgCisgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICBpZiAoIWEuaXNDb250ZW50U2NyaXB0
ICYmIGIuaXNDb250ZW50U2NyaXB0KQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsgCisgICAg
ICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgICAgICBpZiAoYS50ZXh0ID09PSBiLnRl
eHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC00NzUsNiArNDc1LDExIEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50
QmFja0ZvcndhcmRJbmRleCA9IC0xOwogICAgICAgICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2Fy
ZEJ1dHRvbnMoKTsKIAorICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9zb3VyY2VGaWxlSWRU
b1NvdXJjZUZyYW1lKSB7CisgICAgICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3Vy
Y2VGaWxlSWRUb1NvdXJjZUZyYW1lW2lkXTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2FkZWQsIHRo
aXMuX3NvdXJjZUZyYW1lTG9hZGVkLCB0aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMu
X3NvdXJjZUZpbGVJZFRvU291cmNlRnJhbWUgPSB7fTsKICAgICAgICAgdGhpcy5fc291cmNlRmls
ZUlkVG9GaWxlc1NlbGVjdE9wdGlvbiA9IHt9OwogICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsK
</data>
<flag name="review"
          id="84327"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>