<?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>51588</bug_id>
          
          <creation_ts>2010-12-24 02:07:37 -0800</creation_ts>
          <short_desc>Web Inspector: implement script beautifier prototype</short_desc>
          <delta_ts>2011-01-18 02:16:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="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>326522</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-24 02:07:37 -0800</bug_when>
    <thetext>Implement SourceFrame.formatSource method with fake formatter (s/;/;\n/). Display breakpoints and execution line according to mapping between original script and formatted script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326523</commentid>
    <comment_count>1</comment_count>
      <attachid>77408</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-24 02:08:27 -0800</bug_when>
    <thetext>Created attachment 77408
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326525</commentid>
    <comment_count>2</comment_count>
      <attachid>77408</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-24 02:10:43 -0800</bug_when>
    <thetext>Comment on attachment 77408
Patch.

Format script feature is hidden behind Preferences.debugMode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326528</commentid>
    <comment_count>3</comment_count>
      <attachid>77408</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-12-24 02:13:50 -0800</bug_when>
    <thetext>Comment on attachment 77408
Patch.

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

&gt; WebCore/inspector/front-end/SourceFrame.js:795
&gt; +        this._formattedSource = this._source.replace(/;/g, &quot;;\n&quot;);

You should definitely sync up with Peter Rybin who has been writing a similar thing for the ChromeDevTools for Java. This replacement code definitely breaks up &quot;for(...; ...; ...)&quot; loops into not-so-beautiful lines. Can you fix this easily?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326545</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-24 02:34:24 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 77408 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77408&amp;action=review
&gt; 
&gt; &gt; WebCore/inspector/front-end/SourceFrame.js:795
&gt; &gt; +        this._formattedSource = this._source.replace(/;/g, &quot;;\n&quot;);
&gt; 
&gt; You should definitely sync up with Peter Rybin who has been writing a similar thing for the ChromeDevTools for Java. This replacement code definitely breaks up &quot;for(...; ...; ...)&quot; loops into not-so-beautiful lines. Can you fix this easily?

This s/;/;\n/ is used as a temporary stub. We are planning to switch to uglifyjs parser in the near future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327909</commentid>
    <comment_count>5</comment_count>
      <attachid>77408</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-30 06:14:01 -0800</bug_when>
    <thetext>Comment on attachment 77408
Patch.

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

Looks good with comment. Please fix it first.

&gt; WebCore/inspector/front-end/SourceFrame.js:793
&gt; +    formatSource: function()

It is worth extracting SourceFrameFromatter class that would be used by the SourceFrame for better code clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328157</commentid>
    <comment_count>6</comment_count>
      <attachid>77715</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-31 05:00:22 -0800</bug_when>
    <thetext>Created attachment 77715
Patch.

Formatting and line number conversions extracted to ScriptFormatter class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332171</commentid>
    <comment_count>7</comment_count>
      <attachid>77715</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-01-10 23:16:42 -0800</bug_when>
    <thetext>Comment on attachment 77715
Patch.

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

&gt; WebCore/ChangeLog:10
&gt; +        * inspector/front-end/ScriptFormatter.js: Added.

I find it helpful when someone add comments in the ChangeLog; at the very
least for new files.

&gt; WebCore/inspector/front-end/ScriptFormatter.js:92
&gt; +        var re = new RegExp(/[\$\.\w]+|{|}|;/g);

Nit: (performance) I don&apos;t see a need for &quot;new RegExp&quot; here. Also, you already have the
regex literal, and regex literals perform better then new dynamic objects!

