<?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>30324</bug_id>
          
          <creation_ts>2009-10-12 23:41:09 -0700</creation_ts>
          <short_desc>Console shows no repeat count when repeatedly logging an Event</short_desc>
          <delta_ts>2009-10-26 09:10:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>19879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>154282</commentid>
    <comment_count>0</comment_count>
      <attachid>41088</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-12 23:41:09 -0700</bug_when>
    <thetext>Created attachment 41088
test-case

Console shows no repeat count when repeatedly logging an Event. Logging with ConsoleCommandResult however shows the proper repeat count.

Aside from this bug, I think treating different Event objects as a repeat is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156176</commentid>
    <comment_count>1</comment_count>
      <attachid>41509</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-20 09:50:27 -0700</bug_when>
    <thetext>Created attachment 41509
proposed patch

WebInspector.ConsoleMessage.prototype.isEqual was returning true, even when ConsoleMessage::isEqual would return false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156199</commentid>
    <comment_count>2</comment_count>
      <attachid>41509</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-20 10:48:14 -0700</bug_when>
    <thetext>Comment on attachment 41509
proposed patch

Shouldn&apos;t this be &gt;= rather than &gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156205</commentid>
    <comment_count>3</comment_count>
      <attachid>41514</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-20 11:04:02 -0700</bug_when>
    <thetext>Created attachment 41514
test case that fails if I use &gt;= instead of &gt;

This test case fails if I use &gt;= instead of &gt;.

If ConsoleMessage::isEqual() returns true the repeatCount is incremented so 
  this.repeatCount &gt; msg.repeatCount
will always be satisfied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156310</commentid>
    <comment_count>4</comment_count>
      <attachid>41509</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-20 15:22:58 -0700</bug_when>
    <thetext>Comment on attachment 41509
proposed patch

&gt;              &amp;&amp; (this.url == msg.url)
&gt; -            &amp;&amp; (this.message == msg.message);
&gt; +            &amp;&amp; (this.message == msg.message)
&gt; +            &amp;&amp; (this.repeatCount &gt; msg.repeatCount);

This does not look right: messages are equal when their properties are equal, whereas this check should be made external. We are already handle isEqual in InspectorController, I don&apos;t think we should do it in the frontend as well. They way I would solve it is following: Split InspectorFrontend::addMessageToConsole into InspectorFrontend::addConsoleMessage(msg) and InspectorFrontend::updateConsoleMessageCount(count). Call latter when you increment count from inspector controller; Nuke this isEqual you are modifying as a whole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156388</commentid>
    <comment_count>5</comment_count>
      <attachid>41544</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-20 19:54:52 -0700</bug_when>
    <thetext>Created attachment 41544
proposed patch 2

I thinks this is much better. I hope I didn&apos;t break anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156876</commentid>
    <comment_count>6</comment_count>
      <attachid>41544</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-22 07:24:42 -0700</bug_when>
    <thetext>Comment on attachment 41544
proposed patch 2

Thanks for doing this!

&gt; +        messagesElement.removeChild(messagesElement.lastChild);
&gt; +        messagesElement.appendChild(msg.toMessageElement());

Nit: There is no need to re-create a message, you could provide updaeRepeatCount on ConsoleMessage that would either update the textContent of the messageRepeatCountElement or would lazily create it. But this can be a part of another bug really.

&gt; +        // Increment the error or warning count
&gt; +        switch (msg.level) {
&gt; +        case WebInspector.ConsoleMessage.MessageLevel.Warning:
&gt; +            WebInspector.warnings += msg.repeatDelta;
&gt; +            break;
&gt; +        case WebInspector.ConsoleMessage.MessageLevel.Error:
&gt; +            WebInspector.errors += msg.repeatDelta;
&gt; +            break;
&gt; +        }
&gt; +        
&gt; +        // Add message to the resource panel
&gt; +        if (msg.url in WebInspector.resourceURLMap) {
&gt; +            msg.resource = WebInspector.resourceURLMap[msg.url];
&gt; +            if (WebInspector.panels.resources)
&gt; +                WebInspector.panels.resources.addMessageToResource(msg.resource, msg);
&gt; +        }
&gt; +    },
&gt; +

This looks like a copy-paste from addMessage, I would try to avoid that. First part with counters makes sense to me, second really does not. We know that updateRepeatCounter is invoked on identical message, there is nowhere it could get its url from. It is unlikely that the resource is added after the message (if it is so - we are in trouble with non-repeating messages). So I suggest removing the url-related part from here and extracting warning+errors updates code into a private method. Otherwise r+.

Please make sure WebKitTools/Scripts/run-webkit-tests --debug LayoutTests/inspector are passing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157470</commentid>
    <comment_count>7</comment_count>
      <attachid>41789</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-24 12:33:27 -0700</bug_when>
    <thetext>Created attachment 41789
proposed patch 3

Was more trouble than I thought. Had to change quite a lot to handle case where ConsoleCommand comes between the repeated messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157517</commentid>
    <comment_count>8</comment_count>
      <attachid>41789</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-24 17:48:07 -0700</bug_when>
    <thetext>Comment on attachment 41789
proposed patch 3

Looks good. Couple of nits, otherwise r+.

&gt; +            msgCopy = new WebInspector.ConsoleMessage(msg.source, msg.type, msg.level, msg.line, msg.url, msg.groupLevel, count - prevRepeatCount);

You should either use this.repeatCountBeforeCommand here or remove it since it is no more used.