&gt; WebCore/inspector/front-end/ScriptFormatter.js:93
&gt; +        while(true) {

Nit: (style) This should be &quot;while (true) {&quot;. You&apos;re missing a space.

&gt; WebCore/inspector/front-end/ScriptsPanel.js:69
&gt; +    this.formatButton.title = WebInspector.UIString(&quot;Format script.&quot;);

This looks like a new UIString. Please add it to localizedStrings.js. Note, because you use
git and localizedStrings.js is currently a &quot;binary file&quot; this unfortunately means the patch
can&apos;t be applied via the commit-queue and would probably need to be landed manually.
To create a git patch, for bugzilla, with the binary diff you could use: `git diff --binary`.
You may already have known this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332174</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-11 00:09:12 -0800</bug_when>
    <thetext>&gt; This looks like a new UIString. Please add it to localizedStrings.js. Note, because you use
&gt; git and localizedStrings.js is currently a &quot;binary file&quot; this unfortunately means the patch
&gt; can&apos;t be applied via the commit-queue and would probably need to be landed manually.
&gt; To create a git patch, for bugzilla, with the binary diff you could use: `git diff --binary`.
&gt; You may already have known this.

localizedStrings.js is a pain. Is it used in Safari only? Could we generate it in the build script? Or at least make it utf-8? We do have a number of JavaScript parsers / greps that might handle the task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332281</commentid>
    <comment_count>9</comment_count>
      <attachid>78519</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-11 05:25:17 -0800</bug_when>
    <thetext>Created attachment 78519
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332282</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-11 05:26:07 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 77715 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77715&amp;action=review
&gt; 
&gt; &gt; WebCore/ChangeLog:10
&gt; &gt; +        * inspector/front-end/ScriptFormatter.js: Added.
&gt; 
&gt; I find it helpful when someone add comments in the ChangeLog; at the very
&gt; least for new files.
&gt; 
&gt; &gt; WebCore/inspector/front-end/ScriptFormatter.js:92
&gt; &gt; +        var re = new RegExp(/[\$\.\w]+|{|}|;/g);
&gt; 
&gt; Nit: (performance) I don&apos;t see a need for &quot;new RegExp&quot; here. Also, you already have the
&gt; regex literal, and regex literals perform better then new dynamic objects!
&gt; 
&gt; &gt; WebCore/inspector/front-end/ScriptFormatter.js:93
&gt; &gt; +        while(true) {
&gt; 
&gt; Nit: (style) This should be &quot;while (true) {&quot;. You&apos;re missing a space.
&gt; 
&gt; &gt; WebCore/inspector/front-end/ScriptsPanel.js:69
&gt; &gt; +    this.formatButton.title = WebInspector.UIString(&quot;Format script.&quot;);
&gt; 

Done.

&gt; This looks like a new UIString. Please add it to localizedStrings.js. Note, because you use
&gt; git and localizedStrings.js is currently a &quot;binary file&quot; this unfortunately means the patch
&gt; can&apos;t be applied via the commit-queue and would probably need to be landed manually.
&gt; To create a git patch, for bugzilla, with the binary diff you could use: `git diff --binary`.
&gt; You may already have known this.

Bugzilla doesn&apos;t display binary diffs and binary patches cannot be merged. That&apos;s why I prefer to update localizedStrings.js just before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335726</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-18 02:16:00 -0800</bug_when>
    <thetext>Committed r76009: &lt;http://trac.webkit.org/changeset/76009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77408</attachid>
            <date>2010-12-24 02:08:27 -0800</date>
            <delta_ts>2010-12-31 05:00:22 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16122</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzJmZGZmYi4uMDQyN2NiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMi0yNCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgc2NyaXB0IGJl
YXV0aWZpZXIgcHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MTU4OAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9jbGVhckN1cnJlbnRFeGVjdXRp
b25MaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9j
YWxsRnJhbWVTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fZm9ybWF0U2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Nv
dXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlw
ZS5zZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5
cGUuX2NyZWF0ZVZpZXdlcklmTmVlZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZS5wcm90b3R5cGUuX3NldFRleHRWaWV3ZXJEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLnNldEV4ZWN1dGlvbkxpbmUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jbGVhckV4ZWN1dGlvbkxpbmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fc2V0RXhlY3V0
aW9uTGluZURlY29yYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnBy
b3RvdHlwZS5fY2xlYXJFeGVjdXRpb25MaW5lRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX3NldEJyZWFrcG9pbnREZWNvcmF0aW9u
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX3JlbW92ZUJy
ZWFrcG9pbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUuX21vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlLmZvcm1hdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlLl9maW5kTGluZUVuZGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZS5fbGluZU51bWJlclRvVGV4dFZpZXdlckxpbmVOdW1iZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fdGV4dFZpZXdlckxp
bmVOdW1iZXJUb0xpbmVOdW1iZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZS5fcG9zaXRpb25Ub1RleHRWaWV3ZXJMaW5lTnVtYmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX3RleHRWaWV3ZXJMaW5lTnVtYmVyVG9Q
b3NpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9j
b252ZXJ0UG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZS5fbG9jYXRpb25Ub1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZS5wcm90b3R5cGUuX3Bvc2l0aW9uVG9Mb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl91cHBlckJvdW5kKToKKwogMjAxMC0xMi0yMyAgRXZh
biBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmlu
ZGV4IDU2ZmFjZjIuLmIxN2JhYzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtNjMsNiArNjMsMTUgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bCA9IGZ1bmN0aW9uKCkKICAgICAvLyBGSVhNRTogYXBwZW5kIHRoZSBmdW5jdGlvbnMgc2VsZWN0
IGVsZW1lbnQgdG8gdGhlIHRvcCBzdGF0dXMgYmFyIHdoZW4gaXQgaXMgaW1wbGVtZW50ZWQuCiAg
ICAgLy8gdGhpcy50b3BTdGF0dXNCYXIuYXBwZW5kQ2hpbGQodGhpcy5mdW5jdGlvbnNTZWxlY3RF
bGVtZW50KTsKIAorICAgIHRoaXMuZm9ybWF0QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiYnV0dG9uIik7CisgICAgdGhpcy5mb3JtYXRCdXR0b24uY2xhc3NOYW1lID0gInN0YXR1cy1i
YXItaXRlbSI7CisgICAgdGhpcy5mb3JtYXRCdXR0b24uaWQgPSAiZm9ybWF0LXNjcmlwdCI7Cisg
ICAgdGhpcy5mb3JtYXRCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1h
dCBzY3JpcHQuIik7CisgICAgdGhpcy5mb3JtYXRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIikpOworICAgIHRoaXMuZm9ybWF0QnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fZm9ybWF0U2NyaXB0LmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICBpZiAoUHJlZmVyZW5jZXMuZGVidWdNb2RlKQorICAgICAgICB0aGlzLnRvcFN0YXR1c0Jhci5h
cHBlbmRDaGlsZCh0aGlzLmZvcm1hdEJ1dHRvbik7CisKICAgICB0aGlzLnNpZGViYXJCdXR0b25z
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuc2lkZWJh
ckJ1dHRvbnNFbGVtZW50LmlkID0gInNjcmlwdHMtc2lkZWJhci1idXR0b25zIjsKICAgICB0aGlz
LnRvcFN0YXR1c0Jhci5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJCdXR0b25zRWxlbWVudCk7CkBA
IC02OTMsOCArNzAyLDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICBfY2xlYXJDdXJyZW50RXhlY3V0aW9uTGluZTogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5f
ZXhlY3V0aW9uU291cmNlRnJhbWUuZXhlY3V0aW9uTGluZSA9IDA7CisgICAgICAgIGlmICghdGhp
cy5fZXhlY3V0aW9uU291cmNlRnJhbWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRo
aXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lLmNsZWFyRXhlY3V0aW9uTGluZSh0aGlzLl9leGVjdXRp
b25MaW5lTnVtYmVyKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1l
OwogICAgIH0sCiAKQEAgLTcxNSw4ICs3MjUsMTAgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Nob3dTY3JpcHRPclJlc291cmNlKHNjcmlw
dE9yUmVzb3VyY2UsIHtsaW5lOiBjdXJyZW50RnJhbWUubGluZX0pOwogCiAgICAgICAgIHRoaXMu
X2V4ZWN1dGlvblNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRnJhbWVGb3JTY3JpcHRPclJlc291
cmNlKHNjcmlwdE9yUmVzb3VyY2UpOwotICAgICAgICBpZiAodGhpcy5fZXhlY3V0aW9uU291cmNl
RnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZS5leGVjdXRpb25M
aW5lID0gY3VycmVudEZyYW1lLmxpbmU7CisgICAgICAgIGlmICh0aGlzLl9leGVjdXRpb25Tb3Vy
Y2VGcmFtZSkgeworICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uTGluZU51bWJlciA9IGN1cnJl
bnRGcmFtZS5saW5lOworICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUuc2V0
RXhlY3V0aW9uTGluZSh0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyKTsKKyAgICAgICAgfQogICAg
IH0sCiAKICAgICBfY2hhbmdlVmlzaWJsZUZpbGU6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtODUwLDYg
Kzg2MiwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fdXBkYXRlQmFja0FuZEZvcndhcmRCdXR0b25zKCk7CiAgICAgfSwKIAorICAgIF9m
b3JtYXRTY3JpcHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZpc2libGVW
aWV3ICYmIHRoaXMudmlzaWJsZVZpZXcuc291cmNlRnJhbWUpCisgICAgICAgICAgICB0aGlzLnZp
c2libGVWaWV3LnNvdXJjZUZyYW1lLmZvcm1hdFNvdXJjZSgpOworICAgIH0sCisKICAgICBfZW5h
YmxlRGVidWdnaW5nOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGVidWdn
ZXJFbmFibGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZyYW1lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmlu
ZGV4IGZhODQ0MWQuLmI0NWViNGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRnJhbWUuanMKQEAgLTY5LDIzICs2OSw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgZ2V0IGV4ZWN1dGlvbkxpbmUo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2V4ZWN1dGlvbkxpbmU7Ci0gICAgfSwKLQot
ICAgIHNldCBleGVjdXRpb25MaW5lKHgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZXhlY3V0
aW9uTGluZSA9PT0geCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcHJldmlv
dXNMaW5lID0gdGhpcy5fZXhlY3V0aW9uTGluZTsKLSAgICAgICAgdGhpcy5fZXhlY3V0aW9uTGlu
ZSA9IHg7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3RleHRWaWV3ZXIpCi0gICAgICAgICAgICB0aGlz
Ll91cGRhdGVFeGVjdXRpb25MaW5lKHByZXZpb3VzTGluZSk7Ci0gICAgfSwKLQogICAgIG1hcmtE
aWZmOiBmdW5jdGlvbihkaWZmRGF0YSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kaWZmTGlu
ZXMgJiYgdGhpcy5fdGV4dFZpZXdlcikKQEAgLTE0NSw2ICsxMjgsOSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0TW9kZWwuc2V0VGV4
dChudWxsLCBjb250ZW50KTsKICAgICAgICAgdGhpcy5fbWltZVR5cGUgPSBtaW1lVHlwZTsKICAg
ICAgICAgdGhpcy5fdXJsID0gdXJsOworICAgICAgICB0aGlzLl9zb3VyY2UgPSBjb250ZW50Owor
ICAgICAgICB0aGlzLl9saW5lRW5kaW5ncyA9IHRoaXMuX2ZpbmRMaW5lRW5kaW5ncyh0aGlzLl9z
b3VyY2UpOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5f
Y3JlYXRlVmlld2VySWZOZWVkZWQoKTsKICAgICB9LAogCkBAIC0yMDEsMTAgKzE4Nyw3IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRW
aWV3ZXIuYmVnaW5VcGRhdGVzKCk7CiAKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5taW1lVHlw
ZSA9IHRoaXMuX21pbWVUeXBlOwotICAgICAgICB0aGlzLl9hZGRFeGlzdGluZ01lc3NhZ2VzVG9T
b3VyY2UoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlRXhlY3V0aW9uTGluZSgpOwotICAgICAgICB0
aGlzLl91cGRhdGVEaWZmRGVjb3JhdGlvbnMoKTsKLSAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5y
ZXNpemUoKTsKKyAgICAgICAgdGhpcy5fc2V0VGV4dFZpZXdlckRlY29yYXRpb25zKCk7CiAKICAg
ICAgICAgaWYgKHRoaXMuX2xpbmVOdW1iZXJUb1JldmVhbCkgewogICAgICAgICAgICAgdGhpcy5y
ZXZlYWxMaW5lKHRoaXMuX2xpbmVOdW1iZXJUb1JldmVhbCk7CkBAIC0yMjIsMTUgKzIwNSwzNCBA
QCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX2xpbmVUb0hpZ2hsaWdodDsKICAgICAgICAgfQogCisgICAgICAgIHRoaXMuX3Rl
eHRWaWV3ZXIuZW5kVXBkYXRlcygpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJy
ZWFrcG9pbnRBZGRlZCwgdGhpcy5fYnJlYWtwb2ludEFkZGVkLCB0aGlzKTsKKworICAgICAgICBp
ZiAodGhpcy5fY2FuRWRpdFNjcmlwdHMpCisgICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVk
aXRDYWxsYmFjayA9IHRoaXMuX2VkaXRMaW5lLmJpbmQodGhpcyk7CisgICAgfSwKKworICAgIF9z
ZXRUZXh0Vmlld2VyRGVjb3JhdGlvbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3Jvd01lc3NhZ2VzID0ge307CisgICAgICAgIHRoaXMuX21lc3NhZ2VCdWJibGVzID0ge307CisK
KyAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5iZWdpblVwZGF0ZXMoKTsKKworICAgICAgICB0aGlz
Ll9hZGRFeGlzdGluZ01lc3NhZ2VzVG9Tb3VyY2UoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRGlm
ZkRlY29yYXRpb25zKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2V4ZWN1dGlvbkxpbmUpCisgICAg
ICAgICAgICB0aGlzLl9zZXRFeGVjdXRpb25MaW5lRGVjb3JhdGlvbih0aGlzLl9leGVjdXRpb25M
aW5lKTsKKwogICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50cygpOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChicmVha3BvaW50c1tpXSk7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwgdGhpcy5fYnJlYWtwb2ludEFkZGVk
LCB0aGlzKTsKIAotICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVuZFVwZGF0ZXMoKTsKKyAgICAg
ICAgdGhpcy5fdGV4dFZpZXdlci5yZXNpemUoKTsKIAotICAgICAgICBpZiAodGhpcy5fY2FuRWRp
dFNjcmlwdHMpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVkaXRDYWxsYmFjayA9IHRo
aXMuX2VkaXRMaW5lLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuZW5kVXBk
YXRlcygpOwogICAgIH0sCiAKICAgICBmaW5kU2VhcmNoTWF0Y2hlczogZnVuY3Rpb24ocXVlcnkp
CkBAIC0yOTksMTggKzMwMSwzMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICBtc2cuX3Jlc291cmNlTWVzc2FnZVJlcGVhdENvdW50RWxlbWVudC50ZXh0
Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiIChyZXBlYXRlZCAlZCB0aW1lcykiLCBt
c2cucmVwZWF0Q291bnQpOwogICAgIH0sCiAKLSAgICBfdXBkYXRlRXhlY3V0aW9uTGluZTogZnVu
Y3Rpb24ocHJldmlvdXNMaW5lKQorICAgIHNldEV4ZWN1dGlvbkxpbmU6IGZ1bmN0aW9uKGxpbmVO
dW1iZXIpCiAgICAgewotICAgICAgICBpZiAocHJldmlvdXNMaW5lKSB7Ci0gICAgICAgICAgICBp
ZiAocHJldmlvdXNMaW5lIC0gMSA8IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50KQotICAgICAg
ICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVtb3ZlRGVjb3JhdGlvbihwcmV2aW91c0xpbmUg
LSAxLCAid2Via2l0LWV4ZWN1dGlvbi1saW5lIik7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5f
ZXhlY3V0aW9uTGluZSA9IGxpbmVOdW1iZXI7CisgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2Vy
KQorICAgICAgICAgICAgdGhpcy5fc2V0RXhlY3V0aW9uTGluZURlY29yYXRpb24obGluZU51bWJl
cik7CisgICAgfSwKIAotICAgICAgICBpZiAoIXRoaXMuX2V4ZWN1dGlvbkxpbmUpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgY2xlYXJFeGVjdXRpb25MaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVy
KQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V4ZWN1dGlvbkxpbmU7CisgICAgICAgIGlm
ICh0aGlzLl90ZXh0Vmlld2VyKQorICAgICAgICAgICAgdGhpcy5fY2xlYXJFeGVjdXRpb25MaW5l
RGVjb3JhdGlvbihsaW5lTnVtYmVyKTsKKyAgICB9LAogCi0gICAgICAgIGlmICh0aGlzLl9leGVj
dXRpb25MaW5lIDwgdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQpCi0gICAgICAgICAgICB0aGlz
Ll90ZXh0Vmlld2VyLmFkZERlY29yYXRpb24odGhpcy5fZXhlY3V0aW9uTGluZSAtIDEsICJ3ZWJr
aXQtZXhlY3V0aW9uLWxpbmUiKTsKKyAgICBfc2V0RXhlY3V0aW9uTGluZURlY29yYXRpb246IGZ1
bmN0aW9uKGxpbmVOdW1iZXIpCisgICAgeworICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMu
X2xpbmVOdW1iZXJUb1RleHRWaWV3ZXJMaW5lTnVtYmVyKGxpbmVOdW1iZXIpOworICAgICAgICB0
aGlzLl90ZXh0Vmlld2VyLmFkZERlY29yYXRpb24obGluZU51bWJlciwgIndlYmtpdC1leGVjdXRp
b24tbGluZSIpOworICAgIH0sCisKKyAgICBfY2xlYXJFeGVjdXRpb25MaW5lRGVjb3JhdGlvbjog
ZnVuY3Rpb24obGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBsaW5lTnVtYmVyID0gdGhp
cy5fbGluZU51bWJlclRvVGV4dFZpZXdlckxpbmVOdW1iZXIobGluZU51bWJlcik7CisgICAgICAg
IHRoaXMuX3RleHRWaWV3ZXIucmVtb3ZlRGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWV4
ZWN1dGlvbi1saW5lIik7CiAgICAgfSwKIAogICAgIF91cGRhdGVEaWZmRGVjb3JhdGlvbnM6IGZ1
bmN0aW9uKCkKQEAgLTQxOCw3ICs0MzIsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJv
dG90eXBlID0gewogICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbmRpdGlv
bi1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludENoYW5nZWQsIHRoaXMpOwogICAgICAgICBicmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLl9icmVha3BvaW50UmVtb3Zl
ZCwgdGhpcyk7CiAKLSAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VUZXh0ID0gdGhpcy5fdGV4dE1v
ZGVsLmxpbmUoYnJlYWtwb2ludC5saW5lIC0gMSk7CisgICAgICAgIGJyZWFrcG9pbnQuc291cmNl
VGV4dCA9IHRoaXMuX3RleHRNb2RlbC5saW5lKHRoaXMuX2xpbmVOdW1iZXJUb1RleHRWaWV3ZXJM
aW5lTnVtYmVyKGJyZWFrcG9pbnQubGluZSkpOwogICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50
RGVjb3JhdGlvbihicmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuZW5hYmxlZCwgISFicmVha3Bv
aW50LmNvbmRpdGlvbik7CiAgICAgfSwKIApAQCAtNDQxLDcgKzQ1NSw3IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBfc2V0QnJlYWtwb2ludERlY29yYXRp
b246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGVuYWJsZWQsIGhhc0NvbmRpdGlvbikKICAgICB7Ci0g
ICAgICAgIGxpbmVOdW1iZXIgLT0gMTsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlzLl9s
aW5lTnVtYmVyVG9UZXh0Vmlld2VyTGluZU51bWJlcihsaW5lTnVtYmVyKTsKICAgICAgICAgdGhp
cy5fdGV4dFZpZXdlci5iZWdpblVwZGF0ZXMoKTsKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5h
ZGREZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtwb2ludCIpOwogICAgICAgICBp
ZiAoZW5hYmxlZCkKQEAgLTQ1Nyw3ICs0NzEsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlID0gewogCiAgICAgX3JlbW92ZUJyZWFrcG9pbnREZWNvcmF0aW9uOiBmdW5jdGlv
bihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgbGluZU51bWJlciAtPSAxOworICAgICAgICB2
YXIgbGluZU51bWJlciA9IHRoaXMuX2xpbmVOdW1iZXJUb1RleHRWaWV3ZXJMaW5lTnVtYmVyKGxp
bmVOdW1iZXIpOwogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmJlZ2luVXBkYXRlcygpOwogICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24obGluZU51bWJlciwgIndlYmtp
dC1icmVha3BvaW50Iik7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVtb3ZlRGVjb3JhdGlv
bihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQtZGlzYWJsZWQiKTsKQEAgLTQ3Myw3ICs0
ODcsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndl
YmtpdC1saW5lLW51bWJlciIpOwogICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0YXJnZXQucGFyZW50RWxlbWVudC5saW5l
TnVtYmVyICsgMTsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlzLl90ZXh0Vmlld2VyTGlu
ZU51bWJlclRvTGluZU51bWJlcih0YXJnZXQucGFyZW50RWxlbWVudC5saW5lTnVtYmVyKTsKIAog
ICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7
CiAKQEAgLTUzOCw3ICs1NTIsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNl
bGZXaXRoQ2xhc3MoIndlYmtpdC1saW5lLW51bWJlciIpOwogICAgICAgICBpZiAoIXRhcmdldCkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0YXJnZXQucGFy
ZW50RWxlbWVudC5saW5lTnVtYmVyICsgMTsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlz
Ll90ZXh0Vmlld2VyTGluZU51bWJlclRvTGluZU51bWJlcih0YXJnZXQucGFyZW50RWxlbWVudC5s
aW5lTnVtYmVyKTsKIAogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuX2ZpbmRCcmVha3Bv
aW50KGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoYnJlYWtwb2ludCkgewpAQCAtNzEwLDcgKzcy
NCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBfZWRp
dEJyZWFrcG9pbnRDb25kaXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgY2Fs
bGJhY2spCiAgICAgewotICAgICAgICBsaW5lTnVtYmVyIC09IDE7CisgICAgICAgIHZhciBsaW5l
TnVtYmVyID0gdGhpcy5fbGluZU51bWJlclRvVGV4dFZpZXdlckxpbmVOdW1iZXIobGluZU51bWJl
cik7CiAgICAgICAgIHRoaXMuX2NvbmRpdGlvbkVsZW1lbnQgPSB0aGlzLl9jcmVhdGVDb25kaXRp
b25FbGVtZW50KGxpbmVOdW1iZXIpOwogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmFkZERlY29y
YXRpb24obGluZU51bWJlciwgdGhpcy5fY29uZGl0aW9uRWxlbWVudCk7CiAKQEAgLTc3Niw2ICs3
OTAsMTIwIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6ZSgpOwogICAgIH0sCiAKKyAgICBmb3JtYXRTb3Vy
Y2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZFNvdXJjZSA9IHRo
aXMuX3NvdXJjZS5yZXBsYWNlKC87L2csICI7XG4iKTsKKyAgICAgICAgdGhpcy5fZm9ybWF0dGVk
TGluZUVuZGluZ3MgPSB0aGlzLl9maW5kTGluZUVuZGluZ3ModGhpcy5fZm9ybWF0dGVkU291cmNl
KTsKKworICAgICAgICB0aGlzLl9zeW1ib2xQb3NpdGlvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5f
Zm9ybWF0dGVkU3ltYm9sUG9zaXRpb25zID0gW107CisgICAgICAgIHZhciBsYXN0Q29kZVBvc2l0
aW9uID0gMDsKKyAgICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgvW1wkXC5cd10rfHt8fXw7L2cp
OworICAgICAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2ggPSByZS5leGVj
KHRoaXMuX2Zvcm1hdHRlZFNvdXJjZSk7CisgICAgICAgICAgICBpZiAoIW1hdGNoKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fc291cmNl
LmluZGV4T2YobWF0Y2hbMF0sIGxhc3RDb2RlUG9zaXRpb24pOworICAgICAgICAgICAgaWYgKHBv
c2l0aW9uID09PSAtMSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRo
aXMuX3N5bWJvbFBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX2Zv
cm1hdHRlZFN5bWJvbFBvc2l0aW9ucy5wdXNoKG1hdGNoLmluZGV4KTsKKyAgICAgICAgICAgIGxh
c3RDb2RlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoWzBdLmxlbmd0aDsKKyAgICAgICAgfQor
ICAgICAgICB0aGlzLl9zeW1ib2xQb3NpdGlvbnMucHVzaCh0aGlzLl9zb3VyY2UubGVuZ3RoKTsK
KyAgICAgICAgdGhpcy5fZm9ybWF0dGVkU3ltYm9sUG9zaXRpb25zLnB1c2godGhpcy5fZm9ybWF0
dGVkU291cmNlLmxlbmd0aCk7CisKKyAgICAgICAgdGhpcy5fZm9ybWF0dGVkID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5fdGV4dE1vZGVsLnNldFRleHQobnVsbCwgdGhpcy5fZm9ybWF0dGVkU291cmNl
KTsKKyAgICAgICAgdGhpcy5fc2V0VGV4dFZpZXdlckRlY29yYXRpb25zKCk7CisgICAgfSwKKwor
ICAgIF9maW5kTGluZUVuZGluZ3M6IGZ1bmN0aW9uKHNvdXJjZSkKKyAgICB7CisgICAgICAgIHZh
ciBsaW5lRW5kaW5ncyA9IFtdOworICAgICAgICB2YXIgaSA9IHNvdXJjZS5pbmRleE9mKCJcbiIp
OworICAgICAgICB3aGlsZSAoaSAhPT0gLTEpIHsKKyAgICAgICAgICAgIGxpbmVFbmRpbmdzLnB1
c2goaSk7CisgICAgICAgICAgICBpID0gc291cmNlLmluZGV4T2YoIlxuIiwgaSArIDEpOworICAg
ICAgICB9CisgICAgICAgIGxpbmVFbmRpbmdzLnB1c2goc291cmNlLmxlbmd0aCk7CisgICAgICAg
IHJldHVybiBsaW5lRW5kaW5nczsKKyAgICB9LAorCisgICAgX2xpbmVOdW1iZXJUb1RleHRWaWV3
ZXJMaW5lTnVtYmVyOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9mb3JtYXR0ZWQpCisgICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciAtIDE7CisgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX2xvY2F0aW9uVG9Qb3NpdGlvbih0aGlzLl9saW5lRW5k
aW5ncywgeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY29sdW1uOiAwIH0pOworICAgICAgICByZXR1
cm4gdGhpcy5fcG9zaXRpb25Ub1RleHRWaWV3ZXJMaW5lTnVtYmVyKHBvc2l0aW9uKTsKKyAgICB9
LAorCisgICAgX3RleHRWaWV3ZXJMaW5lTnVtYmVyVG9MaW5lTnVtYmVyOiBmdW5jdGlvbihsaW5l
TnVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9mb3JtYXR0ZWQpCisgICAgICAgICAg
ICByZXR1cm4gbGluZU51bWJlciArIDE7CisgICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX3Rl
eHRWaWV3ZXJMaW5lTnVtYmVyVG9Qb3NpdGlvbihsaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3Bvc2l0aW9uVG9Mb2NhdGlvbih0aGlzLl9saW5lRW5kaW5ncywgcG9zaXRpb24pLmxp
bmUgKyAxOworICAgIH0sCisKKyAgICBfcG9zaXRpb25Ub1RleHRWaWV3ZXJMaW5lTnVtYmVyOiBm
dW5jdGlvbihwb3NpdGlvbikKKyAgICB7CisgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IHRoaXMu
X2Zvcm1hdHRlZCA/IHRoaXMuX2Zvcm1hdHRlZExpbmVFbmRpbmdzIDogdGhpcy5fbGluZUVuZGlu
Z3M7CisgICAgICAgIGlmICh0aGlzLl9mb3JtYXR0ZWQpCisgICAgICAgICAgICBwb3NpdGlvbiA9
IHRoaXMuX2NvbnZlcnRQb3NpdGlvbih0aGlzLl9zeW1ib2xQb3NpdGlvbnMsIHRoaXMuX2Zvcm1h
dHRlZFN5bWJvbFBvc2l0aW9ucywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gdGhpcy5fcG9z
aXRpb25Ub0xvY2F0aW9uKGxpbmVFbmRpbmdzLCBwb3NpdGlvbikubGluZTsKKyAgICB9LAorCisg
ICAgX3RleHRWaWV3ZXJMaW5lTnVtYmVyVG9Qb3NpdGlvbjogZnVuY3Rpb24obGluZU51bWJlcikK
KyAgICB7CisgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IHRoaXMuX2Zvcm1hdHRlZCA/IHRoaXMu
X2Zvcm1hdHRlZExpbmVFbmRpbmdzIDogdGhpcy5fbGluZUVuZGluZ3M7CisgICAgICAgIHZhciBw
b3NpdGlvbiA9IHRoaXMuX2xvY2F0aW9uVG9Qb3NpdGlvbihsaW5lRW5kaW5ncywgeyBsaW5lOiBs
aW5lTnVtYmVyLCBjb2x1bW46IDAgfSk7CisgICAgICAgIGlmICh0aGlzLl9mb3JtYXR0ZWQpCisg
ICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMuX2NvbnZlcnRQb3NpdGlvbih0aGlzLl9mb3JtYXR0
ZWRTeW1ib2xQb3NpdGlvbnMsIHRoaXMuX3N5bWJvbFBvc2l0aW9ucywgcG9zaXRpb24pOworICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgfSwKKworICAgIF9jb252ZXJ0UG9zaXRpb246IGZ1
bmN0aW9uKHN5bWJvbFBvc2l0aW9uczEsIHN5bWJvbFBvc2l0aW9uczIsIHBvc2l0aW9uKQorICAg
IHsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fdXBwZXJCb3VuZChzeW1ib2xQb3NpdGlvbnMx
LCBwb3NpdGlvbik7CisgICAgICAgIGlmIChpbmRleCA9PT0gc3ltYm9sUG9zaXRpb25zMi5sZW5n
dGggLSAxKQorICAgICAgICAgICAgcmV0dXJuIHN5bWJvbFBvc2l0aW9uczJbaW5kZXhdIC0gMTsK
KyAgICAgICAgcmV0dXJuIHN5bWJvbFBvc2l0aW9uczJbaW5kZXhdOworICAgIH0sCisKKyAgICBf
bG9jYXRpb25Ub1Bvc2l0aW9uOiBmdW5jdGlvbihsaW5lRW5kaW5ncywgbG9jYXRpb24pCisgICAg
eworICAgICAgICB2YXIgcG9zaXRpb24gPSBsb2NhdGlvbi5saW5lID8gbGluZUVuZGluZ3NbbG9j
YXRpb24ubGluZSAtIDFdICsgMSA6IDA7CisgICAgICAgIHJldHVybiBwb3NpdGlvbiArIGxvY2F0
aW9uLmNvbHVtbjsKKyAgICB9LAorCisgICAgX3Bvc2l0aW9uVG9Mb2NhdGlvbjogZnVuY3Rpb24o
bGluZUVuZGluZ3MsIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0ge307
CisgICAgICAgIGxvY2F0aW9uLmxpbmUgPSB0aGlzLl91cHBlckJvdW5kKGxpbmVFbmRpbmdzLCBw
b3NpdGlvbiAtIDEpOworICAgICAgICBpZiAoIWxvY2F0aW9uLmxpbmUpCisgICAgICAgICAgICBs
b2NhdGlvbi5jb2x1bW4gPSBwb3NpdGlvbjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9j
YXRpb24uY29sdW1uID0gcG9zaXRpb24gLSBsaW5lRW5kaW5nc1tsb2NhdGlvbi5saW5lIC0gMV0g
LSAxOworICAgICAgICByZXR1cm4gbG9jYXRpb247CisgICAgfSwKKworICAgIF91cHBlckJvdW5k
OiBmdW5jdGlvbihhcnJheSwgbnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIGZpcnN0ID0gMDsK
KyAgICAgICAgdmFyIGNvdW50ID0gYXJyYXkubGVuZ3RoOworICAgICAgICB3aGlsZSAoY291bnQg
PiAwKSB7CisgICAgICAgICAgdmFyIHN0ZXAgPSBjb3VudCA+PiAxOworICAgICAgICAgIHZhciBt
aWRkbGUgPSBmaXJzdCArIHN0ZXA7CisgICAgICAgICAgaWYgKG51bWJlciA+PSBhcnJheVttaWRk
bGVdKSB7CisgICAgICAgICAgICAgIGZpcnN0ID0gbWlkZGxlICsgMTsKKyAgICAgICAgICAgICAg
Y291bnQgLT0gc3RlcCArIDE7CisgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgIGNvdW50
ID0gc3RlcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgfSwKKwogICAg
IF9jb250aW51ZVRvTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7CiAgICAgICAgIHZh
ciBzb3VyY2VJRCA9IHRoaXMuX3NvdXJjZUlERm9yTGluZShsaW5lTnVtYmVyKTsK
</data>
<flag name="review"
          id="68537"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77715</attachid>
            <date>2010-12-31 05:00:22 -0800</date>
            <delta_ts>2011-01-11 05:25:17 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26704</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWQwNTFjZC4uNWE5NDEyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0xMi0zMSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgc2NyaXB0IGJl
YXV0aWZpZXIgcHJvdG90eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE1ODgKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdEZvcm1hdHRlci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0Rm9ybWF0dGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIuZmlu
ZExpbmVFbmRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9j
YXRpb25Ub1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIu
cG9zaXRpb25Ub0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0
ZXIudXBwZXJCb3VuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBy
b3RvdHlwZS5mb3JtYXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5w
cm90b3R5cGUub3JpZ2luYWxMaW5lTnVtYmVyVG9Gb3JtYXR0ZWRMaW5lTnVtYmVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdHRlZExpbmVO
dW1iZXJUb09yaWdpbmFsTGluZU51bWJlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
Rm9ybWF0dGVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uVG9Gb3JtYXR0ZWRMaW5lTnVtYmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1h
dHRlZExpbmVOdW1iZXJUb09yaWdpbmFsUG9zaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdEZvcm1hdHRlci5wcm90b3R5cGUuX2NvbnZlcnRQb3NpdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9jYWxsRnJhbWVTZWxlY3RlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fZm9ybWF0U2NyaXB0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5mb3JtYXRTb3VyY2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEwLTEyLTI5ICBaaGVueWFvIE1vICA8em1vQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwNWE0
NjdmLi5jOGE3YTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY3MCw2ICs0NjcwLDcgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Nob3J0Y3V0
c0hlbHAuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMDQ4OGNi
NS4uODU0NDgyMiAxMDA3NTUKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NTU5
Myw2ICs2NTU5MywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTY3JpcHRGb3JtYXR0ZXIuanMiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXFNjcmlwdHNQYW5lbC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZTc2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCkBAIC0wLDAgKzEs
MTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlciA9IGZ1bmN0aW9uKHNvdXJjZSkKK3sK
KyAgICB0aGlzLl9vcmlnaW5hbFNvdXJjZSA9IHNvdXJjZTsKKyAgICB0aGlzLl9vcmlnaW5hbExp
bmVFbmRpbmdzID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5maW5kTGluZUVuZGluZ3Mo
c291cmNlKTsKK30KKworV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5maW5kTGluZUVuZGlu
Z3MgPSBmdW5jdGlvbihzb3VyY2UpCit7CisgICAgdmFyIGxpbmVFbmRpbmdzID0gW107CisgICAg
dmFyIGkgPSBzb3VyY2UuaW5kZXhPZigiXG4iKTsKKyAgICB3aGlsZSAoaSAhPT0gLTEpIHsKKyAg
ICAgICAgbGluZUVuZGluZ3MucHVzaChpKTsKKyAgICAgICAgaSA9IHNvdXJjZS5pbmRleE9mKCJc
biIsIGkgKyAxKTsKKyAgICB9CisgICAgbGluZUVuZGluZ3MucHVzaChzb3VyY2UubGVuZ3RoKTsK
KyAgICByZXR1cm4gbGluZUVuZGluZ3M7Cit9CisKK1dlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0
ZXIubG9jYXRpb25Ub1Bvc2l0aW9uID0gZnVuY3Rpb24obGluZUVuZGluZ3MsIGxvY2F0aW9uKQor
eworICAgIHZhciBwb3NpdGlvbiA9IGxvY2F0aW9uLmxpbmUgPyBsaW5lRW5kaW5nc1tsb2NhdGlv
bi5saW5lIC0gMV0gKyAxIDogMDsKKyAgICByZXR1cm4gcG9zaXRpb24gKyBsb2NhdGlvbi5jb2x1
bW47Cit9CisKK1dlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xvY2F0aW9u
ID0gZnVuY3Rpb24obGluZUVuZGluZ3MsIHBvc2l0aW9uKQoreworICAgIHZhciBsb2NhdGlvbiA9
IHt9OworICAgIGxvY2F0aW9uLmxpbmUgPSBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnVw
cGVyQm91bmQobGluZUVuZGluZ3MsIHBvc2l0aW9uIC0gMSk7CisgICAgaWYgKCFsb2NhdGlvbi5s
aW5lKQorICAgICAgICBsb2NhdGlvbi5jb2x1bW4gPSBwb3NpdGlvbjsKKyAgICBlbHNlCisgICAg
ICAgIGxvY2F0aW9uLmNvbHVtbiA9IHBvc2l0aW9uIC0gbGluZUVuZGluZ3NbbG9jYXRpb24ubGlu
ZSAtIDFdIC0gMTsKKyAgICByZXR1cm4gbG9jYXRpb247Cit9CisKK1dlYkluc3BlY3Rvci5TY3Jp
cHRGb3JtYXR0ZXIudXBwZXJCb3VuZCA9IGZ1bmN0aW9uKGFycmF5LCBudW1iZXIpCit7CisgICAg
dmFyIGZpcnN0ID0gMDsKKyAgICB2YXIgY291bnQgPSBhcnJheS5sZW5ndGg7CisgICAgd2hpbGUg
KGNvdW50ID4gMCkgeworICAgICAgdmFyIHN0ZXAgPSBjb3VudCA+PiAxOworICAgICAgdmFyIG1p
ZGRsZSA9IGZpcnN0ICsgc3RlcDsKKyAgICAgIGlmIChudW1iZXIgPj0gYXJyYXlbbWlkZGxlXSkg
eworICAgICAgICAgIGZpcnN0ID0gbWlkZGxlICsgMTsKKyAgICAgICAgICBjb3VudCAtPSBzdGVw
ICsgMTsKKyAgICAgIH0gZWxzZQorICAgICAgICAgIGNvdW50ID0gc3RlcDsKKyAgICB9CisgICAg
cmV0dXJuIGZpcnN0OworfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlw
ZSA9IHsKKyAgICBmb3JtYXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Zvcm1h
dHRlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZFNvdXJjZSA9IHRoaXMuX29yaWdp
bmFsU291cmNlLnJlcGxhY2UoLzsvZywgIjtcbiIpOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRM
aW5lRW5kaW5ncyA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIuZmluZExpbmVFbmRpbmdz
KHRoaXMuX2Zvcm1hdHRlZFNvdXJjZSk7CisKKyAgICAgICAgdGhpcy5fb3JpZ2luYWxTeW1ib2xQ
b3NpdGlvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5fZm9ybWF0dGVkU3ltYm9sUG9zaXRpb25zID0g
W107CisgICAgICAgIHZhciBsYXN0Q29kZVBvc2l0aW9uID0gMDsKKyAgICAgICAgdmFyIHJlID0g
bmV3IFJlZ0V4cCgvW1wkXC5cd10rfHt8fXw7L2cpOworICAgICAgICB3aGlsZSh0cnVlKSB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2ggPSByZS5leGVjKHRoaXMuX2Zvcm1hdHRlZFNvdXJjZSk7Cisg
ICAgICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fb3JpZ2luYWxTb3VyY2UuaW5kZXhPZihtYXRjaFswXSwg
bGFzdENvZGVQb3NpdGlvbik7CisgICAgICAgICAgICBpZiAocG9zaXRpb24gPT09IC0xKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxTeW1ib2xQ
b3NpdGlvbnMucHVzaChwb3NpdGlvbik7CisgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRTeW1i
b2xQb3NpdGlvbnMucHVzaChtYXRjaC5pbmRleCk7CisgICAgICAgICAgICBsYXN0Q29kZVBvc2l0
aW9uID0gcG9zaXRpb24gKyBtYXRjaFswXS5sZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgdGhp
cy5fb3JpZ2luYWxTeW1ib2xQb3NpdGlvbnMucHVzaCh0aGlzLl9vcmlnaW5hbFNvdXJjZS5sZW5n
dGgpOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRTeW1ib2xQb3NpdGlvbnMucHVzaCh0aGlzLl9m
b3JtYXR0ZWRTb3VyY2UubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVk
U291cmNlOworICAgIH0sCisKKyAgICBvcmlnaW5hbExpbmVOdW1iZXJUb0Zvcm1hdHRlZExpbmVO
dW1iZXI6IGZ1bmN0aW9uKG9yaWdpbmFsTGluZU51bWJlcikKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fZm9ybWF0dGVkKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGluZU51bWJlcjsK
KyAgICAgICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0
dGVyLmxvY2F0aW9uVG9Qb3NpdGlvbih0aGlzLl9vcmlnaW5hbExpbmVFbmRpbmdzLCB7IGxpbmU6
IG9yaWdpbmFsTGluZU51bWJlciwgY29sdW1uOiAwIH0pOworICAgICAgICByZXR1cm4gdGhpcy5v
cmlnaW5hbFBvc2l0aW9uVG9Gb3JtYXR0ZWRMaW5lTnVtYmVyKG9yaWdpbmFsUG9zaXRpb24pOwor
ICAgIH0sCisKKyAgICBmb3JtYXR0ZWRMaW5lTnVtYmVyVG9PcmlnaW5hbExpbmVOdW1iZXI6IGZ1
bmN0aW9uKGZvcm1hdHRlZExpbmVOdW1iZXIpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Zv
cm1hdHRlZCkKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRMaW5lTnVtYmVyOworICAgICAg
ICB2YXIgb3JpZ2luYWxQb3NpdGlvbiA9IHRoaXMuZm9ybWF0dGVkTGluZU51bWJlclRvT3JpZ2lu
YWxQb3NpdGlvbihmb3JtYXR0ZWRMaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xvY2F0aW9uKHRoaXMuX29yaWdpbmFsTGlu
ZUVuZGluZ3MsIG9yaWdpbmFsUG9zaXRpb24pLmxpbmU7CisgICAgfSwKKworICAgIG9yaWdpbmFs
UG9zaXRpb25Ub0Zvcm1hdHRlZExpbmVOdW1iZXI6IGZ1bmN0aW9uKG9yaWdpbmFsUG9zaXRpb24p
CisgICAgeworICAgICAgICB2YXIgbGluZUVuZGluZ3MgPSB0aGlzLl9mb3JtYXR0ZWQgPyB0aGlz
Ll9mb3JtYXR0ZWRMaW5lRW5kaW5ncyA6IHRoaXMuX29yaWdpbmFsTGluZUVuZGluZ3M7CisgICAg
ICAgIGlmICh0aGlzLl9mb3JtYXR0ZWQpCisgICAgICAgICAgICBmb3JtYXR0ZWRQb3NpdGlvbiA9
IHRoaXMuX2NvbnZlcnRQb3NpdGlvbih0aGlzLl9vcmlnaW5hbFN5bWJvbFBvc2l0aW9ucywgdGhp
cy5fZm9ybWF0dGVkU3ltYm9sUG9zaXRpb25zLCBvcmlnaW5hbFBvc2l0aW9uKTsKKyAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xvY2F0aW9uKGxp
bmVFbmRpbmdzLCBmb3JtYXR0ZWRQb3NpdGlvbikubGluZTsKKyAgICB9LAorCisgICAgZm9ybWF0
dGVkTGluZU51bWJlclRvT3JpZ2luYWxQb3NpdGlvbjogZnVuY3Rpb24oZm9ybWF0dGVkTGluZU51
bWJlcikKKyAgICB7CisgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IHRoaXMuX2Zvcm1hdHRlZCA/
IHRoaXMuX2Zvcm1hdHRlZExpbmVFbmRpbmdzIDogdGhpcy5fb3JpZ2luYWxMaW5lRW5kaW5nczsK
KyAgICAgICAgdmFyIGZvcm1hdHRlZFBvc2l0aW9uID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1h
dHRlci5sb2NhdGlvblRvUG9zaXRpb24obGluZUVuZGluZ3MsIHsgbGluZTogZm9ybWF0dGVkTGlu
ZU51bWJlciwgY29sdW1uOiAwIH0pOworICAgICAgICBpZiAoIXRoaXMuX2Zvcm1hdHRlZCkKKyAg
ICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRQb3NpdGlvbjsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbnZlcnRQb3NpdGlvbih0aGlzLl9mb3JtYXR0ZWRTeW1ib2xQb3NpdGlvbnMsIHRoaXMuX29y
aWdpbmFsU3ltYm9sUG9zaXRpb25zLCBmb3JtYXR0ZWRQb3NpdGlvbik7CisgICAgfSwKKworICAg
IF9jb252ZXJ0UG9zaXRpb246IGZ1bmN0aW9uKHN5bWJvbFBvc2l0aW9uczEsIHN5bWJvbFBvc2l0
aW9uczIsIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGluZGV4ID0gV2ViSW5zcGVjdG9y
LlNjcmlwdEZvcm1hdHRlci51cHBlckJvdW5kKHN5bWJvbFBvc2l0aW9uczEsIHBvc2l0aW9uKTsK
KyAgICAgICAgaWYgKGluZGV4ID09PSBzeW1ib2xQb3NpdGlvbnMyLmxlbmd0aCAtIDEpCisgICAg
ICAgICAgICByZXR1cm4gc3ltYm9sUG9zaXRpb25zMltpbmRleF0gLSAxOworICAgICAgICByZXR1
cm4gc3ltYm9sUG9zaXRpb25zMltpbmRleF07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggMTM4YmJkYS4uZGU3YjY0YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC02Myw2ICs2Mywx
NSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIC8vIEZJWE1F
OiBhcHBlbmQgdGhlIGZ1bmN0aW9ucyBzZWxlY3QgZWxlbWVudCB0byB0aGUgdG9wIHN0YXR1cyBi
YXIgd2hlbiBpdCBpcyBpbXBsZW1lbnRlZC4KICAgICAvLyB0aGlzLnRvcFN0YXR1c0Jhci5hcHBl
bmRDaGlsZCh0aGlzLmZ1bmN0aW9uc1NlbGVjdEVsZW1lbnQpOwogCisgICAgdGhpcy5mb3JtYXRC
dXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKKyAgICB0aGlzLmZvcm1h
dEJ1dHRvbi5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKyAgICB0aGlzLmZvcm1hdEJ1
dHRvbi5pZCA9ICJmb3JtYXQtc2NyaXB0IjsKKyAgICB0aGlzLmZvcm1hdEJ1dHRvbi50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9ybWF0IHNjcmlwdC4iKTsKKyAgICB0aGlzLmZvcm1h
dEJ1dHRvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CisgICAg
dGhpcy5mb3JtYXRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9mb3JtYXRT
Y3JpcHQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIGlmIChQcmVmZXJlbmNlcy5kZWJ1Z01vZGUp
CisgICAgICAgIHRoaXMudG9wU3RhdHVzQmFyLmFwcGVuZENoaWxkKHRoaXMuZm9ybWF0QnV0dG9u
KTsKKwogICAgIHRoaXMuc2lkZWJhckJ1dHRvbnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgdGhpcy5zaWRlYmFyQnV0dG9uc0VsZW1lbnQuaWQgPSAic2NyaXB0
cy1zaWRlYmFyLWJ1dHRvbnMiOwogICAgIHRoaXMudG9wU3RhdHVzQmFyLmFwcGVuZENoaWxkKHRo
aXMuc2lkZWJhckJ1dHRvbnNFbGVtZW50KTsKQEAgLTY5MCw3ICs2OTksNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfY2xlYXJDdXJyZW50RXhlY3V0aW9u
TGluZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2V4ZWN1dGlvblNvdXJj
ZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUuZXhlY3V0aW9u
TGluZSA9IDA7CisgICAgICAgICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZS5jbGVhckV4
ZWN1dGlvbkxpbmUoKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1l
OwogICAgIH0sCiAKQEAgLTcxMiw3ICs3MjEsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSA9IHRo
aXMuX3NvdXJjZUZyYW1lRm9yU2NyaXB0T3JSZXNvdXJjZShzY3JpcHRPclJlc291cmNlKTsKICAg
ICAgICAgaWYgKHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5f
ZXhlY3V0aW9uU291cmNlRnJhbWUuZXhlY3V0aW9uTGluZSA9IGN1cnJlbnRGcmFtZS5saW5lOwor
ICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUuc2V0RXhlY3V0aW9uTGluZShj
dXJyZW50RnJhbWUubGluZSk7CiAgICAgfSwKIAogICAgIF9jaGFuZ2VWaXNpYmxlRmlsZTogZnVu
Y3Rpb24oZXZlbnQpCkBAIC04NDYsNiArODU1LDEyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2FyZEJ1dHRv
bnMoKTsKICAgICB9LAogCisgICAgX2Zvcm1hdFNjcmlwdDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcgJiYgdGhpcy52aXNpYmxlVmlldy5zb3VyY2VGcmFt
ZSkKKyAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuc291cmNlRnJhbWUuZm9ybWF0U291cmNl
KCk7CisgICAgfSwKKwogICAgIF9lbmFibGVEZWJ1Z2dpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlckVuYWJsZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggZmE4NDQxZC4uM2ZkMDkyZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNjksMjMgKzY5LDYgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAK
LSAgICBnZXQgZXhlY3V0aW9uTGluZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZXhl
Y3V0aW9uTGluZTsKLSAgICB9LAotCi0gICAgc2V0IGV4ZWN1dGlvbkxpbmUoeCkKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9leGVjdXRpb25MaW5lID09PSB4KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHZhciBwcmV2aW91c0xpbmUgPSB0aGlzLl9leGVjdXRpb25MaW5lOwotICAg
ICAgICB0aGlzLl9leGVjdXRpb25MaW5lID0geDsKLQotICAgICAgICBpZiAodGhpcy5fdGV4dFZp
ZXdlcikKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvbkxpbmUocHJldmlvdXNMaW5l
KTsKLSAgICB9LAotCiAgICAgbWFya0RpZmY6IGZ1bmN0aW9uKGRpZmZEYXRhKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2RpZmZMaW5lcyAmJiB0aGlzLl90ZXh0Vmlld2VyKQpAQCAtMTQ1LDYg
KzEyOCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3RleHRNb2RlbC5zZXRUZXh0KG51bGwsIGNvbnRlbnQpOwogICAgICAgICB0aGlzLl9t
aW1lVHlwZSA9IG1pbWVUeXBlOwogICAgICAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgICAgIHRo
aXMuX2Zvcm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKGNvbnRlbnQp
OwogICAgICAgICB0aGlzLl9jcmVhdGVWaWV3ZXJJZk5lZWRlZCgpOwogICAgIH0sCiAKQEAgLTIw
MSwxMCArMTg1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fdGV4dFZpZXdlci5iZWdpblVwZGF0ZXMoKTsKIAogICAgICAgICB0aGlzLl90
ZXh0Vmlld2VyLm1pbWVUeXBlID0gdGhpcy5fbWltZVR5cGU7Ci0gICAgICAgIHRoaXMuX2FkZEV4
aXN0aW5nTWVzc2FnZXNUb1NvdXJjZSgpOwotICAgICAgICB0aGlzLl91cGRhdGVFeGVjdXRpb25M
aW5lKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZURpZmZEZWNvcmF0aW9ucygpOwotICAgICAgICB0
aGlzLl90ZXh0Vmlld2VyLnJlc2l6ZSgpOworICAgICAgICB0aGlzLl9zZXRUZXh0Vmlld2VyRGVj
b3JhdGlvbnMoKTsKIAogICAgICAgICBpZiAodGhpcy5fbGluZU51bWJlclRvUmV2ZWFsKSB7CiAg
ICAgICAgICAgICB0aGlzLnJldmVhbExpbmUodGhpcy5fbGluZU51bWJlclRvUmV2ZWFsKTsKQEAg
LTIyMiwxNSArMjAzLDM0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGluZVRvSGlnaGxpZ2h0OwogICAgICAgICB9CiAK
KyAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5lbmRVcGRhdGVzKCk7CisKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRo
aXMpOworCisgICAgICAgIGlmICh0aGlzLl9jYW5FZGl0U2NyaXB0cykKKyAgICAgICAgICAgIHRo
aXMuX3RleHRWaWV3ZXIuZWRpdENhbGxiYWNrID0gdGhpcy5fZWRpdExpbmUuYmluZCh0aGlzKTsK
KyAgICB9LAorCisgICAgX3NldFRleHRWaWV3ZXJEZWNvcmF0aW9uczogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdGhpcy5fcm93TWVzc2FnZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fbWVzc2Fn
ZUJ1YmJsZXMgPSB7fTsKKworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmJlZ2luVXBkYXRlcygp
OworCisgICAgICAgIHRoaXMuX2FkZEV4aXN0aW5nTWVzc2FnZXNUb1NvdXJjZSgpOworICAgICAg
ICB0aGlzLl91cGRhdGVEaWZmRGVjb3JhdGlvbnMoKTsKKworICAgICAgICBpZiAodGhpcy5fZXhl
Y3V0aW9uTGluZSkKKyAgICAgICAgICAgIHRoaXMuX3NldEV4ZWN1dGlvbkxpbmVEZWNvcmF0aW9u
KHRoaXMuX2V4ZWN1dGlvbkxpbmUpOworCiAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMu
X2JyZWFrcG9pbnRzKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGJyZWFrcG9pbnRz
W2ldKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCB0aGlz
Ll9icmVha3BvaW50QWRkZWQsIHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuZW5k
VXBkYXRlcygpOworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6ZSgpOwogCi0gICAgICAg
IGlmICh0aGlzLl9jYW5FZGl0U2NyaXB0cykKLSAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIu
ZWRpdENhbGxiYWNrID0gdGhpcy5fZWRpdExpbmUuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5f
dGV4dFZpZXdlci5lbmRVcGRhdGVzKCk7CiAgICAgfSwKIAogICAgIGZpbmRTZWFyY2hNYXRjaGVz
OiBmdW5jdGlvbihxdWVyeSkKQEAgLTI5OSwxOCArMjk5LDMwIEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIG1zZy5fcmVzb3VyY2VNZXNzYWdlUmVwZWF0
Q291bnRFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKHJlcGVh
dGVkICVkIHRpbWVzKSIsIG1zZy5yZXBlYXRDb3VudCk7CiAgICAgfSwKIAotICAgIF91cGRhdGVF
eGVjdXRpb25MaW5lOiBmdW5jdGlvbihwcmV2aW91c0xpbmUpCisgICAgc2V0RXhlY3V0aW9uTGlu
ZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIGlmIChwcmV2aW91c0xpbmUp
IHsKLSAgICAgICAgICAgIGlmIChwcmV2aW91c0xpbmUgLSAxIDwgdGhpcy5fdGV4dE1vZGVsLmxp
bmVzQ291bnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZW1vdmVEZWNvcmF0
aW9uKHByZXZpb3VzTGluZSAtIDEsICJ3ZWJraXQtZXhlY3V0aW9uLWxpbmUiKTsKLSAgICAgICAg
fQorICAgICAgICB0aGlzLl9leGVjdXRpb25MaW5lID0gbGluZU51bWJlcjsKKyAgICAgICAgaWYg
KHRoaXMuX3RleHRWaWV3ZXIpCisgICAgICAgICAgICB0aGlzLl9zZXRFeGVjdXRpb25MaW5lRGVj
b3JhdGlvbihsaW5lTnVtYmVyKTsKKyAgICB9LAogCi0gICAgICAgIGlmICghdGhpcy5fZXhlY3V0
aW9uTGluZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBjbGVhckV4ZWN1dGlvbkxpbmU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2VyKQorICAgICAgICAg
ICAgdGhpcy5fY2xlYXJFeGVjdXRpb25MaW5lRGVjb3JhdGlvbih0aGlzLl9leGVjdXRpb25MaW5l
KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V4ZWN1dGlvbkxpbmU7CisgICAgfSwKIAotICAgICAg
ICBpZiAodGhpcy5fZXhlY3V0aW9uTGluZSA8IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50KQot
ICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5hZGREZWNvcmF0aW9uKHRoaXMuX2V4ZWN1dGlv
bkxpbmUgLSAxLCAid2Via2l0LWV4ZWN1dGlvbi1saW5lIik7CisgICAgX3NldEV4ZWN1dGlvbkxp
bmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIGxp
bmVOdW1iZXIgPSB0aGlzLl9mb3JtYXR0ZXIub3JpZ2luYWxMaW5lTnVtYmVyVG9Gb3JtYXR0ZWRM
aW5lTnVtYmVyKGxpbmVOdW1iZXIgLSAxKTsKKyAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5hZGRE
ZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtZXhlY3V0aW9uLWxpbmUiKTsKKyAgICB9LAor
CisgICAgX2NsZWFyRXhlY3V0aW9uTGluZURlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIp
CisgICAgeworICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMuX2Zvcm1hdHRlci5vcmlnaW5h
bExpbmVOdW1iZXJUb0Zvcm1hdHRlZExpbmVOdW1iZXIobGluZU51bWJlciAtIDEpOworICAgICAg
ICB0aGlzLl90ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24obGluZU51bWJlciwgIndlYmtpdC1l
eGVjdXRpb24tbGluZSIpOwogICAgIH0sCiAKICAgICBfdXBkYXRlRGlmZkRlY29yYXRpb25zOiBm
dW5jdGlvbigpCkBAIC00MTEsMTUgKzQyMywxNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlID0gewogCiAgICAgX2FkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQp
CiAgICAgewotICAgICAgICBpZiAoYnJlYWtwb2ludC5saW5lID4gdGhpcy5fdGV4dE1vZGVsLmxp
bmVzQ291bnQpCisgICAgICAgIHZhciB0ZXh0Vmlld2VyTGluZU51bWJlciA9IHRoaXMuX2Zvcm1h
dHRlci5vcmlnaW5hbExpbmVOdW1iZXJUb0Zvcm1hdHRlZExpbmVOdW1iZXIoYnJlYWtwb2ludC5s
aW5lIC0gMSk7CisgICAgICAgIGlmICh0ZXh0Vmlld2VyTGluZU51bWJlciA+PSB0aGlzLl90ZXh0
TW9kZWwubGluZXNDb3VudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBicmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoImVuYWJsZS1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludENo
YW5nZWQsIHRoaXMpOwogICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbmRp
dGlvbi1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludENoYW5nZWQsIHRoaXMpOwogICAgICAgICBi
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLl9icmVha3BvaW50UmVt
b3ZlZCwgdGhpcyk7CiAKLSAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VUZXh0ID0gdGhpcy5fdGV4
dE1vZGVsLmxpbmUoYnJlYWtwb2ludC5saW5lIC0gMSk7Ci0gICAgICAgIHRoaXMuX3NldEJyZWFr
cG9pbnREZWNvcmF0aW9uKGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5lbmFibGVkLCAhIWJy
ZWFrcG9pbnQuY29uZGl0aW9uKTsKKyAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VUZXh0ID0gdGhp
cy5fdGV4dE1vZGVsLmxpbmUodGV4dFZpZXdlckxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLl9z
ZXRCcmVha3BvaW50RGVjb3JhdGlvbih0ZXh0Vmlld2VyTGluZU51bWJlciwgYnJlYWtwb2ludC5l
bmFibGVkLCAhIWJyZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICB9LAogCiAgICAgX2JyZWFrcG9p
bnRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKQEAgLTQzMCwxOCArNDQzLDE5IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGJyZWFrcG9pbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigiY29uZGl0aW9uLWNoYW5nZWQiLCBudWxsLCB0aGlzKTsKICAgICAgICAg
YnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZW1vdmVkIiwgbnVsbCwgdGhpcyk7CiAK
LSAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24oYnJlYWtwb2ludC5saW5l
KTsKKyAgICAgICAgdmFyIHRleHRWaWV3ZXJMaW5lTnVtYmVyID0gdGhpcy5fZm9ybWF0dGVyLm9y
aWdpbmFsTGluZU51bWJlclRvRm9ybWF0dGVkTGluZU51bWJlcihicmVha3BvaW50LmxpbmUgLSAx
KTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24odGV4dFZpZXdlckxp
bmVOdW1iZXIpOwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludENoYW5nZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAg
ICAgIHRoaXMuX3NldEJyZWFrcG9pbnREZWNvcmF0aW9uKGJyZWFrcG9pbnQubGluZSwgYnJlYWtw
b2ludC5lbmFibGVkLCAhIWJyZWFrcG9pbnQuY29uZGl0aW9uKTsKKyAgICAgICAgdmFyIHRleHRW
aWV3ZXJMaW5lTnVtYmVyID0gdGhpcy5fZm9ybWF0dGVyLm9yaWdpbmFsTGluZU51bWJlclRvRm9y
bWF0dGVkTGluZU51bWJlcihicmVha3BvaW50LmxpbmUgLSAxKTsKKyAgICAgICAgdGhpcy5fc2V0
QnJlYWtwb2ludERlY29yYXRpb24odGV4dFZpZXdlckxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuZW5h
YmxlZCwgISFicmVha3BvaW50LmNvbmRpdGlvbik7CiAgICAgfSwKIAogICAgIF9zZXRCcmVha3Bv
aW50RGVjb3JhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgZW5hYmxlZCwgaGFzQ29uZGl0aW9u
KQogICAgIHsKLSAgICAgICAgbGluZU51bWJlciAtPSAxOwogICAgICAgICB0aGlzLl90ZXh0Vmll
d2VyLmJlZ2luVXBkYXRlcygpOwogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmFkZERlY29yYXRp
b24obGluZU51bWJlciwgIndlYmtpdC1icmVha3BvaW50Iik7CiAgICAgICAgIGlmIChlbmFibGVk
KQpAQCAtNDU3LDcgKzQ3MSw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUg
PSB7CiAKICAgICBfcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIpCiAgICAgewotICAgICAgICBsaW5lTnVtYmVyIC09IDE7CiAgICAgICAgIHRoaXMuX3RleHRW
aWV3ZXIuYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVtb3ZlRGVj
b3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQiKTsKICAgICAgICAgdGhpcy5f
dGV4dFZpZXdlci5yZW1vdmVEZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtwb2lu
dC1kaXNhYmxlZCIpOwpAQCAtNDczLDI3ICs0ODYsMjggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtbGluZS1udW1iZXIiKTsKICAgICAgICAg
aWYgKCF0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gdGFyZ2V0LnBhcmVudEVsZW1lbnQubGluZU51bWJlciArIDE7CisgICAgICAgIHZhciB0ZXh0
Vmlld2VyTGluZU51bWJlciA9IHRhcmdldC5wYXJlbnRFbGVtZW50LmxpbmVOdW1iZXI7CisgICAg
ICAgIHZhciBvcmlnaW5hbExpbmVOdW1iZXIgPSB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0dGVkTGlu
ZU51bWJlclRvT3JpZ2luYWxMaW5lTnVtYmVyKHRleHRWaWV3ZXJMaW5lTnVtYmVyKTsKIAogICAg
ICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CiAK
LSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bnRpbnVlIHRvIEhlcmUiKSwgdGhpcy5fY29udGludWVUb0xpbmUuYmluZCh0aGlzLCBsaW5lTnVt
YmVyKSk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb250aW51ZSB0byBIZXJlIiksIHRoaXMuX2NvbnRpbnVlVG9MaW5lLmJpbmQodGhpcywg
b3JpZ2luYWxMaW5lTnVtYmVyKSk7CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9m
aW5kQnJlYWtwb2ludChsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlz
Ll9maW5kQnJlYWtwb2ludChvcmlnaW5hbExpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIWJyZWFr
cG9pbnQpIHsKICAgICAgICAgICAgIC8vIFRoaXMgcm93IGRvZXNuJ3QgaGF2ZSBhIGJyZWFrcG9p
bnQ6IFdlIHdhbnQgdG8gc2hvdyBBZGQgQnJlYWtwb2ludCBhbmQgQWRkIGFuZCBFZGl0IEJyZWFr
cG9pbnQuCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQWRkIEJyZWFrcG9pbnQiKSwgdGhpcy5fc2V0QnJlYWtwb2ludC5iaW5kKHRoaXMs
IGxpbmVOdW1iZXIsICIiLCB0cnVlKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRkIEJyZWFrcG9pbnQiKSwgdGhpcy5fc2V0QnJl
YWtwb2ludC5iaW5kKHRoaXMsIG9yaWdpbmFsTGluZU51bWJlciwgIiIsIHRydWUpKTsKIAogICAg
ICAgICAgICAgZnVuY3Rpb24gYWRkQ29uZGl0aW9uYWxCcmVha3BvaW50KCkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50RGVjb3JhdGlvbihsaW5lTnVt
YmVyLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50RGVj
b3JhdGlvbih0ZXh0Vmlld2VyTGluZU51bWJlciwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gZGlkRWRpdEJyZWFrcG9pbnRDb25kaXRpb24oY29tbWl0dGVkLCBjb25kaXRp
b24pCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVC
cmVha3BvaW50RGVjb3JhdGlvbihsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24odGV4dFZpZXdlckxpbmVOdW1iZXIpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoY29tbWl0dGVkKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5fc2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCB0cnVlLCBjb25kaXRpb24pOworICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChvcmlnaW5hbExpbmVOdW1iZXIs
IHRydWUsIGNvbmRpdGlvbik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRo
aXMuX2VkaXRCcmVha3BvaW50Q29uZGl0aW9uKGxpbmVOdW1iZXIsICIiLCBkaWRFZGl0QnJlYWtw
b2ludENvbmRpdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lZGl0QnJl
YWtwb2ludENvbmRpdGlvbih0ZXh0Vmlld2VyTGluZU51bWJlciwgIiIsIGRpZEVkaXRCcmVha3Bv
aW50Q29uZGl0aW9uLmJpbmQodGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCBDb25kaXRpb25h
bCBCcmVha3BvaW504oCmIiksIGFkZENvbmRpdGlvbmFsQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTUwNSwxNiArNTE5LDE2IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoY29tbWl0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50
LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChi
cmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuZW5hYmxlZCwgY29uZGl0aW9uKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQob3JpZ2luYWxMaW5lTnVtYmVyLCBi
cmVha3BvaW50LmVuYWJsZWQsIGNvbmRpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWRpdEJyZWFrcG9pbnRDb25k
aXRpb24obGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGRpZEVkaXRCcmVha3BvaW50
Q29uZGl0aW9uLmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRCcmVha3Bv
aW50Q29uZGl0aW9uKHRleHRWaWV3ZXJMaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwg
ZGlkRWRpdEJyZWFrcG9pbnRDb25kaXRpb24uYmluZCh0aGlzKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RWRpdCBCcmVha3BvaW504oCmIiksIGVkaXRCcmVha3BvaW50Q29uZGl0aW9uLmJpbmQodGhpcykp
OwogICAgICAgICAgICAgZnVuY3Rpb24gc2V0QnJlYWtwb2ludEVuYWJsZWQoZW5hYmxlZCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwotICAgICAg
ICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lLCBlbmFibGVkLCBi
cmVha3BvaW50LmNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2lu
dChvcmlnaW5hbExpbmVOdW1iZXIsIGVuYWJsZWQsIGJyZWFrcG9pbnQuY29uZGl0aW9uKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmVuYWJsZWQpCiAgICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRp
c2FibGUgQnJlYWtwb2ludCIpLCBzZXRCcmVha3BvaW50RW5hYmxlZC5iaW5kKHRoaXMsIGZhbHNl
KSk7CkBAIC01MzgsMTUgKzU1MiwxNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoQ2xhc3MoIndlYmtpdC1saW5lLW51bWJlciIpOwogICAgICAgICBpZiAoIXRhcmdl
dCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0YXJnZXQu
cGFyZW50RWxlbWVudC5saW5lTnVtYmVyICsgMTsKKyAgICAgICAgdmFyIG9yaWdpbmFsTGluZU51
bWJlciA9IHRoaXMuX2Zvcm1hdHRlci5mb3JtYXR0ZWRMaW5lTnVtYmVyVG9PcmlnaW5hbExpbmVO
dW1iZXIodGFyZ2V0LnBhcmVudEVsZW1lbnQubGluZU51bWJlcik7CiAKLSAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSB0aGlzLl9maW5kQnJlYWtwb2ludChsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSB0aGlzLl9maW5kQnJlYWtwb2ludChvcmlnaW5hbExpbmVOdW1iZXIpOwog
ICAgICAgICBpZiAoYnJlYWtwb2ludCkgewogICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUo
KTsKICAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkKLSAgICAgICAgICAgICAgICB0aGlz
Ll9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQubGluZSwgIWJyZWFrcG9pbnQuZW5hYmxlZCwgYnJl
YWtwb2ludC5jb25kaXRpb24pOworICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQo
b3JpZ2luYWxMaW5lTnVtYmVyLCAhYnJlYWtwb2ludC5lbmFibGVkLCBicmVha3BvaW50LmNvbmRp
dGlvbik7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChs
aW5lTnVtYmVyLCB0cnVlLCAiIik7CisgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KG9y
aWdpbmFsTGluZU51bWJlciwgdHJ1ZSwgIiIpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwogICAgIH0sCiAKQEAgLTcxMCw3ICs3MjQsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlID0gewogCiAgICAgX2VkaXRCcmVha3BvaW50Q29uZGl0aW9uOiBmdW5jdGlv
bihsaW5lTnVtYmVyLCBjb25kaXRpb24sIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgbGluZU51
bWJlciAtPSAxOwogICAgICAgICB0aGlzLl9jb25kaXRpb25FbGVtZW50ID0gdGhpcy5fY3JlYXRl
Q29uZGl0aW9uRWxlbWVudChsaW5lTnVtYmVyKTsKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5h
ZGREZWNvcmF0aW9uKGxpbmVOdW1iZXIsIHRoaXMuX2NvbmRpdGlvbkVsZW1lbnQpOwogCkBAIC03
NzYsMTIgKzc4OSwyMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZXNpemUoKTsKICAgICB9LAogCisgICAgZm9y
bWF0U291cmNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Zvcm1hdHRl
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl90ZXh0TW9kZWwuc2V0VGV4
dChudWxsLCB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0KCkpOworICAgICAgICB0aGlzLl9zZXRUZXh0
Vmlld2VyRGVjb3JhdGlvbnMoKTsKKyAgICB9LAorCiAgICAgX2NvbnRpbnVlVG9MaW5lOiBmdW5j
dGlvbihsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUlEID0gdGhpcy5fc291
cmNlSURGb3JMaW5lKGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIXNvdXJjZUlEKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jb250aW51
ZVRvTGluZShzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLmNvbnRpbnVlVG9MaW5lKHNvdXJjZUlELCBsaW5lTnVtYmVyICsgMSk7CiAgICAg
fSwKIAogICAgIF9lZGl0TGluZTogZnVuY3Rpb24obGluZU51bWJlciwgbmV3Q29udGVudCwgY2Fu
Y2VsRWRpdGluZ0NhbGxiYWNrKQpAQCAtODM0LDcgKzg1Niw3IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzb3VyY2VJRCA9IHRoaXMuX3NvdXJj
ZUlERm9yTGluZShsaW5lTnVtYmVyKTsKICAgICAgICAgaWYgKCFzb3VyY2VJRCkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0QnJlYWtw
b2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgZW5hYmxlZCwgY29uZGl0aW9uKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgbGluZU51
bWJlciArIDEsIGVuYWJsZWQsIGNvbmRpdGlvbik7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLmJyZWFrcG9pbnRzQWN0aXZhdGVkKQogICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLnRvZ2dsZUJyZWFrcG9pbnRzQ2xpY2tlZCgpOwogICAgIH0s
CkBAIC04NDgsNyArODcwLDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICBfZmluZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewogICAg
ICAgICB2YXIgc291cmNlSUQgPSB0aGlzLl9zb3VyY2VJREZvckxpbmUobGluZU51bWJlcik7Ci0g
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5maW5kQnJlYWtwb2ludChz
b3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5maW5kQnJlYWtwb2ludChzb3VyY2VJRCwgbGluZU51bWJlciArIDEpOwogICAgIH0s
CiAKICAgICBfc291cmNlSURGb3JMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQpAQCAtODU3LDcg
Kzg3OSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBjbG9zZXN0U3RhcnRpbmdMaW5lID0gMDsKICAgICAgICAgZm9yICh2YXIgc291cmNlSUQg
aW4gdGhpcy5fc2NyaXB0cykgewogICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3Njcmlw
dHNbc291cmNlSURdOwotICAgICAgICAgICAgaWYgKHNjcmlwdC5zdGFydGluZ0xpbmUgPD0gbGlu
ZU51bWJlciAmJiBzY3JpcHQuc3RhcnRpbmdMaW5lID49IGNsb3Nlc3RTdGFydGluZ0xpbmUpIHsK
KyAgICAgICAgICAgIGlmIChzY3JpcHQuc3RhcnRpbmdMaW5lIDw9IGxpbmVOdW1iZXIgKyAxICYm
IHNjcmlwdC5zdGFydGluZ0xpbmUgPj0gY2xvc2VzdFN0YXJ0aW5nTGluZSkgewogICAgICAgICAg
ICAgICAgIGNsb3Nlc3RTdGFydGluZ0xpbmUgPSBzY3JpcHQuc3RhcnRpbmdMaW5lOwogICAgICAg
ICAgICAgICAgIHNvdXJjZUlERm9yTGluZSA9IHNvdXJjZUlEOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBjMTAwOGFkLi44N2M3YmQzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtODIsNiArODIsNyBAQAog
ICAgIDxmaWxlPlJlc291cmNlc1BhbmVsLmpzPC9maWxlPgogICAgIDxmaWxlPlNjb3BlQ2hhaW5T
aWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5TY3JpcHQuanM8L2ZpbGU+CisgICAgPGZp
bGU+U2NyaXB0Rm9ybWF0dGVyLmpzPC9maWxlPgogICAgIDxmaWxlPlNjcmlwdHNQYW5lbC5qczwv
ZmlsZT4KICAgICA8ZmlsZT5TY3JpcHRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlNlY3Rpb24u
anM8L2ZpbGU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5k
ZXggZTE1OTBmMi4uMDlkZjRmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbApAQCAtMTIxLDYgKzEyMSw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya0l0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZy
YW1lLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJTY3JpcHRGb3JtYXR0ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkRPTVN5bnRheEhpZ2hsaWdodGVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUZXh0RWRpdG9yTW9kZWwuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRFZGl0
b3JIaWdobGlnaHRlci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78519</attachid>
            <date>2011-01-11 05:25:17 -0800</date>
            <delta_ts>2011-01-17 01:40:19 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27048</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YWFjMDRhLi45MmVmYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTEtMDEtMTEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogaW1wbGVtZW50IHNjcmlwdCBiZWF1dGlmaWVyIHByb3RvdHlwZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNTg4CisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlcik6IEltcGxlbWVudHMgSmF2
YVNjcmlwdCBzb3VyY2UgYmVhdXRpZmljYXRpb24gYW5kIGNvbnZlcnNpb24gYmV0d2VlbiBvcmln
aW5hbCBhbmQKKyAgICAgICAgZm9ybWF0dGVkIGxpbmUgbnVtYmVycworICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlci5maW5kTGluZUVuZGluZ3MpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci51cHBlckJvdW5kKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZS5vcmlnaW5hbExpbmVOdW1iZXJUb0Zv
cm1hdHRlZExpbmVOdW1iZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRl
ci5wcm90b3R5cGUuZm9ybWF0dGVkTGluZU51bWJlclRvT3JpZ2luYWxMaW5lTnVtYmVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucHJvdG90eXBlLm9yaWdpbmFsUG9z
aXRpb25Ub0Zvcm1hdHRlZExpbmVOdW1iZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dEZvcm1hdHRlci5wcm90b3R5cGUuZm9ybWF0dGVkTGluZU51bWJlclRvT3JpZ2luYWxQb3NpdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZS5fY29u
dmVydFBvc2l0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NsZWFyQ3VycmVudEV4ZWN1dGlvbkxp
bmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NhbGxG
cmFtZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlLl9mb3JtYXRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNl
RnJhbWUuanM6IENvbnZlcnQgb3JpZ2luYWwgbGluZSBudW1iZXJzIHRvIFVJIGxpbmUgbnVtYmVy
cyBhbmQgdmljZSB2ZXJzYQorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEx
LTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODNl
NTVkNC4uODFjOWVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY2OCw2ICs0NjY4LDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Nob3J0Y3V0c0hlbHAuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCBiZmZjNmQ2Li4yMDFiYmU2IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjU1MDEsNiArNjU1MDEsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcU2NyaXB0Rm9ybWF0dGVyLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxTY3JpcHRzUGFuZWwuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYTI0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlci5qcwpAQCAt
MCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIgPSBmdW5jdGlvbihzb3Vy
Y2UpCit7CisgICAgdGhpcy5fb3JpZ2luYWxTb3VyY2UgPSBzb3VyY2U7CisgICAgdGhpcy5fb3Jp
Z2luYWxMaW5lRW5kaW5ncyA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIuZmluZExpbmVF
bmRpbmdzKHNvdXJjZSk7Cit9CisKK1dlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIuZmluZExp
bmVFbmRpbmdzID0gZnVuY3Rpb24oc291cmNlKQoreworICAgIHZhciBsaW5lRW5kaW5ncyA9IFtd
OworICAgIHZhciBpID0gc291cmNlLmluZGV4T2YoIlxuIik7CisgICAgd2hpbGUgKGkgIT09IC0x
KSB7CisgICAgICAgIGxpbmVFbmRpbmdzLnB1c2goaSk7CisgICAgICAgIGkgPSBzb3VyY2UuaW5k
ZXhPZigiXG4iLCBpICsgMSk7CisgICAgfQorICAgIGxpbmVFbmRpbmdzLnB1c2goc291cmNlLmxl
bmd0aCk7CisgICAgcmV0dXJuIGxpbmVFbmRpbmdzOworfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0
Rm9ybWF0dGVyLmxvY2F0aW9uVG9Qb3NpdGlvbiA9IGZ1bmN0aW9uKGxpbmVFbmRpbmdzLCBsb2Nh
dGlvbikKK3sKKyAgICB2YXIgcG9zaXRpb24gPSBsb2NhdGlvbi5saW5lID8gbGluZUVuZGluZ3Nb
bG9jYXRpb24ubGluZSAtIDFdICsgMSA6IDA7CisgICAgcmV0dXJuIHBvc2l0aW9uICsgbG9jYXRp
b24uY29sdW1uOworfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9M
b2NhdGlvbiA9IGZ1bmN0aW9uKGxpbmVFbmRpbmdzLCBwb3NpdGlvbikKK3sKKyAgICB2YXIgbG9j
YXRpb24gPSB7fTsKKyAgICBsb2NhdGlvbi5saW5lID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1h
dHRlci51cHBlckJvdW5kKGxpbmVFbmRpbmdzLCBwb3NpdGlvbiAtIDEpOworICAgIGlmICghbG9j
YXRpb24ubGluZSkKKyAgICAgICAgbG9jYXRpb24uY29sdW1uID0gcG9zaXRpb247CisgICAgZWxz
ZQorICAgICAgICBsb2NhdGlvbi5jb2x1bW4gPSBwb3NpdGlvbiAtIGxpbmVFbmRpbmdzW2xvY2F0
aW9uLmxpbmUgLSAxXSAtIDE7CisgICAgcmV0dXJuIGxvY2F0aW9uOworfQorCitXZWJJbnNwZWN0
b3IuU2NyaXB0Rm9ybWF0dGVyLnVwcGVyQm91bmQgPSBmdW5jdGlvbihhcnJheSwgbnVtYmVyKQor
eworICAgIHZhciBmaXJzdCA9IDA7CisgICAgdmFyIGNvdW50ID0gYXJyYXkubGVuZ3RoOworICAg
IHdoaWxlIChjb3VudCA+IDApIHsKKyAgICAgIHZhciBzdGVwID0gY291bnQgPj4gMTsKKyAgICAg
IHZhciBtaWRkbGUgPSBmaXJzdCArIHN0ZXA7CisgICAgICBpZiAobnVtYmVyID49IGFycmF5W21p
ZGRsZV0pIHsKKyAgICAgICAgICBmaXJzdCA9IG1pZGRsZSArIDE7CisgICAgICAgICAgY291bnQg
LT0gc3RlcCArIDE7CisgICAgICB9IGVsc2UKKyAgICAgICAgICBjb3VudCA9IHN0ZXA7CisgICAg
fQorICAgIHJldHVybiBmaXJzdDsKK30KKworV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5w
cm90b3R5cGUgPSB7CisgICAgZm9ybWF0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
Ll9mb3JtYXR0ZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRTb3VyY2UgPSB0aGlz
Ll9vcmlnaW5hbFNvdXJjZS5yZXBsYWNlKC87L2csICI7XG4iKTsKKyAgICAgICAgdGhpcy5fZm9y
bWF0dGVkTGluZUVuZGluZ3MgPSBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLmZpbmRMaW5l
RW5kaW5ncyh0aGlzLl9mb3JtYXR0ZWRTb3VyY2UpOworCisgICAgICAgIHRoaXMuX29yaWdpbmFs
U3ltYm9sUG9zaXRpb25zID0gW107CisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZFN5bWJvbFBvc2l0
aW9ucyA9IFtdOworICAgICAgICB2YXIgbGFzdENvZGVQb3NpdGlvbiA9IDA7CisgICAgICAgIHZh
ciByZWdleHAgPSAvW1wkXC5cd10rfHt8fXw7L2c7CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2ggPSByZWdleHAuZXhlYyh0aGlzLl9mb3JtYXR0ZWRTb3VyY2Up
OworICAgICAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX29yaWdpbmFsU291cmNlLmluZGV4T2YobWF0Y2hb
MF0sIGxhc3RDb2RlUG9zaXRpb24pOworICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSAtMSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsU3lt
Ym9sUG9zaXRpb25zLnB1c2gocG9zaXRpb24pOworICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVk
U3ltYm9sUG9zaXRpb25zLnB1c2gobWF0Y2guaW5kZXgpOworICAgICAgICAgICAgbGFzdENvZGVQ
b3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hbMF0ubGVuZ3RoOworICAgICAgICB9CisgICAgICAg
IHRoaXMuX29yaWdpbmFsU3ltYm9sUG9zaXRpb25zLnB1c2godGhpcy5fb3JpZ2luYWxTb3VyY2Uu
bGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fZm9ybWF0dGVkU3ltYm9sUG9zaXRpb25zLnB1c2godGhp
cy5fZm9ybWF0dGVkU291cmNlLmxlbmd0aCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1h
dHRlZFNvdXJjZTsKKyAgICB9LAorCisgICAgb3JpZ2luYWxMaW5lTnVtYmVyVG9Gb3JtYXR0ZWRM
aW5lTnVtYmVyOiBmdW5jdGlvbihvcmlnaW5hbExpbmVOdW1iZXIpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX2Zvcm1hdHRlZCkKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpbmVOdW1i
ZXI7CisgICAgICAgIHZhciBvcmlnaW5hbFBvc2l0aW9uID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZv
cm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24odGhpcy5fb3JpZ2luYWxMaW5lRW5kaW5ncywgeyBs
aW5lOiBvcmlnaW5hbExpbmVOdW1iZXIsIGNvbHVtbjogMCB9KTsKKyAgICAgICAgcmV0dXJuIHRo
aXMub3JpZ2luYWxQb3NpdGlvblRvRm9ybWF0dGVkTGluZU51bWJlcihvcmlnaW5hbFBvc2l0aW9u
KTsKKyAgICB9LAorCisgICAgZm9ybWF0dGVkTGluZU51bWJlclRvT3JpZ2luYWxMaW5lTnVtYmVy
OiBmdW5jdGlvbihmb3JtYXR0ZWRMaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9mb3JtYXR0ZWQpCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkTGluZU51bWJlcjsKKyAg
ICAgICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLmZvcm1hdHRlZExpbmVOdW1iZXJUb09y
aWdpbmFsUG9zaXRpb24oZm9ybWF0dGVkTGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlvbih0aGlzLl9vcmlnaW5h
bExpbmVFbmRpbmdzLCBvcmlnaW5hbFBvc2l0aW9uKS5saW5lOworICAgIH0sCisKKyAgICBvcmln
aW5hbFBvc2l0aW9uVG9Gb3JtYXR0ZWRMaW5lTnVtYmVyOiBmdW5jdGlvbihvcmlnaW5hbFBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmVFbmRpbmdzID0gdGhpcy5fZm9ybWF0dGVkID8g
dGhpcy5fZm9ybWF0dGVkTGluZUVuZGluZ3MgOiB0aGlzLl9vcmlnaW5hbExpbmVFbmRpbmdzOwor
ICAgICAgICBpZiAodGhpcy5fZm9ybWF0dGVkKQorICAgICAgICAgICAgZm9ybWF0dGVkUG9zaXRp
b24gPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fb3JpZ2luYWxTeW1ib2xQb3NpdGlvbnMs
IHRoaXMuX2Zvcm1hdHRlZFN5bWJvbFBvc2l0aW9ucywgb3JpZ2luYWxQb3NpdGlvbik7CisgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlv
bihsaW5lRW5kaW5ncywgZm9ybWF0dGVkUG9zaXRpb24pLmxpbmU7CisgICAgfSwKKworICAgIGZv
cm1hdHRlZExpbmVOdW1iZXJUb09yaWdpbmFsUG9zaXRpb246IGZ1bmN0aW9uKGZvcm1hdHRlZExp
bmVOdW1iZXIpCisgICAgeworICAgICAgICB2YXIgbGluZUVuZGluZ3MgPSB0aGlzLl9mb3JtYXR0
ZWQgPyB0aGlzLl9mb3JtYXR0ZWRMaW5lRW5kaW5ncyA6IHRoaXMuX29yaWdpbmFsTGluZUVuZGlu
Z3M7CisgICAgICAgIHZhciBmb3JtYXR0ZWRQb3NpdGlvbiA9IFdlYkluc3BlY3Rvci5TY3JpcHRG
b3JtYXR0ZXIubG9jYXRpb25Ub1Bvc2l0aW9uKGxpbmVFbmRpbmdzLCB7IGxpbmU6IGZvcm1hdHRl
ZExpbmVOdW1iZXIsIGNvbHVtbjogMCB9KTsKKyAgICAgICAgaWYgKCF0aGlzLl9mb3JtYXR0ZWQp
CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkUG9zaXRpb247CisgICAgICAgIHJldHVybiB0
aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fZm9ybWF0dGVkU3ltYm9sUG9zaXRpb25zLCB0aGlz
Ll9vcmlnaW5hbFN5bWJvbFBvc2l0aW9ucywgZm9ybWF0dGVkUG9zaXRpb24pOworICAgIH0sCisK
KyAgICBfY29udmVydFBvc2l0aW9uOiBmdW5jdGlvbihzeW1ib2xQb3NpdGlvbnMxLCBzeW1ib2xQ
b3NpdGlvbnMyLCBwb3NpdGlvbikKKyAgICB7CisgICAgICAgIHZhciBpbmRleCA9IFdlYkluc3Bl
Y3Rvci5TY3JpcHRGb3JtYXR0ZXIudXBwZXJCb3VuZChzeW1ib2xQb3NpdGlvbnMxLCBwb3NpdGlv
bik7CisgICAgICAgIGlmIChpbmRleCA9PT0gc3ltYm9sUG9zaXRpb25zMi5sZW5ndGggLSAxKQor
ICAgICAgICAgICAgcmV0dXJuIHN5bWJvbFBvc2l0aW9uczJbaW5kZXhdIC0gMTsKKyAgICAgICAg
cmV0dXJuIHN5bWJvbFBvc2l0aW9uczJbaW5kZXhdOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggMThjN2Nj
OC4uYzA5ZDEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKQEAgLTYzLDYgKzYzLDE1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwgPSBmdW5jdGlvbigpCiAgICAgLy8gRklYTUU6IGFwcGVuZCB0aGUgZnVuY3Rpb25zIHNl
bGVjdCBlbGVtZW50IHRvIHRoZSB0b3Agc3RhdHVzIGJhciB3aGVuIGl0IGlzIGltcGxlbWVudGVk
LgogICAgIC8vIHRoaXMudG9wU3RhdHVzQmFyLmFwcGVuZENoaWxkKHRoaXMuZnVuY3Rpb25zU2Vs
ZWN0RWxlbWVudCk7CiAKKyAgICB0aGlzLmZvcm1hdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJ1dHRvbiIpOworICAgIHRoaXMuZm9ybWF0QnV0dG9uLmNsYXNzTmFtZSA9ICJzdGF0
dXMtYmFyLWl0ZW0iOworICAgIHRoaXMuZm9ybWF0QnV0dG9uLmlkID0gImZvcm1hdC1zY3JpcHQi
OworICAgIHRoaXMuZm9ybWF0QnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b3JtYXQgc2NyaXB0LiIpOworICAgIHRoaXMuZm9ybWF0QnV0dG9uLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAgICB0aGlzLmZvcm1hdEJ1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2Zvcm1hdFNjcmlwdC5iaW5kKHRoaXMpLCBmYWxzZSk7
CisgICAgaWYgKFByZWZlcmVuY2VzLmRlYnVnTW9kZSkKKyAgICAgICAgdGhpcy50b3BTdGF0dXNC
YXIuYXBwZW5kQ2hpbGQodGhpcy5mb3JtYXRCdXR0b24pOworCiAgICAgdGhpcy5zaWRlYmFyQnV0
dG9uc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnNp
ZGViYXJCdXR0b25zRWxlbWVudC5pZCA9ICJzY3JpcHRzLXNpZGViYXItYnV0dG9ucyI7CiAgICAg
dGhpcy50b3BTdGF0dXNCYXIuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyQnV0dG9uc0VsZW1lbnQp
OwpAQCAtNjkwLDcgKzY5OSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgIF9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUpCi0gICAgICAgICAgICB0aGlz
Ll9leGVjdXRpb25Tb3VyY2VGcmFtZS5leGVjdXRpb25MaW5lID0gMDsKKyAgICAgICAgICAgIHRo
aXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lLmNsZWFyRXhlY3V0aW9uTGluZSgpOwogICAgICAgICBk
ZWxldGUgdGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWU7CiAgICAgfSwKIApAQCAtNzEyLDcgKzcy
MSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRnJhbWVGb3JTY3JpcHRP
clJlc291cmNlKHNjcmlwdE9yUmVzb3VyY2UpOwogICAgICAgICBpZiAodGhpcy5fZXhlY3V0aW9u
U291cmNlRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZS5leGVj
dXRpb25MaW5lID0gY3VycmVudEZyYW1lLmxpbmU7CisgICAgICAgICAgICB0aGlzLl9leGVjdXRp
b25Tb3VyY2VGcmFtZS5zZXRFeGVjdXRpb25MaW5lKGN1cnJlbnRGcmFtZS5saW5lKTsKICAgICB9
LAogCiAgICAgX2NoYW5nZVZpc2libGVGaWxlOiBmdW5jdGlvbihldmVudCkKQEAgLTg0Niw2ICs4
NTUsMTIgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOwogICAgIH0sCiAKKyAgICBfZm9y
bWF0U2NyaXB0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmll
dyAmJiB0aGlzLnZpc2libGVWaWV3LnNvdXJjZUZyYW1lKQorICAgICAgICAgICAgdGhpcy52aXNp
YmxlVmlldy5zb3VyY2VGcmFtZS5mb3JtYXRTb3VyY2UoKTsKKyAgICB9LAorCiAgICAgX2VuYWJs
ZURlYnVnZ2luZzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2Vy
RW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZyYW1lLmpzCmluZGV4IGZhODQ0MWQuLjNmZDA5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNjksMjMgKzY5LDYgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0s
CiAKLSAgICBnZXQgZXhlY3V0aW9uTGluZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
ZXhlY3V0aW9uTGluZTsKLSAgICB9LAotCi0gICAgc2V0IGV4ZWN1dGlvbkxpbmUoeCkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9leGVjdXRpb25MaW5lID09PSB4KQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHZhciBwcmV2aW91c0xpbmUgPSB0aGlzLl9leGVjdXRpb25MaW5lOwot
ICAgICAgICB0aGlzLl9leGVjdXRpb25MaW5lID0geDsKLQotICAgICAgICBpZiAodGhpcy5fdGV4
dFZpZXdlcikKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvbkxpbmUocHJldmlvdXNM
aW5lKTsKLSAgICB9LAotCiAgICAgbWFya0RpZmY6IGZ1bmN0aW9uKGRpZmZEYXRhKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2RpZmZMaW5lcyAmJiB0aGlzLl90ZXh0Vmlld2VyKQpAQCAtMTQ1
LDYgKzEyOCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3RleHRNb2RlbC5zZXRUZXh0KG51bGwsIGNvbnRlbnQpOwogICAgICAgICB0aGlz
Ll9taW1lVHlwZSA9IG1pbWVUeXBlOwogICAgICAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgICAg
IHRoaXMuX2Zvcm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKGNvbnRl
bnQpOwogICAgICAgICB0aGlzLl9jcmVhdGVWaWV3ZXJJZk5lZWRlZCgpOwogICAgIH0sCiAKQEAg
LTIwMSwxMCArMTg1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5iZWdpblVwZGF0ZXMoKTsKIAogICAgICAgICB0aGlz
Ll90ZXh0Vmlld2VyLm1pbWVUeXBlID0gdGhpcy5fbWltZVR5cGU7Ci0gICAgICAgIHRoaXMuX2Fk
ZEV4aXN0aW5nTWVzc2FnZXNUb1NvdXJjZSgpOwotICAgICAgICB0aGlzLl91cGRhdGVFeGVjdXRp
b25MaW5lKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZURpZmZEZWNvcmF0aW9ucygpOwotICAgICAg
ICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6ZSgpOworICAgICAgICB0aGlzLl9zZXRUZXh0Vmlld2Vy
RGVjb3JhdGlvbnMoKTsKIAogICAgICAgICBpZiAodGhpcy5fbGluZU51bWJlclRvUmV2ZWFsKSB7
CiAgICAgICAgICAgICB0aGlzLnJldmVhbExpbmUodGhpcy5fbGluZU51bWJlclRvUmV2ZWFsKTsK
QEAgLTIyMiwxNSArMjAzLDM0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGluZVRvSGlnaGxpZ2h0OwogICAgICAgICB9
CiAKKyAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5lbmRVcGRhdGVzKCk7CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQs
IHRoaXMpOworCisgICAgICAgIGlmICh0aGlzLl9jYW5FZGl0U2NyaXB0cykKKyAgICAgICAgICAg
IHRoaXMuX3RleHRWaWV3ZXIuZWRpdENhbGxiYWNrID0gdGhpcy5fZWRpdExpbmUuYmluZCh0aGlz
KTsKKyAgICB9LAorCisgICAgX3NldFRleHRWaWV3ZXJEZWNvcmF0aW9uczogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fcm93TWVzc2FnZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fbWVz
c2FnZUJ1YmJsZXMgPSB7fTsKKworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmJlZ2luVXBkYXRl
cygpOworCisgICAgICAgIHRoaXMuX2FkZEV4aXN0aW5nTWVzc2FnZXNUb1NvdXJjZSgpOworICAg
ICAgICB0aGlzLl91cGRhdGVEaWZmRGVjb3JhdGlvbnMoKTsKKworICAgICAgICBpZiAodGhpcy5f
ZXhlY3V0aW9uTGluZSkKKyAgICAgICAgICAgIHRoaXMuX3NldEV4ZWN1dGlvbkxpbmVEZWNvcmF0
aW9uKHRoaXMuX2V4ZWN1dGlvbkxpbmUpOworCiAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRo
aXMuX2JyZWFrcG9pbnRzKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2lu
dHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGJyZWFrcG9p
bnRzW2ldKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCB0
aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3RleHRWaWV3ZXIu
ZW5kVXBkYXRlcygpOworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6ZSgpOwogCi0gICAg
ICAgIGlmICh0aGlzLl9jYW5FZGl0U2NyaXB0cykKLSAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3
ZXIuZWRpdENhbGxiYWNrID0gdGhpcy5fZWRpdExpbmUuYmluZCh0aGlzKTsKKyAgICAgICAgdGhp
cy5fdGV4dFZpZXdlci5lbmRVcGRhdGVzKCk7CiAgICAgfSwKIAogICAgIGZpbmRTZWFyY2hNYXRj
aGVzOiBmdW5jdGlvbihxdWVyeSkKQEAgLTI5OSwxOCArMjk5LDMwIEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIG1zZy5fcmVzb3VyY2VNZXNzYWdlUmVw
ZWF0Q291bnRFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKHJl
cGVhdGVkICVkIHRpbWVzKSIsIG1zZy5yZXBlYXRDb3VudCk7CiAgICAgfSwKIAotICAgIF91cGRh
dGVFeGVjdXRpb25MaW5lOiBmdW5jdGlvbihwcmV2aW91c0xpbmUpCisgICAgc2V0RXhlY3V0aW9u
TGluZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIGlmIChwcmV2aW91c0xp
bmUpIHsKLSAgICAgICAgICAgIGlmIChwcmV2aW91c0xpbmUgLSAxIDwgdGhpcy5fdGV4dE1vZGVs
LmxpbmVzQ291bnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZW1vdmVEZWNv
cmF0aW9uKHByZXZpb3VzTGluZSAtIDEsICJ3ZWJraXQtZXhlY3V0aW9uLWxpbmUiKTsKLSAgICAg
ICAgfQorICAgICAgICB0aGlzLl9leGVjdXRpb25MaW5lID0gbGluZU51bWJlcjsKKyAgICAgICAg
aWYgKHRoaXMuX3RleHRWaWV3ZXIpCisgICAgICAgICAgICB0aGlzLl9zZXRFeGVjdXRpb25MaW5l
RGVjb3JhdGlvbihsaW5lTnVtYmVyKTsKKyAgICB9LAogCi0gICAgICAgIGlmICghdGhpcy5fZXhl
Y3V0aW9uTGluZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBjbGVhckV4ZWN1dGlvbkxpbmU6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2VyKQorICAgICAg
ICAgICAgdGhpcy5fY2xlYXJFeGVjdXRpb25MaW5lRGVjb3JhdGlvbih0aGlzLl9leGVjdXRpb25M
aW5lKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2V4ZWN1dGlvbkxpbmU7CisgICAgfSwKIAotICAg
ICAgICBpZiAodGhpcy5fZXhlY3V0aW9uTGluZSA8IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50
KQotICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5hZGREZWNvcmF0aW9uKHRoaXMuX2V4ZWN1
dGlvbkxpbmUgLSAxLCAid2Via2l0LWV4ZWN1dGlvbi1saW5lIik7CisgICAgX3NldEV4ZWN1dGlv
bkxpbmVEZWNvcmF0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFy
IGxpbmVOdW1iZXIgPSB0aGlzLl9mb3JtYXR0ZXIub3JpZ2luYWxMaW5lTnVtYmVyVG9Gb3JtYXR0
ZWRMaW5lTnVtYmVyKGxpbmVOdW1iZXIgLSAxKTsKKyAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5h
ZGREZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtZXhlY3V0aW9uLWxpbmUiKTsKKyAgICB9
LAorCisgICAgX2NsZWFyRXhlY3V0aW9uTGluZURlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIpCisgICAgeworICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMuX2Zvcm1hdHRlci5vcmln
aW5hbExpbmVOdW1iZXJUb0Zvcm1hdHRlZExpbmVOdW1iZXIobGluZU51bWJlciAtIDEpOworICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24obGluZU51bWJlciwgIndlYmtp
dC1leGVjdXRpb24tbGluZSIpOwogICAgIH0sCiAKICAgICBfdXBkYXRlRGlmZkRlY29yYXRpb25z
OiBmdW5jdGlvbigpCkBAIC00MTEsMTUgKzQyMywxNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlID0gewogCiAgICAgX2FkZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9p
bnQpCiAgICAgewotICAgICAgICBpZiAoYnJlYWtwb2ludC5saW5lID4gdGhpcy5fdGV4dE1vZGVs
LmxpbmVzQ291bnQpCisgICAgICAgIHZhciB0ZXh0Vmlld2VyTGluZU51bWJlciA9IHRoaXMuX2Zv
cm1hdHRlci5vcmlnaW5hbExpbmVOdW1iZXJUb0Zvcm1hdHRlZExpbmVOdW1iZXIoYnJlYWtwb2lu
dC5saW5lIC0gMSk7CisgICAgICAgIGlmICh0ZXh0Vmlld2VyTGluZU51bWJlciA+PSB0aGlzLl90
ZXh0TW9kZWwubGluZXNDb3VudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBicmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoImVuYWJsZS1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2lu
dENoYW5nZWQsIHRoaXMpOwogICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoImNv
bmRpdGlvbi1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludENoYW5nZWQsIHRoaXMpOwogICAgICAg
ICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoInJlbW92ZWQiLCB0aGlzLl9icmVha3BvaW50
UmVtb3ZlZCwgdGhpcyk7CiAKLSAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VUZXh0ID0gdGhpcy5f
dGV4dE1vZGVsLmxpbmUoYnJlYWtwb2ludC5saW5lIC0gMSk7Ci0gICAgICAgIHRoaXMuX3NldEJy
ZWFrcG9pbnREZWNvcmF0aW9uKGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5lbmFibGVkLCAh
IWJyZWFrcG9pbnQuY29uZGl0aW9uKTsKKyAgICAgICAgYnJlYWtwb2ludC5zb3VyY2VUZXh0ID0g
dGhpcy5fdGV4dE1vZGVsLmxpbmUodGV4dFZpZXdlckxpbmVOdW1iZXIpOworICAgICAgICB0aGlz
Ll9zZXRCcmVha3BvaW50RGVjb3JhdGlvbih0ZXh0Vmlld2VyTGluZU51bWJlciwgYnJlYWtwb2lu
dC5lbmFibGVkLCAhIWJyZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICB9LAogCiAgICAgX2JyZWFr
cG9pbnRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKQEAgLTQzMCwxOCArNDQzLDE5IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGJyZWFrcG9pbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigiY29uZGl0aW9uLWNoYW5nZWQiLCBudWxsLCB0aGlzKTsKICAgICAg
ICAgYnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZW1vdmVkIiwgbnVsbCwgdGhpcyk7
CiAKLSAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24oYnJlYWtwb2ludC5s
aW5lKTsKKyAgICAgICAgdmFyIHRleHRWaWV3ZXJMaW5lTnVtYmVyID0gdGhpcy5fZm9ybWF0dGVy
Lm9yaWdpbmFsTGluZU51bWJlclRvRm9ybWF0dGVkTGluZU51bWJlcihicmVha3BvaW50LmxpbmUg
LSAxKTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24odGV4dFZpZXdl
ckxpbmVOdW1iZXIpOwogICAgIH0sCiAKICAgICBfYnJlYWtwb2ludENoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0g
ICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnREZWNvcmF0aW9uKGJyZWFrcG9pbnQubGluZSwgYnJl
YWtwb2ludC5lbmFibGVkLCAhIWJyZWFrcG9pbnQuY29uZGl0aW9uKTsKKyAgICAgICAgdmFyIHRl
eHRWaWV3ZXJMaW5lTnVtYmVyID0gdGhpcy5fZm9ybWF0dGVyLm9yaWdpbmFsTGluZU51bWJlclRv
Rm9ybWF0dGVkTGluZU51bWJlcihicmVha3BvaW50LmxpbmUgLSAxKTsKKyAgICAgICAgdGhpcy5f
c2V0QnJlYWtwb2ludERlY29yYXRpb24odGV4dFZpZXdlckxpbmVOdW1iZXIsIGJyZWFrcG9pbnQu
ZW5hYmxlZCwgISFicmVha3BvaW50LmNvbmRpdGlvbik7CiAgICAgfSwKIAogICAgIF9zZXRCcmVh
a3BvaW50RGVjb3JhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgZW5hYmxlZCwgaGFzQ29uZGl0
aW9uKQogICAgIHsKLSAgICAgICAgbGluZU51bWJlciAtPSAxOwogICAgICAgICB0aGlzLl90ZXh0
Vmlld2VyLmJlZ2luVXBkYXRlcygpOwogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmFkZERlY29y
YXRpb24obGluZU51bWJlciwgIndlYmtpdC1icmVha3BvaW50Iik7CiAgICAgICAgIGlmIChlbmFi
bGVkKQpAQCAtNDU3LDcgKzQ3MSw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5
cGUgPSB7CiAKICAgICBfcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb246IGZ1bmN0aW9uKGxpbmVO
dW1iZXIpCiAgICAgewotICAgICAgICBsaW5lTnVtYmVyIC09IDE7CiAgICAgICAgIHRoaXMuX3Rl
eHRWaWV3ZXIuYmVnaW5VcGRhdGVzKCk7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVtb3Zl
RGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWJyZWFrcG9pbnQiKTsKICAgICAgICAgdGhp
cy5fdGV4dFZpZXdlci5yZW1vdmVEZWNvcmF0aW9uKGxpbmVOdW1iZXIsICJ3ZWJraXQtYnJlYWtw
b2ludC1kaXNhYmxlZCIpOwpAQCAtNDczLDI3ICs0ODYsMjggQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtbGluZS1udW1iZXIiKTsKICAgICAg
ICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciBsaW5lTnVt
YmVyID0gdGFyZ2V0LnBhcmVudEVsZW1lbnQubGluZU51bWJlciArIDE7CisgICAgICAgIHZhciB0
ZXh0Vmlld2VyTGluZU51bWJlciA9IHRhcmdldC5wYXJlbnRFbGVtZW50LmxpbmVOdW1iZXI7Cisg
ICAgICAgIHZhciBvcmlnaW5hbExpbmVOdW1iZXIgPSB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0dGVk
TGluZU51bWJlclRvT3JpZ2luYWxMaW5lTnVtYmVyKHRleHRWaWV3ZXJMaW5lTnVtYmVyKTsKIAog
ICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KCk7
CiAKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNvbnRpbnVlIHRvIEhlcmUiKSwgdGhpcy5fY29udGludWVUb0xpbmUuYmluZCh0aGlzLCBsaW5l
TnVtYmVyKSk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb250aW51ZSB0byBIZXJlIiksIHRoaXMuX2NvbnRpbnVlVG9MaW5lLmJpbmQodGhp
cywgb3JpZ2luYWxMaW5lTnVtYmVyKSk7CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlz
Ll9maW5kQnJlYWtwb2ludChsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0
aGlzLl9maW5kQnJlYWtwb2ludChvcmlnaW5hbExpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIWJy
ZWFrcG9pbnQpIHsKICAgICAgICAgICAgIC8vIFRoaXMgcm93IGRvZXNuJ3QgaGF2ZSBhIGJyZWFr
cG9pbnQ6IFdlIHdhbnQgdG8gc2hvdyBBZGQgQnJlYWtwb2ludCBhbmQgQWRkIGFuZCBFZGl0IEJy
ZWFrcG9pbnQuCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQWRkIEJyZWFrcG9pbnQiKSwgdGhpcy5fc2V0QnJlYWtwb2ludC5iaW5kKHRo
aXMsIGxpbmVOdW1iZXIsICIiLCB0cnVlKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRkIEJyZWFrcG9pbnQiKSwgdGhpcy5fc2V0
QnJlYWtwb2ludC5iaW5kKHRoaXMsIG9yaWdpbmFsTGluZU51bWJlciwgIiIsIHRydWUpKTsKIAog
ICAgICAgICAgICAgZnVuY3Rpb24gYWRkQ29uZGl0aW9uYWxCcmVha3BvaW50KCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50RGVjb3JhdGlvbihsaW5l
TnVtYmVyLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50
RGVjb3JhdGlvbih0ZXh0Vmlld2VyTGluZU51bWJlciwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gZGlkRWRpdEJyZWFrcG9pbnRDb25kaXRpb24oY29tbWl0dGVkLCBjb25k
aXRpb24pCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1v
dmVCcmVha3BvaW50RGVjb3JhdGlvbihsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fcmVtb3ZlQnJlYWtwb2ludERlY29yYXRpb24odGV4dFZpZXdlckxpbmVOdW1iZXIpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWl0dGVkKQotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fc2V0QnJlYWtwb2ludChsaW5lTnVtYmVyLCB0cnVlLCBjb25kaXRpb24pOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChvcmlnaW5hbExpbmVOdW1i
ZXIsIHRydWUsIGNvbmRpdGlvbik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHRoaXMuX2VkaXRCcmVha3BvaW50Q29uZGl0aW9uKGxpbmVOdW1iZXIsICIiLCBkaWRFZGl0QnJl
YWtwb2ludENvbmRpdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lZGl0
QnJlYWtwb2ludENvbmRpdGlvbih0ZXh0Vmlld2VyTGluZU51bWJlciwgIiIsIGRpZEVkaXRCcmVh
a3BvaW50Q29uZGl0aW9uLmJpbmQodGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCBDb25kaXRp
b25hbCBCcmVha3BvaW504oCmIiksIGFkZENvbmRpdGlvbmFsQnJlYWtwb2ludC5iaW5kKHRoaXMp
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTUwNSwxNiArNTE5LDE2IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoY29tbWl0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3Bv
aW50LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2lu
dChicmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuZW5hYmxlZCwgY29uZGl0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQob3JpZ2luYWxMaW5lTnVtYmVy
LCBicmVha3BvaW50LmVuYWJsZWQsIGNvbmRpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWRpdEJyZWFrcG9pbnRD
b25kaXRpb24obGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGRpZEVkaXRCcmVha3Bv
aW50Q29uZGl0aW9uLmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRCcmVh
a3BvaW50Q29uZGl0aW9uKHRleHRWaWV3ZXJMaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlv
biwgZGlkRWRpdEJyZWFrcG9pbnRDb25kaXRpb24uYmluZCh0aGlzKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRWRpdCBCcmVha3BvaW504oCmIiksIGVkaXRCcmVha3BvaW50Q29uZGl0aW9uLmJpbmQodGhp
cykpOwogICAgICAgICAgICAgZnVuY3Rpb24gc2V0QnJlYWtwb2ludEVuYWJsZWQoZW5hYmxlZCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwotICAg
ICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lLCBlbmFibGVk
LCBicmVha3BvaW50LmNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtw
b2ludChvcmlnaW5hbExpbmVOdW1iZXIsIGVuYWJsZWQsIGJyZWFrcG9pbnQuY29uZGl0aW9uKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmVuYWJsZWQpCiAgICAg
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRpc2FibGUgQnJlYWtwb2ludCIpLCBzZXRCcmVha3BvaW50RW5hYmxlZC5iaW5kKHRoaXMsIGZh
bHNlKSk7CkBAIC01MzgsMTUgKzU1MiwxNSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1saW5lLW51bWJlciIpOwogICAgICAgICBpZiAoIXRh
cmdldCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0YXJn
ZXQucGFyZW50RWxlbWVudC5saW5lTnVtYmVyICsgMTsKKyAgICAgICAgdmFyIG9yaWdpbmFsTGlu
ZU51bWJlciA9IHRoaXMuX2Zvcm1hdHRlci5mb3JtYXR0ZWRMaW5lTnVtYmVyVG9PcmlnaW5hbExp
bmVOdW1iZXIodGFyZ2V0LnBhcmVudEVsZW1lbnQubGluZU51bWJlcik7CiAKLSAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSB0aGlzLl9maW5kQnJlYWtwb2ludChsaW5lTnVtYmVyKTsKKyAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9maW5kQnJlYWtwb2ludChvcmlnaW5hbExpbmVOdW1iZXIp
OwogICAgICAgICBpZiAoYnJlYWtwb2ludCkgewogICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1v
dmUoKTsKICAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkKLSAgICAgICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQubGluZSwgIWJyZWFrcG9pbnQuZW5hYmxlZCwg
YnJlYWtwb2ludC5jb25kaXRpb24pOworICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9p
bnQob3JpZ2luYWxMaW5lTnVtYmVyLCAhYnJlYWtwb2ludC5lbmFibGVkLCBicmVha3BvaW50LmNv
bmRpdGlvbik7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2lu
dChsaW5lTnVtYmVyLCB0cnVlLCAiIik7CisgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50
KG9yaWdpbmFsTGluZU51bWJlciwgdHJ1ZSwgIiIpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwogICAgIH0sCiAKQEAgLTcxMCw3ICs3MjQsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlID0gewogCiAgICAgX2VkaXRCcmVha3BvaW50Q29uZGl0aW9uOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjb25kaXRpb24sIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgbGlu
ZU51bWJlciAtPSAxOwogICAgICAgICB0aGlzLl9jb25kaXRpb25FbGVtZW50ID0gdGhpcy5fY3Jl
YXRlQ29uZGl0aW9uRWxlbWVudChsaW5lTnVtYmVyKTsKICAgICAgICAgdGhpcy5fdGV4dFZpZXdl
ci5hZGREZWNvcmF0aW9uKGxpbmVOdW1iZXIsIHRoaXMuX2NvbmRpdGlvbkVsZW1lbnQpOwogCkBA
IC03NzYsMTIgKzc4OSwyMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZXNpemUoKTsKICAgICB9LAogCisgICAg
Zm9ybWF0U291cmNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Zvcm1h
dHRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl90ZXh0TW9kZWwuc2V0
VGV4dChudWxsLCB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0KCkpOworICAgICAgICB0aGlzLl9zZXRU
ZXh0Vmlld2VyRGVjb3JhdGlvbnMoKTsKKyAgICB9LAorCiAgICAgX2NvbnRpbnVlVG9MaW5lOiBm
dW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUlEID0gdGhpcy5f
c291cmNlSURGb3JMaW5lKGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIXNvdXJjZUlEKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jb250
aW51ZVRvTGluZShzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1vZGVsLmNvbnRpbnVlVG9MaW5lKHNvdXJjZUlELCBsaW5lTnVtYmVyICsgMSk7CiAg
ICAgfSwKIAogICAgIF9lZGl0TGluZTogZnVuY3Rpb24obGluZU51bWJlciwgbmV3Q29udGVudCwg
Y2FuY2VsRWRpdGluZ0NhbGxiYWNrKQpAQCAtODM0LDcgKzg1Niw3IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzb3VyY2VJRCA9IHRoaXMuX3Nv
dXJjZUlERm9yTGluZShsaW5lTnVtYmVyKTsKICAgICAgICAgaWYgKCFzb3VyY2VJRCkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0QnJl
YWtwb2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgZW5hYmxlZCwgY29uZGl0aW9uKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgbGlu
ZU51bWJlciArIDEsIGVuYWJsZWQsIGNvbmRpdGlvbik7CiAgICAgICAgIGlmICghV2ViSW5zcGVj
dG9yLnBhbmVscy5zY3JpcHRzLmJyZWFrcG9pbnRzQWN0aXZhdGVkKQogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnRvZ2dsZUJyZWFrcG9pbnRzQ2xpY2tlZCgpOwogICAg
IH0sCkBAIC04NDgsNyArODcwLDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICBfZmluZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewog
ICAgICAgICB2YXIgc291cmNlSUQgPSB0aGlzLl9zb3VyY2VJREZvckxpbmUobGluZU51bWJlcik7
Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5maW5kQnJlYWtwb2lu
dChzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5maW5kQnJlYWtwb2ludChzb3VyY2VJRCwgbGluZU51bWJlciArIDEpOwogICAg
IH0sCiAKICAgICBfc291cmNlSURGb3JMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQpAQCAtODU3
LDcgKzg3OSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciBjbG9zZXN0U3RhcnRpbmdMaW5lID0gMDsKICAgICAgICAgZm9yICh2YXIgc291cmNl
SUQgaW4gdGhpcy5fc2NyaXB0cykgewogICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3Nj
cmlwdHNbc291cmNlSURdOwotICAgICAgICAgICAgaWYgKHNjcmlwdC5zdGFydGluZ0xpbmUgPD0g
bGluZU51bWJlciAmJiBzY3JpcHQuc3RhcnRpbmdMaW5lID49IGNsb3Nlc3RTdGFydGluZ0xpbmUp
IHsKKyAgICAgICAgICAgIGlmIChzY3JpcHQuc3RhcnRpbmdMaW5lIDw9IGxpbmVOdW1iZXIgKyAx
ICYmIHNjcmlwdC5zdGFydGluZ0xpbmUgPj0gY2xvc2VzdFN0YXJ0aW5nTGluZSkgewogICAgICAg
ICAgICAgICAgIGNsb3Nlc3RTdGFydGluZ0xpbmUgPSBzY3JpcHQuc3RhcnRpbmdMaW5lOwogICAg
ICAgICAgICAgICAgIHNvdXJjZUlERm9yTGluZSA9IHNvdXJjZUlEOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IGMx
MDA4YWQuLjg3YzdiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKQEAgLTgyLDYgKzgyLDcgQEAKICAgICA8ZmlsZT5SZXNvdXJjZXNQYW5lbC5q
czwvZmlsZT4KICAgICA8ZmlsZT5TY29wZUNoYWluU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAg
PGZpbGU+U2NyaXB0LmpzPC9maWxlPgorICAgIDxmaWxlPlNjcmlwdEZvcm1hdHRlci5qczwvZmls
ZT4KICAgICA8ZmlsZT5TY3JpcHRzUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+U2NyaXB0Vmll
dy5qczwvZmlsZT4KICAgICA8ZmlsZT5TZWN0aW9uLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggZTE1OTBmMi4u
MDlkZjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCkBAIC0xMjEsNiArMTIxLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrSXRlbVZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNl
RnJhbWUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNjcmlwdEZvcm1hdHRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRFZGl0b3JNb2RlbC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGV4dEVk
aXRvckhpZ2hsaWdodGVyLmpzIj48L3NjcmlwdD4K
</data>
<flag name="review"
          id="69846"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>