&gt; +    incrementErrorWarningCount: function(msg) {

Please use _incrementErrorWarningCount as this is private method.


&gt; +    updateRepeatCount: function() {

Also private


&gt; -    toMessageElement: function()
&gt; +    get element()

(No need to fix): Why rename? Since this code below is kinda ugly:

&gt; +        this._element = WebInspector.ConsoleMessage.prototype.__lookupGetter__(&quot;element&quot;).call(this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157532</commentid>
    <comment_count>9</comment_count>
      <attachid>41806</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-24 20:01:56 -0700</bug_when>
    <thetext>Created attachment 41806
proposed patch 4

&gt;You should either use this.repeatCountBeforeCommand here or remove it since it is no more used.
Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157576</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-25 02:43:24 -0700</bug_when>
    <thetext>You should try run manual-tests/inspector/multiple-console-messages.html and the other console releated manual tests in that directory.

More automated tests for repeated messages would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157581</commentid>
    <comment_count>11</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-10-25 05:39:06 -0700</bug_when>
    <thetext>Seems to pass the manual tests so I&apos;m trying to add an automated test.

I want to execute a command in the console so I tried something like this but it doesn&apos;t seem to give me the results I&apos;m looking for. Is there a proper way to do this?

https://gist.github.com/75074e73fa7d2bb0bec3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157786</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-26 09:06:48 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Seems to pass the manual tests so I&apos;m trying to add an automated test.
&gt; 
&gt; I want to execute a command in the console so I tried something like this but
&gt; it doesn&apos;t seem to give me the results I&apos;m looking for. Is there a proper way
&gt; to do this?
&gt; 
&gt; https://gist.github.com/75074e73fa7d2bb0bec3

You don&apos;t need to eval console.log in console - evaluating 1+1 would be enough to cause the interrupting output. What you should do is:

1. introduce a function that does console.log call
2. call it in doIt
3. evaluate dumpMessages in frontend
4. make dumpMessages issue some console command as you do
5. in the callback to dumpMessages call your function containting console.log again
6. dump messages again to see if interrupt has been processed well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157787</commentid>
    <comment_count>13</comment_count>
      <attachid>41806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-26 09:10:17 -0700</bug_when>
    <thetext>Comment on attachment 41806
proposed patch 4

Clearing flags on attachment: 41806

Committed r50064: &lt;http://trac.webkit.org/changeset/50064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157788</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-26 09:10:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>41088</attachid>
            <date>2009-10-12 23:41:09 -0700</date>
            <delta_ts>2009-10-12 23:41:09 -0700</delta_ts>
            <desc>test-case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>284</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpwaW5rOyB3aWR0aDoyMDBweDsgaGVpZ2h0OiAy
MDBweDsiIGlkPSJib3giPgogICAgY2xpY2sgdHdpY2UgaGVyZSBhbmQgbG9vayBhdCB0aGUgY29u
c29sZS4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveCIpLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgZnVuY3Rpb24oZSkge2NvbnNvbGUubG9nKGUpfSwgZmFsc2UpOwo8L3NjcmlwdD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41509</attachid>
            <date>2009-10-20 09:50:27 -0700</date>
            <delta_ts>2009-10-20 19:54:52 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>event.diff</filename>
            <type>text/plain</type>
            <size>1308</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTg2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMjAgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBjb3VudCB3aGVuIHJlcGVh
dGVkbHkgbG9nZ2luZyBhbiBFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzAzMjQKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90
eXBlLmlzRXF1YWwpOiBXYXMgdG9vIGZvcmdpdmluZy4KKwogMjAwOS0xMC0yMCAgSm9zZXBoIFBl
Y29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmll
dy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanMJKHJldmlzaW9uIDQ5Nzk0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzCSh3b3JraW5nIGNvcHkpCkBAIC04NTYsNyArODU2LDggQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IAogICAgICAgICAgICAgJiYgKHRoaXMubGV2
ZWwgPT0gbXNnLmxldmVsKQogICAgICAgICAgICAgJiYgKHRoaXMubGluZSA9PSBtc2cubGluZSkK
ICAgICAgICAgICAgICYmICh0aGlzLnVybCA9PSBtc2cudXJsKQotICAgICAgICAgICAgJiYgKHRo
aXMubWVzc2FnZSA9PSBtc2cubWVzc2FnZSk7CisgICAgICAgICAgICAmJiAodGhpcy5tZXNzYWdl
ID09IG1zZy5tZXNzYWdlKQorICAgICAgICAgICAgJiYgKHRoaXMucmVwZWF0Q291bnQgPiBtc2cu
cmVwZWF0Q291bnQpOwogCiAgICAgICAgIHJldHVybiAoZGlzcmVndWFyZEdyb3VwID8gcmV0IDog
KHJldCAmJiAodGhpcy5ncm91cExldmVsID09IG1zZy5ncm91cExldmVsKSkpOwogICAgIH0K
</data>
<flag name="review"
          id="22920"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>41514</attachid>
            <date>2009-10-20 11:04:02 -0700</date>
            <delta_ts>2009-10-20 11:04:02 -0700</delta_ts>
            <desc>test case that fails if I use &gt;= instead of &gt;</desc>
            <filename>test-evt.html</filename>
            <type>text/html</type>
            <size>376</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">PHA+Q2xvc2UgdGhlIGluc3BlY3Rvci4gUmVsb2FkLiBUaGVuIG9wZW4gdGhlIGNvbnNvbGUuPC9w
PgoKPHA+VGhlIGV4cGVjdGVkIG91dHB1dCBpczwvcD4KPHByZT4KICAyIE1vdXNlRXZlbnQKICAy
IE1vdXNlRXZlbnQKPC9wcmU+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+CiAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRz
Iik7CiAgICBjb25zb2xlLmxvZyhldnQpOwogICAgY29uc29sZS5sb2coZXZ0KTsKICAgIGV2dCA9
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOwogICAgY29uc29sZS5sb2coZXZ0
KTsKICAgIGNvbnNvbGUubG9nKGV2dCk7Cjwvc2NyaXB0Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41544</attachid>
            <date>2009-10-20 19:54:52 -0700</date>
            <delta_ts>2009-10-24 12:33:27 -0700</delta_ts>
            <desc>proposed patch 2</desc>
            <filename>event.diff</filename>
            <type>text/plain</type>
            <size>11042</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTg5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDktMTAtMjAgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBjb3VudCB3aGVuIHJlcGVh
dGVkbHkgbG9nZ2luZyBhbiBFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzAzMjQKKworICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29u
c29sZSk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKTogQ2FsbHMgdXBkYXRl
UmVwZWF0Q291bnRJbkNvbnNvbGUgaWYgaXQgaXMgYSByZXBlYXRpbmcgbWVzc2FnZS4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29uc29sZTsKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50KTogQWRk
ZWQuIENhbGxlZCB3aGVuIHJlcGVhdENvdW50IGlzIGluY3JlbWVudGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJv
dG90eXBlLmFkZE1lc3NhZ2UpOiBSZW1vdmVkIGNhbGxzIHRvIG1zZy5pc0VxdWFsLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS51cGRhdGVNZXNzYWdlUmVwZWF0
Q291bnQpOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6IFJlbmFtZWQgV2Vi
SW5zcGVjdG9yLmFkZE1lc3NhZ2VUb0NvbnNvbGUuCisgICAgICAgIChXZWJJbnNwZWN0b3IudXBk
YXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCk6IEFkZGVkLgorCiAyMDA5LTEwLTIwICBKZXJl
bXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCShyZXZpc2lv
biA0OTc5NCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNyArOTAsMTIgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25z
b2xlKEluc3BlYwogICAgIGpzb25PYmouc2V0KCJ1cmwiLCBtX3VybCk7CiAgICAganNvbk9iai5z
ZXQoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOwogICAgIGpz
b25PYmouc2V0KCJyZXBlYXRDb3VudCIsIHN0YXRpY19jYXN0PGludD4obV9yZXBlYXRDb3VudCkp
OwotICAgIGZyb250ZW5kLT5hZGRNZXNzYWdlVG9Db25zb2xlKGpzb25PYmosIG1fZnJhbWVzLCBt
X3dyYXBwZWRBcmd1bWVudHMsICBtX21lc3NhZ2UpOworICAgIGZyb250ZW5kLT5hZGRDb25zb2xl
TWVzc2FnZShqc29uT2JqLCBtX2ZyYW1lcywgbV93cmFwcGVkQXJndW1lbnRzLCAgbV9tZXNzYWdl
KTsKK30KKwordm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIGZyb250ZW5kLT51cGRhdGVDb25z
b2xlTWVzc2FnZVJlcGVhdENvdW50KG1fcmVwZWF0Q291bnQpOwogfQogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAkocmV2aXNp
b24gNDk3OTQpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgICAgIHZvaWQgYWRkVG9Db25zb2xlKEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCk7CisgICAgICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKICNlbmRpZgogICAgICAgICB2b2lkIGluY3JlbWVu
dENvdW50KCkgeyArK21fcmVwZWF0Q291bnQ7IH07CiAgICAgICAgIGJvb2wgaXNFcXVhbChTY3Jp
cHRTdGF0ZSosIENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDQ5Nzk0KQorKysgV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
MiwxMyArMzcyLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1lc3MK
ICAgICBpZiAobV9wcmV2aW91c01lc3NhZ2UgJiYgbV9wcmV2aW91c01lc3NhZ2UtPmlzRXF1YWwo
c2NyaXB0U3RhdGUsIGNvbnNvbGVNZXNzYWdlKSkgewogICAgICAgICBtX3ByZXZpb3VzTWVzc2Fn
ZS0+aW5jcmVtZW50Q291bnQoKTsKICAgICAgICAgZGVsZXRlIGNvbnNvbGVNZXNzYWdlOworICAg
ICAgICBpZiAod2luZG93VmlzaWJsZSgpKQorICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2Ut
PnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3NhZ2U7CiAgICAgICAg
IG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7CisgICAgICAgIGlmICh3
aW5kb3dWaXNpYmxlKCkpCisgICAgICAgICAgICBjb25zb2xlTWVzc2FnZS0+YWRkVG9Db25zb2xl
KG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIH0KLQotICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0g
ICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0NvbnNvbGUobV9mcm9udGVuZC5nZXQoKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoYm9v
bCBjbGVhclVJKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAko
cmV2aXNpb24gNDk3OTQpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDkgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZDo6ZGlkQ29tbWl0TG9hZCgpCiAgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJkaWRDb21taXRMb2Fk
Iik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29u
c3QgU2NyaXB0T2JqZWN0JiBtZXNzYWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYg
ZnJhbWVzLCBjb25zdCBWZWN0b3I8U2NyaXB0VmFsdWU+IHdyYXBwZWRBcmd1bWVudHMsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNz
YWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0
cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRz
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2Fs
bD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGRNZXNzYWdlVG9Db25zb2xlIikpOworICAg
IE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiYWRk
Q29uc29sZU1lc3NhZ2UiKSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2VP
YmopOwogICAgIGlmICghZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZnJhbWVzLnNpemUoKTsgKytpKQpAQCAtOTIsNiArOTIsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29ucwogICAgICAgICBmdW5jdGlvbi0+YXBw
ZW5kQXJndW1lbnQobWVzc2FnZSk7CiAgICAgZnVuY3Rpb24tPmNhbGwoKTsKIH0KKyAgICAKK3Zv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQoY29u
c3QgaW50IGNvdW50KQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9u
KG5ld0Z1bmN0aW9uQ2FsbCgidXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCIpKTsKKyAg
ICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoY291bnQpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7
Cit9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKIHsK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAkocmV2aXNpb24gNDk3OTQp
CisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw3ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2NyaXB0T2Jq
ZWN0IG5ld1NjcmlwdE9iamVjdCgpOwogCiAgICAgICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwot
ICAgICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU2NyaXB0T2JqZWN0JiBtZXNz
YWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8
U2NyaXB0VmFsdWU+IHdyYXBwZWRBcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBtZXNzYWdl
T2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8U2Ny
aXB0VmFsdWU+IHdyYXBwZWRBcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAg
ICAgIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudChjb25zdCBpbnQgY291bnQp
OwogICAgICAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAKICAgICAgICAgYm9vbCBh
ZGRSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0T2JqZWN0JiByZXNv
dXJjZU9iaik7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCShyZXZpc2lvbiA0OTc5NCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTcyLDMxICsxNzIsOCBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgIGFkZE1lc3NhZ2U6IGZ1bmN0aW9uKG1z
ZykKICAgICB7CiAgICAgICAgIGlmIChtc2cgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UgJiYgIShtc2cgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRS
ZXN1bHQpKSB7Ci0gICAgICAgICAgICBtc2cudG90YWxSZXBlYXRDb3VudCA9IG1zZy5yZXBlYXRD
b3VudDsKICAgICAgICAgICAgIG1zZy5yZXBlYXREZWx0YSA9IG1zZy5yZXBlYXRDb3VudDsKLQot
ICAgICAgICAgICAgdmFyIG1lc3NhZ2VSZXBlYXRlZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBp
ZiAobXNnLmlzRXF1YWwgJiYgbXNnLmlzRXF1YWwodGhpcy5wcmV2aW91c01lc3NhZ2UpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBzb21ldGltZXMgd2UgZ2V0IGEgbGFyZ2UgbnVtYmVy
IG9mIHJlcGVhdGVkIG1lc3NhZ2VzIGFuZCBzb21ldGltZXMKLSAgICAgICAgICAgICAgICAvLyB3
ZSBnZXQgdGhlbSBvbmUgYXQgYSB0aW1lLCB3ZSBuZWVkIHRvIGtub3cgdGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiBob3cgbWFueQotICAgICAgICAgICAgICAgIC8vIHJlcGVhdHMgd2UgdXNlZCB0byBo
YXZlIGFuZCBob3cgbWFueSB3ZSBoYXZlIG5vdy4KLSAgICAgICAgICAgICAgICBtc2cucmVwZWF0
RGVsdGEgLT0gdGhpcy5wcmV2aW91c01lc3NhZ2UudG90YWxSZXBlYXRDb3VudDsKLQotICAgICAg
ICAgICAgICAgIGlmICghaXNOYU4odGhpcy5yZXBlYXRDb3VudEJlZm9yZUNvbW1hbmQpKQotICAg
ICAgICAgICAgICAgICAgICBtc2cucmVwZWF0Q291bnQgLT0gdGhpcy5yZXBlYXRDb3VudEJlZm9y
ZUNvbW1hbmQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29tbWFuZFNpbmNlUHJldmlv
dXNNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBwcmV2aW91
cyBtZXNzYWdlIGVsZW1lbnQgdG8gcmVzZXQgdGhlIHJlcGVhdCBjb3VudC4KLSAgICAgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2VzRWxlbWVudCA9IHRoaXMuY3VycmVudEdyb3VwLm1lc3NhZ2Vz
RWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNFbGVtZW50LnJlbW92ZUNoaWxk
KG1lc3NhZ2VzRWxlbWVudC5sYXN0Q2hpbGQpOwotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
c0VsZW1lbnQuYXBwZW5kQ2hpbGQobXNnLnRvTWVzc2FnZUVsZW1lbnQoKSk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZVJlcGVhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5yZXBlYXRDb3Vu
dEJlZm9yZUNvbW1hbmQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSW5jcmVtZW50
IHRoZSBlcnJvciBvciB3YXJuaW5nIGNvdW50CiAgICAgICAgICAgICBzd2l0Y2ggKG1zZy5sZXZl
bCkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLldhcm5pbmc6CkBAIC0yMTYsMTQgKzE5Myw5IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHRoaXMuY29tbWFuZFNpbmNlUHJldmlv
dXNNZXNzYWdlID0gZmFsc2U7CiAgICAgICAgICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZSA9IG1z
ZzsKLQotICAgICAgICAgICAgaWYgKG1lc3NhZ2VSZXBlYXRlZCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0gZWxzZSBpZiAobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bnNvbGVDb21tYW5kKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2UpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzTWVzc2FnZSkKICAgICAgICAgICAgICAgICB0
aGlzLmNvbW1hbmRTaW5jZVByZXZpb3VzTWVzc2FnZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dGhpcy5yZXBlYXRDb3VudEJlZm9yZUNvbW1hbmQgPSB0aGlzLnByZXZpb3VzTWVzc2FnZS50b3Rh
bFJlcGVhdENvdW50OwotICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5t
ZXNzYWdlcy5wdXNoKG1zZyk7CkBAIC0yNTAsNiArMjIyLDM1IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMucHJvbXB0RWxlbWVudC5zY3JvbGxJ
bnRvVmlldyhmYWxzZSk7CiAgICAgfSwKIAorICAgIHVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudDog
ZnVuY3Rpb24oY291bnQpIHsKKyAgICAgICAgaWYgKCF0aGlzLnByZXZpb3VzTWVzc2FnZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHZhciBtc2cgPSB0aGlzLnByZXZp
b3VzTWVzc2FnZTsKKyAgICAgICAgbXNnLnJlcGVhdERlbHRhID0gY291bnQgLSBtc2cucmVwZWF0
Q291bnQ7CisgICAgICAgIG1zZy5yZXBlYXRDb3VudCA9IGNvdW50OworICAgICAgICB2YXIgbWVz
c2FnZXNFbGVtZW50ID0gdGhpcy5jdXJyZW50R3JvdXAubWVzc2FnZXNFbGVtZW50OworICAgICAg
ICBtZXNzYWdlc0VsZW1lbnQucmVtb3ZlQ2hpbGQobWVzc2FnZXNFbGVtZW50Lmxhc3RDaGlsZCk7
CisgICAgICAgIG1lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtc2cudG9NZXNzYWdlRWxlbWVu
dCgpKTsKKyAgICAgICAgCisgICAgICAgIC8vIEluY3JlbWVudCB0aGUgZXJyb3Igb3Igd2Fybmlu
ZyBjb3VudAorICAgICAgICBzd2l0Y2ggKG1zZy5sZXZlbCkgeworICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci53YXJuaW5ncyArPSBtc2cucmVwZWF0RGVsdGE7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLkVycm9yOgorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmVycm9ycyArPSBtc2cucmVwZWF0
RGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Ly8gQWRkIG1lc3NhZ2UgdG8gdGhlIHJlc291cmNlIHBhbmVsCisgICAgICAgIGlmIChtc2cudXJs
IGluIFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTE1hcCkgeworICAgICAgICAgICAgbXNnLnJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwW21zZy51cmxdOworICAgICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKQorICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZE1lc3NhZ2VUb1Jlc291cmNlKG1zZy5yZXNvdXJj
ZSwgbXNnKTsKKyAgICAgICAgfQorICAgIH0sCisKICAgICBjbGVhck1lc3NhZ2VzOiBmdW5jdGlv
bihjbGVhckluc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgewogICAgICAgICBpZiAoY2xlYXJJbnNw
ZWN0b3JDb250cm9sbGVyKQpAQCAtMjY3LDcgKzI2OCw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci53YXJuaW5ncyA9IDA7CiAK
ICAgICAgICAgZGVsZXRlIHRoaXMuY29tbWFuZFNpbmNlUHJldmlvdXNNZXNzYWdlOwotICAgICAg
ICBkZWxldGUgdGhpcy5yZXBlYXRDb3VudEJlZm9yZUNvbW1hbmQ7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLnByZXZpb3VzTWVzc2FnZTsKICAgICB9LAogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMJKHJldmlzaW9uIDQ5Nzk0KQorKysgV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMTE2NSw3ICsxMTY1
LDcgQEAgV2ViSW5zcGVjdG9yLmRpZENvbW1pdExvYWQgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5z
cGVjdG9yLnNldERvY3VtZW50KG51bGwpOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkTWVzc2FnZVRv
Q29uc29sZSA9IGZ1bmN0aW9uKHBheWxvYWQpCitXZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3Nh
Z2UgPSBmdW5jdGlvbihwYXlsb2FkKQogewogICAgIHZhciBjb25zb2xlTWVzc2FnZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoCiAgICAgICAgIHBheWxvYWQuc291cmNlLApAQCAt
MTE3OSw2ICsxMTc5LDExIEBAIFdlYkluc3BlY3Rvci5hZGRNZXNzYWdlVG9Db25zb2xlID0gZnVu
Y3QKICAgICB0aGlzLmNvbnNvbGUuYWRkTWVzc2FnZShjb25zb2xlTWVzc2FnZSk7CiB9CiAKK1dl
Ykluc3BlY3Rvci51cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50ID0gZnVuY3Rpb24oY291
bnQpCit7CisgICAgdGhpcy5jb25zb2xlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudChjb3VudCk7
Cit9CisKIFdlYkluc3BlY3Rvci5sb2cgPSBmdW5jdGlvbihtZXNzYWdlKQogewogICAgIC8vIHJl
bWVtYmVyICd0aGlzJyBmb3Igc2V0SW50ZXJ2YWwoKSBjYWxsYmFjawo=
</data>
<flag name="review"
          id="22964"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41789</attachid>
            <date>2009-10-24 12:33:27 -0700</date>
            <delta_ts>2009-10-24 20:01:56 -0700</delta_ts>
            <desc>proposed patch 3</desc>
            <filename>event.diff</filename>
            <type>text/plain</type>
            <size>21015</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDAyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMjQgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBjb3VudCB3aGVuIHJlcGVh
dGVkbHkgbG9nZ2luZyBhbiBFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzAzMjQKKworICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29u
c29sZSk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKTogQ2FsbHMgdXBkYXRl
UmVwZWF0Q291bnRJbkNvbnNvbGUgaWYgaXQgaXMgYSByZXBlYXRpbmcgbWVzc2FnZS4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29uc29sZQorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQpOiBBZGRl
ZC4gQ2FsbGVkIHdoZW4gcmVwZWF0Q291bnQgaXMgaW5jcmVtZW50ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUuYWRkTWVzc2FnZSk6IFJlbW92ZWQgY2FsbHMgdG8gbXNnLmlzRXF1YWwuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRD
b3VudCk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5pbmNyZW1lbnRFcnJvcldhcm5pbmdDb3VudCk6IEFkZGVkLiBVcGRhdGVzIHRoZSBlcnJvci93
YXJuaW5nIGNvdW50LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUuZ2V0IGVsZW1lbnQp
OiBNb3ZlZCBjb2RlIGZyb20gQ29uc29sZU1lc3NhZ2UudG9NZXNzYWdlRWxlbWVudC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUudXBkYXRlUmVwZWF0Q291
bnQpOiBVcGRhdGVzIHRoZSByZXBlYXRDb3VudEVsZW1lbnQKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlQ29tbWFuZC5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZS5hZGRNZXNzYWdlKTogVXNl
IENvbnNvbGVNZXNzYWdlLmVsZW1lbnQgaW5zdGVhZCBvZiBDb25zb2xlTWVzc2FnZS50b01lc3Nh
Z2VFbGVtZW50LgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJJbnNw
ZWN0b3IuYWRkTWVzc2FnZVRvQ29uc29sZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVD
b25zb2xlTWVzc2FnZVJlcGVhdENvdW50KTogQWRkZWQuCisKIDIwMDktMTAtMjQgIERpbWl0cmkg
R2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBi
dWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCShyZXZpc2lv
biA0OTkzNykKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNyArOTAsMTIgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25z
b2xlKEluc3BlYwogICAgIGpzb25PYmouc2V0KCJ1cmwiLCBtX3VybCk7CiAgICAganNvbk9iai5z
ZXQoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOwogICAgIGpz
b25PYmouc2V0KCJyZXBlYXRDb3VudCIsIHN0YXRpY19jYXN0PGludD4obV9yZXBlYXRDb3VudCkp
OwotICAgIGZyb250ZW5kLT5hZGRNZXNzYWdlVG9Db25zb2xlKGpzb25PYmosIG1fZnJhbWVzLCBt
X3dyYXBwZWRBcmd1bWVudHMsICBtX21lc3NhZ2UpOworICAgIGZyb250ZW5kLT5hZGRDb25zb2xl
TWVzc2FnZShqc29uT2JqLCBtX2ZyYW1lcywgbV93cmFwcGVkQXJndW1lbnRzLCAgbV9tZXNzYWdl
KTsKK30KKwordm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIGZyb250ZW5kLT51cGRhdGVDb25z
b2xlTWVzc2FnZVJlcGVhdENvdW50KG1fcmVwZWF0Q291bnQpOwogfQogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAkocmV2aXNp
b24gNDk5MzcpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgICAgIHZvaWQgYWRkVG9Db25zb2xlKEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCk7CisgICAgICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKICNlbmRpZgogICAgICAgICB2b2lkIGluY3JlbWVu
dENvdW50KCkgeyArK21fcmVwZWF0Q291bnQ7IH07CiAgICAgICAgIGJvb2wgaXNFcXVhbChTY3Jp
cHRTdGF0ZSosIENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDQ5OTM3KQorKysgV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
NywxMyArMzc3LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1lc3MK
ICAgICBpZiAobV9wcmV2aW91c01lc3NhZ2UgJiYgbV9wcmV2aW91c01lc3NhZ2UtPmlzRXF1YWwo
c2NyaXB0U3RhdGUsIGNvbnNvbGVNZXNzYWdlKSkgewogICAgICAgICBtX3ByZXZpb3VzTWVzc2Fn
ZS0+aW5jcmVtZW50Q291bnQoKTsKICAgICAgICAgZGVsZXRlIGNvbnNvbGVNZXNzYWdlOworICAg
ICAgICBpZiAod2luZG93VmlzaWJsZSgpKQorICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2Ut
PnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3NhZ2U7CiAgICAgICAg
IG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7CisgICAgICAgIGlmICh3
aW5kb3dWaXNpYmxlKCkpCisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Db25z
b2xlKG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIH0KLQotICAgIGlmICh3aW5kb3dWaXNpYmxlKCkp
Ci0gICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0NvbnNvbGUobV9mcm9udGVuZC5nZXQo
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMo
Ym9vbCBjbGVhclVJKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cAkocmV2aXNpb24gNDk5MzcpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDkgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6ZGlkQ29tbWl0TG9hZCgpCiAgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJkaWRDb21taXRM
b2FkIik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
Y29uc3QgU2NyaXB0T2JqZWN0JiBtZXNzYWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5n
PiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8U2NyaXB0VmFsdWU+IHdyYXBwZWRBcmd1bWVudHMsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVN
ZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlw
dFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1l
bnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9u
Q2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJhZGRNZXNzYWdlVG9Db25zb2xlIikpOwor
ICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgi
YWRkQ29uc29sZU1lc3NhZ2UiKSk7CiAgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KG1lc3Nh
Z2VPYmopOwogICAgIGlmICghZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZnJhbWVzLnNpemUoKTsgKytpKQpAQCAtOTMsNiArOTMsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29ucwogICAgIGZ1bmN0aW9uLT5jYWxs
KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVw
ZWF0Q291bnQoY29uc3QgaW50IGNvdW50KQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNh
bGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgidXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRD
b3VudCIpKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoY291bnQpOworICAgIGZ1bmN0
aW9uLT5jYWxsKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmNsZWFyQ29uc29sZU1l
c3NhZ2VzKCkKIHsKICAgICBjYWxsU2ltcGxlRnVuY3Rpb24oImNsZWFyQ29uc29sZU1lc3NhZ2Vz
Iik7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgJKHJldmlzaW9uIDQ5
OTM3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNjcmlw
dE9iamVjdCBuZXdTY3JpcHRPYmplY3QoKTsKIAogICAgICAgICB2b2lkIGRpZENvbW1pdExvYWQo
KTsKLSAgICAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFNjcmlwdE9iamVjdCYg
bWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVj
dG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVz
c2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9y
PFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwor
ICAgICAgICB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQoY29uc3QgaW50IGNv
dW50KTsKICAgICAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwogCiAgICAgICAgIGJv
b2wgYWRkUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdE9iamVjdCYg
cmVzb3VyY2VPYmopOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVW
aWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xl
Vmlldy5qcwkocmV2aXNpb24gNDk5MzcpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw0MCArMTc0LDcgQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICBhZGRNZXNzYWdlOiBmdW5jdGlv
bihtc2cpCiAgICAgewogICAgICAgICBpZiAobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlICYmICEobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21t
YW5kUmVzdWx0KSkgewotICAgICAgICAgICAgbXNnLnRvdGFsUmVwZWF0Q291bnQgPSBtc2cucmVw
ZWF0Q291bnQ7Ci0gICAgICAgICAgICBtc2cucmVwZWF0RGVsdGEgPSBtc2cucmVwZWF0Q291bnQ7
Ci0KLSAgICAgICAgICAgIHZhciBtZXNzYWdlUmVwZWF0ZWQgPSBmYWxzZTsKLQotICAgICAgICAg
ICAgaWYgKG1zZy5pc0VxdWFsICYmIG1zZy5pc0VxdWFsKHRoaXMucHJldmlvdXNNZXNzYWdlKSkg
ewotICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugc29tZXRpbWVzIHdlIGdldCBhIGxhcmdlIG51
bWJlciBvZiByZXBlYXRlZCBtZXNzYWdlcyBhbmQgc29tZXRpbWVzCi0gICAgICAgICAgICAgICAg
Ly8gd2UgZ2V0IHRoZW0gb25lIGF0IGEgdGltZSwgd2UgbmVlZCB0byBrbm93IHRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gaG93IG1hbnkKLSAgICAgICAgICAgICAgICAvLyByZXBlYXRzIHdlIHVzZWQg
dG8gaGF2ZSBhbmQgaG93IG1hbnkgd2UgaGF2ZSBub3cuCi0gICAgICAgICAgICAgICAgbXNnLnJl
cGVhdERlbHRhIC09IHRoaXMucHJldmlvdXNNZXNzYWdlLnRvdGFsUmVwZWF0Q291bnQ7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoIWlzTmFOKHRoaXMucmVwZWF0Q291bnRCZWZvcmVDb21tYW5kKSkK
LSAgICAgICAgICAgICAgICAgICAgbXNnLnJlcGVhdENvdW50IC09IHRoaXMucmVwZWF0Q291bnRC
ZWZvcmVDb21tYW5kOwotCi0gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1hbmRTaW5jZVBy
ZXZpb3VzTWVzc2FnZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBSZWNyZWF0ZSB0aGUgcHJl
dmlvdXMgbWVzc2FnZSBlbGVtZW50IHRvIHJlc2V0IHRoZSByZXBlYXQgY291bnQuCi0gICAgICAg
ICAgICAgICAgICAgIHZhciBtZXNzYWdlc0VsZW1lbnQgPSB0aGlzLmN1cnJlbnRHcm91cC5tZXNz
YWdlc0VsZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzRWxlbWVudC5yZW1vdmVD
aGlsZChtZXNzYWdlc0VsZW1lbnQubGFzdENoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKG1zZy50b01lc3NhZ2VFbGVtZW50KCkpOwotCi0gICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2VSZXBlYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmVwZWF0
Q291bnRCZWZvcmVDb21tYW5kOwotCi0gICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIGVycm9y
IG9yIHdhcm5pbmcgY291bnQKLSAgICAgICAgICAgIHN3aXRjaCAobXNnLmxldmVsKSB7Ci0gICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2Fy
bmluZzoKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iud2FybmluZ3MgKz0gbXNnLnJlcGVh
dERlbHRhOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgotICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5lcnJvcnMgKz0gbXNnLnJlcGVhdERlbHRhOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5pbmNyZW1lbnRFcnJvcldh
cm5pbmdDb3VudChtc2cpOwogCiAgICAgICAgICAgICAvLyBBZGQgbWVzc2FnZSB0byB0aGUgcmVz
b3VyY2UgcGFuZWwKICAgICAgICAgICAgIGlmIChtc2cudXJsIGluIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVVSTE1hcCkgewpAQCAtMjE4LDkgKzE4NSw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHRoaXMuY29tbWFuZFNpbmNlUHJldmlvdXNN
ZXNzYWdlID0gZmFsc2U7CiAgICAgICAgICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZSA9IG1zZzsK
LQotICAgICAgICAgICAgaWYgKG1lc3NhZ2VSZXBlYXRlZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0gZWxzZSBpZiAobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNv
bGVDb21tYW5kKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2UpIHsKICAg
ICAgICAgICAgICAgICB0aGlzLmNvbW1hbmRTaW5jZVByZXZpb3VzTWVzc2FnZSA9IHRydWU7CkBA
IC0yNTIsNiArMjE2LDM1IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMucHJvbXB0RWxlbWVudC5zY3JvbGxJbnRvVmlldyhmYWxzZSk7CiAgICAg
fSwKIAorICAgIHVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudDogZnVuY3Rpb24oY291bnQpIHsKKyAg
ICAgICAgdmFyIG1zZyA9IHRoaXMucHJldmlvdXNNZXNzYWdlOworICAgICAgICB2YXIgcHJldlJl
cGVhdENvdW50ID0gbXNnLnRvdGFsUmVwZWF0Q291bnQ7CisgICAgICAgIAorICAgICAgICBpZiAo
IXRoaXMuY29tbWFuZFNpbmNlUHJldmlvdXNNZXNzYWdlKSB7CisgICAgICAgICAgICBtc2cucmVw
ZWF0RGVsdGEgPSBjb3VudCAtIHByZXZSZXBlYXRDb3VudDsKKyAgICAgICAgICAgIG1zZy5yZXBl
YXRDb3VudCA9IG1zZy5yZXBlYXRDb3VudCArIG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAg
IG1zZy50b3RhbFJlcGVhdENvdW50ID0gY291bnQ7CisgICAgICAgICAgICBtc2cudXBkYXRlUmVw
ZWF0Q291bnQoKTsKKyAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50RXJyb3JXYXJuaW5nQ291bnQo
bXNnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1zZ0NvcHkgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50eXBlLCBtc2cubGV2ZWwsIG1z
Zy5saW5lLCBtc2cudXJsLCBtc2cuZ3JvdXBMZXZlbCwgY291bnQgLSBwcmV2UmVwZWF0Q291bnQp
OworICAgICAgICAgICAgbXNnQ29weS50b3RhbFJlcGVhdENvdW50ID0gY291bnQ7CisgICAgICAg
ICAgICBtc2dDb3B5LnNldE1lc3NhZ2VCb2R5KG1zZy5hcmdzKTsKKyAgICAgICAgICAgIHRoaXMu
YWRkTWVzc2FnZShtc2dDb3B5KTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBpbmNyZW1lbnRF
cnJvcldhcm5pbmdDb3VudDogZnVuY3Rpb24obXNnKSB7CisgICAgICAgIHN3aXRjaCAobXNnLmxl
dmVsKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VM
ZXZlbC5XYXJuaW5nOgorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLndhcm5pbmdzICs9IG1zZy5y
ZXBlYXREZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZXJyb3JzICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfSwKKwogICAgIGNsZWFyTWVzc2FnZXM6IGZ1bmN0aW9uKGNsZWFySW5zcGVj
dG9yQ29udHJvbGxlcikKICAgICB7CiAgICAgICAgIGlmIChjbGVhckluc3BlY3RvckNvbnRyb2xs
ZXIpCkBAIC01OTEsNiArNTg0LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVu
Y3Rpb24ocwogICAgIHRoaXMudXJsID0gdXJsOwogICAgIHRoaXMuZ3JvdXBMZXZlbCA9IGdyb3Vw
TGV2ZWw7CiAgICAgdGhpcy5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OworICAgIHRoaXMucmVw
ZWF0RGVsdGEgPSByZXBlYXRDb3VudDsKKyAgICB0aGlzLnRvdGFsUmVwZWF0Q291bnQgPSByZXBl
YXRDb3VudDsKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDcpCiAgICAgICAgIHRoaXMuc2V0
TWVzc2FnZUJvZHkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCA3KSk7CiB9
CkBAIC01OTgsNiArNTkzLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rp
b24ocwogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICBzZXRN
ZXNzYWdlQm9keTogZnVuY3Rpb24oYXJncykKICAgICB7CisgICAgICAgIHRoaXMuYXJncyA9IGFy
Z3M7CiAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZToKICAgICAgICAgICAgICAg
ICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTY5MSwxNCAr
Njg3LDE2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSAKICAgICAg
ICAgcmV0dXJuIGZvcm1hdHRlZFJlc3VsdDsKICAgICB9LAogCi0gICAgdG9NZXNzYWdlRWxlbWVu
dDogZnVuY3Rpb24oKQorICAgIGdldCBlbGVtZW50KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlz
LnByb3BlcnRpZXNTZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydGllc1Nl
Y3Rpb24uZWxlbWVudDsKKyAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKIAogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBlbGVtZW50Lm1lc3NhZ2UgPSB0aGlzOwogICAg
ICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UiOworICAgICAgICAKKyAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7CiAKICAgICAgICAgc3dpdGNoICh0aGlzLnNv
dXJjZSkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVNvdXJjZS5IVE1MOgpAQCAtNzM4LDEwICs3MzYsOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UucHJvdG90eXBlID0gCiAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJjb25zb2xlLWVycm9yLWxldmVsIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwKSB7CisKKyAgICAgICAgaWYgKHRo
aXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0
R3JvdXApCiAgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUtZ3JvdXAt
dGl0bGUiKTsKLSAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRzVHJlZU91dGxp
bmUpIHsKICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9z
dXJlIik7CkBAIC03NDksMTUgKzc0Niw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5w
cm90b3R5cGUgPSAKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHRoaXMucmVwZWF0Q291bnQgPiAxKSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2Fn
ZVJlcGVhdENvdW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgICAgIG1lc3NhZ2VSZXBlYXRDb3VudEVsZW1lbnQuY2xhc3NOYW1lID0gImJ1YmJsZSI7
Ci0gICAgICAgICAgICBtZXNzYWdlUmVwZWF0Q291bnRFbGVtZW50LnRleHRDb250ZW50ID0gdGhp
cy5yZXBlYXRDb3VudDsKLQotICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdl
UmVwZWF0Q291bnRFbGVtZW50KTsKLSAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
cmVwZWF0ZWQtbWVzc2FnZSIpOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKHRoaXMudXJsICYm
IHRoaXMudXJsICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgICAgICAgICB1cmxFbGVtZW50LmNs
YXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdXJsIHdlYmtpdC1odG1sLXJlc291cmNlLWxpbmsi
OwpAQCAtNzgwLDkgKzc2OCwyMyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90
eXBlID0gCiAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZvcm1h
dHRlZE1lc3NhZ2UpOwogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0RWxl
bWVudCk7CiAKKyAgICAgICAgaWYgKHRoaXMucmVwZWF0Q291bnQgPiAxKQorICAgICAgICAgICAg
dGhpcy51cGRhdGVSZXBlYXRDb3VudCgpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CiAgICAgfSwKIAorICAgIHVwZGF0ZVJlcGVhdENvdW50OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKCF0aGlzLnJlcGVhdENvdW50RWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5yZXBl
YXRDb3VudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAg
ICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudC5jbGFzc05hbWUgPSAiYnViYmxlIjsKKworICAg
ICAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnJlcGVhdENvdW50RWxlbWVu
dCwgdGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInJlcGVhdGVkLW1lc3NhZ2UiKTsKKyAgICAgICAgfQorICAgICAgICB0aGlz
LnJlcGVhdENvdW50RWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMucmVwZWF0Q291bnQ7CisgICAg
fSwKKwogICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgc291cmNl
U3RyaW5nOwpAQCAtODk2LDEyICs4OTgsMTcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5k
ID0gZnVuY3Rpb24oYwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90eXBl
ID0gewotICAgIHRvTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBnZXQgZWxlbWVudCgp
CiAgICAgeworICAgICAgICBpZiAodGhpcy5fZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50OworCiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgICAgIGVsZW1lbnQuY29tbWFuZCA9IHRoaXM7CiAgICAgICAgIGVs
ZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtdXNlci1jb21tYW5kIjsKIAorICAgICAgICB0aGlz
Ll9lbGVtZW50ID0gZWxlbWVudDsKKwogICAgICAgICB2YXIgY29tbWFuZFRleHRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBjb21tYW5kVGV4dEVsZW1l
bnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKICAgICAgICAgY29tbWFuZFRl
eHRFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5jb21tYW5kOwpAQCAtOTMyLDExICs5MzksMTQg
QEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuYwogfQogCiBXZWJJbnNw
ZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBlID0gewotICAgIHRvTWVzc2FnZUVs
ZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBnZXQgZWxlbWVudCgpCiAgICAgewotICAgICAgICB2YXIg
ZWxlbWVudCA9IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUudG9NZXNzYWdl
RWxlbWVudC5jYWxsKHRoaXMpOwotICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNv
bGUtdXNlci1jb21tYW5kLXJlc3VsdCIpOwotICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAg
ICAgaWYgKHRoaXMuX2VsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
KworICAgICAgICB0aGlzLl9lbGVtZW50ID0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnBy
b3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKCJlbGVtZW50IikuY2FsbCh0aGlzKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLXVzZXItY29tbWFuZC1yZXN1bHQi
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAgICAgfQogfQogCkBAIC05NjEsNyAr
OTcxLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCA9IGZ1bmN0aW9uKHBhcgogV2ViSW5z
cGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7CiAgICAgYWRkTWVzc2FnZTogZnVuY3Rp
b24obXNnKQogICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSBtc2cudG9NZXNzYWdlRWxlbWVu
dCgpOworICAgICAgICB2YXIgZWxlbWVudCA9IG1zZy5lbGVtZW50OwogICAgICAgICAKICAgICAg
ICAgaWYgKG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5
cGUuU3RhcnRHcm91cCkgewogICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQucGFyZW50
Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGhpcy5tZXNzYWdlc0VsZW1lbnQpOwpJbmRleDog
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCShyZXZpc2lvbiA0OTkzNykK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTExNjUsNyArMTE2NSw3IEBAIFdlYkluc3BlY3Rvci5kaWRDb21taXRMb2FkID0gZnVu
Y3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5zZXREb2N1bWVudChudWxsKTsKIH0KIAotV2ViSW5z
cGVjdG9yLmFkZE1lc3NhZ2VUb0NvbnNvbGUgPSBmdW5jdGlvbihwYXlsb2FkKQorV2ViSW5zcGVj
dG9yLmFkZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKICAgICB2YXIgY29u
c29sZU1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKAogICAgICAgICBw
YXlsb2FkLnNvdXJjZSwKQEAgLTExNzksNiArMTE3OSwxMSBAQCBXZWJJbnNwZWN0b3IuYWRkTWVz
c2FnZVRvQ29uc29sZSA9IGZ1bmN0CiAgICAgdGhpcy5jb25zb2xlLmFkZE1lc3NhZ2UoY29uc29s
ZU1lc3NhZ2UpOwogfQogCitXZWJJbnNwZWN0b3IudXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRD
b3VudCA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIHRoaXMuY29uc29sZS51cGRhdGVNZXNzYWdl
UmVwZWF0Q291bnQoY291bnQpOworfQorCiBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVz
c2FnZSkKIHsKICAgICAvLyByZW1lbWJlciAndGhpcycgZm9yIHNldEludGVydmFsKCkgY2FsbGJh
Y2sKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwMDI3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTAtMjQgIEtlaXNoaSBIYXR0b3Jp
ICA8Y2FzZXkuaGF0dG9yaUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBj
b3VudCB3aGVuIHJlcGVhdGVkbHkgbG9nZ2luZyBhbiBFdmVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMjQKKworICAgICAgICAqIGluc3BlY3Rv
ci9jb25zb2xlLWRpci5odG1sOiBVc2UgQ29uc29sZU1lc3NhZ2UuZWxlbWVudCBpbnN0ZWFkIG9m
IENvbnNvbGVNZXNzYWdlLnRvTWVzc2FnZUVsZW1lbnQuCisgICAgICAgICogaW5zcGVjdG9yL2Nv
bnNvbGUtZGlyeG1sLmh0bWw6IFVzZSBDb25zb2xlTWVzc2FnZS5lbGVtZW50IGluc3RlYWQgb2Yg
Q29uc29sZU1lc3NhZ2UudG9NZXNzYWdlRWxlbWVudC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY29u
c29sZS1mb3JtYXQuaHRtbDogVXNlIENvbnNvbGVNZXNzYWdlLmVsZW1lbnQgaW5zdGVhZCBvZiBD
b25zb2xlTWVzc2FnZS50b01lc3NhZ2VFbGVtZW50LgorICAgICAgICAqIGluc3BlY3Rvci9jb25z
b2xlLXRlc3RzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS10ZXN0
cy5odG1sOiBVc2UgQ29uc29sZU1lc3NhZ2UuZWxlbWVudCBpbnN0ZWFkIG9mIENvbnNvbGVNZXNz
YWdlLnRvTWVzc2FnZUVsZW1lbnQuCisKIDIwMDktMTAtMjMgIENocmlzIEV2YW5zICA8Y2V2YW5z
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDog
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLmh0bWwJKHJldmlzaW9uIDQ5OTM3KQorKysg
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gZHVtcE1lc3NhZ2VzKCkKICAgICB2YXIgcmVzdWx0ID0g
W107CiAgICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7CiAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVz
dWx0LnB1c2gobWVzc2FnZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpLnRleHRDb250ZW50LnJlcGxh
Y2UoL1x1MjAwYi9nLCAiIikpOworICAgICAgICByZXN1bHQucHVzaChtZXNzYWdlc1tpXS5lbGVt
ZW50LnRleHRDb250ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpcnht
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpcnht
bC5odG1sCShyZXZpc2lvbiA0OTkzNykKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
LWRpcnhtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGZ1bmN0aW9uIGR1
bXBNZXNzYWdlcygpCiAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgIHZhciBtZXNzYWdlcyA9IFdl
Ykluc3BlY3Rvci5jb25zb2xlLm1lc3NhZ2VzOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVz
c2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIHJlc3VsdC5wdXNoKG1lc3NhZ2VzW2ldLnRvTWVz
c2FnZUVsZW1lbnQoKS50ZXh0Q29udGVudC5yZXBsYWNlKC9cdTIwMGIvZywgIiIpKTsKKyAgICAg
ICAgcmVzdWx0LnB1c2gobWVzc2FnZXNbaV0uZWxlbWVudC50ZXh0Q29udGVudC5yZXBsYWNlKC9c
dTIwMGIvZywgIiIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogPC9kaXY+CkluZGV4OiBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQuaHRtbAkocmV2aXNpb24gNDk5MzcpCisr
KyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBmdW5jdGlvbiBkdW1wTWVzc2FnZXModGVzdENvbnRyb2xsZXIp
CiAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKICAgICAgICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5z
cGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVz
c2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaChtZXNzYWdlc1tpXS50
b01lc3NhZ2VFbGVtZW50KCkudGV4dENvbnRlbnQpOworICAgICAgICAgICAgcmVzdWx0LnB1c2go
bWVzc2FnZXNbaV0uZWxlbWVudC50ZXh0Q29udGVudCk7CiAgICAgICAgIHRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUocmVzdWx0KTsKICAgICB9LCAwKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLXRlc3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5OTM3
KQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBAIGNvbnNvbGUtdGVzdHMuaHRtbDo5ZGVidWcg
Y29uc29sZS1tZXNzYWcKIGNvbnNvbGUtdGVzdHMuaHRtbDoxMGluZm8gY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCiBjb25zb2xlLXRlc3RzLmh0bWw6
MTF3YXJuIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLXdhcm5pbmct
bGV2ZWwKIGNvbnNvbGUtdGVzdHMuaHRtbDoxMmVycm9yIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xl
LWpzLXNvdXJjZSBjb25zb2xlLWVycm9yLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MTRyZXBl
YXRlZCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwK
KzVjb25zb2xlLXRlc3RzLmh0bWw6MTRyZXBlYXRlZCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1q
cy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwgcmVwZWF0ZWQtbWVzc2FnZQogY29uc29sZS10ZXN0
cy5odG1sOjE2Y291bnQ6IDEgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNv
bGUtbG9nLWxldmVsCiBjb25zb2xlLXRlc3RzLmh0bWw6MTZjb3VudDogMiBjb25zb2xlLW1lc3Nh
Z2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKIGNvbnNvbGUtdGVzdHMuaHRt
bDoxN2dyb3VwIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1s
ZXZlbCBjb25zb2xlLWdyb3VwLXRpdGxlCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS10ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXRlc3RzLmh0bWwJKHJldmlzaW9uIDQ5OTM3KQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUtdGVzdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBmdW5j
dGlvbiBkdW1wTWVzc2FnZXMoKQogICAgIHZhciByZXN1bHQgPSBbXTsKICAgICB2YXIgbWVzc2Fn
ZXMgPSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsKICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gbWVzc2Fn
ZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpOworICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2Vz
W2ldLmVsZW1lbnQ7CiAgICAgICAgIHJlc3VsdC5wdXNoKHsgdGV4dDogZWxlbWVudC50ZXh0Q29u
dGVudC5yZXBsYWNlKC9cdTIwMGIvZywgIiIpLCBjbGF6ejogZWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImNsYXNzIil9KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
</data>
<flag name="review"
          id="23244"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41806</attachid>
            <date>2009-10-24 20:01:56 -0700</date>
            <delta_ts>2009-10-26 09:10:16 -0700</delta_ts>
            <desc>proposed patch 4</desc>
            <filename>event.diff</filename>
            <type>text/plain</type>
            <size>16550</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDAzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMTAtMjQgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBjb3VudCB3aGVuIHJlcGVh
dGVkbHkgbG9nZ2luZyBhbiBFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzAzMjQKKworICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29u
c29sZSk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKTogQ2FsbHMgdXBkYXRl
UmVwZWF0Q291bnRJbkNvbnNvbGUgaWYgaXQgaXMgYSByZXBlYXRpbmcgbWVzc2FnZS4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29uc29sZQorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQpOiBBZGRl
ZC4gQ2FsbGVkIHdoZW4gcmVwZWF0Q291bnQgaXMgaW5jcmVtZW50ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUuYWRkTWVzc2FnZSk6IFJlbW92ZWQgY2FsbHMgdG8gbXNnLmlzRXF1YWwuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRD
b3VudCk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5faW5jcmVtZW50RXJyb3JXYXJuaW5nQ291bnQpOiBBZGRlZC4gVXBkYXRlcyB0aGUgZXJyb3Iv
d2FybmluZyBjb3VudC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUuY2xlYXJNZXNzYWdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS50b01lc3Nh
Z2VFbGVtZW50KTogVXNlIENvbnNvbGVNZXNzYWdlLl91cGRhdGVSZXBlYXRDb3VudAorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fdXBkYXRlUmVwZWF0Q291
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJJbnNwZWN0b3Iu
YWRkTWVzc2FnZVRvQ29uc29sZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVDb25zb2xl
TWVzc2FnZVJlcGVhdENvdW50KTogQWRkZWQuCisKIDIwMDktMTAtMjQgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRl
eDogV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAkocmV2aXNpb24gNTAwMjcpCisrKyBX
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDcgKzkwLDEyIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvQ29uc29sZShJbnNwZWMKICAg
ICBqc29uT2JqLnNldCgidXJsIiwgbV91cmwpOwogICAgIGpzb25PYmouc2V0KCJncm91cExldmVs
Iiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2ZWwpKTsKICAgICBqc29uT2JqLnNldCgicmVw
ZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKLSAgICBmcm9udGVu
ZC0+YWRkTWVzc2FnZVRvQ29uc29sZShqc29uT2JqLCBtX2ZyYW1lcywgbV93cmFwcGVkQXJndW1l
bnRzLCAgbV9tZXNzYWdlKTsKKyAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9i
aiwgbV9mcmFtZXMsIG1fd3JhcHBlZEFyZ3VtZW50cywgIG1fbWVzc2FnZSk7Cit9CisKK3ZvaWQg
Q29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBmcm9udGVuZC0+dXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBl
YXRDb3VudChtX3JlcGVhdENvdW50KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQog
CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgJKHJldmlzaW9uIDUwMDI3KQorKysg
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgICAgICB2b2lkIGFkZFRvQ29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwor
ICAgICAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsgKytt
X3JlcGVhdENvdW50OyB9OwogICAgICAgICBib29sIGlzRXF1YWwoU2NyaXB0U3RhdGUqLCBDb25z
b2xlTWVzc2FnZSogbXNnKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1MDAyNykKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsMTMgKzM3NCwxNCBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzCiAgICAgaWYgKG1fcHJl
dmlvdXNNZXNzYWdlICYmIG1fcHJldmlvdXNNZXNzYWdlLT5pc0VxdWFsKHNjcmlwdFN0YXRlLCBj
b25zb2xlTWVzc2FnZSkpIHsKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmluY3JlbWVudENv
dW50KCk7CiAgICAgICAgIGRlbGV0ZSBjb25zb2xlTWVzc2FnZTsKKyAgICAgICAgaWYgKHdpbmRv
d1Zpc2libGUoKSkKKyAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBlYXRD
b3VudEluQ29uc29sZShtX2Zyb250ZW5kLmdldCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBt
X3ByZXZpb3VzTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlOwogICAgICAgICBtX2NvbnNvbGVNZXNz
YWdlcy5hcHBlbmQoY29uc29sZU1lc3NhZ2UpOworICAgICAgICBpZiAod2luZG93VmlzaWJsZSgp
KQorICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmFkZFRvQ29uc29sZShtX2Zyb250ZW5k
LmdldCgpKTsKICAgICB9Ci0KLSAgICBpZiAod2luZG93VmlzaWJsZSgpKQotICAgICAgICBtX3By
ZXZpb3VzTWVzc2FnZS0+YWRkVG9Db25zb2xlKG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKGJvb2wgY2xlYXJVSSkK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAJKHJldmlzaW9uIDUw
MDI3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw5ICs3OCw5IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZENvbW1p
dExvYWQoKQogICAgIGNhbGxTaW1wbGVGdW5jdGlvbigiZGlkQ29tbWl0TG9hZCIpOwogfQogCi12
b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFNjcmlwdE9i
amVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29u
c3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRDb25zb2xlTWVzc2FnZShjb25zdCBT
Y3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFt
ZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9u
KG5ld0Z1bmN0aW9uQ2FsbCgiYWRkTWVzc2FnZVRvQ29uc29sZSIpKTsKKyAgICBPd25QdHI8U2Ny
aXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwoImFkZENvbnNvbGVNZXNz
YWdlIikpOwogICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChtZXNzYWdlT2JqKTsKICAgICBp
ZiAoIWZyYW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZyYW1lcy5zaXplKCk7ICsraSkKQEAgLTkzLDYgKzkzLDEzIEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnMKICAgICBmdW5jdGlvbi0+Y2FsbCgpOwogfQogCit2b2lk
IEluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50KGNvbnN0
IGludCBjb3VudCkKK3sKKyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihu
ZXdGdW5jdGlvbkNhbGwoInVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQiKSk7CisgICAg
ZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGNvdW50KTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgpOwor
fQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiB7CiAg
ICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJjbGVhckNvbnNvbGVNZXNzYWdlcyIpOwpJbmRleDogV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCShyZXZpc2lvbiA1MDAyNykKKysrIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JpcHRPYmplY3QgbmV3U2Ny
aXB0T2JqZWN0KCk7CiAKICAgICAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7Ci0gICAgICAgIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNv
bnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1
ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0
IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4g
d3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCB1
cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50KGNvbnN0IGludCBjb3VudCk7CiAgICAgICAg
IHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIAogICAgICAgICBib29sIGFkZFJlc291cmNl
KGxvbmcgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRPYmplY3QmIHJlc291cmNlT2JqKTsK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMJKHJldmlz
aW9uIDUwMDI3KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNDAgKzE3NCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgYWRkTWVzc2FnZTogZnVuY3Rpb24obXNnKQogICAgIHsK
ICAgICAgICAgaWYgKG1zZyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSAm
JiAhKG1zZyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCkpIHsK
LSAgICAgICAgICAgIG1zZy50b3RhbFJlcGVhdENvdW50ID0gbXNnLnJlcGVhdENvdW50OwotICAg
ICAgICAgICAgbXNnLnJlcGVhdERlbHRhID0gbXNnLnJlcGVhdENvdW50OwotCi0gICAgICAgICAg
ICB2YXIgbWVzc2FnZVJlcGVhdGVkID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIGlmIChtc2cuaXNF
cXVhbCAmJiBtc2cuaXNFcXVhbCh0aGlzLnByZXZpb3VzTWVzc2FnZSkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBCZWNhdXNlIHNvbWV0aW1lcyB3ZSBnZXQgYSBsYXJnZSBudW1iZXIgb2YgcmVwZWF0
ZWQgbWVzc2FnZXMgYW5kIHNvbWV0aW1lcwotICAgICAgICAgICAgICAgIC8vIHdlIGdldCB0aGVt
IG9uZSBhdCBhIHRpbWUsIHdlIG5lZWQgdG8ga25vdyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGhv
dyBtYW55Ci0gICAgICAgICAgICAgICAgLy8gcmVwZWF0cyB3ZSB1c2VkIHRvIGhhdmUgYW5kIGhv
dyBtYW55IHdlIGhhdmUgbm93LgotICAgICAgICAgICAgICAgIG1zZy5yZXBlYXREZWx0YSAtPSB0
aGlzLnByZXZpb3VzTWVzc2FnZS50b3RhbFJlcGVhdENvdW50OwotCi0gICAgICAgICAgICAgICAg
aWYgKCFpc05hTih0aGlzLnJlcGVhdENvdW50QmVmb3JlQ29tbWFuZCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1zZy5yZXBlYXRDb3VudCAtPSB0aGlzLnJlcGVhdENvdW50QmVmb3JlQ29tbWFuZDsK
LQotICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tYW5kU2luY2VQcmV2aW91c01lc3NhZ2Up
IHsKLSAgICAgICAgICAgICAgICAgICAgLy8gUmVjcmVhdGUgdGhlIHByZXZpb3VzIG1lc3NhZ2Ug
ZWxlbWVudCB0byByZXNldCB0aGUgcmVwZWF0IGNvdW50LgotICAgICAgICAgICAgICAgICAgICB2
YXIgbWVzc2FnZXNFbGVtZW50ID0gdGhpcy5jdXJyZW50R3JvdXAubWVzc2FnZXNFbGVtZW50Owot
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlc0VsZW1lbnQucmVtb3ZlQ2hpbGQobWVzc2FnZXNF
bGVtZW50Lmxhc3RDaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzRWxlbWVudC5h
cHBlbmRDaGlsZChtc2cudG9NZXNzYWdlRWxlbWVudCgpKTsKLQotICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlUmVwZWF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnJlcGVhdENvdW50QmVmb3JlQ29t
bWFuZDsKLQotICAgICAgICAgICAgLy8gSW5jcmVtZW50IHRoZSBlcnJvciBvciB3YXJuaW5nIGNv
dW50Ci0gICAgICAgICAgICBzd2l0Y2ggKG1zZy5sZXZlbCkgewotICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6Ci0gICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLndhcm5pbmdzICs9IG1zZy5yZXBlYXREZWx0YTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZXJyb3JzICs9IG1zZy5yZXBlYXREZWx0YTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudEVycm9yV2FybmluZ0NvdW50KG1z
Zyk7CiAKICAgICAgICAgICAgIC8vIEFkZCBtZXNzYWdlIHRvIHRoZSByZXNvdXJjZSBwYW5lbAog
ICAgICAgICAgICAgaWYgKG1zZy51cmwgaW4gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwKSB7
CkBAIC0yMTgsMTMgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgICAgIHRoaXMuY29tbWFuZFNpbmNlUHJldmlvdXNNZXNzYWdlID0gZmFs
c2U7CiAgICAgICAgICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZSA9IG1zZzsKLQotICAgICAgICAg
ICAgaWYgKG1lc3NhZ2VSZXBlYXRlZCkKLSAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0gZWxzZSBpZiAobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kKSB7
CiAgICAgICAgICAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2UpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLmNvbW1hbmRTaW5jZVByZXZpb3VzTWVzc2FnZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5yZXBlYXRDb3VudEJlZm9yZUNvbW1hbmQgPSB0aGlzLnByZXZpb3VzTWVzc2FnZS50
b3RhbFJlcGVhdENvdW50OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI1Miw2ICsy
MTUsMzUgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5wcm9tcHRFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTsKICAgICB9LAogCisgICAg
dXBkYXRlTWVzc2FnZVJlcGVhdENvdW50OiBmdW5jdGlvbihjb3VudCkgeworICAgICAgICB2YXIg
bXNnID0gdGhpcy5wcmV2aW91c01lc3NhZ2U7CisgICAgICAgIHZhciBwcmV2UmVwZWF0Q291bnQg
PSBtc2cudG90YWxSZXBlYXRDb3VudDsKKyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5jb21t
YW5kU2luY2VQcmV2aW91c01lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1zZy5yZXBlYXREZWx0YSA9
IGNvdW50IC0gcHJldlJlcGVhdENvdW50OworICAgICAgICAgICAgbXNnLnJlcGVhdENvdW50ID0g
bXNnLnJlcGVhdENvdW50ICsgbXNnLnJlcGVhdERlbHRhOworICAgICAgICAgICAgbXNnLnRvdGFs
UmVwZWF0Q291bnQgPSBjb3VudDsKKyAgICAgICAgICAgIG1zZy5fdXBkYXRlUmVwZWF0Q291bnQo
KTsKKyAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudEVycm9yV2FybmluZ0NvdW50KG1zZyk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtc2dDb3B5ID0gbmV3IFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZShtc2cuc291cmNlLCBtc2cudHlwZSwgbXNnLmxldmVsLCBtc2cubGluZSwg
bXNnLnVybCwgbXNnLmdyb3VwTGV2ZWwsIGNvdW50IC0gcHJldlJlcGVhdENvdW50KTsKKyAgICAg
ICAgICAgIG1zZ0NvcHkudG90YWxSZXBlYXRDb3VudCA9IGNvdW50OworICAgICAgICAgICAgbXNn
Q29weS5zZXRNZXNzYWdlQm9keShtc2cuYXJncyk7CisgICAgICAgICAgICB0aGlzLmFkZE1lc3Nh
Z2UobXNnQ29weSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2luY3JlbWVudEVycm9yV2Fy
bmluZ0NvdW50OiBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgc3dpdGNoIChtc2cubGV2ZWwpIHsK
KyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZl
bC5XYXJuaW5nOgorICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci53YXJuaW5ncyArPSBtc2cu
cmVwZWF0RGVsdGE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6CisgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmVycm9ycyArPSBtc2cucmVwZWF0RGVsdGE7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgY2xlYXJNZXNzYWdlczogZnVu
Y3Rpb24oY2xlYXJJbnNwZWN0b3JDb250cm9sbGVyKQogICAgIHsKICAgICAgICAgaWYgKGNsZWFy
SW5zcGVjdG9yQ29udHJvbGxlcikKQEAgLTI2OSw3ICsyNjEsNiBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iud2FybmluZ3MgPSAw
OwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLmNvbW1hbmRTaW5jZVByZXZpb3VzTWVzc2FnZTsKLSAg
ICAgICAgZGVsZXRlIHRoaXMucmVwZWF0Q291bnRCZWZvcmVDb21tYW5kOwogICAgICAgICBkZWxl
dGUgdGhpcy5wcmV2aW91c01lc3NhZ2U7CiAgICAgfSwKIApAQCAtNTkxLDYgKzU4Miw4IEBAIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHMKICAgICB0aGlzLnVybCA9IHVy
bDsKICAgICB0aGlzLmdyb3VwTGV2ZWwgPSBncm91cExldmVsOwogICAgIHRoaXMucmVwZWF0Q291
bnQgPSByZXBlYXRDb3VudDsKKyAgICB0aGlzLnJlcGVhdERlbHRhID0gcmVwZWF0Q291bnQ7Cisg
ICAgdGhpcy50b3RhbFJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CiAgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPiA3KQogICAgICAgICB0aGlzLnNldE1lc3NhZ2VCb2R5KEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgNykpOwogfQpAQCAtNTk4LDYgKzU5MSw3IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHMKIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgc2V0TWVzc2FnZUJvZHk6IGZ1bmN0aW9uKGFyZ3Mp
CiAgICAgeworICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzOwogICAgICAgICBzd2l0Y2ggKHRoaXMu
dHlwZSkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuVHJhY2U6CiAgICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CkBAIC02OTMsMTMgKzY4NywxNSBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UucHJvdG90eXBlID0gCiAKICAgICB0b01lc3NhZ2VFbGVtZW50OiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzU2VjdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNTZWN0aW9uLmVsZW1lbnQ7CisgICAgICAgIGlmICh0
aGlzLl9lbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
ZWxlbWVudC5tZXNzYWdlID0gdGhpczsKICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiY29u
c29sZS1tZXNzYWdlIjsKIAorICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKKwogICAg
ICAgICBzd2l0Y2ggKHRoaXMuc291cmNlKSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkhUTUw6CiAgICAgICAgICAgICAgICAgZWxl
bWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLWh0bWwtc291cmNlIik7CkBAIC03MzksOSArNzM1
LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IAogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodGhpcy50eXBl
ID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cCkg
eworICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuU3RhcnRHcm91cCkKICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiY29uc29sZS1ncm91cC10aXRsZSIpOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMu
ZWxlbWVudHNUcmVlT3V0bGluZSkgewogICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKQEAgLTc0OSwxNSArNzQ0LDYgQEAgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IAogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5yZXBlYXRDb3VudCA+IDEpIHsKLSAgICAg
ICAgICAgIHZhciBtZXNzYWdlUmVwZWF0Q291bnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwotICAgICAgICAgICAgbWVzc2FnZVJlcGVhdENvdW50RWxlbWVudC5jbGFz
c05hbWUgPSAiYnViYmxlIjsKLSAgICAgICAgICAgIG1lc3NhZ2VSZXBlYXRDb3VudEVsZW1lbnQu
dGV4dENvbnRlbnQgPSB0aGlzLnJlcGVhdENvdW50OwotCi0gICAgICAgICAgICBlbGVtZW50LmFw
cGVuZENoaWxkKG1lc3NhZ2VSZXBlYXRDb3VudEVsZW1lbnQpOwotICAgICAgICAgICAgZWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJyZXBlYXRlZC1tZXNzYWdlIik7Ci0gICAgICAgIH0KLQogICAgICAg
ICBpZiAodGhpcy51cmwgJiYgdGhpcy51cmwgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAg
ICB2YXIgdXJsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAg
ICAgIHVybEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS11cmwgd2Via2l0LWh0
bWwtcmVzb3VyY2UtbGluayI7CkBAIC03ODAsOSArNzY2LDIzIEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5wcm90b3R5cGUgPSAKICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CiAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hp
bGQobWVzc2FnZVRleHRFbGVtZW50KTsKIAorICAgICAgICBpZiAodGhpcy5yZXBlYXRDb3VudCA+
IDEpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVSZXBlYXRDb3VudCgpOworCiAgICAgICAgIHJl
dHVybiBlbGVtZW50OwogICAgIH0sCiAKKyAgICBfdXBkYXRlUmVwZWF0Q291bnQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAoIXRoaXMucmVwZWF0Q291bnRFbGVtZW50KSB7CisgICAgICAgICAg
ICB0aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50LmNsYXNzTmFtZSA9ICJidWJi
bGUiOworICAgIAorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5y
ZXBlYXRDb3VudEVsZW1lbnQsIHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJlcGVhdGVkLW1lc3NhZ2UiKTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMu
cmVwZWF0Q291bnQ7CisgICAgfSwKKwogICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB2YXIgc291cmNlU3RyaW5nOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCShyZXZpc2lvbiA1MDAyNykKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsNyArMTE3Niw3IEBA
IFdlYkluc3BlY3Rvci5kaWRDb21taXRMb2FkID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rv
ci5zZXREb2N1bWVudChudWxsKTsKIH0KIAotV2ViSW5zcGVjdG9yLmFkZE1lc3NhZ2VUb0NvbnNv
bGUgPSBmdW5jdGlvbihwYXlsb2FkKQorV2ViSW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlID0g
ZnVuY3Rpb24ocGF5bG9hZCkKIHsKICAgICB2YXIgY29uc29sZU1lc3NhZ2UgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlKAogICAgICAgICBwYXlsb2FkLnNvdXJjZSwKQEAgLTExOTAs
NiArMTE5MCwxMSBAQCBXZWJJbnNwZWN0b3IuYWRkTWVzc2FnZVRvQ29uc29sZSA9IGZ1bmN0CiAg
ICAgdGhpcy5jb25zb2xlLmFkZE1lc3NhZ2UoY29uc29sZU1lc3NhZ2UpOwogfQogCitXZWJJbnNw
ZWN0b3IudXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCA9IGZ1bmN0aW9uKGNvdW50KQor
eworICAgIHRoaXMuY29uc29sZS51cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQoY291bnQpOworfQor
CiBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSkKIHsKICAgICAvLyByZW1lbWJl
ciAndGhpcycgZm9yIHNldEludGVydmFsKCkgY2FsbGJhY2sKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUw
MDM3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMDktMTAtMjQgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9yaUBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBjb3VudCB3aGVuIHJlcGVhdGVkbHkgbG9n
Z2luZyBhbiBFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzAzMjQKKworICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLXRlc3RzLWV4cGVjdGVk
LnR4dDoKKwogMjAwOS0xMC0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDAyNykKKysr
IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBjb25zb2xlLXRlc3RzLmh0bWw6OWRlYnVnIGNvbnNv
bGUtbWVzc2FnCiBjb25zb2xlLXRlc3RzLmh0bWw6MTBpbmZvIGNvbnNvbGUtbWVzc2FnZSBjb25z
b2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAogY29uc29sZS10ZXN0cy5odG1sOjExd2Fy
biBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS13YXJuaW5nLWxldmVs
CiBjb25zb2xlLXRlc3RzLmh0bWw6MTJlcnJvciBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1z
b3VyY2UgY29uc29sZS1lcnJvci1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjE0cmVwZWF0ZWQg
Y29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCis1Y29u
c29sZS10ZXN0cy5odG1sOjE0cmVwZWF0ZWQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291
cmNlIGNvbnNvbGUtbG9nLWxldmVsIHJlcGVhdGVkLW1lc3NhZ2UKIGNvbnNvbGUtdGVzdHMuaHRt
bDoxNmNvdW50OiAxIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxv
Zy1sZXZlbAogY29uc29sZS10ZXN0cy5odG1sOjE2Y291bnQ6IDIgY29uc29sZS1tZXNzYWdlIGNv
bnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCiBjb25zb2xlLXRlc3RzLmh0bWw6MTdn
cm91cCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwg
Y29uc29sZS1ncm91cC10aXRsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>