<?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>3439</bug_id>
          
          <creation_ts>2005-06-11 10:06:45 -0700</creation_ts>
          <short_desc>mouseover effects can get stuck sometimes due to missing events</short_desc>
          <delta_ts>2021-05-06 10:35:31 -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>DOM</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.shscomputer.be</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stéphane Rieppi">stephane</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>olbro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>11451</commentid>
    <comment_count>0</comment_count>
    <who name="Stéphane Rieppi">stephane</who>
    <bug_when>2005-06-11 10:06:45 -0700</bug_when>
    <thetext>On http://www.shscomputer.be, most orange/red link gives you contextual rollover
rectangles: they appear when you pass on them and disappear when you move the mouse.

If you have a slower Mac (I believe it&apos;s harder to notice on a quick one),
you&apos;ll notice that if you move the mouse quickly, the rectangle doesn&apos;t hide as
it should, probably because it never captures the event that the mouse has moved
out.  That&apos;s annoying and it only happens with Safari, every other browser I&apos;ve
tried behaves.  The bug always existed, even with Safari 1.x.

Moreover, the background colour (it uses a alpha-layered PNG) is not correct
anymore (this one is new to Tiger).  But it&apos;s a duplicate of bug #3438.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34945</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-03 06:33:26 -0800</bug_when>
    <thetext>Reproducible on a G4/867DP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36131</commentid>
    <comment_count>2</comment_count>
      <attachid>7051</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-13 12:48:54 -0800</bug_when>
    <thetext>Created attachment 7051
naive fix

Well, I don&apos;t really expect it to be that simple, but this passes layout tests, and additionally fixes bug 7701. Will probably get an r- for reasons other than a missing test :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36154</commentid>
    <comment_count>3</comment_count>
      <attachid>7051</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-03-13 14:40:43 -0800</bug_when>
    <thetext>Comment on attachment 7051
naive fix

Yeah, you do need a test. And a ChangeLog. DumpRenderTree can simulate mouse events, so a test is possible.

You can test oldUnder itself for truth instead of oldUnder.get().

Doesn&apos;t this patch prevent mouseout from firing when you move the mouse between frames? In general, what&apos;s the purpose of the test

    oldUnder-&gt;getDocument() != frame()-&gt;document()

? To ensure that the node is still in the document? inDocument() is probably better for that. (Make sure your test covers that case.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36561</commentid>
    <comment_count>4</comment_count>
      <attachid>7115</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-16 10:52:31 -0800</bug_when>
    <thetext>Created attachment 7115
additional test case

Proposed by Domas Mituzas on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36773</commentid>
    <comment_count>5</comment_count>
      <attachid>7137</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-17 12:45:17 -0800</bug_when>
    <thetext>Created attachment 7137
large test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36833</commentid>
    <comment_count>6</comment_count>
      <attachid>7144</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-17 23:33:20 -0800</bug_when>
    <thetext>Created attachment 7144
large test

Improved compatibility with WinIE and Firefox; corrected expected results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36840</commentid>
    <comment_count>7</comment_count>
      <attachid>7147</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-18 03:19:14 -0800</bug_when>
    <thetext>Created attachment 7147
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36844</commentid>
    <comment_count>8</comment_count>
      <attachid>7147</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-18 04:22:45 -0800</bug_when>
    <thetext>Comment on attachment 7147
proposed fix

Actually no, the logic in FrameView::viewportMouseMoveEvent() still doesn&apos;t look right...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36853</commentid>
    <comment_count>9</comment_count>
      <attachid>7156</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-18 12:33:37 -0800</bug_when>
    <thetext>Created attachment 7156
proposed fix

Added a second test for IFRAME manipulation. There is one result that differs from Firefox: FF sends a mouseout event to DIV elements that are being removed from the document via removeChild, but does not send it to IFRAME elements. Here, either element gets a mouseout (see &quot;mouseout on frame5&quot; in the log).

I am not sure if we should follow Firefox here; also, this may actually be some artifact of how IFRAMEs are removed, not a feature of mouse event dispatching code. And anyway, this is already far beyond the scope of the bugs we have in Bugzilla :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36857</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-18 15:41:34 -0800</bug_when>
    <thetext>I thought leapForward takes in the # of milliseconds to move timestamps forward by.  Or did that change recently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36893</commentid>
    <comment_count>11</comment_count>
      <attachid>7169</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-18 22:29:45 -0800</bug_when>
    <thetext>Created attachment 7169
proposed fix

Indeed, which means leapForward() is actually not needed here! Somehow it seemed to make a difference while writing the test, but it was probably just a wrong impression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36930</commentid>
    <comment_count>12</comment_count>
      <attachid>7169</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-19 08:31:07 -0800</bug_when>
    <thetext>Comment on attachment 7169
proposed fix

I like the general direction of this patch a lot.

But I don&apos;t like the idea of adding the subframe function to MouseEventWithHitTestResults. It&apos;s fine to have that helper function, but I don&apos;t think it should be a member function of the event class. I think we can just have a local function in FrameView.cpp (not a member of any class) that takes the mouse event or node as a parameter. Might need a clearer name than &quot;subframe&quot;, or &quot;subframe&quot; might be OK.

+            if (m_oldUnder &amp;&amp; m_oldUnder-&gt;getDocument() != frame()-&gt;document())

In the check above, do we also want to check inDocument() on m_oldUnder?

Does FrameView::dispatchMouseEvent handle the case where targetNode is destroyed as a side effect of handling the mouseout or mouseover event? I think we may need to ref it.

By the way, the &quot;pass subframe event to subframe&quot; code might need to be moved into FrameView eventually -- the strange way this code is distributed across FrameView and Frame is an artifact of us not wanting to modify the KHTML code much in the old days (so we put stuff in KWQKHTMLPart, now the Macintosh-specific part of Frame).

Setting review- mainly because of the subframe function, but please also consider the other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36958</commentid>
    <comment_count>13</comment_count>
      <attachid>7179</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-19 12:35:31 -0800</bug_when>
    <thetext>Created attachment 7179
proposed fix

Moved the subframe code from MouseEventWithHitTestResults to a function in FrameView.cpp.

Checking for inDocument() changes the results of one of the included tests to not match Firefox and WinIE - they seem to dispatch mouseOut events to removed nodes. OTOH, as mentioned above, it changes the results for IFRAME to match Firefox. Seems better this way, but I may be missing something.

There is already a ref for targetNode as it is assigned to d-&gt;underMouse. But we actually needed a ref for &quot;this&quot;, added now. The difference between d-&gt;underMouse and d-&gt;oldUnder looks ugly; I don&apos;t really understand it.

Other changes, as discussed on IRC: added a helper for prepareMouseEvent, removed prevMouseX/prevMouseY, moved the new data members to FrameViewPrivate.

Didn&apos;t address the fact that an additional mouse move is needed to mouseOut events to fire after an element under mouse is removed - will probably fit in bug 4117 better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36960</commentid>
    <comment_count>14</comment_count>
      <attachid>7179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-19 16:18:16 -0800</bug_when>
    <thetext>Comment on attachment 7179
proposed fix

It&apos;s not great to pass the subframe to the passSubframeEventToSubframe function, but on the other hand, it&apos;s my own fault for insisting the subframe function be removed from MouseEventWithHitTestResults. Eventually we should be able to clean that up a bit -- I&apos;m not sure it needs to go back through the Frame and through Macintosh-specific code.

+    RenderObject *renderer = mev.innerNode()-&gt;renderer();

New code should put the * next to the class name, not the variable.

+    RefPtr&lt;FrameView&gt; protector(this);

No explanation of why this was added.

I don&apos;t understand the positioning of the call to setCursor in the new code. Wouldn&apos;t we need a new call to setCursor after passing the event to the new subframe?

Ideally I think that oldUnder should be per-page, not per-frame. If we did that, I think we might be able to simply get rid of oldSubframe.

Despite those doubts and comments, looks fine to land.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36967</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-19 21:27:39 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; the subframe function be removed from MouseEventWithHitTestResults.

  Frankly, I didn&apos;t really understand why - it&apos;s a part of &quot;HitTestResult&quot;, just like innerNode. And FrameView.cpp is huge, so factoring out code into other files sounds natural...

&gt; New code should put the * next to the class name, not the variable.

  Fixed.

&gt; +    RefPtr&lt;FrameView&gt; protector(this);
&gt; No explanation of why this was added.

  One of the tests crashed without it; the other FrameView::viewportMouseXXXEvent methods already do protect &quot;this&quot;.

&gt; I don&apos;t understand the positioning of the call to setCursor in the new code.
&gt; Wouldn&apos;t we need a new call to setCursor after passing the event to the new
&gt; subframe?

  Looks like I did get it wrong - it should either pass the event to the new subframe, or call setCursor if there&apos;s none (since passSubframeEventToSubframe() always returns true for NSMouseMoved now). Going to land like this:

-    MouseEventWithHitTestResults mev = m_frame-&gt;document()-&gt;prepareMouseEvent(d-&gt;mousePressed &amp;&amp; m_frame-&gt;mouseDownMayStartSelect(),
-        d-&gt;mousePressed, true, xm, ym, mouseEvent);
+    MouseEventWithHitTestResults mev = prepareMouseEvent(d-&gt;mousePressed &amp;&amp; m_frame-&gt;mouseDownMayStartSelect(),
+        d-&gt;mousePressed, true, mouseEvent);
 
-    if (!m_frame-&gt;passSubframeEventToSubframe(mev))
-        setCursor(selectCursor(mev, m_frame.get(), d-&gt;mousePressed));
-        
+    if (d-&gt;oldSubframe)
+        m_frame-&gt;passSubframeEventToSubframe(mev, d-&gt;oldSubframe.get());
+
     bool swallowEvent = dispatchMouseEvent(mousemoveEvent, mev.innerNode(), false, 0, mouseEvent, true);
     if (!swallowEvent)
         m_frame-&gt;khtmlMouseMoveEvent(mev);
+    
+    RefPtr&lt;Frame&gt; newSubframe = subframeForEvent(mev);
+    
+    if (newSubframe &amp;&amp; d-&gt;oldSubframe != newSubframe)
+        m_frame-&gt;passSubframeEventToSubframe(mev, newSubframe.get());
+    else
+        setCursor(selectCursor(mev, m_frame.get(), d-&gt;mousePressed));
+    
+    d-&gt;oldSubframe = newSubframe;
 }
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36973</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-19 23:15:54 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; the subframe function be removed from MouseEventWithHitTestResults.
&gt; 
&gt;   Frankly, I didn&apos;t really understand why - it&apos;s a part of &quot;HitTestResult&quot;,
&gt; just like innerNode. And FrameView.cpp is huge, so factoring out code into
&gt; other files sounds natural...

The reason why is that the class is just a little data holder. I don&apos;t want to add smarts to MouseEventWithHitTestResults.

Eventually this will go into a new EventHandler class that&apos;s going to be factored out of Frame and FrameView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37064</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-20 12:46:21 -0800</bug_when>
    <thetext>Landed, r13402.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7051</attachid>
            <date>2006-03-13 12:48:54 -0800</date>
            <delta_ts>2006-03-18 03:19:14 -0800</delta_ts>
            <desc>naive fix</desc>
            <filename>3439r0_patch.txt</filename>
            <type>text/plain</type>
            <size>1961</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMzI2MikKKysrIFdlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTIsMTcgKzk1Miw5IEBAIGJvb2wgRnJhbWVW
aWV3OjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QKICAgICAgICAgaW50IGNsaWVudFgsIGNsaWVu
dFk7CiAgICAgICAgIHZpZXdwb3J0VG9Db250ZW50cyhtb3VzZUV2ZW50LT54KCksIG1vdXNlRXZl
bnQtPnkoKSwgY2xpZW50WCwgY2xpZW50WSk7CiAgICAgICAgIGlmIChkLT5wcmV2TW91c2VYICE9
IGNsaWVudFggfHwgZC0+cHJldk1vdXNlWSAhPSBjbGllbnRZKSB7Ci0gICAgICAgICAgICAvLyAj
IyMgdGhpcyBjb2RlIHN1Y2tzLiB3ZSBzaG91bGQgc2F2ZSB0aGUgb2xkVW5kZXIgaW5zdGVhZCBv
ZiBjYWxjdWxhdGluZwotICAgICAgICAgICAgLy8gaXQgYWdhaW4uIGNhbGN1bGF0aW5nIGlzIGV4
cGVuc2l2ZSEgKERpcmspCi0gICAgICAgICAgICAvLyBBbHNvLCB0aGVyZSdzIG5vIGd1YXJhbnRl
ZSB0aGF0IHRoZSBvbGQgdW5kZXIgbm9kZSBpcyBldmVuIGFyb3VuZCBhbnkgbW9yZSwKLSAgICAg
ICAgICAgIC8vIHNvIHdlIGNvdWxkIGJlIHNlbmRpbmcgYSBtb3VzZW91dCB0byBhIG5vZGUgdGhh
dCBuZXZlciBnb3QgYSBtb3VzZW92ZXIuCi0gICAgICAgICAgICBSZWZQdHI8Tm9kZUltcGw+IG9s
ZFVuZGVyOwotICAgICAgICAgICAgaWYgKGQtPnByZXZNb3VzZVggPj0gMCkgewotICAgICAgICAg
ICAgICAgIG9sZFVuZGVyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQo
dHJ1ZSwgZmFsc2UsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgIGQtPnByZXZNb3VzZVgsIGQt
PnByZXZNb3VzZVksIG1vdXNlRXZlbnQpLmlubmVyTm9kZSgpOwotICAgICAgICAgICAgICAgIGlm
IChvbGRVbmRlciAmJiBvbGRVbmRlci0+aXNUZXh0Tm9kZSgpKQotICAgICAgICAgICAgICAgICAg
ICBvbGRVbmRlciA9IG9sZFVuZGVyLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAob2xkVW5kZXIuZ2V0KCkgJiYgb2xkVW5kZXItPmdldERvY3VtZW50KCkgIT0g
ZnJhbWUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICBvbGRVbmRlciA9IDA7CisKICAg
ICAgICAgICAgIGQtPnByZXZNb3VzZVggPSBjbGllbnRYOwogICAgICAgICAgICAgZC0+cHJldk1v
dXNlWSA9IGNsaWVudFk7CiAgICAgICAgICAgICBpZiAob2xkVW5kZXIgIT0gdGFyZ2V0Tm9kZSkg
ewpAQCAtOTc0LDYgKzk2Niw3IEBAIGJvb2wgRnJhbWVWaWV3OjpkaXNwYXRjaE1vdXNlRXZlbnQo
Y29uc3QKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Tm9kZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50
KG1vdXNlRXZlbnQsIG1vdXNlb3ZlckV2ZW50LCAwLCBvbGRVbmRlci5nZXQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgb2xkVW5kZXIgPSB0YXJnZXROb2RlOwogICAgIH0K
IAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lv
biAxMzI2MikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUzLDYgKzI1Myw4IEBAIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3UHJpdmF0ZSogZDsKIAogICAg
IFFTdHJpbmcgbV9tZWRpdW07IC8vIG1lZGlhIHR5cGUKKyAgICAKKyAgICBSZWZQdHI8Tm9kZUlt
cGw+IG9sZFVuZGVyOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="1832"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7115</attachid>
            <date>2006-03-16 10:52:31 -0800</date>
            <delta_ts>2006-03-17 12:45:17 -0800</delta_ts>
            <desc>additional test case</desc>
            <filename>mouseout.html</filename>
            <type>text/html</type>
            <size>249</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGEgc3R5bGU9J2ZvbnQtc2l6ZTogNDBwdDsnIG9uTW91c2VPdmVyPSdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdGNhc2UiKS5zdHlsZS5kaXNwbGF5PSJibG9jayI7JyBvbk1vdXNlT3V0PSdh
bGVydCgxKTsnPnRlc3Q8L2E+CjxkaXYgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7IGhlaWdodDogMjAw
OyB3aWR0aDogMjAwOyBiYWNrZ3JvdW5kOnJlZDt0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOiBhYnNv
bHV0ZTsnIGlkPSd0ZXN0Y2FzZSc+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7137</attachid>
            <date>2006-03-17 12:45:17 -0800</date>
            <delta_ts>2006-03-17 23:33:20 -0800</delta_ts>
            <desc>large test</desc>
            <filename>mouseover-mouseout.html</filename>
            <type>text/html</type>
            <size>6065</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgoJZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCgl7CiAgICAgICAg
dmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwogICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwoJCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChpdGVtKTsKCX0KCQoJZnVuY3Rpb24gbG9n
TW91c2VFdmVudChldnQpCgl7CgkJbG9nKGV2dC50eXBlICsgIiBvbiAiICsgZXZ0LnRhcmdldC5p
ZCk7Cgl9CgkKPC9zY3JpcHQ+CjxwPlRlc3RzIGZvciBidWdzIAo8YSBocmVmPSJodHRwOi8vYnVn
emlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzkiPjM0Mzk8L2E+LCAKPGEg
aHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE3
Ij40MTE3PC9hPiwgCjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTc2NCI+NTc2NDwvYT4sCjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMSI+NzcwMTwvYT4uLi48L3A+CjxwPk1vdmUg
dGhlIG1vdXNlIHBvaW50ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvcD4KCjwhLS0gMTogU2hvdyBh
biBlbGVtZW50IHVuZGVyIHRoZSBtb3VzZSAtLT4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lk
dGg6IDUwOyBiYWNrZ3JvdW5kOnJlZDt0b3A6MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0MV8xJyAKCW9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3QxXzInKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJyIKCW9uTW91
c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyI+MSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvZGl2Pgo8
ZGl2IHN0eWxlPSdkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91
bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0ndDFfMicg
Cglvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAoJb25Nb3VzZU91dD0ibG9nTW91
c2VFdmVudChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0MV8yJykuc3R5bGUuYmFj
a2dyb3VuZENvbG9yID0gJ2dyYXknIj4xJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9kaXY+Cgo8IS0tIDI6
IEhpZGUgYW4gZWxlbWVudCB1bmRlciB0aGUgbW91c2UgLS0+CjxkaXYgc3R5bGU9J2hlaWdodDog
NTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6MTAwO2xlZnQ6MTUwOyBwb3NpdGlv
bjphYnNvbHV0ZTsnIGlkPSd0Ml8yJyAKCW9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50
KSIgCglvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3QyXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjI8L2Rpdj4KPGRp
diBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOm9yYW5nZTt0b3A6MTAw
O2xlZnQ6MTUwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0Ml8xJyAKCW9uTW91c2VPdmVyPSJs
b2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QyXzEnKS5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnIiAKCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIj4y
PC9kaXY+Cgo8IS0tIDM6IE1vdmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5v
dGhlciBkb2N1bWVudCAtLT4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNr
Z3JvdW5kOndoaXRlO3RvcDoxMDA7bGVmdDoyMDA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Qz
XzInIAoJb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKCW9uTW91c2VPdXQ9Imxv
Z01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDNfMicpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+MzwvZGl2Pgo8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUw
OyB3aWR0aDogNTA7IGJhY2tncm91bmQ6eWVsbG93O3RvcDoxMDA7bGVmdDoyMDA7IHBvc2l0aW9u
OmFic29sdXRlOycgaWQ9J3QzXzEnIAoJb25Nb3VzZU92ZXI9IgoJCWxvZ01vdXNlRXZlbnQoZXZl
bnQpOwoJCW5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCdo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2h0bWwnLCBudWxsKTsKCQluZXdEb2MuYWRv
cHROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0M18xJykpOwoJCSIgCglvbk1vdXNlT3V0
PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MzwvZGl2PgoKPCEtLSA0OiBNb3ZlIHRoZSBlbGVtZW50
IHVuZGVyIHRoZSBtb3VzZSBpbnRvIGFub3RoZXIgZG9jdW1lbnQsIGFuZCBhcHBlbmQgaXQgLS0+
CjxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6
MTAwO2xlZnQ6MjUwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0NF8yJyAKCW9uTW91c2VPdmVy
PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCglvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50
KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q0XzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3Ig
PSAnZ3JheSciPjQ8L2Rpdj4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNr
Z3JvdW5kOmdyZWVuO3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q0
XzEnIAoJb25Nb3VzZU92ZXI9IgoJCWxvZ01vdXNlRXZlbnQoZXZlbnQpOwoJCW5ld0RvYyA9IGRv
Y3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCdodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sJywgJ2h0bWwnLCBudWxsKTsKCQluZXdEb2MuZG9jdW1lbnRFbGVtZW50LmFwcGVu
ZENoaWxkKG5ld0RvYy5hZG9wdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q0XzEnKSkp
OwoJCSIgCglvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+NDwvZGl2PgoKPCEtLSA1
OiBSZW1vdmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgo8ZGl2IHN0eWxlPSdoZWln
aHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjMwMDsgcG9z
aXRpb246YWJzb2x1dGU7JyBpZD0ndDVfMicgCglvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChl
dmVudCkiIAoJb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCk7IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0NV8yJykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ2dyYXknIj41PC9kaXY+
CjxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlO3RvcDox
MDA7bGVmdDozMDA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q1XzEnIAoJb25Nb3VzZU92ZXI9
IgoJCWxvZ01vdXNlRXZlbnQoZXZlbnQpOwoJCWRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1XzEnKSk7CgkJIgoJb25Nb3VzZU91dD0ibG9nTW91c2VF
dmVudChldmVudCkiPjU8L2Rpdj4KCjwhLS0gNjogRW50ZXIgYSBkaWZmZXJlbnQgZG9jdW1lbnQg
LS0+CjxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgdG9wOjEwMDtsZWZ0OjM1
MDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13aWR0aDowJyBzcmM9J2RhdGE6dGV4dC9odG1s
LAoJPGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6MCI+CgkJPHNjcmlwdD4K
CQkJZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCgkJCXsKCQkJCXZhciBpdGVtID0gdG9wLmRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxpIik7CgkJCQlpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1lc3NhZ2UpKTsKCQkJCXRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
IikuYXBwZW5kQ2hpbGQoaXRlbSk7CgkJCX0KCQkJCgkJCWZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQo
ZXZ0KQoJCQl7CgkJCQlsb2coZXZ0LnR5cGUgKyAiIG9uICIgKyBldnQudGFyZ2V0LmlkKTsKCQkJ
fQoJCQkKCQkJZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCgkJCXsKCQkJCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0NiIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJ3aGl0ZSI7CgkJCQls
b2dNb3VzZUV2ZW50KGV2dCk7CgkJCX0KCgkJCWZ1bmN0aW9uIGRvT25Nb3VzZU91dChldnQpCgkJ
CXsKCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0NiIpLnN0eWxlLmJhY2tncm91bmRDb2xv
ciA9ICJncmF5IjsKCQkJCWxvZ01vdXNlRXZlbnQoZXZ0KTsKCQkJfQoJCQkKCQk8L3NjcmlwdD4K
CQk8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6dmlvbGV0OyB0
b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIgaWQ9InQ2IiAKCQkJb25Nb3VzZU92ZXI9
ImRvT25Nb3VzZU92ZXIoZXZlbnQpOyIgCgkJCW9uTW91c2VPdXQ9ImRvT25Nb3VzZU91dChldmVu
dCkiPjY8L2Rpdj4KCTwvYm9keT4nCgkJb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQp
IgoJCW9uTW91c2VPdXQ9IgoJCQlsb2dNb3VzZUV2ZW50KGV2ZW50KTsKCQkJaWYgKHRvcC5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykuaW5uZXJIVE1MID09IHRvcC5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwJykuaW5uZXJIVE1MKQoJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N1Y2Nlc3MnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJIgoJCWlkPSJmcmFtZTYiCgk+
PC9pZnJhbWU+Cgo8dGFibGUgYm9yZGVyPTEgd2lkdGg9IjEwMCUiIHN0eWxlPSd0b3A6MjAwOyBw
b3NpdGlvbjphYnNvbHV0ZSc+Cjx0cj48dGQgd2lkdGg9IjUwJSI+TG9nPC90ZD48dGQ+RXhwZWN0
ZWQgcmVzdWx0czwvdGQ+PC90cj4KPHRyPgoJPHRkIGlkPWxvZyBzdHlsZT0idmVydGljYWwtYWxp
Z246dG9wIj48L3RkPgoJPHRkIGlkPWV4cCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48bGk+
bW91c2VvdmVyIG9uIHQxXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8xPC9saT48bGk+bW91c2Vv
dmVyIG9uIHQxXzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8yPC9saT48bGk+bW91c2VvdmVyIG9u
IHQyXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQyXzI8
L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQzXzE8L2xpPjxs
aT5tb3VzZW91dCBvbiB0M18xPC9saT48bGk+bW91c2VvdmVyIG9uIHQzXzI8L2xpPjxsaT5tb3Vz
ZW91dCBvbiB0M18yPC9saT48bGk+bW91c2VvdmVyIG9uIHQ0XzE8L2xpPjxsaT5tb3VzZW91dCBv
biB0NF8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQ0XzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0NF8y
PC9saT48bGk+bW91c2VvdmVyIG9uIHQ1XzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0NV8xPC9saT48
bGk+bW91c2VvdmVyIG9uIHQ1XzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0NV8yPC9saT48bGk+bW91
c2VvdmVyIG9uIGZyYW1lNjwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NjwvbGk+PGxpPm1vdXNlb3V0
IG9uIHQ2PC9saT48bGk+bW91c2VvdXQgb24gZnJhbWU2PC9saT48L3RkPgo8L3RyPgo8L3RhYmxl
PgoKPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDMwMDsgYmFja2dyb3VuZDpyZWQ7dG9w
OjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47
IGRpc3BsYXk6bm9uZScgaWQ9J3N1Y2Nlc3MnPjxicj48Y2VudGVyPlNVQ0NFU1M8L2NlbnRlcj48
L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7144</attachid>
            <date>2006-03-17 23:33:20 -0800</date>
            <delta_ts>2006-03-17 23:33:20 -0800</delta_ts>
            <desc>large test</desc>
            <filename>mouseover-mouseout.html</filename>
            <type>text/html</type>
            <size>6510</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgoJZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCgl7CiAgICAgICAg
dmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwogICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwoJCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChpdGVtKTsKCX0KCQoJZnVuY3Rpb24gbG9n
TW91c2VFdmVudChldnQpCgl7CgkJdGFyZ2V0ID0gKGV2dC50YXJnZXQpID8gZXZ0LnRhcmdldCA6
IGV2dC5zcmNFbGVtZW50OwoJCWxvZyhldnQudHlwZSArICIgb24gIiArIHRhcmdldC5pZCk7Cgl9
CgkKPC9zY3JpcHQ+CjxwPlRlc3RzIGZvciBidWdzIAo8YSBocmVmPSJodHRwOi8vYnVnemlsbGEu
b3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzkiPjM0Mzk8L2E+LCAKPGEgaHJlZj0i
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE3Ij40MTE3
PC9hPiwgCjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTc2NCI+NTc2NDwvYT4sCjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2lu
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMSI+NzcwMTwvYT4uLi48L3A+CjxwPk1vdmUgdGhlIG1v
dXNlIHBvaW50ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvcD4KCjwhLS0gMTogU2hvdyBhbiBlbGVt
ZW50IHVuZGVyIHRoZSBtb3VzZSAtLT4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUw
OyBiYWNrZ3JvdW5kOnJlZDt0b3A6MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlk
PSd0MV8xJyAKCW9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3QxXzInKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJyIKCW9uTW91c2VPdXQ9
ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyI+MSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvZGl2Pgo8ZGl2IHN0
eWxlPSdkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hp
dGU7dG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0ndDFfMicgCglvbk1v
dXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAoJb25Nb3VzZU91dD0ibG9nTW91c2VFdmVu
dChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0MV8yJykuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gJ2dyYXknIj4xJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9kaXY+Cgo8IS0tIDI6IEhpZGUg
YW4gZWxlbWVudCB1bmRlciB0aGUgbW91c2UgLS0+CjxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdp
ZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6MTAwO2xlZnQ6MTUwOyBwb3NpdGlvbjphYnNv
bHV0ZTsnIGlkPSd0Ml8yJyAKCW9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCglv
bk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3QyXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjI8L2Rpdj4KPGRpdiBzdHls
ZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOm9yYW5nZTt0b3A6MTAwO2xlZnQ6
MTUwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0Ml8xJyAKCW9uTW91c2VPdmVyPSJsb2dNb3Vz
ZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QyXzEnKS5zdHlsZS5kaXNw
bGF5ID0gJ25vbmUnIiAKCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIj4yPC9kaXY+
Cgo8IS0tIDM6IE1vdmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBk
b2N1bWVudCAtLT4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5k
OndoaXRlO3RvcDoxMDA7bGVmdDoyMDA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3QzXzInIAoJ
b25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKCW9uTW91c2VPdXQ9ImxvZ01vdXNl
RXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDNfMicpLnN0eWxlLmJhY2tn
cm91bmRDb2xvciA9ICdncmF5JyI+MzwvZGl2Pgo8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0
aDogNTA7IGJhY2tncm91bmQ6eWVsbG93O3RvcDoxMDA7bGVmdDoyMDA7IHBvc2l0aW9uOmFic29s
dXRlOycgaWQ9J3QzXzEnIAoJb25Nb3VzZU92ZXI9IgoJCWxvZ01vdXNlRXZlbnQoZXZlbnQpOwoJ
CW5ld0RvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZpc2libGVfZnJhbWUnKS5kb2N1
bWVudDsKCQlpZiAoIW5ld0RvYykKCQkJbmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ludmlzaWJsZV9mcmFtZScpLmNvbnRlbnREb2N1bWVudDsKCQl0cnkgewoJCQluZXdEb2MuYWRv
cHROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0M18xJykpOwoJCX0gY2F0Y2ggKGUpIHsK
CQkJbmV3RG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndDNfMScpKTsKCQl9CgkJIiAKCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQp
Ij4zPC9kaXY+Cgo8IS0tIDQ6IE1vdmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8g
YW5vdGhlciBkb2N1bWVudCwgYW5kIGFwcGVuZCBpdCAtLT4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1
MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOndoaXRlO3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9u
OmFic29sdXRlOycgaWQ9J3Q0XzInIAoJb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQp
IiAKCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndDRfMicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NDwvZGl2Pgo8ZGl2
IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6Z3JlZW47dG9wOjEwMDts
ZWZ0OjI1MDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0ndDRfMScgCglvbk1vdXNlT3Zlcj0iCgkJ
bG9nTW91c2VFdmVudChldmVudCk7CgkJbmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ludmlzaWJsZV9mcmFtZScpLmRvY3VtZW50OwoJCWlmICghbmV3RG9jKQoJCQluZXdEb2MgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlX2ZyYW1lJykuY29udGVudERvY3VtZW50
OwoJCXRyeSB7CgkJCW5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3RG9jLmFk
b3B0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDRfMScpKSk7CgkJfSBjYXRjaCAoZXgp
IHsKCQkJbmV3RG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndDRfMScpKTsKCQl9CgkJIiAKCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZl
bnQpIj40PC9kaXY+Cgo8IS0tIDU6IFJlbW92ZSB0aGUgZWxlbWVudCB1bmRlciB0aGUgbW91c2Ug
LS0+CjxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0
b3A6MTAwO2xlZnQ6MzAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0NV8yJyAKCW9uTW91c2VP
dmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCglvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2
ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1XzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29s
b3IgPSAnZ3JheSciPjU8L2Rpdj4KPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBi
YWNrZ3JvdW5kOmJsdWU7dG9wOjEwMDtsZWZ0OjMwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0n
dDVfMScgCglvbk1vdXNlT3Zlcj0iCgkJbG9nTW91c2VFdmVudChldmVudCk7CgkJZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDVfMScpKTsKCQkiCglv
bk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+NTwvZGl2PgoKPCEtLSA2OiBFbnRlciBh
IGRpZmZlcmVudCBkb2N1bWVudCAtLT4KPGlmcmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyB0b3A6MTAwO2xlZnQ6MzUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAn
IHNyYz0nZGF0YTp0ZXh0L2h0bWwsCgk8Ym9keSBzdHlsZT0ibWFyZ2luLWxlZnQ6MDsgbWFyZ2lu
LXRvcDowIj4KCQk8c2NyaXB0PgoJCQlmdW5jdGlvbiBsb2cobWVzc2FnZSkKCQkJewoJCQkJdmFy
IGl0ZW0gPSB0b3AuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKCQkJCWl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwoJCQkJdG9wLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5hcHBlbmRDaGlsZChpdGVtKTsKCQkJfQoJCQkKCQkJZnVu
Y3Rpb24gbG9nTW91c2VFdmVudChldnQpCgkJCXsKCQkJCXRhcmdldCA9IChldnQudGFyZ2V0KSA/
IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKCQkJCWxvZyhldnQudHlwZSArICIgb24gIiAr
IHRhcmdldC5pZCk7CgkJCX0KCQkJCgkJCWZ1bmN0aW9uIGRvT25Nb3VzZU92ZXIoZXZ0KQoJCQl7
CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidDYiKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3Ig
PSAid2hpdGUiOwoJCQkJbG9nTW91c2VFdmVudChldnQpOwoJCQl9CgoJCQlmdW5jdGlvbiBkb09u
TW91c2VPdXQoZXZ0KQoJCQl7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidDYiKS5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSAiZ3JheSI7CgkJCQlsb2dNb3VzZUV2ZW50KGV2dCk7CgkJCX0K
CQkJCgkJPC9zY3JpcHQ+CgkJPGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNr
Z3JvdW5kOnZpb2xldDsgdG9wOjA7bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlkPSJ0NiIg
CgkJCW9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAoJCQlvbk1vdXNlT3V0PSJk
b09uTW91c2VPdXQoZXZlbnQpIj42PC9kaXY+Cgk8L2JvZHk+JwoJCW9uTW91c2VPdmVyPSJsb2dN
b3VzZUV2ZW50KGV2ZW50KSIKCQlvbk1vdXNlT3V0PSIKCQkJbG9nTW91c2VFdmVudChldmVudCk7
CgkJCWlmICh0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVySFRNTCA9PSB0
b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cCcpLmlubmVySFRNTCkKCQkJCWRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdWNjZXNzJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CgkJCSIK
CQlpZD0iZnJhbWU2IgoJPjwvaWZyYW1lPgoKPGlmcmFtZSBpZD1pbnZpc2libGVfZnJhbWUgc3R5
bGU9IndpZHRoOjA7IGhlaWdodDowOyBib3JkZXItd2lkdGg6MCI+PC9pZnJhbWU+Cgo8dGFibGUg
Ym9yZGVyPTEgd2lkdGg9IjEwMCUiIHN0eWxlPSd0b3A6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZSc+
Cjx0cj48dGQgd2lkdGg9IjUwJSI+TG9nPC90ZD48dGQ+RXhwZWN0ZWQgcmVzdWx0czwvdGQ+PC90
cj4KPHRyPgoJPHRkIGlkPWxvZyBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48L3RkPgoJPHRk
IGlkPWV4cCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48bGk+bW91c2VvdmVyIG9uIHQxXzE8
L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQxXzI8L2xpPjxs
aT5tb3VzZW91dCBvbiB0MV8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQyXzE8L2xpPjxsaT5tb3Vz
ZW91dCBvbiB0Ml8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQyXzI8L2xpPjxsaT5tb3VzZW91dCBv
biB0Ml8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQzXzE8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDNf
MjwvbGk+PGxpPm1vdXNlb3V0IG9uIHQzXzI8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDRfMTwvbGk+
PGxpPm1vdXNlb3ZlciBvbiB0NF8yPC9saT48bGk+bW91c2VvdXQgb24gdDRfMjwvbGk+PGxpPm1v
dXNlb3ZlciBvbiB0NV8xPC9saT48bGk+bW91c2VvdXQgb24gdDVfMTwvbGk+PGxpPm1vdXNlb3Zl
ciBvbiB0NV8yPC9saT48bGk+bW91c2VvdXQgb24gdDVfMjwvbGk+PGxpPm1vdXNlb3ZlciBvbiBm
cmFtZTY8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDY8L2xpPjxsaT5tb3VzZW91dCBvbiB0NjwvbGk+
PGxpPm1vdXNlb3V0IG9uIGZyYW1lNjwvbGk+PC90ZD4KPC90cj4KPC90YWJsZT4KCjxkaXYgc3R5
bGU9J2hlaWdodDogNTA7IHdpZHRoOiAzMDA7IGJhY2tncm91bmQ6cmVkO3RvcDoxMDA7bGVmdDox
MDA7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyBkaXNwbGF5Om5v
bmUnIGlkPSdzdWNjZXNzJz48YnI+PGNlbnRlcj5TVUNDRVNTPC9jZW50ZXI+PC9kaXY+Cgo8L2Jv
ZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7147</attachid>
            <date>2006-03-18 03:19:14 -0800</date>
            <delta_ts>2006-03-18 04:22:45 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>3439r1_patch.txt</filename>
            <type>text/plain</type>
            <size>19014</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVyLW1v
dXNlb3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjEgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCitUZXN0cyBmb3IgYnVncyAzNDM5LCA1NzY0LCA3NzAxIC0gTW91c2UgZXZl
bnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLgorCitNb3ZlIHRoZSBtb3VzZSBwb2ludGVyIGZyb20g
bGVmdCB0byByaWdodDoKKworMcKgwqDCoMKgIMKgwqDCoMKgIMKgwqDCoMKgCisxwqDCoMKgwqAg
wqDCoMKgwqAgwqDCoMKgwqAKKzIKKzMKKzQKKzUKKworTG9nCUV4cGVjdGVkIHJlc3VsdHMKK21v
dXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24gdDFfMgorbW91
c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQyXzEKK21vdXNl
b3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNfMQorbW91c2Vv
dmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8xCittb3VzZW92
ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEKK21vdXNlb3V0
IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIg
b24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3VzZW91dCBvbiBm
cmFtZTYKK21vdXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24g
dDFfMgorbW91c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQy
XzEKK21vdXNlb3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNf
MQorbW91c2VvdmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8x
Cittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEK
K21vdXNlb3V0IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCitt
b3VzZW92ZXIgb24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3Vz
ZW91dCBvbiBmcmFtZTYKKworU1VDQ0VTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE5MyBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImF1dG9UZXN0KCkiPgorPHNjcmlw
dD4KKwlmdW5jdGlvbiBsb2cobWVzc2FnZSkKKwl7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
b2cnKS5hcHBlbmRDaGlsZChpdGVtKTsKKwl9CisJCisJZnVuY3Rpb24gbG9nTW91c2VFdmVudChl
dnQpCisJeworCQl0YXJnZXQgPSAoZXZ0LnRhcmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0Vs
ZW1lbnQ7CisJCWxvZyhldnQudHlwZSArICIgb24gIiArIHRhcmdldC5pZCk7CisJfQorCQorPC9z
Y3JpcHQ+Cis8cD5UZXN0cyBmb3IgYnVncyAKKzxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzOSI+MzQzOTwvYT4sIAorPGEgaHJlZj0iaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY0Ij41NzY0PC9h
PiwKKzxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzcwMSI+NzcwMTwvYT4gLQorTW91c2UgZXZlbnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLjwv
cD4KKzxwPk1vdmUgdGhlIG1vdXNlIHBvaW50ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvcD4KKwor
PCEtLSAxOiBTaG93IGFuIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgorPGRpdiBzdHlsZT0n
aGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOnJlZDt0b3A6MTAwO2xlZnQ6MTAwOyBw
b3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0MV8xJyAKKwlvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVu
dChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0MV8yJykuc3R5bGUuZGlzcGxheSA9
ICdibG9jayciCisJb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCk7Ij4xJm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsgPC9kaXY+Cis8ZGl2IHN0eWxlPSdkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDUwOyB3
aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJz
b2x1dGU7JyBpZD0ndDFfMicgCisJb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAK
Kwlvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3QxXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjEmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyA8L2Rpdj4KKworPCEtLSAyOiBIaWRlIGFuIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0t
PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOndoaXRlO3Rv
cDoxMDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3QyXzInIAorCW9uTW91c2VP
dmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCisJb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChl
dmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ml8yJykuc3R5bGUuYmFja2dyb3VuZENv
bG9yID0gJ2dyYXknIj4yPC9kaXY+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7
IGJhY2tncm91bmQ6b3JhbmdlO3RvcDoxMDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRlOycg
aWQ9J3QyXzEnIAorCW9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3QyXzEnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnIiAKKwlvbk1vdXNl
T3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MjwvZGl2PgorCis8IS0tIDM6IE1vdmUgdGhlIGVs
ZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCAtLT4KKzxkaXYgc3R5
bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6MTAwO2xlZnQ6
MjAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0M18yJyAKKwlvbk1vdXNlT3Zlcj0ibG9nTW91
c2VFdmVudChldmVudCkiIAorCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndDNfMicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmF5
JyI+MzwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5k
OnllbGxvdzt0b3A6MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0M18xJyAK
Kwlvbk1vdXNlT3Zlcj0iCisJCWxvZ01vdXNlRXZlbnQoZXZlbnQpOworCQluZXdEb2MgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlX2ZyYW1lJykuZG9jdW1lbnQ7CisJCWlmICgh
bmV3RG9jKQorCQkJbmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZV9m
cmFtZScpLmNvbnRlbnREb2N1bWVudDsKKwkJdHJ5IHsKKwkJCW5ld0RvYy5hZG9wdE5vZGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisJCX0gY2F0Y2ggKGUpIHsKKwkJCW5ld0Rv
Yy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Qz
XzEnKSk7CisJCX0KKwkJIiAKKwlvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+Mzwv
ZGl2PgorCis8IS0tIDQ6IE1vdmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5v
dGhlciBkb2N1bWVudCwgYW5kIGFwcGVuZCBpdCAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7
IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6MTAwO2xlZnQ6MjUwOyBwb3NpdGlvbjph
YnNvbHV0ZTsnIGlkPSd0NF8yJyAKKwlvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCki
IAorCW9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndDRfMicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NDwvZGl2PgorPGRp
diBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVuO3RvcDoxMDA7
bGVmdDoyNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q0XzEnIAorCW9uTW91c2VPdmVyPSIK
KwkJbG9nTW91c2VFdmVudChldmVudCk7CisJCW5ld0RvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbnZpc2libGVfZnJhbWUnKS5kb2N1bWVudDsKKwkJaWYgKCFuZXdEb2MpCisJCQluZXdE
b2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlX2ZyYW1lJykuY29udGVudERv
Y3VtZW50OworCQl0cnkgeworCQkJbmV3RG9jLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChu
ZXdEb2MuYWRvcHROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0NF8xJykpKTsKKwkJfSBj
YXRjaCAoZXgpIHsKKwkJCW5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Q0XzEnKSk7CisJCX0KKwkJIiAKKwlvbk1vdXNlT3V0PSJsb2dN
b3VzZUV2ZW50KGV2ZW50KSI+NDwvZGl2PgorCis8IS0tIDU6IFJlbW92ZSB0aGUgZWxlbWVudCB1
bmRlciB0aGUgbW91c2UgLS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJh
Y2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjMwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0n
dDVfMicgCisJb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKwlvbk1vdXNlT3V0
PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1XzInKS5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjU8L2Rpdj4KKzxkaXYgc3R5bGU9J2hlaWdo
dDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlO3RvcDoxMDA7bGVmdDozMDA7IHBvc2l0
aW9uOmFic29sdXRlOycgaWQ9J3Q1XzEnIAorCW9uTW91c2VPdmVyPSIKKwkJbG9nTW91c2VFdmVu
dChldmVudCk7CisJCWRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Q1XzEnKSk7CisJCSIKKwlvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+
NTwvZGl2PgorCis8IS0tIDY6IEVudGVyIGEgZGlmZmVyZW50IGRvY3VtZW50IC0tPgorPGlmcmFt
ZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyB0b3A6MTAwO2xlZnQ6MzUwOyBwb3NpdGlv
bjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAnIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisJPGJvZHkg
c3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6MCI+CisJCTxzY3JpcHQ+CisJCQlmdW5j
dGlvbiBsb2cobWVzc2FnZSkKKwkJCXsKKwkJCQl2YXIgaXRlbSA9IHRvcC5kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJsaSIpOworCQkJCWl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSkpOworCQkJCXRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
YXBwZW5kQ2hpbGQoaXRlbSk7CisJCQl9CisJCQkKKwkJCWZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQo
ZXZ0KQorCQkJeworCQkJCXRhcmdldCA9IChldnQudGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQu
c3JjRWxlbWVudDsKKwkJCQlsb2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworCQkJ
fQorCQkJCisJCQlmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2dCkKKwkJCXsKKwkJCQlkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidDYiKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAid2hpdGUiOwor
CQkJCWxvZ01vdXNlRXZlbnQoZXZ0KTsKKwkJCX0KKworCQkJZnVuY3Rpb24gZG9Pbk1vdXNlT3V0
KGV2dCkKKwkJCXsKKwkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidDYiKS5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAiZ3JheSI7CisJCQkJbG9nTW91c2VFdmVudChldnQpOworCQkJfQorCQkJ
CisJCTwvc2NyaXB0PgorCQk8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tn
cm91bmQ6dmlvbGV0OyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIgaWQ9InQ2IiAK
KwkJCW9uQ2xpY2s9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIgorCQkJb25Nb3VzZU92ZXI9ImRvT25N
b3VzZU92ZXIoZXZlbnQpOyIgCisJCQlvbk1vdXNlT3V0PSJkb09uTW91c2VPdXQoZXZlbnQpIj42
PC9kaXY+CisJPC9ib2R5PicKKwkJb25DbGljaz0ibG9nTW91c2VFdmVudChldmVudCkiCisJCW9u
TW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIKKwkJb25Nb3VzZU91dD0iCisJCQlsb2dN
b3VzZUV2ZW50KGV2ZW50KTsKKwkJCWlmICh0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xv
ZycpLmlubmVySFRNTCA9PSB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cCcpLmlubmVy
SFRNTCkgeworCQkJCXRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0eWxl
LmRpc3BsYXkgPSAnYmxvY2snOworCQkJfQorCQkJaWYgKHRvcC53aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisJCQkJdG9wLndpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisJCQkiCisJCWlkPSJmcmFtZTYiCisJPjwvaWZyYW1lPgorCis8aWZyYW1lIGlkPWludmlz
aWJsZV9mcmFtZSBzdHlsZT0id2lkdGg6MDsgaGVpZ2h0OjA7IGJvcmRlci13aWR0aDowIj48L2lm
cmFtZT4KKworPHRhYmxlIGJvcmRlcj0xIHdpZHRoPSIxMDAlIiBzdHlsZT0ndG9wOjIwMDsgcG9z
aXRpb246YWJzb2x1dGUnPgorPHRyPjx0ZCB3aWR0aD0iNTAlIj5Mb2c8L3RkPjx0ZD5FeHBlY3Rl
ZCByZXN1bHRzPC90ZD48L3RyPgorPHRyPgorCTx0ZCBpZD1sb2cgc3R5bGU9InZlcnRpY2FsLWFs
aWduOnRvcCI+PC90ZD4KKwk8dGQgaWQ9ZXhwIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjp0b3AiPjxs
aT5tb3VzZW92ZXIgb24gdDFfMTwvbGk+PGxpPm1vdXNlb3V0IG9uIHQxXzE8L2xpPjxsaT5tb3Vz
ZW92ZXIgb24gdDFfMjwvbGk+PGxpPm1vdXNlb3V0IG9uIHQxXzI8L2xpPjxsaT5tb3VzZW92ZXIg
b24gdDJfMTwvbGk+PGxpPm1vdXNlb3V0IG9uIHQyXzE8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDJf
MjwvbGk+PGxpPm1vdXNlb3V0IG9uIHQyXzI8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDNfMTwvbGk+
PGxpPm1vdXNlb3ZlciBvbiB0M18yPC9saT48bGk+bW91c2VvdXQgb24gdDNfMjwvbGk+PGxpPm1v
dXNlb3ZlciBvbiB0NF8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQ0XzI8L2xpPjxsaT5tb3VzZW91
dCBvbiB0NF8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQ1XzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0
NV8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQ1XzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0NV8yPC9s
aT48bGk+bW91c2VvdmVyIG9uIGZyYW1lNjwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NjwvbGk+PGxp
Pm1vdXNlb3V0IG9uIHQ2PC9saT48bGk+bW91c2VvdXQgb24gZnJhbWU2PC9saT48L3RkPgorPC90
cj4KKzwvdGFibGU+CisKKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiAzMDA7IHRvcDox
MDA7bGVmdDoxMDA7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5Om5vbmUnIGlkPSdzdWNjZXNz
Jz48YnI+PGNlbnRlcj5TVUNDRVNTPC9jZW50ZXI+PC9kaXY+CisKKzxzY3JpcHQ+CitmdW5jdGlv
biBhdXRvVGVzdCgpIHsKKwlpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisJCWxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwkJbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworCQorCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOwor
CSAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgpOworCSAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKwkgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoKTsKKwkgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCSAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgpOworCisJICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEyNSwgMTI1KTsKKwkgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oMTMwLCAxMjUpOworCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMzUsIDEyNSk7CisJ
ICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKwkgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMTc1LCAxMjUpOworCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxODAsIDEyNSk7
CisJICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKwkgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oMjI1LCAxMjUpOworCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMzAsIDEy
NSk7CisJICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKwkgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oMjc1LCAxMjUpOworCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyODAs
IDEyNSk7CisJICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKwkgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oMzI1LCAxMjUpOworCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygz
MzAsIDEyNSk7CisJICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKwkgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMzc1LCAxMjUpOworCSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygzODAsIDEyNSk7CisJICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4NSwgMTI1KTsKKwkg
ICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoKTsKKworCSAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbygxLCAxKTsKKwl9Cit9Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDog
V2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJp
ZGdlL21hYy9NYWNGcmFtZS5tbQkocmV2aXNpb24gMTMzNzEpCisrKyBXZWJDb3JlL2JyaWRnZS9t
YWMvTWFjRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NTgsODAgKzE4NTgsODIgQEAgdm9p
ZCBNYWNGcmFtZTo6a2h0bWxNb3VzZVJlbGVhc2VFdmVudChjbwogICAgIF9zZW5kaW5nRXZlbnRU
b1N1YnZpZXcgPSBmYWxzZTsKIH0KIAotYm9vbCBNYWNGcmFtZTo6cGFzc1N1YmZyYW1lRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgJmV2ZW50KQorRnJhbWUqIE1h
Y0ZyYW1lOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQsIEZyYW1lKiBzdWJmcmFtZVBhcnQpCiB7CiAgICAgS1dRX0JMT0NLX0VY
Q0VQVElPTlM7CiAKICAgICBzd2l0Y2ggKFtfY3VycmVudEV2ZW50IHR5cGVdKSB7CiAgICAgICAg
IGNhc2UgTlNNb3VzZU1vdmVkOiB7Ci0gICAgICAgICAgICBOb2RlSW1wbCAqbm9kZSA9IGV2ZW50
LmlubmVyTm9kZSgpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lk
Z2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgV2lkZ2V0
ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQgKj4ocmVuZGVyZXIpLT53aWRnZXQo
KTsKLSAgICAgICAgICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgRnJhbWUgKnN1YmZyYW1l
UGFydCA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyAqPih3aWRnZXQpLT5mcmFtZSgpOwotICAgICAg
ICAgICAgaWYgKCFzdWJmcmFtZVBhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgaWYgKCFzdWJmcmFtZVBhcnQpIHsKKyAgICAgICAgICAgICAgICBOb2RlSW1w
bCAqbm9kZSA9IGV2ZW50LmlubmVyTm9kZSgpOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0ICpyZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgIFdpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyV2lkZ2V0ICo+KHJlbmRlcmVyKS0+d2lkZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKCF3
aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgc3ViZnJhbWVQYXJ0ID0gc3RhdGljX2Nhc3Q8RnJhbWVW
aWV3ICo+KHdpZGdldCktPmZyYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKCFzdWJmcmFtZVBh
cnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgW01hYyhzdWJmcmFtZVBhcnQpLT5icmlkZ2UoKSBtb3VzZU1vdmVkOl9jdXJyZW50RXZl
bnRdOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gc3ViZnJh
bWVQYXJ0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93
bjogewogICAgICAgICAgICAgTm9kZUltcGwgKm5vZGUgPSBldmVudC5pbm5lck5vZGUoKTsKICAg
ICAgICAgICAgIGlmICghbm9kZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJlbmRl
ck9iamVjdCAqcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBXaWRnZXQgKndpZGdldCA9IHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCAqPihyZW5k
ZXJlciktPndpZGdldCgpOwogICAgICAgICAgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNG
cmFtZVZpZXcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBpZiAoIXBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRv
V2lkZ2V0KHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCAqPihyZW5kZXJlcikpKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSB0cnVlOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnJh
bWVWaWV3ICo+KHdpZGdldCktPmZyYW1lKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBOU0xl
ZnRNb3VzZVVwOiB7CiAgICAgICAgICAgICBpZiAoIV9tb3VzZURvd25XYXNJblN1YmZyYW1lKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTlNWaWV3ICp2aWV3ID0gbW91c2VEb3duVmll
d0lmU3RpbGxHb29kKCk7CiAgICAgICAgICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBBU1NFUlQoIV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICAg
ICAgX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7CiAgICAgICAgICAgICBbdmlldyBtb3Vz
ZVVwOl9jdXJyZW50RXZlbnRdOwogICAgICAgICAgICAgX3NlbmRpbmdFdmVudFRvU3VidmlldyA9
IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RnJhbWVWaWV3ICo+KHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCAqPihldmVudC5p
bm5lck5vZGUoKS0+cmVuZGVyZXIoKSktPndpZGdldCgpKS0+ZnJhbWUoKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDogewogICAgICAgICAgICAgaWYgKCFfbW91
c2VEb3duV2FzSW5TdWJmcmFtZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5TVmll
dyAqdmlldyA9IG1vdXNlRG93blZpZXdJZlN0aWxsR29vZCgpOwogICAgICAgICAgICAgaWYgKCF2
aWV3KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKCFfc2VuZGluZ0V2ZW50
VG9TdWJ2aWV3KTsKICAgICAgICAgICAgIF9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSB0cnVlOwog
ICAgICAgICAgICAgW3ZpZXcgbW91c2VEcmFnZ2VkOl9jdXJyZW50RXZlbnRdOwogICAgICAgICAg
ICAgX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3ICo+KHN0YXRpY19j
YXN0PFJlbmRlcldpZGdldCAqPihldmVudC5pbm5lck5vZGUoKS0+cmVuZGVyZXIoKSktPndpZGdl
dCgpKS0+ZnJhbWUoKTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIEtXUV9VTkJM
T0NLX0VYQ0VQVElPTlM7CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIDA7CiB9CiAK
IGJvb2wgTWFjRnJhbWU6OnBhc3NXaGVlbEV2ZW50VG9DaGlsZFdpZGdldChOb2RlSW1wbCAqbm9k
ZSkKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9NYWNGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYnJpZGdlL21hYy9NYWNGcmFtZS5oCShyZXZpc2lvbiAxMzM3MSkKKysrIFdlYkNvcmUv
YnJpZGdlL21hYy9NYWNGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNyArMjI5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoTlNFdmVudCAqKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChXaWRnZXQgKik7Ci0gICAg
dmlydHVhbCBib29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzICYpOworICAgIHZpcnR1YWwgRnJhbWUqIHBhc3NTdWJmcmFtZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqKTsKICAgICB2aXJ0
dWFsIGJvb2wgcGFzc1doZWVsRXZlbnRUb0NoaWxkV2lkZ2V0KE5vZGVJbXBsICopOwogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlY29yZGVkRm9ybVZhbHVlcygpOwpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlz
aW9uIDEzMzcxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
Myw3ICs1OTMsNyBAQCBwdWJsaWM6CiAgIHZpcnR1YWwgdm9pZCBvcGVuVVJMUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCBzdWJtaXRGb3JtKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgdmlydHVhbCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpID0gMDsKLSAgdmlydHVhbCBib29sIHBhc3NTdWJmcmFtZUV2ZW50
VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJikgPSAwOworICB2aXJ0dWFs
IEZyYW1lKiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYsIEZyYW1lKiBzdWJmcmFtZVBhcnQgPSAwKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBw
YXNzV2hlZWxFdmVudFRvQ2hpbGRXaWRnZXQoTm9kZUltcGwgKikgPSAwOwogICB2aXJ0dWFsIGJv
b2wgbGFzdEV2ZW50SXNNb3VzZVVwKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIFFTdHJpbmcgb3Zl
cnJpZGVNZWRpYVR5cGUoKSBjb25zdCA9IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24g
MTMzNzEpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjE5LDEyICs2MTksMTkgQEAgdm9pZCBGcmFtZVZpZXc6OnZpZXdwb3J0TW91c2VNb3ZlRXZlbnQo
YwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQoZC0+bW91c2VQcmVzc2VkICYmIG1fZnJhbWUtPm1vdXNl
RG93bk1heVN0YXJ0U2VsZWN0KCksCiAgICAgICAgIGQtPm1vdXNlUHJlc3NlZCwgdHJ1ZSwgeG0s
IHltLCBtb3VzZUV2ZW50KTsKIAotICAgIGlmICghbV9mcmFtZS0+cGFzc1N1YmZyYW1lRXZlbnRU
b1N1YmZyYW1lKG1ldikpCi0gICAgICAgIHNldEN1cnNvcihzZWxlY3RDdXJzb3IobWV2LCBtX2Zy
YW1lLmdldCgpLCBkLT5tb3VzZVByZXNzZWQpKTsKKyAgICBib29sIGhhZE9sZFN1YmZyYW1lID0g
KG1fb2xkU3ViZnJhbWUgIT0gMCk7CisgICAgaWYgKGhhZE9sZFN1YmZyYW1lKQorICAgICAgICBt
X29sZFN1YmZyYW1lID0gbV9mcmFtZS0+cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwg
bV9vbGRTdWJmcmFtZS5nZXQoKSk7CiAgICAgICAgIAorICAgIGlmICghbV9vbGRTdWJmcmFtZSkK
KyAgICAgICAgc2V0Q3Vyc29yKHNlbGVjdEN1cnNvcihtZXYsIG1fZnJhbWUuZ2V0KCksIGQtPm1v
dXNlUHJlc3NlZCkpOworCiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSBkaXNwYXRjaE1vdXNlRXZl
bnQobW91c2Vtb3ZlRXZlbnQsIG1ldi5pbm5lck5vZGUoKSwgZmFsc2UsIDAsIG1vdXNlRXZlbnQs
IHRydWUpOwogICAgIGlmICghc3dhbGxvd0V2ZW50KQogICAgICAgICBtX2ZyYW1lLT5raHRtbE1v
dXNlTW92ZUV2ZW50KG1ldik7CisgICAgCisgICAgaWYgKCFoYWRPbGRTdWJmcmFtZSkKKyAgICAg
ICAgbV9vbGRTdWJmcmFtZSA9IG1fZnJhbWUtPnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSht
ZXYpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6aW52YWxpZGF0ZUNsaWNrKCkKQEAgLTkzNywyOCAr
OTQ0LDIxIEBAIGJvb2wgRnJhbWVWaWV3OjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QKICAgICAg
ICAgaW50IGNsaWVudFgsIGNsaWVudFk7CiAgICAgICAgIHZpZXdwb3J0VG9Db250ZW50cyhtb3Vz
ZUV2ZW50LngoKSwgbW91c2VFdmVudC55KCksIGNsaWVudFgsIGNsaWVudFkpOwogICAgICAgICBp
ZiAoZC0+cHJldk1vdXNlWCAhPSBjbGllbnRYIHx8IGQtPnByZXZNb3VzZVkgIT0gY2xpZW50WSkg
ewotICAgICAgICAgICAgLy8gIyMjIHRoaXMgY29kZSBzdWNrcy4gd2Ugc2hvdWxkIHNhdmUgdGhl
IG9sZFVuZGVyIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcKLSAgICAgICAgICAgIC8vIGl0IGFnYWlu
LiBjYWxjdWxhdGluZyBpcyBleHBlbnNpdmUhIChEaXJrKQotICAgICAgICAgICAgLy8gQWxzbywg
dGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgb2xkIHVuZGVyIG5vZGUgaXMgZXZlbiBhcm91
bmQgYW55IG1vcmUsCi0gICAgICAgICAgICAvLyBzbyB3ZSBjb3VsZCBiZSBzZW5kaW5nIGEgbW91
c2VvdXQgdG8gYSBub2RlIHRoYXQgbmV2ZXIgZ290IGEgbW91c2VvdmVyLgotICAgICAgICAgICAg
UmVmUHRyPE5vZGVJbXBsPiBvbGRVbmRlcjsKLSAgICAgICAgICAgIGlmIChkLT5wcmV2TW91c2VY
ID49IDApIHsKLSAgICAgICAgICAgICAgICBvbGRVbmRlciA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnByZXBhcmVNb3VzZUV2ZW50KHRydWUsIGZhbHNlLCB0cnVlLAotICAgICAgICAgICAgICAgICAg
ICBkLT5wcmV2TW91c2VYLCBkLT5wcmV2TW91c2VZLCBtb3VzZUV2ZW50KS5pbm5lck5vZGUoKTsK
LSAgICAgICAgICAgICAgICBpZiAob2xkVW5kZXIgJiYgb2xkVW5kZXItPmlzVGV4dE5vZGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgb2xkVW5kZXIgPSBvbGRVbmRlci0+cGFyZW50Tm9kZSgpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fb2xkVW5kZXIgJiYgbV9vbGRVbmRlci0+
Z2V0RG9jdW1lbnQoKSAhPSBmcmFtZSgpLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgICAgIG1f
b2xkVW5kZXIgPSAwOworCiAgICAgICAgICAgICBkLT5wcmV2TW91c2VYID0gY2xpZW50WDsKICAg
ICAgICAgICAgIGQtPnByZXZNb3VzZVkgPSBjbGllbnRZOwotICAgICAgICAgICAgaWYgKG9sZFVu
ZGVyICE9IHRhcmdldE5vZGUpIHsKKyAgICAgICAgICAgIGlmIChtX29sZFVuZGVyICE9IHRhcmdl
dE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBzZW5kIG1vdXNlb3V0IGV2ZW50IHRvIHRoZSBv
bGQgbm9kZQotICAgICAgICAgICAgICAgIGlmIChvbGRVbmRlcikKLSAgICAgICAgICAgICAgICAg
ICAgRXZlbnRUYXJnZXROb2RlQ2FzdChvbGRVbmRlci5nZXQoKSktPmRpc3BhdGNoTW91c2VFdmVu
dChtb3VzZUV2ZW50LCBtb3VzZW91dEV2ZW50LCAwLCB0YXJnZXROb2RlKTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9vbGRVbmRlcikKKyAgICAgICAgICAgICAgICAgICAgRXZlbnRUYXJnZXROb2Rl
Q2FzdChtX29sZFVuZGVyLmdldCgpKS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIG1v
dXNlb3V0RXZlbnQsIDAsIHRhcmdldE5vZGUpOwogICAgICAgICAgICAgICAgIC8vIHNlbmQgbW91
c2VvdmVyIGV2ZW50IHRvIHRoZSBuZXcgbm9kZQogICAgICAgICAgICAgICAgIGlmICh0YXJnZXRO
b2RlKQotICAgICAgICAgICAgICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KHRhcmdldE5vZGUp
LT5kaXNwYXRjaE1vdXNlRXZlbnQobW91c2VFdmVudCwgbW91c2VvdmVyRXZlbnQsIDAsIG9sZFVu
ZGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdCh0YXJn
ZXROb2RlKS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIG1vdXNlb3ZlckV2ZW50LCAw
LCBtX29sZFVuZGVyLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBt
X29sZFVuZGVyID0gdGFyZ2V0Tm9kZTsKICAgICB9CiAKICAgICBib29sIHN3YWxsb3dFdmVudCA9
IGZhbHNlOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMTMzNzEpCisrKyBXZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsOSBAQCBwcml2YXRlOgog
ICAgIEZyYW1lVmlld1ByaXZhdGUqIGQ7CiAKICAgICBRU3RyaW5nIG1fbWVkaXVtOyAvLyBtZWRp
YSB0eXBlCisgICAgCisgICAgUmVmUHRyPE5vZGVJbXBsPiBtX29sZFVuZGVyOworICAgIFJlZlB0
cjxGcmFtZT4gbV9vbGRTdWJmcmFtZTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7156</attachid>
            <date>2006-03-18 12:33:37 -0800</date>
            <delta_ts>2006-03-18 22:29:45 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>3439r2_patch.txt</filename>
            <type>text/plain</type>
            <size>36622</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVyLW1v
dXNlb3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjEgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCitUZXN0cyBmb3IgYnVncyAzNDM5LCA1NzY0LCA3NzAxIC0gTW91c2UgZXZl
bnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLgorCitNb3ZlIHRoZSBtb3VzZSBwb2ludGVyIGZyb20g
bGVmdCB0byByaWdodDoKKworMcKgwqDCoMKgIMKgwqDCoMKgIMKgwqDCoMKgCisxwqDCoMKgwqAg
wqDCoMKgwqAgwqDCoMKgwqAKKzIKKzMKKzQKKzUKKworTG9nCUV4cGVjdGVkIHJlc3VsdHMKK21v
dXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24gdDFfMgorbW91
c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQyXzEKK21vdXNl
b3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNfMQorbW91c2Vv
dmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8xCittb3VzZW92
ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEKK21vdXNlb3V0
IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIg
b24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3VzZW91dCBvbiBm
cmFtZTYKK21vdXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24g
dDFfMgorbW91c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQy
XzEKK21vdXNlb3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNf
MQorbW91c2VvdmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8x
Cittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEK
K21vdXNlb3V0IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCitt
b3VzZW92ZXIgb24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3Vz
ZW91dCBvbiBmcmFtZTYKKworU1VDQ0VTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE4OCBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImF1dG9UZXN0KCkiPgorPHNjcmlw
dD4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gbG9nTW91c2VFdmVudChldnQpCisgICAgeworICAgICAgICB0YXJnZXQgPSAoZXZ0LnRh
cmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgIGxvZyhldnQudHlw
ZSArICIgb24gIiArIHRhcmdldC5pZCk7CisgICAgfQorICAgIAorPC9zY3JpcHQ+Cis8cD5UZXN0
cyBmb3IgYnVncyAKKzxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzQzOSI+MzQzOTwvYT4sIAorPGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY0Ij41NzY0PC9hPiwKKzxhIGhyZWY9Imh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMSI+NzcwMTwv
YT4gLQorTW91c2UgZXZlbnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLjwvcD4KKzxwPk1vdmUgdGhl
IG1vdXNlIHBvaW50ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvcD4KKworPCEtLSAxOiBTaG93IGFu
IGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lk
dGg6IDUwOyBiYWNrZ3JvdW5kOnJlZDt0b3A6MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0MV8xJyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCk7IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0MV8yJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayciCisg
ICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCk7Ij4xJm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg
PC9kaXY+Cis8ZGl2IHN0eWxlPSdkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDUwOyB3aWR0aDogNTA7
IGJhY2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBp
ZD0ndDFfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBv
bk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3QxXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjEmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyA8L2Rpdj4KKworPCEtLSAyOiBIaWRlIGFuIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgor
PGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOndoaXRlO3RvcDox
MDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3QyXzInIAorICAgIG9uTW91c2VP
dmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCisgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVu
dChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ml8yJykuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gJ2dyYXknIj4yPC9kaXY+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDog
NTA7IGJhY2tncm91bmQ6b3JhbmdlO3RvcDoxMDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRl
OycgaWQ9J3QyXzEnIAorICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QyXzEnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnIiAKKyAg
ICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MjwvZGl2PgorCis8IS0tIDM6IE1v
dmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCAtLT4K
KzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6
MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0M18yJyAKKyAgICBvbk1vdXNl
T3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZl
bnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDNfMicpLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICdncmF5JyI+MzwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyBiYWNrZ3JvdW5kOnllbGxvdzt0b3A6MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0M18xJyAKKyAgICBvbk1vdXNlT3Zlcj0iCisgICAgICAgIGxvZ01vdXNlRXZlbnQo
ZXZlbnQpOworICAgICAgICBuZXdEb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNp
YmxlX2ZyYW1lJykuZG9jdW1lbnQ7CisgICAgICAgIGlmICghbmV3RG9jKQorICAgICAgICAgICAg
bmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZV9mcmFtZScpLmNvbnRl
bnREb2N1bWVudDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ld0RvYy5hZG9wdE5vZGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIG5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisgICAgICAgIH0KKyAgICAgICAgIiAKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MzwvZGl2PgorCis8IS0tIDQ6IE1vdmUgdGhl
IGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCwgYW5kIGFwcGVu
ZCBpdCAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3
aGl0ZTt0b3A6MTAwO2xlZnQ6MjUwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0NF8yJyAKKyAg
ICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9Imxv
Z01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDRfMicpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NDwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1
MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVuO3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9u
OmFic29sdXRlOycgaWQ9J3Q0XzEnIAorICAgIG9uTW91c2VPdmVyPSIKKyAgICAgICAgbG9nTW91
c2VFdmVudChldmVudCk7CisgICAgICAgIG5ld0RvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnZpc2libGVfZnJhbWUnKS5kb2N1bWVudDsKKyAgICAgICAgaWYgKCFuZXdEb2MpCisgICAg
ICAgICAgICBuZXdEb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlX2ZyYW1l
JykuY29udGVudERvY3VtZW50OworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3RG9jLmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChuZXdEb2MuYWRvcHROb2RlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0NF8xJykpKTsKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAg
IG5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Q0XzEnKSk7CisgICAgICAgIH0KKyAgICAgICAgIiAKKyAgICBvbk1vdXNlT3V0PSJsb2dN
b3VzZUV2ZW50KGV2ZW50KSI+NDwvZGl2PgorCis8IS0tIDU6IFJlbW92ZSB0aGUgZWxlbWVudCB1
bmRlciB0aGUgbW91c2UgLS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJh
Y2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjMwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0n
dDVfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1
XzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjU8L2Rpdj4KKzxkaXYgc3R5bGU9
J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlO3RvcDoxMDA7bGVmdDozMDA7
IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q1XzEnIAorICAgIG9uTW91c2VPdmVyPSIKKyAgICAg
ICAgbG9nTW91c2VFdmVudChldmVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1XzEnKSk7CisgICAgICAgICIKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+NTwvZGl2PgorCis8IS0tIDY6IEVudGVyIGEg
ZGlmZmVyZW50IGRvY3VtZW50IC0tPgorPGlmcmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyB0b3A6MTAwO2xlZnQ6MzUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAn
IHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgPGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1h
cmdpbi10b3A6MCI+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAg
IHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNl
RXZlbnQoZXZ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQu
dGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBs
b2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQ2Iikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
IndoaXRlIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNl
T3V0KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2
dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQ2Iikuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDog
NTA7IGJhY2tncm91bmQ6dmlvbGV0OyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIg
aWQ9InQ2IiAKKyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsi
IAorICAgICAgICAgICAgb25Nb3VzZU91dD0iZG9Pbk1vdXNlT3V0KGV2ZW50KSI+NjwvZGl2Pgor
ICAgIDwvYm9keT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIK
KyAgICAgICAgb25Nb3VzZU91dD0iCisgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2ZW50KTsK
KyAgICAgICAgICAgIGlmICh0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVy
SFRNTCA9PSB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cCcpLmlubmVySFRNTCkgewor
ICAgICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIgorICAg
ICAgICBpZD0iZnJhbWU2IgorICAgID48L2lmcmFtZT4KKworPGlmcmFtZSBpZD1pbnZpc2libGVf
ZnJhbWUgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowOyBib3JkZXItd2lkdGg6MCI+PC9pZnJhbWU+
CisKKzx0YWJsZSBib3JkZXI9MSB3aWR0aD0iMTAwJSIgc3R5bGU9J3RvcDoyMDA7IHBvc2l0aW9u
OmFic29sdXRlJz4KKzx0cj48dGQgd2lkdGg9IjUwJSI+TG9nPC90ZD48dGQ+RXhwZWN0ZWQgcmVz
dWx0czwvdGQ+PC90cj4KKzx0cj4KKyAgICA8dGQgaWQ9bG9nIHN0eWxlPSJ2ZXJ0aWNhbC1hbGln
bjp0b3AiPjwvdGQ+CisgICAgPHRkIGlkPWV4cCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48
bGk+bW91c2VvdmVyIG9uIHQxXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8xPC9saT48bGk+bW91
c2VvdmVyIG9uIHQxXzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8yPC9saT48bGk+bW91c2VvdmVy
IG9uIHQyXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQy
XzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQzXzE8L2xp
PjxsaT5tb3VzZW92ZXIgb24gdDNfMjwvbGk+PGxpPm1vdXNlb3V0IG9uIHQzXzI8L2xpPjxsaT5t
b3VzZW92ZXIgb24gdDRfMTwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NF8yPC9saT48bGk+bW91c2Vv
dXQgb24gdDRfMjwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NV8xPC9saT48bGk+bW91c2VvdXQgb24g
dDVfMTwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NV8yPC9saT48bGk+bW91c2VvdXQgb24gdDVfMjwv
bGk+PGxpPm1vdXNlb3ZlciBvbiBmcmFtZTY8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDY8L2xpPjxs
aT5tb3VzZW91dCBvbiB0NjwvbGk+PGxpPm1vdXNlb3V0IG9uIGZyYW1lNjwvbGk+PC90ZD4KKzwv
dHI+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogMzAwOyB0b3A6
MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgZGlzcGxheTpub25lJyBpZD0nc3VjY2Vz
cyc+PGJyPjxjZW50ZXI+U1VDQ0VTUzwvY2VudGVyPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rp
b24gYXV0b1Rlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEsMSk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBG
b3J3YXJkKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVu
dFNlbmRlci5sZWFwRm9yd2FyZCgpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oMTI1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygx
MzAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEzNSwgMTI1KTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoKTsKKworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygxNzUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDE4
MCwgMTI1KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoKTsKKworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygyMjUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDIzMCwgMTI1KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoKTsK
KworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyNzUsIDEyNSk7CisgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDI4MCwgMTI1KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVh
cEZvcndhcmQoKTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMjUsIDEyNSk7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDMzMCwgMTI1KTsKKyAgICAgICAgZXZl
bnRTZW5kZXIubGVhcEZvcndhcmQoKTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygzNzUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4MCwgMTI1KTsK
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzg1LCAxMjUpOworICAgICAgICBldmVu
dFNlbmRlci5sZWFwRm9yd2FyZCgpOworCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KDEsIDEpOworICAgIH0KK30KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21v
dXNlb3Zlci1tb3VzZW91dDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4
IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxs
KSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgorVGVzdHMgZm9yIGJ1Z3MgMzQzOSwgNTc2NCwgNzcwMSAtIE1vdXNlIGV2ZW50cyB2
cy4gRE9NIG1hbmlwdWxhdGlvbi4KKworTW92ZSB0aGUgbW91c2UgcG9pbnRlciBmcm9tIGxlZnQg
dG8gcmlnaHQ6CisKKworMworNAorCis1Cis2CitMb2cJRXhwZWN0ZWQgcmVzdWx0cworbW91c2Vv
dmVyIG9uIGZyYW1lMQorbW91c2VvdmVyIG9uIHQxCittb3VzZW91dCBvbiB0MQorbW91c2VvdXQg
b24gZnJhbWUxCittb3VzZW92ZXIgb24gZnJhbWUyCittb3VzZW92ZXIgb24gdDIKK21vdXNlb3V0
IG9uIHQyCittb3VzZW91dCBvbiBmcmFtZTIKK21vdXNlb3ZlciBvbiBmcmFtZTMKK21vdXNlb3Zl
ciBvbiB0M18xCittb3VzZW91dCBvbiBmcmFtZTMKK21vdXNlb3ZlciBvbiB0M18yCittb3VzZW91
dCBvbiB0M18yCittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVy
IG9uIGZyYW1lNAorbW91c2VvdmVyIG9uIHQ0XzEKK21vdXNlb3V0IG9uIHQ0XzEKK21vdXNlb3V0
IG9uIGZyYW1lNAorbW91c2VvdmVyIG9uIGZyYW1lNQorbW91c2VvdmVyIG9uIHQ1XzEKK21vdXNl
b3V0IG9uIGZyYW1lNQorbW91c2VvdmVyIG9uIHQ1XzIKK21vdXNlb3V0IG9uIHQ1XzIKK21vdXNl
b3ZlciBvbiB0NgorbW91c2VvdXQgb24gdDYKK21vdXNlb3ZlciBvbiBmcmFtZTEKK21vdXNlb3Zl
ciBvbiB0MQorbW91c2VvdXQgb24gdDEKK21vdXNlb3V0IG9uIGZyYW1lMQorbW91c2VvdmVyIG9u
IGZyYW1lMgorbW91c2VvdmVyIG9uIHQyCittb3VzZW91dCBvbiB0MgorbW91c2VvdXQgb24gZnJh
bWUyCittb3VzZW92ZXIgb24gZnJhbWUzCittb3VzZW92ZXIgb24gdDNfMQorbW91c2VvdXQgb24g
ZnJhbWUzCittb3VzZW92ZXIgb24gdDNfMgorbW91c2VvdXQgb24gdDNfMgorbW91c2VvdmVyIG9u
IHQ0XzIKK21vdXNlb3V0IG9uIHQ0XzIKK21vdXNlb3ZlciBvbiBmcmFtZTQKK21vdXNlb3ZlciBv
biB0NF8xCittb3VzZW91dCBvbiB0NF8xCittb3VzZW91dCBvbiBmcmFtZTQKK21vdXNlb3ZlciBv
biBmcmFtZTUKK21vdXNlb3ZlciBvbiB0NV8xCittb3VzZW91dCBvbiBmcmFtZTUKK21vdXNlb3Zl
ciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9u
IHQ2CisKK1NVQ0NFU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVy
LW1vdXNlb3V0Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21v
dXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NzkgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSJhdXRvVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbG9nJykuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGxv
Z01vdXNlRXZlbnQoZXZ0KQorICAgIHsKKyAgICAgICAgdGFyZ2V0ID0gKGV2dC50YXJnZXQpID8g
ZXZ0LnRhcmdldCA6IGV2dC5zcmNFbGVtZW50OworICAgICAgICBsb2coZXZ0LnR5cGUgKyAiIG9u
ICIgKyB0YXJnZXQuaWQpOworICAgIH0KKyAgICAKKzwvc2NyaXB0PgorPHA+VGVzdHMgZm9yIGJ1
Z3MgCis8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dp
P2lkPTM0MzkiPjM0Mzk8L2E+LCAKKzxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2lu
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2NCI+NTc2NDwvYT4sCis8YSBocmVmPSJodHRwOi8vYnVn
emlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDEiPjc3MDE8L2E+IC0KK01v
dXNlIGV2ZW50cyB2cy4gRE9NIG1hbmlwdWxhdGlvbi48L3A+Cis8cD5Nb3ZlIHRoZSBtb3VzZSBw
b2ludGVyIGZyb20gbGVmdCB0byByaWdodDo8L3A+CisKKzwhLS0gMTogRW50ZXIgYSBzdWJmcmFt
ZSAtLT4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgdG9wOjEwMDtsZWZ0
OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13aWR0aDowJyBzcmM9J2RhdGE6dGV4dC9o
dG1sLAorICAgIDxib2R5IHN0eWxlPSJtYXJnaW4tbGVmdDowOyBtYXJnaW4tdG9wOjAiPgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0b3AuZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICB0b3AuZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dNb3VzZUV2ZW50KGV2dCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSAoZXZ0LnRhcmdldCkgPyBldnQudGFy
Z2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgICAgICAgICAgbG9nKGV2dC50eXBlICsgIiBv
biAiICsgdGFyZ2V0LmlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0MSIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJ3aGl0ZSI7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvT25Nb3VzZU91dChldnQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0MSIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJncmF5IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4K
KyAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOnJl
ZDsgdG9wOjA7bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlkPSJ0MSIgCisgICAgICAgICAg
ICBvbk1vdXNlT3Zlcj0iZG9Pbk1vdXNlT3ZlcihldmVudCk7IiAKKyAgICAgICAgICAgIG9uTW91
c2VPdXQ9ImRvT25Nb3VzZU91dChldmVudCkiPjE8L2Rpdj4KKyAgICA8L2JvZHk+JworICAgICAg
ICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAgIG9uTW91c2VPdXQ9
ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyIKKyAgICAgICAgaWQ9ImZyYW1lMSIKKyAgICA+PC9pZnJh
bWU+CisKKzwhLS0gMjogTW92ZSBmcm9tIG9uZSBzdWJmcmFtZSB0byBhbm90aGVyIC0tPgorPGlm
cmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyB0b3A6MTAwO2xlZnQ6MTUwOyBwb3Np
dGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAnIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAg
PGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6MCI+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIp
OworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQudGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQu
c3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBsb2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJn
ZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dN
b3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InQyIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIndoaXRlIjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3V0KGV2dCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInQyIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyYXkiOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8
ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6b3JhbmdlOyB0b3A6
MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIgaWQ9InQyIiAKKyAgICAgICAgICAgIG9uTW91
c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAorICAgICAgICAgICAgb25Nb3VzZU91dD0i
ZG9Pbk1vdXNlT3V0KGV2ZW50KSI+MjwvZGl2PgorICAgIDwvYm9keT4nCisgICAgICAgIG9uTW91
c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIKKyAgICAgICAgb25Nb3VzZU91dD0ibG9nTW91
c2VFdmVudChldmVudCkiCisgICAgICAgIGlkPSJmcmFtZTIiCisgICAgPjwvaWZyYW1lPgorCis8
IS0tIDM6IEhpZGUgYSBzdWJmcmFtZSB1bmRlciB0aGUgbW91c2UgLS0+Cis8ZGl2IHN0eWxlPSdo
ZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjIwMDsg
cG9zaXRpb246YWJzb2x1dGU7JyBpZD0ndDNfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNl
RXZlbnQoZXZlbnQpIiAKKyAgICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3Jh
eSciPjM8L2Rpdj4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgdG9wOjEw
MDtsZWZ0OjIwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13aWR0aDowJyBzcmM9J2RhdGE6
dGV4dC9odG1sLAorICAgIDxib2R5IHN0eWxlPSJtYXJnaW4tbGVmdDowOyBtYXJnaW4tdG9wOjAi
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0b3AuZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICB0b3AuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dNb3VzZUV2ZW50KGV2dCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSAoZXZ0LnRhcmdldCkgPyBl
dnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgICAgICAgICAgbG9nKGV2dC50eXBl
ICsgIiBvbiAiICsgdGFyZ2V0LmlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAgICAgICAgICAgIHRvcC5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUzIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPGRp
diBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOnllbGxvdzsgdG9wOjA7
bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlkPSJ0M18xIiAKKyAgICAgICAgICAgIG9uTW91
c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAorICAgICAgICAgICAgb25Nb3VzZU91dD0i
bG9nTW91c2VFdmVudChldmVudCkiPjM8L2Rpdj4KKyAgICA8L2JvZHk+JworICAgICAgICBvbk1v
dXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAgIG9uTW91c2VPdXQ9ImxvZ01v
dXNlRXZlbnQoZXZlbnQpIgorICAgICAgICBpZD0iZnJhbWUzIgorICAgID48L2lmcmFtZT4KKwor
PCEtLSA0OiBTaG93IGEgc3ViZnJhbWUgdW5kZXIgdGhlIG1vdXNlIC0tPgorPGRpdiBzdHlsZT0n
aGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVuO3RvcDoxMDA7bGVmdDoyNTA7
IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q0XzInIAorICAgIG9uTW91c2VPdmVyPSJsb2dNb3Vz
ZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lNCcpLnN0eWxlLnZp
c2liaWxpdHkgPSAndmlzaWJsZSciCisgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVu
dCkiPjQ8L2Rpdj4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgdG9wOjEw
MDtsZWZ0OjI1MDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13aWR0aDowOyB2aXNpYmlsaXR5
OmhpZGRlbicgc3JjPSdkYXRhOnRleHQvaHRtbCwKKyAgICA8Ym9keSBzdHlsZT0ibWFyZ2luLWxl
ZnQ6MDsgbWFyZ2luLXRvcDowIj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBpdGVt
ID0gdG9wLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgaXRl
bS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAg
ICAgICAgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5hcHBlbmRDaGlsZChp
dGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24g
bG9nTW91c2VFdmVudChldnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gKGV2dC50YXJnZXQpID8gZXZ0LnRhcmdldCA6IGV2dC5zcmNFbGVtZW50OworICAgICAgICAg
ICAgICAgIGxvZyhldnQudHlwZSArICIgb24gIiArIHRhcmdldC5pZCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvT25Nb3VzZU91dChldnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0NF8xIikuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwv
c2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tn
cm91bmQ6d2hpdGU7IHRvcDowO2xlZnQ6MDsgcG9zaXRpb246YWJzb2x1dGU7IiBpZD0idDRfMSIg
CisgICAgICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCk7IiAKKyAgICAg
ICAgICAgIG9uTW91c2VPdXQ9ImRvT25Nb3VzZU91dChldmVudCkiPjQ8L2Rpdj4KKyAgICA8L2Jv
ZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAg
IG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIgorICAgICAgICBpZD0iZnJhbWU0Igor
ICAgID48L2lmcmFtZT4KKworPCEtLSA1OiBSZW1vdmUgdGhlIHN1YmZyYW1lIHVuZGVyIHRoZSBt
b3VzZSAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3
aGl0ZTt0b3A6MTAwO2xlZnQ6MzAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0NV8yJyAKKyAg
ICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9Imxv
Z01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDVfMicpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NTwvZGl2PgorPGlmcmFtZSBzdHlsZT0naGVpZ2h0
OiA1MDsgd2lkdGg6IDUwOyB0b3A6MTAwO2xlZnQ6MzAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9y
ZGVyLXdpZHRoOjAnIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgPGJvZHkgc3R5bGU9Im1hcmdp
bi1sZWZ0OjA7IG1hcmdpbi10b3A6MCI+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIg
aXRlbSA9IHRvcC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAg
IGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAg
ICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hp
bGQoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGxvZ01vdXNlRXZlbnQoZXZ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRh
cmdldCA9IChldnQudGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKKyAgICAg
ICAgICAgICAgICBsb2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7Cisg
ICAgICAgICAgICAgICAgdG9wLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodG9wLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmcmFtZTUiKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dy
b3VuZDpibHVlOyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIgaWQ9InQ1XzEiIAor
ICAgICAgICAgICAgb25Nb3VzZU92ZXI9ImRvT25Nb3VzZU92ZXIoZXZlbnQpOyIgCisgICAgICAg
ICAgICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+NTwvZGl2PgorICAgIDwvYm9k
eT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIKKyAgICAgICAg
b25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAgIGlkPSJmcmFtZTUiCisg
ICAgPjwvaWZyYW1lPgorCis8IS0tIDY6IE5vdGhpbmcgYnV0IGEgcmFpbmJvdyBlbmQgLS0+Cis8
ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6dmlvbGV0O3RvcDox
MDA7bGVmdDozNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q2JyAKKyAgICBvbk1vdXNlT3Zl
cj0ibG9nTW91c2VFdmVudChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0NicpLnN0
eWxlLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSciIAorICAgIG9uTW91c2VPdXQ9IgorICAgICAg
ICBsb2dNb3VzZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Q2Jykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ2dyYXknOworICAgICAgICBpZiAodG9wLmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5pbm5lckhUTUwgPT0gdG9wLmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHAnKS5pbm5lckhUTUwpIHsKKyAgICAgICAgICAgIHRvcC5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworICAg
ICAgICB9CisgICAgICAgICI+NjwvZGl2PgorCis8dGFibGUgYm9yZGVyPTEgd2lkdGg9IjEwMCUi
IHN0eWxlPSd0b3A6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZSc+Cis8dHI+PHRkIHdpZHRoPSI1MCUi
PkxvZzwvdGQ+PHRkPkV4cGVjdGVkIHJlc3VsdHM8L3RkPjwvdHI+Cis8dHI+CisgICAgPHRkIGlk
PWxvZyBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48L3RkPgorICAgIDx0ZCBpZD1leHAgc3R5
bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTE8L0xJPjxMST5t
b3VzZW92ZXIgb24gdDE8L0xJPjxMST5tb3VzZW91dCBvbiB0MTwvTEk+PExJPm1vdXNlb3V0IG9u
IGZyYW1lMTwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTI8L0xJPjxMST5tb3VzZW92ZXIgb24g
dDI8L0xJPjxMST5tb3VzZW91dCBvbiB0MjwvTEk+PExJPm1vdXNlb3V0IG9uIGZyYW1lMjwvTEk+
PExJPm1vdXNlb3ZlciBvbiBmcmFtZTM8L0xJPjxMST5tb3VzZW92ZXIgb24gdDNfMTwvTEk+PExJ
Pm1vdXNlb3V0IG9uIGZyYW1lMzwvTEk+PExJPm1vdXNlb3ZlciBvbiB0M18yPC9MST48TEk+bW91
c2VvdXQgb24gdDNfMjwvTEk+PExJPm1vdXNlb3ZlciBvbiB0NF8yPC9MST48TEk+bW91c2VvdXQg
b24gdDRfMjwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTQ8L0xJPjxMST5tb3VzZW92ZXIgb24g
dDRfMTwvTEk+PExJPm1vdXNlb3V0IG9uIHQ0XzE8L0xJPjxMST5tb3VzZW91dCBvbiBmcmFtZTQ8
L0xJPjxMST5tb3VzZW92ZXIgb24gZnJhbWU1PC9MST48TEk+bW91c2VvdmVyIG9uIHQ1XzE8L0xJ
PjxMST5tb3VzZW91dCBvbiBmcmFtZTU8L0xJPjxMST5tb3VzZW92ZXIgb24gdDVfMjwvTEk+PExJ
Pm1vdXNlb3V0IG9uIHQ1XzI8L0xJPjxMST5tb3VzZW92ZXIgb24gdDY8L0xJPjxMST5tb3VzZW91
dCBvbiB0NjwvTEk+PC90ZD4KKzwvdHI+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxlPSdoZWlnaHQ6
IDUwOyB3aWR0aDogMzAwOyB0b3A6MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgZGlz
cGxheTpub25lJyBpZD0nc3VjY2Vzcyc+PGJyPjxjZW50ZXI+U1VDQ0VTUzwvY2VudGVyPjwvZGl2
PgorCis8c2NyaXB0PgorZnVuY3Rpb24gYXV0b1Rlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOworICAgICAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCgpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAg
ICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgpOworCisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEyNSwgMTI1KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMTMwLCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMzUsIDEy
NSk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKyAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMTc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbygxODAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKCk7CisKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCAxMjUpOworICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbygyMzAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKCk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjc1LCAxMjUpOworICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyODAsIDEyNSk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLmxlYXBGb3J3YXJkKCk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzI1
LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgpOworICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbygzMzAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBG
b3J3YXJkKCk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzc1LCAxMjUpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzODAsIDEyNSk7CisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDM4NSwgMTI1KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZv
cndhcmQoKTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLCAxKTsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCisgICAgfQorfQorPC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzM3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU1LDYgKzEwNTUsNyBAQAog
CQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQjA1NTY2MDlDNjcwMDEw
MDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovOyB9OwogCQlEMEIwNTU2OTA5QzY3MDAx
MDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCMDU1NjcwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0
ZUxpbmtDb21tYW5kLmNwcCAqLzsgfTsKIAkJREQ3NjNCQjIwOTkyQzJDOTAwNzQwQjhFIC8qIGxp
YnhtbDIuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERDc2M0JCMTA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiAqLzsgfTsKKwkJ
RTFFOEIyODYwOUNDODBDRjAwNzk3OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFOEIy
ODUwOUNDODBDRjAwNzk3OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICov
OyB9OwogCQlFMUVFNzczNzA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRleHREZWNvZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNzczNTA4
RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRleHREZWNvZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFFRTc3MzgwOEYxMDg2QzAwMTY2ODcw
IC8qIFdlYkNvcmVUZXh0RGVjb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRUU3NzM2MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERl
Y29kZXIubW0gKi87IH07CiAJCUUxRjA0MjQ2MDk4MzkzODkwMDY2OTRFQSAvKiB4bWxodHRwcmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUYwNDI0NDA5ODM5Mzg5MDA2Njk0RUEgLyogeG1saHR0cHJlcXVlc3QuY3BwICovOyB9OwpAQCAt
MjE4Miw2ICsyMTgzLDcgQEAKIAkJRDBCMDU1NjYwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxp
bmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWF0ZUxpbmtD
b21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY3MDlDNjcwMDEw
MDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURENzYzQkIxMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IG5hbWUgPSBsaWJ4bWwyLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlieG1s
Mi5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJRTFFOEIyODUwOUNDODBD
RjAwNzk3OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3
MCAvKiBXZWJDb3JlVGV4dERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVGV4dERlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUUxRUU3NzM2MDhGMTA4
NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERlY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVUZXh0RGVjb2Rlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUUxRjA0MjQ0MDk4MzkzODkwMDY2OTRFQSAvKiB4bWxodHRwcmVxdWVzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB4bWxodHRwcmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDg0LDYgKzI0ODYsNyBAQAogCQkJCTY1QTIxNDgz
MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3
MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFD
MjUgLyogRnJhbWVWaWV3LmggKi8sCisJCQkJRTFFOEIyODUwOUNDODBDRjAwNzk3OTU5IC8qIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICovLAogCQkJCTkzNUM0NzYyMDlBQzRDRTYw
MEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggKi8sCiAJCQkJNjVGRUE4
NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovLAogCQkJCTY1QTIxNDY3MDk3QTMyOTEw
MEI5MDUwQSAvKiBQYWdlLmggKi8sCkBAIC01NjE2LDYgKzU2MTksNyBAQAogCQkJCTkzMENBQ0JB
MDlDNEVFNzcwMDIyOUMwNCAvKiBKU0RPTUhUTUwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMw
Q0FEMjYwOUM0RjQ5MTAwMjI5QzA0IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlEMEIwNTU2OTA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRl
TGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFOEIyODYwOUNDODBDRjAwNzk3
OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvTWFjRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2UvbWFjL01hY0ZyYW1lLm1tCShyZXZpc2lvbiAxMzM3MSkKKysrIFdlYkNvcmUvYnJp
ZGdlL21hYy9NYWNGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg1OCwyNCArMTg1OCwxMyBA
QCB2b2lkIE1hY0ZyYW1lOjpraHRtbE1vdXNlUmVsZWFzZUV2ZW50KGNvCiAgICAgX3NlbmRpbmdF
dmVudFRvU3VidmlldyA9IGZhbHNlOwogfQogCi1ib29sIE1hY0ZyYW1lOjpwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyAmZXZlbnQpCitib29s
IE1hY0ZyYW1lOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lKiBzdWJmcmFtZVBhcnQpCiB7CiAgICAgS1dRX0JMT0NL
X0VYQ0VQVElPTlM7CiAKICAgICBzd2l0Y2ggKFtfY3VycmVudEV2ZW50IHR5cGVdKSB7CiAgICAg
ICAgIGNhc2UgTlNNb3VzZU1vdmVkOiB7Ci0gICAgICAgICAgICBOb2RlSW1wbCAqbm9kZSA9IGV2
ZW50LmlubmVyTm9kZSgpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlz
V2lkZ2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgV2lk
Z2V0ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQgKj4ocmVuZGVyZXIpLT53aWRn
ZXQoKTsKLSAgICAgICAgICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgRnJhbWUgKnN1YmZy
YW1lUGFydCA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyAqPih3aWRnZXQpLT5mcmFtZSgpOwotICAg
ICAgICAgICAgaWYgKCFzdWJmcmFtZVBhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgQVNTRVJUKHN1YmZyYW1lUGFydCk7CiAgICAgICAgICAgICBbTWFjKHN1
YmZyYW1lUGFydCktPmJyaWRnZSgpIG1vdXNlTW92ZWQ6X2N1cnJlbnRFdmVudF07CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL01h
Y0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLmgJKHJl
dmlzaW9uIDEzMzcxKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZW5kQ29udGV4dE1l
bnVFdmVudChOU0V2ZW50ICopOwogCiAgICAgdmlydHVhbCBib29sIHBhc3NNb3VzZURvd25FdmVu
dFRvV2lkZ2V0KFdpZGdldCAqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgJik7CisgICAgdmlydHVhbCBi
b29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiwgRnJhbWUqKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFzc1doZWVsRXZlbnRUb0NoaWxkV2lk
Z2V0KE5vZGVJbXBsICopOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlY29yZGVkRm9y
bVZhbHVlcygpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDEzMzcxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5Myw3ICs1OTMsNyBAQCBwdWJsaWM6CiAgIHZpcnR1YWwg
dm9pZCBvcGVuVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgIHZpcnR1
YWwgdm9pZCBzdWJtaXRGb3JtKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgdmlydHVh
bCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKLSAgdmlydHVh
bCBib29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJikgPSAwOworICB2aXJ0dWFsIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWVQYXJ0ID0gMCkg
PSAwOwogICB2aXJ0dWFsIGJvb2wgcGFzc1doZWVsRXZlbnRUb0NoaWxkV2lkZ2V0KE5vZGVJbXBs
ICopID0gMDsKICAgdmlydHVhbCBib29sIGxhc3RFdmVudElzTW91c2VVcCgpIGNvbnN0ID0gMDsK
ICAgdmlydHVhbCBRU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgPSAwOwpJbmRleDog
V2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oCShyZXZpc2lvbiAx
MzM3MSkKKysrIFdlYkNvcmUvcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBGcmFtZTsKKwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyB7CiBwdWJs
aWM6CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyhjb25zdCBNb3VzZUV2ZW50JiBl
LCBjb25zdCBTdHJpbmcmIHUsIGNvbnN0IFN0cmluZyYgdCwgUGFzc1JlZlB0cjxOb2RlSW1wbD4g
bikKQEAgLTM1LDYgKzM3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3Rhcmdl
dDsgfQogICAgIE5vZGVJbXBsKiBpbm5lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9k
ZS5nZXQoKTsgfQorICAgIEZyYW1lKiBzdWJmcmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IE1vdXNlRXZlbnQgbV9ldmVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMzM3MSkK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTksMTIg
KzYxOSwyMCBAQCB2b2lkIEZyYW1lVmlldzo6dmlld3BvcnRNb3VzZU1vdmVFdmVudChjCiAgICAg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5w
cmVwYXJlTW91c2VFdmVudChkLT5tb3VzZVByZXNzZWQgJiYgbV9mcmFtZS0+bW91c2VEb3duTWF5
U3RhcnRTZWxlY3QoKSwKICAgICAgICAgZC0+bW91c2VQcmVzc2VkLCB0cnVlLCB4bSwgeW0sIG1v
dXNlRXZlbnQpOwogCi0gICAgaWYgKCFtX2ZyYW1lLT5wYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJh
bWUobWV2KSkKLSAgICAgICAgc2V0Q3Vyc29yKHNlbGVjdEN1cnNvcihtZXYsIG1fZnJhbWUuZ2V0
KCksIGQtPm1vdXNlUHJlc3NlZCkpOwotICAgICAgICAKKyAgICBpZiAobV9vbGRTdWJmcmFtZSkK
KyAgICAgICAgaWYgKCFtX2ZyYW1lLT5wYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBt
X29sZFN1YmZyYW1lLmdldCgpKSkKKyAgICAgICAgICAgIHNldEN1cnNvcihzZWxlY3RDdXJzb3Io
bWV2LCBtX2ZyYW1lLmdldCgpLCBkLT5tb3VzZVByZXNzZWQpKTsKKwogICAgIGJvb2wgc3dhbGxv
d0V2ZW50ID0gZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlbW92ZUV2ZW50LCBtZXYuaW5uZXJOb2Rl
KCksIGZhbHNlLCAwLCBtb3VzZUV2ZW50LCB0cnVlKTsKICAgICBpZiAoIXN3YWxsb3dFdmVudCkK
ICAgICAgICAgbV9mcmFtZS0+a2h0bWxNb3VzZU1vdmVFdmVudChtZXYpOworICAgIAorICAgIFJl
ZlB0cjxGcmFtZT4gbmV3U3ViZnJhbWUgPSBtZXYuc3ViZnJhbWUoKTsKKyAgICAKKyAgICBpZiAo
bmV3U3ViZnJhbWUgJiYgbV9vbGRTdWJmcmFtZSAhPSBuZXdTdWJmcmFtZSkKKyAgICAgICAgbV9m
cmFtZS0+cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgbmV3U3ViZnJhbWUuZ2V0KCkp
OworICAgIAorICAgIG1fb2xkU3ViZnJhbWUgPSBuZXdTdWJmcmFtZTsKIH0KIAogdm9pZCBGcmFt
ZVZpZXc6OmludmFsaWRhdGVDbGljaygpCkBAIC05MzcsMjggKzk0NSwyMSBAQCBib29sIEZyYW1l
Vmlldzo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0CiAgICAgICAgIGludCBjbGllbnRYLCBjbGll
bnRZOwogICAgICAgICB2aWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVudC54KCksIG1vdXNlRXZl
bnQueSgpLCBjbGllbnRYLCBjbGllbnRZKTsKICAgICAgICAgaWYgKGQtPnByZXZNb3VzZVggIT0g
Y2xpZW50WCB8fCBkLT5wcmV2TW91c2VZICE9IGNsaWVudFkpIHsKLSAgICAgICAgICAgIC8vICMj
IyB0aGlzIGNvZGUgc3Vja3MuIHdlIHNob3VsZCBzYXZlIHRoZSBvbGRVbmRlciBpbnN0ZWFkIG9m
IGNhbGN1bGF0aW5nCi0gICAgICAgICAgICAvLyBpdCBhZ2Fpbi4gY2FsY3VsYXRpbmcgaXMgZXhw
ZW5zaXZlISAoRGlyaykKLSAgICAgICAgICAgIC8vIEFsc28sIHRoZXJlJ3Mgbm8gZ3VhcmFudGVl
IHRoYXQgdGhlIG9sZCB1bmRlciBub2RlIGlzIGV2ZW4gYXJvdW5kIGFueSBtb3JlLAotICAgICAg
ICAgICAgLy8gc28gd2UgY291bGQgYmUgc2VuZGluZyBhIG1vdXNlb3V0IHRvIGEgbm9kZSB0aGF0
IG5ldmVyIGdvdCBhIG1vdXNlb3Zlci4KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlSW1wbD4gb2xk
VW5kZXI7Ci0gICAgICAgICAgICBpZiAoZC0+cHJldk1vdXNlWCA+PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgb2xkVW5kZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudCh0
cnVlLCBmYWxzZSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgZC0+cHJldk1vdXNlWCwgZC0+
cHJldk1vdXNlWSwgbW91c2VFdmVudCkuaW5uZXJOb2RlKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG9sZFVuZGVyICYmIG9sZFVuZGVyLT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAg
IG9sZFVuZGVyID0gb2xkVW5kZXItPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChtX29sZFVuZGVyICYmIG1fb2xkVW5kZXItPmdldERvY3VtZW50KCkgIT0gZnJh
bWUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtX29sZFVuZGVyID0gMDsKKwogICAg
ICAgICAgICAgZC0+cHJldk1vdXNlWCA9IGNsaWVudFg7CiAgICAgICAgICAgICBkLT5wcmV2TW91
c2VZID0gY2xpZW50WTsKLSAgICAgICAgICAgIGlmIChvbGRVbmRlciAhPSB0YXJnZXROb2RlKSB7
CisgICAgICAgICAgICBpZiAobV9vbGRVbmRlciAhPSB0YXJnZXROb2RlKSB7CiAgICAgICAgICAg
ICAgICAgLy8gc2VuZCBtb3VzZW91dCBldmVudCB0byB0aGUgb2xkIG5vZGUKLSAgICAgICAgICAg
ICAgICBpZiAob2xkVW5kZXIpCi0gICAgICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNh
c3Qob2xkVW5kZXIuZ2V0KCkpLT5kaXNwYXRjaE1vdXNlRXZlbnQobW91c2VFdmVudCwgbW91c2Vv
dXRFdmVudCwgMCwgdGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKG1fb2xkVW5kZXIp
CisgICAgICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QobV9vbGRVbmRlci5nZXQo
KSktPmRpc3BhdGNoTW91c2VFdmVudChtb3VzZUV2ZW50LCBtb3VzZW91dEV2ZW50LCAwLCB0YXJn
ZXROb2RlKTsKICAgICAgICAgICAgICAgICAvLyBzZW5kIG1vdXNlb3ZlciBldmVudCB0byB0aGUg
bmV3IG5vZGUKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Tm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdCh0YXJnZXROb2RlKS0+ZGlzcGF0Y2hNb3VzZUV2ZW50
KG1vdXNlRXZlbnQsIG1vdXNlb3ZlckV2ZW50LCAwLCBvbGRVbmRlci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QodGFyZ2V0Tm9kZSktPmRpc3BhdGNoTW91
c2VFdmVudChtb3VzZUV2ZW50LCBtb3VzZW92ZXJFdmVudCwgMCwgbV9vbGRVbmRlci5nZXQoKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9vbGRVbmRlciA9IHRhcmdldE5v
ZGU7CiAgICAgfQogCiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgJKHJldmlzaW9uIDEzMzcxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzgsNiArMjM4LDkgQEAgcHJpdmF0ZToKICAgICBGcmFtZVZpZXdQcml2YXRl
KiBkOwogCiAgICAgUVN0cmluZyBtX21lZGl1bTsgLy8gbWVkaWEgdHlwZQorICAgIAorICAgIFJl
ZlB0cjxOb2RlSW1wbD4gbV9vbGRVbmRlcjsKKyAgICBSZWZQdHI8RnJhbWU+IG1fb2xkU3ViZnJh
bWU7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9w
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmgiCisKKyNpbXBvcnQgIkZyYW1lLmgiCisjaW1wb3J0ICJGcmFtZVZp
ZXcuaCIKKyNpbXBvcnQgInJlbmRlcl9yZXBsYWNlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0ZyYW1lKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOjpzdWJmcmFtZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2lubmVyTm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5k
ZXJPYmplY3QgKnJlbmRlcmVyID0gbV9pbm5lck5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgV2lkZ2V0ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQgKj4ocmVuZGVyZXIp
LT53aWRnZXQoKTsKKyAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZVZpZXcgKj4o
d2lkZ2V0KS0+ZnJhbWUoKTsKK30KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7169</attachid>
            <date>2006-03-18 22:29:45 -0800</date>
            <delta_ts>2006-03-19 12:35:31 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>3439r3_patch.txt</filename>
            <type>text/plain</type>
            <size>35938</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVyLW1v
dXNlb3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjEgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCitUZXN0cyBmb3IgYnVncyAzNDM5LCA1NzY0LCA3NzAxIC0gTW91c2UgZXZl
bnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLgorCitNb3ZlIHRoZSBtb3VzZSBwb2ludGVyIGZyb20g
bGVmdCB0byByaWdodDoKKworMcKgwqDCoMKgIMKgwqDCoMKgIMKgwqDCoMKgCisxwqDCoMKgwqAg
wqDCoMKgwqAgwqDCoMKgwqAKKzIKKzMKKzQKKzUKKworTG9nCUV4cGVjdGVkIHJlc3VsdHMKK21v
dXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24gdDFfMgorbW91
c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQyXzEKK21vdXNl
b3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNfMQorbW91c2Vv
dmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8xCittb3VzZW92
ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEKK21vdXNlb3V0
IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIg
b24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3VzZW91dCBvbiBm
cmFtZTYKK21vdXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24g
dDFfMgorbW91c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQy
XzEKK21vdXNlb3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNf
MQorbW91c2VvdmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8x
Cittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEK
K21vdXNlb3V0IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCitt
b3VzZW92ZXIgb24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3Vz
ZW91dCBvbiBmcmFtZTYKKworU1VDQ0VTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3OSBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImF1dG9UZXN0KCkiPgorPHNjcmlw
dD4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gbG9nTW91c2VFdmVudChldnQpCisgICAgeworICAgICAgICB0YXJnZXQgPSAoZXZ0LnRh
cmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgIGxvZyhldnQudHlw
ZSArICIgb24gIiArIHRhcmdldC5pZCk7CisgICAgfQorICAgIAorPC9zY3JpcHQ+Cis8cD5UZXN0
cyBmb3IgYnVncyAKKzxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzQzOSI+MzQzOTwvYT4sIAorPGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY0Ij41NzY0PC9hPiwKKzxhIGhyZWY9Imh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMSI+NzcwMTwv
YT4gLQorTW91c2UgZXZlbnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLjwvcD4KKzxwPk1vdmUgdGhl
IG1vdXNlIHBvaW50ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvcD4KKworPCEtLSAxOiBTaG93IGFu
IGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lk
dGg6IDUwOyBiYWNrZ3JvdW5kOnJlZDt0b3A6MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0MV8xJyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCk7IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0MV8yJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayciCisg
ICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCk7Ij4xJm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg
PC9kaXY+Cis8ZGl2IHN0eWxlPSdkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDUwOyB3aWR0aDogNTA7
IGJhY2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBp
ZD0ndDFfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBv
bk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3QxXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjEmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyA8L2Rpdj4KKworPCEtLSAyOiBIaWRlIGFuIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgor
PGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOndoaXRlO3RvcDox
MDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3QyXzInIAorICAgIG9uTW91c2VP
dmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCisgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVu
dChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ml8yJykuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gJ2dyYXknIj4yPC9kaXY+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDog
NTA7IGJhY2tncm91bmQ6b3JhbmdlO3RvcDoxMDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRl
OycgaWQ9J3QyXzEnIAorICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QyXzEnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnIiAKKyAg
ICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MjwvZGl2PgorCis8IS0tIDM6IE1v
dmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCAtLT4K
KzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6
MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0M18yJyAKKyAgICBvbk1vdXNl
T3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZl
bnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDNfMicpLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICdncmF5JyI+MzwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyBiYWNrZ3JvdW5kOnllbGxvdzt0b3A6MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0M18xJyAKKyAgICBvbk1vdXNlT3Zlcj0iCisgICAgICAgIGxvZ01vdXNlRXZlbnQo
ZXZlbnQpOworICAgICAgICBuZXdEb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNp
YmxlX2ZyYW1lJykuZG9jdW1lbnQ7CisgICAgICAgIGlmICghbmV3RG9jKQorICAgICAgICAgICAg
bmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZV9mcmFtZScpLmNvbnRl
bnREb2N1bWVudDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ld0RvYy5hZG9wdE5vZGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIG5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisgICAgICAgIH0KKyAgICAgICAgIiAKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MzwvZGl2PgorCis8IS0tIDQ6IE1vdmUgdGhl
IGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCwgYW5kIGFwcGVu
ZCBpdCAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3
aGl0ZTt0b3A6MTAwO2xlZnQ6MjUwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0NF8yJyAKKyAg
ICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9Imxv
Z01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDRfMicpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NDwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1
MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVuO3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9u
OmFic29sdXRlOycgaWQ9J3Q0XzEnIAorICAgIG9uTW91c2VPdmVyPSIKKyAgICAgICAgbG9nTW91
c2VFdmVudChldmVudCk7CisgICAgICAgIG5ld0RvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnZpc2libGVfZnJhbWUnKS5kb2N1bWVudDsKKyAgICAgICAgaWYgKCFuZXdEb2MpCisgICAg
ICAgICAgICBuZXdEb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlX2ZyYW1l
JykuY29udGVudERvY3VtZW50OworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3RG9jLmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChuZXdEb2MuYWRvcHROb2RlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0NF8xJykpKTsKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAg
IG5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Q0XzEnKSk7CisgICAgICAgIH0KKyAgICAgICAgIiAKKyAgICBvbk1vdXNlT3V0PSJsb2dN
b3VzZUV2ZW50KGV2ZW50KSI+NDwvZGl2PgorCis8IS0tIDU6IFJlbW92ZSB0aGUgZWxlbWVudCB1
bmRlciB0aGUgbW91c2UgLS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJh
Y2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjMwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0n
dDVfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1
XzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjU8L2Rpdj4KKzxkaXYgc3R5bGU9
J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlO3RvcDoxMDA7bGVmdDozMDA7
IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q1XzEnIAorICAgIG9uTW91c2VPdmVyPSIKKyAgICAg
ICAgbG9nTW91c2VFdmVudChldmVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1XzEnKSk7CisgICAgICAgICIKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+NTwvZGl2PgorCis8IS0tIDY6IEVudGVyIGEg
ZGlmZmVyZW50IGRvY3VtZW50IC0tPgorPGlmcmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyB0b3A6MTAwO2xlZnQ6MzUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAn
IHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgPGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1h
cmdpbi10b3A6MCI+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAg
IHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNl
RXZlbnQoZXZ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQu
dGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBs
b2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQ2Iikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
IndoaXRlIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNl
T3V0KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2
dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQ2Iikuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDog
NTA7IGJhY2tncm91bmQ6dmlvbGV0OyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIg
aWQ9InQ2IiAKKyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsi
IAorICAgICAgICAgICAgb25Nb3VzZU91dD0iZG9Pbk1vdXNlT3V0KGV2ZW50KSI+NjwvZGl2Pgor
ICAgIDwvYm9keT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIK
KyAgICAgICAgb25Nb3VzZU91dD0iCisgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2ZW50KTsK
KyAgICAgICAgICAgIGlmICh0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVy
SFRNTCA9PSB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cCcpLmlubmVySFRNTCkgewor
ICAgICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIgorICAg
ICAgICBpZD0iZnJhbWU2IgorICAgID48L2lmcmFtZT4KKworPGlmcmFtZSBpZD1pbnZpc2libGVf
ZnJhbWUgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowOyBib3JkZXItd2lkdGg6MCI+PC9pZnJhbWU+
CisKKzx0YWJsZSBib3JkZXI9MSB3aWR0aD0iMTAwJSIgc3R5bGU9J3RvcDoyMDA7IHBvc2l0aW9u
OmFic29sdXRlJz4KKzx0cj48dGQgd2lkdGg9IjUwJSI+TG9nPC90ZD48dGQ+RXhwZWN0ZWQgcmVz
dWx0czwvdGQ+PC90cj4KKzx0cj4KKyAgICA8dGQgaWQ9bG9nIHN0eWxlPSJ2ZXJ0aWNhbC1hbGln
bjp0b3AiPjwvdGQ+CisgICAgPHRkIGlkPWV4cCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48
bGk+bW91c2VvdmVyIG9uIHQxXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8xPC9saT48bGk+bW91
c2VvdmVyIG9uIHQxXzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8yPC9saT48bGk+bW91c2VvdmVy
IG9uIHQyXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQy
XzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQzXzE8L2xp
PjxsaT5tb3VzZW92ZXIgb24gdDNfMjwvbGk+PGxpPm1vdXNlb3V0IG9uIHQzXzI8L2xpPjxsaT5t
b3VzZW92ZXIgb24gdDRfMTwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NF8yPC9saT48bGk+bW91c2Vv
dXQgb24gdDRfMjwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NV8xPC9saT48bGk+bW91c2VvdXQgb24g
dDVfMTwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NV8yPC9saT48bGk+bW91c2VvdXQgb24gdDVfMjwv
bGk+PGxpPm1vdXNlb3ZlciBvbiBmcmFtZTY8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDY8L2xpPjxs
aT5tb3VzZW91dCBvbiB0NjwvbGk+PGxpPm1vdXNlb3V0IG9uIGZyYW1lNjwvbGk+PC90ZD4KKzwv
dHI+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogMzAwOyB0b3A6
MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgZGlzcGxheTpub25lJyBpZD0nc3VjY2Vz
cyc+PGJyPjxjZW50ZXI+U1VDQ0VTUzwvY2VudGVyPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rp
b24gYXV0b1Rlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEsMSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMTI1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbygxMzAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEzNSwgMTI1
KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxNzUsIDEyNSk7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDE4MCwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbygyMjUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KDIzMCwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyNzUsIDEyNSk7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDI4MCwgMTI1KTsKKworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygzMjUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDMzMCwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygz
NzUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4MCwgMTI1KTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzg1LCAxMjUpOworCisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEsIDEpOworICAgIH0KK30KKzwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2Vv
dXQyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
b3VzZW92ZXItbW91c2VvdXQyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY4IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorVGVzdHMgZm9yIGJ1Z3MgMzQzOSwgNTc2NCwgNzcw
MSAtIE1vdXNlIGV2ZW50cyB2cy4gRE9NIG1hbmlwdWxhdGlvbi4KKworTW92ZSB0aGUgbW91c2Ug
cG9pbnRlciBmcm9tIGxlZnQgdG8gcmlnaHQ6CisKKworMworNAorCis1Cis2CitMb2cJRXhwZWN0
ZWQgcmVzdWx0cworbW91c2VvdmVyIG9uIGZyYW1lMQorbW91c2VvdmVyIG9uIHQxCittb3VzZW91
dCBvbiB0MQorbW91c2VvdXQgb24gZnJhbWUxCittb3VzZW92ZXIgb24gZnJhbWUyCittb3VzZW92
ZXIgb24gdDIKK21vdXNlb3V0IG9uIHQyCittb3VzZW91dCBvbiBmcmFtZTIKK21vdXNlb3ZlciBv
biBmcmFtZTMKK21vdXNlb3ZlciBvbiB0M18xCittb3VzZW91dCBvbiBmcmFtZTMKK21vdXNlb3Zl
ciBvbiB0M18yCittb3VzZW91dCBvbiB0M18yCittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQg
b24gdDRfMgorbW91c2VvdmVyIG9uIGZyYW1lNAorbW91c2VvdmVyIG9uIHQ0XzEKK21vdXNlb3V0
IG9uIHQ0XzEKK21vdXNlb3V0IG9uIGZyYW1lNAorbW91c2VvdmVyIG9uIGZyYW1lNQorbW91c2Vv
dmVyIG9uIHQ1XzEKK21vdXNlb3V0IG9uIGZyYW1lNQorbW91c2VvdmVyIG9uIHQ1XzIKK21vdXNl
b3V0IG9uIHQ1XzIKK21vdXNlb3ZlciBvbiB0NgorbW91c2VvdXQgb24gdDYKK21vdXNlb3ZlciBv
biBmcmFtZTEKK21vdXNlb3ZlciBvbiB0MQorbW91c2VvdXQgb24gdDEKK21vdXNlb3V0IG9uIGZy
YW1lMQorbW91c2VvdmVyIG9uIGZyYW1lMgorbW91c2VvdmVyIG9uIHQyCittb3VzZW91dCBvbiB0
MgorbW91c2VvdXQgb24gZnJhbWUyCittb3VzZW92ZXIgb24gZnJhbWUzCittb3VzZW92ZXIgb24g
dDNfMQorbW91c2VvdXQgb24gZnJhbWUzCittb3VzZW92ZXIgb24gdDNfMgorbW91c2VvdXQgb24g
dDNfMgorbW91c2VvdmVyIG9uIHQ0XzIKK21vdXNlb3V0IG9uIHQ0XzIKK21vdXNlb3ZlciBvbiBm
cmFtZTQKK21vdXNlb3ZlciBvbiB0NF8xCittb3VzZW91dCBvbiB0NF8xCittb3VzZW91dCBvbiBm
cmFtZTQKK21vdXNlb3ZlciBvbiBmcmFtZTUKK21vdXNlb3ZlciBvbiB0NV8xCittb3VzZW91dCBv
biBmcmFtZTUKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIg
b24gdDYKK21vdXNlb3V0IG9uIHQ2CisKK1NVQ0NFU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbW91c2VvdmVyLW1vdXNlb3V0Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNjkgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSJhdXRvVGVzdCgp
Ij4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2
YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0KQorICAgIHsKKyAgICAgICAgdGFyZ2V0
ID0gKGV2dC50YXJnZXQpID8gZXZ0LnRhcmdldCA6IGV2dC5zcmNFbGVtZW50OworICAgICAgICBs
b2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgIH0KKyAgICAKKzwvc2NyaXB0
PgorPHA+VGVzdHMgZm9yIGJ1Z3MgCis8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzkiPjM0Mzk8L2E+LCAKKzxhIGhyZWY9Imh0dHA6Ly9i
dWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2NCI+NTc2NDwvYT4sCis8
YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTc3
MDEiPjc3MDE8L2E+IC0KK01vdXNlIGV2ZW50cyB2cy4gRE9NIG1hbmlwdWxhdGlvbi48L3A+Cis8
cD5Nb3ZlIHRoZSBtb3VzZSBwb2ludGVyIGZyb20gbGVmdCB0byByaWdodDo8L3A+CisKKzwhLS0g
MTogRW50ZXIgYSBzdWJmcmFtZSAtLT4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRo
OiA1MDsgdG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13aWR0aDow
JyBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAgIDxib2R5IHN0eWxlPSJtYXJnaW4tbGVmdDowOyBt
YXJnaW4tdG9wOjAiPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0b3Au
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAg
ICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGl0ZW0pOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dNb3Vz
ZUV2ZW50KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSAoZXZ0
LnRhcmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgICAgICAgICAg
bG9nKGV2dC50eXBlICsgIiBvbiAiICsgdGFyZ2V0LmlkKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0MSIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJ3aGl0ZSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvT25Nb3Vz
ZU91dChldnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChl
dnQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0MSIpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICJncmF5IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyBiYWNrZ3JvdW5kOnJlZDsgdG9wOjA7bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlk
PSJ0MSIgCisgICAgICAgICAgICBvbk1vdXNlT3Zlcj0iZG9Pbk1vdXNlT3ZlcihldmVudCk7IiAK
KyAgICAgICAgICAgIG9uTW91c2VPdXQ9ImRvT25Nb3VzZU91dChldmVudCkiPjE8L2Rpdj4KKyAg
ICA8L2JvZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisg
ICAgICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyIKKyAgICAgICAgaWQ9ImZy
YW1lMSIKKyAgICA+PC9pZnJhbWU+CisKKzwhLS0gMjogTW92ZSBmcm9tIG9uZSBzdWJmcmFtZSB0
byBhbm90aGVyIC0tPgorPGlmcmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyB0b3A6
MTAwO2xlZnQ6MTUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAnIHNyYz0nZGF0
YTp0ZXh0L2h0bWwsCisgICAgPGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6
MCI+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5kb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIHRvcC5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQudGFyZ2V0KSA/
IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBsb2coZXZ0LnR5
cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInQyIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIndoaXRlIjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3V0KGV2dCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQyIikuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwv
c2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tn
cm91bmQ6b3JhbmdlOyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIgaWQ9InQyIiAK
KyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAorICAgICAg
ICAgICAgb25Nb3VzZU91dD0iZG9Pbk1vdXNlT3V0KGV2ZW50KSI+MjwvZGl2PgorICAgIDwvYm9k
eT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIKKyAgICAgICAg
b25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAgIGlkPSJmcmFtZTIiCisg
ICAgPjwvaWZyYW1lPgorCis8IS0tIDM6IEhpZGUgYSBzdWJmcmFtZSB1bmRlciB0aGUgbW91c2Ug
LS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7
dG9wOjEwMDtsZWZ0OjIwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0ndDNfMicgCisgICAgb25N
b3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBvbk1vdXNlT3V0PSJsb2dNb3Vz
ZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzInKS5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAnZ3JheSciPjM8L2Rpdj4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7
IHdpZHRoOiA1MDsgdG9wOjEwMDtsZWZ0OjIwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13
aWR0aDowJyBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAgIDxib2R5IHN0eWxlPSJtYXJnaW4tbGVm
dDowOyBtYXJnaW4tdG9wOjAiPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0g
PSB0b3AuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVt
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAg
ICAgICAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGl0
ZW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBs
b2dNb3VzZUV2ZW50KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQg
PSAoZXZ0LnRhcmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgICAg
ICAgICAgbG9nKGV2dC50eXBlICsgIiBvbiAiICsgdGFyZ2V0LmlkKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAg
ICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUzIikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3Jv
dW5kOnllbGxvdzsgdG9wOjA7bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlkPSJ0M18xIiAK
KyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAorICAgICAg
ICAgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiPjM8L2Rpdj4KKyAgICA8L2Jv
ZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAg
IG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIgorICAgICAgICBpZD0iZnJhbWUzIgor
ICAgID48L2lmcmFtZT4KKworPCEtLSA0OiBTaG93IGEgc3ViZnJhbWUgdW5kZXIgdGhlIG1vdXNl
IC0tPgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVu
O3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q0XzInIAorICAgIG9u
TW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ZyYW1lNCcpLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSciCisgICAgb25Nb3VzZU91dD0i
bG9nTW91c2VFdmVudChldmVudCkiPjQ8L2Rpdj4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7
IHdpZHRoOiA1MDsgdG9wOjEwMDtsZWZ0OjI1MDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13
aWR0aDowOyB2aXNpYmlsaXR5OmhpZGRlbicgc3JjPSdkYXRhOnRleHQvaHRtbCwKKyAgICA8Ym9k
eSBzdHlsZT0ibWFyZ2luLWxlZnQ6MDsgbWFyZ2luLXRvcDowIj4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciBpdGVtID0gdG9wLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Cisg
ICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gbG9nTW91c2VFdmVudChldnQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdGFyZ2V0ID0gKGV2dC50YXJnZXQpID8gZXZ0LnRhcmdldCA6IGV2dC5zcmNF
bGVtZW50OworICAgICAgICAgICAgICAgIGxvZyhldnQudHlwZSArICIgb24gIiArIHRhcmdldC5p
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRv
T25Nb3VzZU91dChldnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VF
dmVudChldnQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0NF8x
Iikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUw
OyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7IHRvcDowO2xlZnQ6MDsgcG9zaXRpb246YWJz
b2x1dGU7IiBpZD0idDRfMSIgCisgICAgICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVu
dChldmVudCk7IiAKKyAgICAgICAgICAgIG9uTW91c2VPdXQ9ImRvT25Nb3VzZU91dChldmVudCki
PjQ8L2Rpdj4KKyAgICA8L2JvZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVu
dChldmVudCkiCisgICAgICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIgorICAg
ICAgICBpZD0iZnJhbWU0IgorICAgID48L2lmcmFtZT4KKworPCEtLSA1OiBSZW1vdmUgdGhlIHN1
YmZyYW1lIHVuZGVyIHRoZSBtb3VzZSAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRo
OiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6MTAwO2xlZnQ6MzAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0NV8yJyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAor
ICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndDVfMicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NTwvZGl2PgorPGlm
cmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyB0b3A6MTAwO2xlZnQ6MzAwOyBwb3Np
dGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAnIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAg
PGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6MCI+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIp
OworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQudGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQu
c3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBsb2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJn
ZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dN
b3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAgICAgdG9wLmRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQodG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZTUiKSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDogNTA7
IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlOyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29s
dXRlOyIgaWQ9InQ1XzEiIAorICAgICAgICAgICAgb25Nb3VzZU92ZXI9ImRvT25Nb3VzZU92ZXIo
ZXZlbnQpOyIgCisgICAgICAgICAgICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+
NTwvZGl2PgorICAgIDwvYm9keT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50
KGV2ZW50KSIKKyAgICAgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAg
ICAgIGlkPSJmcmFtZTUiCisgICAgPjwvaWZyYW1lPgorCis8IS0tIDY6IE5vdGhpbmcgYnV0IGEg
cmFpbmJvdyBlbmQgLS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tn
cm91bmQ6dmlvbGV0O3RvcDoxMDA7bGVmdDozNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q2
JyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCk7IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0NicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSciIAorICAgIG9u
TW91c2VPdXQ9IgorICAgICAgICBsb2dNb3VzZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Q2Jykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ2dyYXknOwor
ICAgICAgICBpZiAodG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5pbm5lckhUTUwg
PT0gdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHAnKS5pbm5lckhUTUwpIHsKKyAgICAg
ICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0eWxlLmRpc3Bs
YXkgPSAnYmxvY2snOworICAgICAgICB9CisgICAgICAgICI+NjwvZGl2PgorCis8dGFibGUgYm9y
ZGVyPTEgd2lkdGg9IjEwMCUiIHN0eWxlPSd0b3A6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZSc+Cis8
dHI+PHRkIHdpZHRoPSI1MCUiPkxvZzwvdGQ+PHRkPkV4cGVjdGVkIHJlc3VsdHM8L3RkPjwvdHI+
Cis8dHI+CisgICAgPHRkIGlkPWxvZyBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48L3RkPgor
ICAgIDx0ZCBpZD1leHAgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+PExJPm1vdXNlb3ZlciBv
biBmcmFtZTE8L0xJPjxMST5tb3VzZW92ZXIgb24gdDE8L0xJPjxMST5tb3VzZW91dCBvbiB0MTwv
TEk+PExJPm1vdXNlb3V0IG9uIGZyYW1lMTwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTI8L0xJ
PjxMST5tb3VzZW92ZXIgb24gdDI8L0xJPjxMST5tb3VzZW91dCBvbiB0MjwvTEk+PExJPm1vdXNl
b3V0IG9uIGZyYW1lMjwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTM8L0xJPjxMST5tb3VzZW92
ZXIgb24gdDNfMTwvTEk+PExJPm1vdXNlb3V0IG9uIGZyYW1lMzwvTEk+PExJPm1vdXNlb3ZlciBv
biB0M18yPC9MST48TEk+bW91c2VvdXQgb24gdDNfMjwvTEk+PExJPm1vdXNlb3ZlciBvbiB0NF8y
PC9MST48TEk+bW91c2VvdXQgb24gdDRfMjwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTQ8L0xJ
PjxMST5tb3VzZW92ZXIgb24gdDRfMTwvTEk+PExJPm1vdXNlb3V0IG9uIHQ0XzE8L0xJPjxMST5t
b3VzZW91dCBvbiBmcmFtZTQ8L0xJPjxMST5tb3VzZW92ZXIgb24gZnJhbWU1PC9MST48TEk+bW91
c2VvdmVyIG9uIHQ1XzE8L0xJPjxMST5tb3VzZW91dCBvbiBmcmFtZTU8L0xJPjxMST5tb3VzZW92
ZXIgb24gdDVfMjwvTEk+PExJPm1vdXNlb3V0IG9uIHQ1XzI8L0xJPjxMST5tb3VzZW92ZXIgb24g
dDY8L0xJPjxMST5tb3VzZW91dCBvbiB0NjwvTEk+PC90ZD4KKzwvdHI+Cis8L3RhYmxlPgorCis8
ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogMzAwOyB0b3A6MTAwO2xlZnQ6MTAwOyBwb3Np
dGlvbjphYnNvbHV0ZTsgZGlzcGxheTpub25lJyBpZD0nc3VjY2Vzcyc+PGJyPjxjZW50ZXI+U1VD
Q0VTUzwvY2VudGVyPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gYXV0b1Rlc3QoKSB7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEyNSwgMTI1KTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTMwLCAxMjUpOworICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbygxMzUsIDEyNSk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMTc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxODAsIDEy
NSk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCAxMjUpOworICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMzAsIDEyNSk7CisKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oMjc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygyODAsIDEyNSk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzI1LCAxMjUp
OworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMzAsIDEyNSk7CisKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygzODAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4
NSwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLCAxKTsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCisgICAgfQorfQorPC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzM3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU1LDYgKzEwNTUsNyBAQAog
CQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQjA1NTY2MDlDNjcwMDEw
MDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovOyB9OwogCQlEMEIwNTU2OTA5QzY3MDAx
MDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCMDU1NjcwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0
ZUxpbmtDb21tYW5kLmNwcCAqLzsgfTsKIAkJREQ3NjNCQjIwOTkyQzJDOTAwNzQwQjhFIC8qIGxp
YnhtbDIuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERDc2M0JCMTA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiAqLzsgfTsKKwkJ
RTFFOEIyODYwOUNDODBDRjAwNzk3OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFOEIy
ODUwOUNDODBDRjAwNzk3OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICov
OyB9OwogCQlFMUVFNzczNzA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRleHREZWNvZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNzczNTA4
RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRleHREZWNvZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFFRTc3MzgwOEYxMDg2QzAwMTY2ODcw
IC8qIFdlYkNvcmVUZXh0RGVjb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRUU3NzM2MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERl
Y29kZXIubW0gKi87IH07CiAJCUUxRjA0MjQ2MDk4MzkzODkwMDY2OTRFQSAvKiB4bWxodHRwcmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUYwNDI0NDA5ODM5Mzg5MDA2Njk0RUEgLyogeG1saHR0cHJlcXVlc3QuY3BwICovOyB9OwpAQCAt
MjE4Miw2ICsyMTgzLDcgQEAKIAkJRDBCMDU1NjYwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxp
bmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWF0ZUxpbmtD
b21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY3MDlDNjcwMDEw
MDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURENzYzQkIxMDk5MkMyQzkwMDc0MEI4RSAvKiBsaWJ4bWwyLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IG5hbWUgPSBsaWJ4bWwyLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlieG1s
Mi5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJRTFFOEIyODUwOUNDODBD
RjAwNzk3OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3
MCAvKiBXZWJDb3JlVGV4dERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVGV4dERlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUUxRUU3NzM2MDhGMTA4
NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERlY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVUZXh0RGVjb2Rlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUUxRjA0MjQ0MDk4MzkzODkwMDY2OTRFQSAvKiB4bWxodHRwcmVxdWVzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB4bWxodHRwcmVxdWVzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDg0LDYgKzI0ODYsNyBAQAogCQkJCTY1QTIxNDgz
MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3
MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFD
MjUgLyogRnJhbWVWaWV3LmggKi8sCisJCQkJRTFFOEIyODUwOUNDODBDRjAwNzk3OTU5IC8qIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICovLAogCQkJCTkzNUM0NzYyMDlBQzRDRTYw
MEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggKi8sCiAJCQkJNjVGRUE4
NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovLAogCQkJCTY1QTIxNDY3MDk3QTMyOTEw
MEI5MDUwQSAvKiBQYWdlLmggKi8sCkBAIC01NjE2LDYgKzU2MTksNyBAQAogCQkJCTkzMENBQ0JB
MDlDNEVFNzcwMDIyOUMwNCAvKiBKU0RPTUhUTUwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMw
Q0FEMjYwOUM0RjQ5MTAwMjI5QzA0IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlEMEIwNTU2OTA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRl
TGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFOEIyODYwOUNDODBDRjAwNzk3
OTU5IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvTWFjRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2UvbWFjL01hY0ZyYW1lLm1tCShyZXZpc2lvbiAxMzM3MSkKKysrIFdlYkNvcmUvYnJp
ZGdlL21hYy9NYWNGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg1OCwyNCArMTg1OCwxMyBA
QCB2b2lkIE1hY0ZyYW1lOjpraHRtbE1vdXNlUmVsZWFzZUV2ZW50KGNvCiAgICAgX3NlbmRpbmdF
dmVudFRvU3VidmlldyA9IGZhbHNlOwogfQogCi1ib29sIE1hY0ZyYW1lOjpwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyAmZXZlbnQpCitib29s
IE1hY0ZyYW1lOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lKiBzdWJmcmFtZVBhcnQpCiB7CiAgICAgS1dRX0JMT0NL
X0VYQ0VQVElPTlM7CiAKICAgICBzd2l0Y2ggKFtfY3VycmVudEV2ZW50IHR5cGVdKSB7CiAgICAg
ICAgIGNhc2UgTlNNb3VzZU1vdmVkOiB7Ci0gICAgICAgICAgICBOb2RlSW1wbCAqbm9kZSA9IGV2
ZW50LmlubmVyTm9kZSgpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlz
V2lkZ2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgV2lk
Z2V0ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQgKj4ocmVuZGVyZXIpLT53aWRn
ZXQoKTsKLSAgICAgICAgICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgRnJhbWUgKnN1YmZy
YW1lUGFydCA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyAqPih3aWRnZXQpLT5mcmFtZSgpOwotICAg
ICAgICAgICAgaWYgKCFzdWJmcmFtZVBhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgQVNTRVJUKHN1YmZyYW1lUGFydCk7CiAgICAgICAgICAgICBbTWFjKHN1
YmZyYW1lUGFydCktPmJyaWRnZSgpIG1vdXNlTW92ZWQ6X2N1cnJlbnRFdmVudF07CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL01h
Y0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLmgJKHJl
dmlzaW9uIDEzMzcxKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZW5kQ29udGV4dE1l
bnVFdmVudChOU0V2ZW50ICopOwogCiAgICAgdmlydHVhbCBib29sIHBhc3NNb3VzZURvd25FdmVu
dFRvV2lkZ2V0KFdpZGdldCAqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgJik7CisgICAgdmlydHVhbCBi
b29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiwgRnJhbWUqKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFzc1doZWVsRXZlbnRUb0NoaWxkV2lk
Z2V0KE5vZGVJbXBsICopOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlY29yZGVkRm9y
bVZhbHVlcygpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDEzMzcxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5Myw3ICs1OTMsNyBAQCBwdWJsaWM6CiAgIHZpcnR1YWwg
dm9pZCBvcGVuVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgIHZpcnR1
YWwgdm9pZCBzdWJtaXRGb3JtKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgdmlydHVh
bCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKLSAgdmlydHVh
bCBib29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJikgPSAwOworICB2aXJ0dWFsIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWVQYXJ0ID0gMCkg
PSAwOwogICB2aXJ0dWFsIGJvb2wgcGFzc1doZWVsRXZlbnRUb0NoaWxkV2lkZ2V0KE5vZGVJbXBs
ICopID0gMDsKICAgdmlydHVhbCBib29sIGxhc3RFdmVudElzTW91c2VVcCgpIGNvbnN0ID0gMDsK
ICAgdmlydHVhbCBRU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgPSAwOwpJbmRleDog
V2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oCShyZXZpc2lvbiAx
MzM3MSkKKysrIFdlYkNvcmUvcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBGcmFtZTsKKwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyB7CiBwdWJs
aWM6CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyhjb25zdCBNb3VzZUV2ZW50JiBl
LCBjb25zdCBTdHJpbmcmIHUsIGNvbnN0IFN0cmluZyYgdCwgUGFzc1JlZlB0cjxOb2RlSW1wbD4g
bikKQEAgLTM1LDYgKzM3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3Rhcmdl
dDsgfQogICAgIE5vZGVJbXBsKiBpbm5lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9k
ZS5nZXQoKTsgfQorICAgIEZyYW1lKiBzdWJmcmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IE1vdXNlRXZlbnQgbV9ldmVudDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMzM3MSkK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTksMTIg
KzYxOSwyMCBAQCB2b2lkIEZyYW1lVmlldzo6dmlld3BvcnRNb3VzZU1vdmVFdmVudChjCiAgICAg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5w
cmVwYXJlTW91c2VFdmVudChkLT5tb3VzZVByZXNzZWQgJiYgbV9mcmFtZS0+bW91c2VEb3duTWF5
U3RhcnRTZWxlY3QoKSwKICAgICAgICAgZC0+bW91c2VQcmVzc2VkLCB0cnVlLCB4bSwgeW0sIG1v
dXNlRXZlbnQpOwogCi0gICAgaWYgKCFtX2ZyYW1lLT5wYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJh
bWUobWV2KSkKLSAgICAgICAgc2V0Q3Vyc29yKHNlbGVjdEN1cnNvcihtZXYsIG1fZnJhbWUuZ2V0
KCksIGQtPm1vdXNlUHJlc3NlZCkpOwotICAgICAgICAKKyAgICBpZiAobV9vbGRTdWJmcmFtZSkK
KyAgICAgICAgaWYgKCFtX2ZyYW1lLT5wYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBt
X29sZFN1YmZyYW1lLmdldCgpKSkKKyAgICAgICAgICAgIHNldEN1cnNvcihzZWxlY3RDdXJzb3Io
bWV2LCBtX2ZyYW1lLmdldCgpLCBkLT5tb3VzZVByZXNzZWQpKTsKKwogICAgIGJvb2wgc3dhbGxv
d0V2ZW50ID0gZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlbW92ZUV2ZW50LCBtZXYuaW5uZXJOb2Rl
KCksIGZhbHNlLCAwLCBtb3VzZUV2ZW50LCB0cnVlKTsKICAgICBpZiAoIXN3YWxsb3dFdmVudCkK
ICAgICAgICAgbV9mcmFtZS0+a2h0bWxNb3VzZU1vdmVFdmVudChtZXYpOworICAgIAorICAgIFJl
ZlB0cjxGcmFtZT4gbmV3U3ViZnJhbWUgPSBtZXYuc3ViZnJhbWUoKTsKKyAgICAKKyAgICBpZiAo
bmV3U3ViZnJhbWUgJiYgbV9vbGRTdWJmcmFtZSAhPSBuZXdTdWJmcmFtZSkKKyAgICAgICAgbV9m
cmFtZS0+cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgbmV3U3ViZnJhbWUuZ2V0KCkp
OworICAgIAorICAgIG1fb2xkU3ViZnJhbWUgPSBuZXdTdWJmcmFtZTsKIH0KIAogdm9pZCBGcmFt
ZVZpZXc6OmludmFsaWRhdGVDbGljaygpCkBAIC05MzcsMjggKzk0NSwyMSBAQCBib29sIEZyYW1l
Vmlldzo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0CiAgICAgICAgIGludCBjbGllbnRYLCBjbGll
bnRZOwogICAgICAgICB2aWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVudC54KCksIG1vdXNlRXZl
bnQueSgpLCBjbGllbnRYLCBjbGllbnRZKTsKICAgICAgICAgaWYgKGQtPnByZXZNb3VzZVggIT0g
Y2xpZW50WCB8fCBkLT5wcmV2TW91c2VZICE9IGNsaWVudFkpIHsKLSAgICAgICAgICAgIC8vICMj
IyB0aGlzIGNvZGUgc3Vja3MuIHdlIHNob3VsZCBzYXZlIHRoZSBvbGRVbmRlciBpbnN0ZWFkIG9m
IGNhbGN1bGF0aW5nCi0gICAgICAgICAgICAvLyBpdCBhZ2Fpbi4gY2FsY3VsYXRpbmcgaXMgZXhw
ZW5zaXZlISAoRGlyaykKLSAgICAgICAgICAgIC8vIEFsc28sIHRoZXJlJ3Mgbm8gZ3VhcmFudGVl
IHRoYXQgdGhlIG9sZCB1bmRlciBub2RlIGlzIGV2ZW4gYXJvdW5kIGFueSBtb3JlLAotICAgICAg
ICAgICAgLy8gc28gd2UgY291bGQgYmUgc2VuZGluZyBhIG1vdXNlb3V0IHRvIGEgbm9kZSB0aGF0
IG5ldmVyIGdvdCBhIG1vdXNlb3Zlci4KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlSW1wbD4gb2xk
VW5kZXI7Ci0gICAgICAgICAgICBpZiAoZC0+cHJldk1vdXNlWCA+PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgb2xkVW5kZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudCh0
cnVlLCBmYWxzZSwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgZC0+cHJldk1vdXNlWCwgZC0+
cHJldk1vdXNlWSwgbW91c2VFdmVudCkuaW5uZXJOb2RlKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG9sZFVuZGVyICYmIG9sZFVuZGVyLT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICAgICAgICAg
IG9sZFVuZGVyID0gb2xkVW5kZXItPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChtX29sZFVuZGVyICYmIG1fb2xkVW5kZXItPmdldERvY3VtZW50KCkgIT0gZnJh
bWUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtX29sZFVuZGVyID0gMDsKKwogICAg
ICAgICAgICAgZC0+cHJldk1vdXNlWCA9IGNsaWVudFg7CiAgICAgICAgICAgICBkLT5wcmV2TW91
c2VZID0gY2xpZW50WTsKLSAgICAgICAgICAgIGlmIChvbGRVbmRlciAhPSB0YXJnZXROb2RlKSB7
CisgICAgICAgICAgICBpZiAobV9vbGRVbmRlciAhPSB0YXJnZXROb2RlKSB7CiAgICAgICAgICAg
ICAgICAgLy8gc2VuZCBtb3VzZW91dCBldmVudCB0byB0aGUgb2xkIG5vZGUKLSAgICAgICAgICAg
ICAgICBpZiAob2xkVW5kZXIpCi0gICAgICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNh
c3Qob2xkVW5kZXIuZ2V0KCkpLT5kaXNwYXRjaE1vdXNlRXZlbnQobW91c2VFdmVudCwgbW91c2Vv
dXRFdmVudCwgMCwgdGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKG1fb2xkVW5kZXIp
CisgICAgICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QobV9vbGRVbmRlci5nZXQo
KSktPmRpc3BhdGNoTW91c2VFdmVudChtb3VzZUV2ZW50LCBtb3VzZW91dEV2ZW50LCAwLCB0YXJn
ZXROb2RlKTsKICAgICAgICAgICAgICAgICAvLyBzZW5kIG1vdXNlb3ZlciBldmVudCB0byB0aGUg
bmV3IG5vZGUKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Tm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdCh0YXJnZXROb2RlKS0+ZGlzcGF0Y2hNb3VzZUV2ZW50
KG1vdXNlRXZlbnQsIG1vdXNlb3ZlckV2ZW50LCAwLCBvbGRVbmRlci5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QodGFyZ2V0Tm9kZSktPmRpc3BhdGNoTW91
c2VFdmVudChtb3VzZUV2ZW50LCBtb3VzZW92ZXJFdmVudCwgMCwgbV9vbGRVbmRlci5nZXQoKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9vbGRVbmRlciA9IHRhcmdldE5v
ZGU7CiAgICAgfQogCiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgJKHJldmlzaW9uIDEzMzcxKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzgsNiArMjM4LDkgQEAgcHJpdmF0ZToKICAgICBGcmFtZVZpZXdQcml2YXRl
KiBkOwogCiAgICAgUVN0cmluZyBtX21lZGl1bTsgLy8gbWVkaWEgdHlwZQorICAgIAorICAgIFJl
ZlB0cjxOb2RlSW1wbD4gbV9vbGRVbmRlcjsKKyAgICBSZWZQdHI8RnJhbWU+IG1fb2xkU3ViZnJh
bWU7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9w
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmgiCisKKyNpbXBvcnQgIkZyYW1lLmgiCisjaW1wb3J0ICJGcmFtZVZp
ZXcuaCIKKyNpbXBvcnQgInJlbmRlcl9yZXBsYWNlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0ZyYW1lKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOjpzdWJmcmFtZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2lubmVyTm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5k
ZXJPYmplY3QgKnJlbmRlcmVyID0gbV9pbm5lck5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgV2lkZ2V0ICp3aWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQgKj4ocmVuZGVyZXIp
LT53aWRnZXQoKTsKKyAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZVZpZXcgKj4o
d2lkZ2V0KS0+ZnJhbWUoKTsKK30KKworfQorCg==
</data>
<flag name="review"
          id="1886"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7179</attachid>
            <date>2006-03-19 12:35:31 -0800</date>
            <delta_ts>2006-03-19 16:18:16 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>3439r4_patch.txt</filename>
            <type>text/plain</type>
            <size>35581</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2VvdmVyLW1v
dXNlb3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlb3Zlci1tb3VzZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjEgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCitUZXN0cyBmb3IgYnVncyAzNDM5LCA1NzY0LCA3NzAxIC0gTW91c2UgZXZl
bnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLgorCitNb3ZlIHRoZSBtb3VzZSBwb2ludGVyIGZyb20g
bGVmdCB0byByaWdodDoKKworMcKgwqDCoMKgIMKgwqDCoMKgIMKgwqDCoMKgCisxwqDCoMKgwqAg
wqDCoMKgwqAgwqDCoMKgwqAKKzIKKzMKKzQKKzUKKworTG9nCUV4cGVjdGVkIHJlc3VsdHMKK21v
dXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24gdDFfMgorbW91
c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQyXzEKK21vdXNl
b3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNfMQorbW91c2Vv
dmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8xCittb3VzZW92
ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEKK21vdXNlb3V0
IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIg
b24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3VzZW91dCBvbiBm
cmFtZTYKK21vdXNlb3ZlciBvbiB0MV8xCittb3VzZW91dCBvbiB0MV8xCittb3VzZW92ZXIgb24g
dDFfMgorbW91c2VvdXQgb24gdDFfMgorbW91c2VvdmVyIG9uIHQyXzEKK21vdXNlb3V0IG9uIHQy
XzEKK21vdXNlb3ZlciBvbiB0Ml8yCittb3VzZW91dCBvbiB0Ml8yCittb3VzZW92ZXIgb24gdDNf
MQorbW91c2VvdmVyIG9uIHQzXzIKK21vdXNlb3V0IG9uIHQzXzIKK21vdXNlb3ZlciBvbiB0NF8x
Cittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQgb24gdDRfMgorbW91c2VvdmVyIG9uIHQ1XzEK
K21vdXNlb3V0IG9uIHQ1XzEKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCitt
b3VzZW92ZXIgb24gZnJhbWU2Cittb3VzZW92ZXIgb24gdDYKK21vdXNlb3V0IG9uIHQ2Cittb3Vz
ZW91dCBvbiBmcmFtZTYKKworU1VDQ0VTUworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZW92ZXItbW91c2VvdXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3OSBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImF1dG9UZXN0KCkiPgorPHNjcmlw
dD4KKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gbG9nTW91c2VFdmVudChldnQpCisgICAgeworICAgICAgICB0YXJnZXQgPSAoZXZ0LnRh
cmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgIGxvZyhldnQudHlw
ZSArICIgb24gIiArIHRhcmdldC5pZCk7CisgICAgfQorICAgIAorPC9zY3JpcHQ+Cis8cD5UZXN0
cyBmb3IgYnVncyAKKzxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzQzOSI+MzQzOTwvYT4sIAorPGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01NzY0Ij41NzY0PC9hPiwKKzxhIGhyZWY9Imh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcwMSI+NzcwMTwv
YT4gLQorTW91c2UgZXZlbnRzIHZzLiBET00gbWFuaXB1bGF0aW9uLjwvcD4KKzxwPk1vdmUgdGhl
IG1vdXNlIHBvaW50ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvcD4KKworPCEtLSAxOiBTaG93IGFu
IGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lk
dGg6IDUwOyBiYWNrZ3JvdW5kOnJlZDt0b3A6MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0MV8xJyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCk7IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0MV8yJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayciCisg
ICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCk7Ij4xJm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg
PC9kaXY+Cis8ZGl2IHN0eWxlPSdkaXNwbGF5OiBub25lOyBoZWlnaHQ6IDUwOyB3aWR0aDogNTA7
IGJhY2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBp
ZD0ndDFfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBv
bk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3QxXzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjEmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyA8L2Rpdj4KKworPCEtLSAyOiBIaWRlIGFuIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIC0tPgor
PGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOndoaXRlO3RvcDox
MDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3QyXzInIAorICAgIG9uTW91c2VP
dmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIgCisgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVu
dChldmVudCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ml8yJykuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gJ2dyYXknIj4yPC9kaXY+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDog
NTA7IGJhY2tncm91bmQ6b3JhbmdlO3RvcDoxMDA7bGVmdDoxNTA7IHBvc2l0aW9uOmFic29sdXRl
OycgaWQ9J3QyXzEnIAorICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QyXzEnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnIiAKKyAg
ICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MjwvZGl2PgorCis8IS0tIDM6IE1v
dmUgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCAtLT4K
KzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6
MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0M18yJyAKKyAgICBvbk1vdXNl
T3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZl
bnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDNfMicpLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICdncmF5JyI+MzwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyBiYWNrZ3JvdW5kOnllbGxvdzt0b3A6MTAwO2xlZnQ6MjAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0M18xJyAKKyAgICBvbk1vdXNlT3Zlcj0iCisgICAgICAgIGxvZ01vdXNlRXZlbnQo
ZXZlbnQpOworICAgICAgICBuZXdEb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNp
YmxlX2ZyYW1lJykuZG9jdW1lbnQ7CisgICAgICAgIGlmICghbmV3RG9jKQorICAgICAgICAgICAg
bmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludmlzaWJsZV9mcmFtZScpLmNvbnRl
bnREb2N1bWVudDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ld0RvYy5hZG9wdE5vZGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIG5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3QzXzEnKSk7CisgICAgICAgIH0KKyAgICAgICAgIiAKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+MzwvZGl2PgorCis8IS0tIDQ6IE1vdmUgdGhl
IGVsZW1lbnQgdW5kZXIgdGhlIG1vdXNlIGludG8gYW5vdGhlciBkb2N1bWVudCwgYW5kIGFwcGVu
ZCBpdCAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDp3
aGl0ZTt0b3A6MTAwO2xlZnQ6MjUwOyBwb3NpdGlvbjphYnNvbHV0ZTsnIGlkPSd0NF8yJyAKKyAg
ICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAorICAgIG9uTW91c2VPdXQ9Imxv
Z01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndDRfMicpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NDwvZGl2PgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1
MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVuO3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9u
OmFic29sdXRlOycgaWQ9J3Q0XzEnIAorICAgIG9uTW91c2VPdmVyPSIKKyAgICAgICAgbG9nTW91
c2VFdmVudChldmVudCk7CisgICAgICAgIG5ld0RvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnZpc2libGVfZnJhbWUnKS5kb2N1bWVudDsKKyAgICAgICAgaWYgKCFuZXdEb2MpCisgICAg
ICAgICAgICBuZXdEb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52aXNpYmxlX2ZyYW1l
JykuY29udGVudERvY3VtZW50OworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3RG9jLmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChuZXdEb2MuYWRvcHROb2RlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0NF8xJykpKTsKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAg
IG5ld0RvYy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Q0XzEnKSk7CisgICAgICAgIH0KKyAgICAgICAgIiAKKyAgICBvbk1vdXNlT3V0PSJsb2dN
b3VzZUV2ZW50KGV2ZW50KSI+NDwvZGl2PgorCis8IS0tIDU6IFJlbW92ZSB0aGUgZWxlbWVudCB1
bmRlciB0aGUgbW91c2UgLS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJh
Y2tncm91bmQ6d2hpdGU7dG9wOjEwMDtsZWZ0OjMwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0n
dDVfMicgCisgICAgb25Nb3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1
XzInKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JheSciPjU8L2Rpdj4KKzxkaXYgc3R5bGU9
J2hlaWdodDogNTA7IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlO3RvcDoxMDA7bGVmdDozMDA7
IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q1XzEnIAorICAgIG9uTW91c2VPdmVyPSIKKyAgICAg
ICAgbG9nTW91c2VFdmVudChldmVudCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Q1XzEnKSk7CisgICAgICAgICIKKyAgICBvbk1v
dXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+NTwvZGl2PgorCis8IS0tIDY6IEVudGVyIGEg
ZGlmZmVyZW50IGRvY3VtZW50IC0tPgorPGlmcmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyB0b3A6MTAwO2xlZnQ6MzUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAn
IHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgPGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1h
cmdpbi10b3A6MCI+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAg
IHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNl
RXZlbnQoZXZ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQu
dGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBs
b2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQ2Iikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
IndoaXRlIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNl
T3V0KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2
dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQ2Iikuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDog
NTA7IGJhY2tncm91bmQ6dmlvbGV0OyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIg
aWQ9InQ2IiAKKyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsi
IAorICAgICAgICAgICAgb25Nb3VzZU91dD0iZG9Pbk1vdXNlT3V0KGV2ZW50KSI+NjwvZGl2Pgor
ICAgIDwvYm9keT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIK
KyAgICAgICAgb25Nb3VzZU91dD0iCisgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2ZW50KTsK
KyAgICAgICAgICAgIGlmICh0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVy
SFRNTCA9PSB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cCcpLmlubmVySFRNTCkgewor
ICAgICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIgorICAg
ICAgICBpZD0iZnJhbWU2IgorICAgID48L2lmcmFtZT4KKworPGlmcmFtZSBpZD1pbnZpc2libGVf
ZnJhbWUgc3R5bGU9IndpZHRoOjA7IGhlaWdodDowOyBib3JkZXItd2lkdGg6MCI+PC9pZnJhbWU+
CisKKzx0YWJsZSBib3JkZXI9MSB3aWR0aD0iMTAwJSIgc3R5bGU9J3RvcDoyMDA7IHBvc2l0aW9u
OmFic29sdXRlJz4KKzx0cj48dGQgd2lkdGg9IjUwJSI+TG9nPC90ZD48dGQ+RXhwZWN0ZWQgcmVz
dWx0czwvdGQ+PC90cj4KKzx0cj4KKyAgICA8dGQgaWQ9bG9nIHN0eWxlPSJ2ZXJ0aWNhbC1hbGln
bjp0b3AiPjwvdGQ+CisgICAgPHRkIGlkPWV4cCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48
bGk+bW91c2VvdmVyIG9uIHQxXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8xPC9saT48bGk+bW91
c2VvdmVyIG9uIHQxXzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0MV8yPC9saT48bGk+bW91c2VvdmVy
IG9uIHQyXzE8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8xPC9saT48bGk+bW91c2VvdmVyIG9uIHQy
XzI8L2xpPjxsaT5tb3VzZW91dCBvbiB0Ml8yPC9saT48bGk+bW91c2VvdmVyIG9uIHQzXzE8L2xp
PjxsaT5tb3VzZW92ZXIgb24gdDNfMjwvbGk+PGxpPm1vdXNlb3V0IG9uIHQzXzI8L2xpPjxsaT5t
b3VzZW92ZXIgb24gdDRfMTwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NF8yPC9saT48bGk+bW91c2Vv
dXQgb24gdDRfMjwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NV8xPC9saT48bGk+bW91c2VvdXQgb24g
dDVfMTwvbGk+PGxpPm1vdXNlb3ZlciBvbiB0NV8yPC9saT48bGk+bW91c2VvdXQgb24gdDVfMjwv
bGk+PGxpPm1vdXNlb3ZlciBvbiBmcmFtZTY8L2xpPjxsaT5tb3VzZW92ZXIgb24gdDY8L2xpPjxs
aT5tb3VzZW91dCBvbiB0NjwvbGk+PGxpPm1vdXNlb3V0IG9uIGZyYW1lNjwvbGk+PC90ZD4KKzwv
dHI+Cis8L3RhYmxlPgorCis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogMzAwOyB0b3A6
MTAwO2xlZnQ6MTAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgZGlzcGxheTpub25lJyBpZD0nc3VjY2Vz
cyc+PGJyPjxjZW50ZXI+U1VDQ0VTUzwvY2VudGVyPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rp
b24gYXV0b1Rlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEsMSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oMTI1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbygxMzAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEzNSwgMTI1
KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxNzUsIDEyNSk7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDE4MCwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbygyMjUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KDIzMCwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyNzUsIDEyNSk7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDI4MCwgMTI1KTsKKworICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygzMjUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDMzMCwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygz
NzUsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4MCwgMTI1KTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzg1LCAxMjUpOworCisgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEsIDEpOworICAgIH0KK30KKzwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZW92ZXItbW91c2Vv
dXQyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
b3VzZW92ZXItbW91c2VvdXQyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY4IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorVGVzdHMgZm9yIGJ1Z3MgMzQzOSwgNTc2NCwgNzcw
MSAtIE1vdXNlIGV2ZW50cyB2cy4gRE9NIG1hbmlwdWxhdGlvbi4KKworTW92ZSB0aGUgbW91c2Ug
cG9pbnRlciBmcm9tIGxlZnQgdG8gcmlnaHQ6CisKKworMworNAorCis1Cis2CitMb2cJRXhwZWN0
ZWQgcmVzdWx0cworbW91c2VvdmVyIG9uIGZyYW1lMQorbW91c2VvdmVyIG9uIHQxCittb3VzZW91
dCBvbiB0MQorbW91c2VvdXQgb24gZnJhbWUxCittb3VzZW92ZXIgb24gZnJhbWUyCittb3VzZW92
ZXIgb24gdDIKK21vdXNlb3V0IG9uIHQyCittb3VzZW91dCBvbiBmcmFtZTIKK21vdXNlb3ZlciBv
biBmcmFtZTMKK21vdXNlb3ZlciBvbiB0M18xCittb3VzZW91dCBvbiBmcmFtZTMKK21vdXNlb3Zl
ciBvbiB0M18yCittb3VzZW91dCBvbiB0M18yCittb3VzZW92ZXIgb24gdDRfMgorbW91c2VvdXQg
b24gdDRfMgorbW91c2VvdmVyIG9uIGZyYW1lNAorbW91c2VvdmVyIG9uIHQ0XzEKK21vdXNlb3V0
IG9uIHQ0XzEKK21vdXNlb3V0IG9uIGZyYW1lNAorbW91c2VvdmVyIG9uIGZyYW1lNQorbW91c2Vv
dmVyIG9uIHQ1XzEKK21vdXNlb3V0IG9uIGZyYW1lNQorbW91c2VvdmVyIG9uIHQ1XzIKK21vdXNl
b3V0IG9uIHQ1XzIKK21vdXNlb3ZlciBvbiB0NgorbW91c2VvdXQgb24gdDYKK21vdXNlb3ZlciBv
biBmcmFtZTEKK21vdXNlb3ZlciBvbiB0MQorbW91c2VvdXQgb24gdDEKK21vdXNlb3V0IG9uIGZy
YW1lMQorbW91c2VvdmVyIG9uIGZyYW1lMgorbW91c2VvdmVyIG9uIHQyCittb3VzZW91dCBvbiB0
MgorbW91c2VvdXQgb24gZnJhbWUyCittb3VzZW92ZXIgb24gZnJhbWUzCittb3VzZW92ZXIgb24g
dDNfMQorbW91c2VvdXQgb24gZnJhbWUzCittb3VzZW92ZXIgb24gdDNfMgorbW91c2VvdXQgb24g
dDNfMgorbW91c2VvdmVyIG9uIHQ0XzIKK21vdXNlb3V0IG9uIHQ0XzIKK21vdXNlb3ZlciBvbiBm
cmFtZTQKK21vdXNlb3ZlciBvbiB0NF8xCittb3VzZW91dCBvbiB0NF8xCittb3VzZW91dCBvbiBm
cmFtZTQKK21vdXNlb3ZlciBvbiBmcmFtZTUKK21vdXNlb3ZlciBvbiB0NV8xCittb3VzZW91dCBv
biBmcmFtZTUKK21vdXNlb3ZlciBvbiB0NV8yCittb3VzZW91dCBvbiB0NV8yCittb3VzZW92ZXIg
b24gdDYKK21vdXNlb3V0IG9uIHQ2CisKK1NVQ0NFU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbW91c2VvdmVyLW1vdXNlb3V0Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlb3Zlci1tb3VzZW91dDIuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNjkgQEAKKzxodG1sPgorPGJvZHkgb25sb2FkPSJhdXRvVGVzdCgp
Ij4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2
YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0KQorICAgIHsKKyAgICAgICAgdGFyZ2V0
ID0gKGV2dC50YXJnZXQpID8gZXZ0LnRhcmdldCA6IGV2dC5zcmNFbGVtZW50OworICAgICAgICBs
b2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgIH0KKyAgICAKKzwvc2NyaXB0
PgorPHA+VGVzdHMgZm9yIGJ1Z3MgCis8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzkiPjM0Mzk8L2E+LCAKKzxhIGhyZWY9Imh0dHA6Ly9i
dWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2NCI+NTc2NDwvYT4sCis8
YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTc3
MDEiPjc3MDE8L2E+IC0KK01vdXNlIGV2ZW50cyB2cy4gRE9NIG1hbmlwdWxhdGlvbi48L3A+Cis8
cD5Nb3ZlIHRoZSBtb3VzZSBwb2ludGVyIGZyb20gbGVmdCB0byByaWdodDo8L3A+CisKKzwhLS0g
MTogRW50ZXIgYSBzdWJmcmFtZSAtLT4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRo
OiA1MDsgdG9wOjEwMDtsZWZ0OjEwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13aWR0aDow
JyBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAgIDxib2R5IHN0eWxlPSJtYXJnaW4tbGVmdDowOyBt
YXJnaW4tdG9wOjAiPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0b3Au
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAg
ICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGl0ZW0pOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dNb3Vz
ZUV2ZW50KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSAoZXZ0
LnRhcmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgICAgICAgICAg
bG9nKGV2dC50eXBlICsgIiBvbiAiICsgdGFyZ2V0LmlkKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0MSIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJ3aGl0ZSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvT25Nb3Vz
ZU91dChldnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChl
dnQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0MSIpLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICJncmF5IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6
IDUwOyBiYWNrZ3JvdW5kOnJlZDsgdG9wOjA7bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlk
PSJ0MSIgCisgICAgICAgICAgICBvbk1vdXNlT3Zlcj0iZG9Pbk1vdXNlT3ZlcihldmVudCk7IiAK
KyAgICAgICAgICAgIG9uTW91c2VPdXQ9ImRvT25Nb3VzZU91dChldmVudCkiPjE8L2Rpdj4KKyAg
ICA8L2JvZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisg
ICAgICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyIKKyAgICAgICAgaWQ9ImZy
YW1lMSIKKyAgICA+PC9pZnJhbWU+CisKKzwhLS0gMjogTW92ZSBmcm9tIG9uZSBzdWJmcmFtZSB0
byBhbm90aGVyIC0tPgorPGlmcmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyB0b3A6
MTAwO2xlZnQ6MTUwOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAnIHNyYz0nZGF0
YTp0ZXh0L2h0bWwsCisgICAgPGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6
MCI+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5kb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIHRvcC5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQudGFyZ2V0KSA/
IGV2dC50YXJnZXQgOiBldnQuc3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBsb2coZXZ0LnR5
cGUgKyAiIG9uICIgKyB0YXJnZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInQyIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIndoaXRlIjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3V0KGV2dCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dNb3VzZUV2ZW50KGV2dCk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQyIikuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIDwv
c2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tn
cm91bmQ6b3JhbmdlOyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29sdXRlOyIgaWQ9InQyIiAK
KyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAorICAgICAg
ICAgICAgb25Nb3VzZU91dD0iZG9Pbk1vdXNlT3V0KGV2ZW50KSI+MjwvZGl2PgorICAgIDwvYm9k
eT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KSIKKyAgICAgICAg
b25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAgIGlkPSJmcmFtZTIiCisg
ICAgPjwvaWZyYW1lPgorCis8IS0tIDM6IEhpZGUgYSBzdWJmcmFtZSB1bmRlciB0aGUgbW91c2Ug
LS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7
dG9wOjEwMDtsZWZ0OjIwMDsgcG9zaXRpb246YWJzb2x1dGU7JyBpZD0ndDNfMicgCisgICAgb25N
b3VzZU92ZXI9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIiAKKyAgICBvbk1vdXNlT3V0PSJsb2dNb3Vz
ZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QzXzInKS5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSAnZ3JheSciPjM8L2Rpdj4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7
IHdpZHRoOiA1MDsgdG9wOjEwMDtsZWZ0OjIwMDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13
aWR0aDowJyBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAgIDxib2R5IHN0eWxlPSJtYXJnaW4tbGVm
dDowOyBtYXJnaW4tdG9wOjAiPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0g
PSB0b3AuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVt
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAg
ICAgICAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGl0
ZW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBs
b2dNb3VzZUV2ZW50KGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQg
PSAoZXZ0LnRhcmdldCkgPyBldnQudGFyZ2V0IDogZXZ0LnNyY0VsZW1lbnQ7CisgICAgICAgICAg
ICAgICAgbG9nKGV2dC50eXBlICsgIiBvbiAiICsgdGFyZ2V0LmlkKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZG9Pbk1vdXNlT3ZlcihldnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VFdmVudChldnQpOworICAgICAg
ICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUzIikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3Jv
dW5kOnllbGxvdzsgdG9wOjA7bGVmdDowOyBwb3NpdGlvbjphYnNvbHV0ZTsiIGlkPSJ0M18xIiAK
KyAgICAgICAgICAgIG9uTW91c2VPdmVyPSJkb09uTW91c2VPdmVyKGV2ZW50KTsiIAorICAgICAg
ICAgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiPjM8L2Rpdj4KKyAgICA8L2Jv
ZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAgICAg
IG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIgorICAgICAgICBpZD0iZnJhbWUzIgor
ICAgID48L2lmcmFtZT4KKworPCEtLSA0OiBTaG93IGEgc3ViZnJhbWUgdW5kZXIgdGhlIG1vdXNl
IC0tPgorPGRpdiBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyBiYWNrZ3JvdW5kOmdyZWVu
O3RvcDoxMDA7bGVmdDoyNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q0XzInIAorICAgIG9u
TW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50KGV2ZW50KTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ZyYW1lNCcpLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSciCisgICAgb25Nb3VzZU91dD0i
bG9nTW91c2VFdmVudChldmVudCkiPjQ8L2Rpdj4KKzxpZnJhbWUgc3R5bGU9J2hlaWdodDogNTA7
IHdpZHRoOiA1MDsgdG9wOjEwMDtsZWZ0OjI1MDsgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci13
aWR0aDowOyB2aXNpYmlsaXR5OmhpZGRlbicgc3JjPSdkYXRhOnRleHQvaHRtbCwKKyAgICA8Ym9k
eSBzdHlsZT0ibWFyZ2luLWxlZnQ6MDsgbWFyZ2luLXRvcDowIj4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciBpdGVtID0gdG9wLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Cisg
ICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnVuY3Rpb24gbG9nTW91c2VFdmVudChldnQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdGFyZ2V0ID0gKGV2dC50YXJnZXQpID8gZXZ0LnRhcmdldCA6IGV2dC5zcmNF
bGVtZW50OworICAgICAgICAgICAgICAgIGxvZyhldnQudHlwZSArICIgb24gIiArIHRhcmdldC5p
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRv
T25Nb3VzZU91dChldnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nTW91c2VF
dmVudChldnQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0NF8x
Iikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyYXkiOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDUw
OyB3aWR0aDogNTA7IGJhY2tncm91bmQ6d2hpdGU7IHRvcDowO2xlZnQ6MDsgcG9zaXRpb246YWJz
b2x1dGU7IiBpZD0idDRfMSIgCisgICAgICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVu
dChldmVudCk7IiAKKyAgICAgICAgICAgIG9uTW91c2VPdXQ9ImRvT25Nb3VzZU91dChldmVudCki
PjQ8L2Rpdj4KKyAgICA8L2JvZHk+JworICAgICAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVu
dChldmVudCkiCisgICAgICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpIgorICAg
ICAgICBpZD0iZnJhbWU0IgorICAgID48L2lmcmFtZT4KKworPCEtLSA1OiBSZW1vdmUgdGhlIHN1
YmZyYW1lIHVuZGVyIHRoZSBtb3VzZSAtLT4KKzxkaXYgc3R5bGU9J2hlaWdodDogNTA7IHdpZHRo
OiA1MDsgYmFja2dyb3VuZDp3aGl0ZTt0b3A6MTAwO2xlZnQ6MzAwOyBwb3NpdGlvbjphYnNvbHV0
ZTsnIGlkPSd0NV8yJyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCkiIAor
ICAgIG9uTW91c2VPdXQ9ImxvZ01vdXNlRXZlbnQoZXZlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndDVfMicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmF5JyI+NTwvZGl2PgorPGlm
cmFtZSBzdHlsZT0naGVpZ2h0OiA1MDsgd2lkdGg6IDUwOyB0b3A6MTAwO2xlZnQ6MzAwOyBwb3Np
dGlvbjphYnNvbHV0ZTsgYm9yZGVyLXdpZHRoOjAnIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAg
PGJvZHkgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6MCI+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRvcC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIp
OworICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSkpOworICAgICAgICAgICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ01vdXNlRXZlbnQoZXZ0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRhcmdldCA9IChldnQudGFyZ2V0KSA/IGV2dC50YXJnZXQgOiBldnQu
c3JjRWxlbWVudDsKKyAgICAgICAgICAgICAgICBsb2coZXZ0LnR5cGUgKyAiIG9uICIgKyB0YXJn
ZXQuaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlv
biBkb09uTW91c2VPdmVyKGV2dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dN
b3VzZUV2ZW50KGV2dCk7CisgICAgICAgICAgICAgICAgdG9wLmRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQodG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZTUiKSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDogNTA7
IHdpZHRoOiA1MDsgYmFja2dyb3VuZDpibHVlOyB0b3A6MDtsZWZ0OjA7IHBvc2l0aW9uOmFic29s
dXRlOyIgaWQ9InQ1XzEiIAorICAgICAgICAgICAgb25Nb3VzZU92ZXI9ImRvT25Nb3VzZU92ZXIo
ZXZlbnQpOyIgCisgICAgICAgICAgICBvbk1vdXNlT3V0PSJsb2dNb3VzZUV2ZW50KGV2ZW50KSI+
NTwvZGl2PgorICAgIDwvYm9keT4nCisgICAgICAgIG9uTW91c2VPdmVyPSJsb2dNb3VzZUV2ZW50
KGV2ZW50KSIKKyAgICAgICAgb25Nb3VzZU91dD0ibG9nTW91c2VFdmVudChldmVudCkiCisgICAg
ICAgIGlkPSJmcmFtZTUiCisgICAgPjwvaWZyYW1lPgorCis8IS0tIDY6IE5vdGhpbmcgYnV0IGEg
cmFpbmJvdyBlbmQgLS0+Cis8ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogNTA7IGJhY2tn
cm91bmQ6dmlvbGV0O3RvcDoxMDA7bGVmdDozNTA7IHBvc2l0aW9uOmFic29sdXRlOycgaWQ9J3Q2
JyAKKyAgICBvbk1vdXNlT3Zlcj0ibG9nTW91c2VFdmVudChldmVudCk7IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0NicpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSciIAorICAgIG9u
TW91c2VPdXQ9IgorICAgICAgICBsb2dNb3VzZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Q2Jykuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ2dyYXknOwor
ICAgICAgICBpZiAodG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5pbm5lckhUTUwg
PT0gdG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHAnKS5pbm5lckhUTUwpIHsKKyAgICAg
ICAgICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2VzcycpLnN0eWxlLmRpc3Bs
YXkgPSAnYmxvY2snOworICAgICAgICB9CisgICAgICAgICI+NjwvZGl2PgorCis8dGFibGUgYm9y
ZGVyPTEgd2lkdGg9IjEwMCUiIHN0eWxlPSd0b3A6MjAwOyBwb3NpdGlvbjphYnNvbHV0ZSc+Cis8
dHI+PHRkIHdpZHRoPSI1MCUiPkxvZzwvdGQ+PHRkPkV4cGVjdGVkIHJlc3VsdHM8L3RkPjwvdHI+
Cis8dHI+CisgICAgPHRkIGlkPWxvZyBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wIj48L3RkPgor
ICAgIDx0ZCBpZD1leHAgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+PExJPm1vdXNlb3ZlciBv
biBmcmFtZTE8L0xJPjxMST5tb3VzZW92ZXIgb24gdDE8L0xJPjxMST5tb3VzZW91dCBvbiB0MTwv
TEk+PExJPm1vdXNlb3V0IG9uIGZyYW1lMTwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTI8L0xJ
PjxMST5tb3VzZW92ZXIgb24gdDI8L0xJPjxMST5tb3VzZW91dCBvbiB0MjwvTEk+PExJPm1vdXNl
b3V0IG9uIGZyYW1lMjwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTM8L0xJPjxMST5tb3VzZW92
ZXIgb24gdDNfMTwvTEk+PExJPm1vdXNlb3V0IG9uIGZyYW1lMzwvTEk+PExJPm1vdXNlb3ZlciBv
biB0M18yPC9MST48TEk+bW91c2VvdXQgb24gdDNfMjwvTEk+PExJPm1vdXNlb3ZlciBvbiB0NF8y
PC9MST48TEk+bW91c2VvdXQgb24gdDRfMjwvTEk+PExJPm1vdXNlb3ZlciBvbiBmcmFtZTQ8L0xJ
PjxMST5tb3VzZW92ZXIgb24gdDRfMTwvTEk+PExJPm1vdXNlb3V0IG9uIHQ0XzE8L0xJPjxMST5t
b3VzZW91dCBvbiBmcmFtZTQ8L0xJPjxMST5tb3VzZW92ZXIgb24gZnJhbWU1PC9MST48TEk+bW91
c2VvdmVyIG9uIHQ1XzE8L0xJPjxMST5tb3VzZW91dCBvbiBmcmFtZTU8L0xJPjxMST5tb3VzZW92
ZXIgb24gdDVfMjwvTEk+PExJPm1vdXNlb3V0IG9uIHQ1XzI8L0xJPjxMST5tb3VzZW92ZXIgb24g
dDY8L0xJPjxMST5tb3VzZW91dCBvbiB0NjwvTEk+PC90ZD4KKzwvdHI+Cis8L3RhYmxlPgorCis8
ZGl2IHN0eWxlPSdoZWlnaHQ6IDUwOyB3aWR0aDogMzAwOyB0b3A6MTAwO2xlZnQ6MTAwOyBwb3Np
dGlvbjphYnNvbHV0ZTsgZGlzcGxheTpub25lJyBpZD0nc3VjY2Vzcyc+PGJyPjxjZW50ZXI+U1VD
Q0VTUzwvY2VudGVyPjwvZGl2PgorCis8c2NyaXB0PgorZnVuY3Rpb24gYXV0b1Rlc3QoKSB7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEyNSwgMTI1KTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTMwLCAxMjUpOworICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbygxMzUsIDEyNSk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMTc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxODAsIDEy
NSk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMjI1LCAxMjUpOworICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMzAsIDEyNSk7CisKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oMjc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
bygyODAsIDEyNSk7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzI1LCAxMjUp
OworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygzMzAsIDEyNSk7CisKKyAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMzc1LCAxMjUpOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygzODAsIDEyNSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM4
NSwgMTI1KTsKKworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLCAxKTsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCisgICAgfQorfQorPC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9NYWNGcmFtZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvTWFjRnJhbWUubW0JKHJldmlzaW9u
IDEzMzcxKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL01hY0ZyYW1lLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xODU4LDI0ICsxODU4LDEzIEBAIHZvaWQgTWFjRnJhbWU6OmtodG1sTW91c2VSZWxlYXNl
RXZlbnQoY28KICAgICBfc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CiB9CiAKLWJvb2wg
TWFjRnJhbWU6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzICZldmVudCkKK2Jvb2wgTWFjRnJhbWU6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJm
cmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgRnJhbWUqIHN1YmZyYW1l
UGFydCkKIHsKICAgICBLV1FfQkxPQ0tfRVhDRVBUSU9OUzsKIAogICAgIHN3aXRjaCAoW19jdXJy
ZW50RXZlbnQgdHlwZV0pIHsKICAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6IHsKLSAgICAgICAg
ICAgIE5vZGVJbXBsICpub2RlID0gZXZlbnQuaW5uZXJOb2RlKCk7Ci0gICAgICAgICAgICBpZiAo
IW5vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUmVuZGVy
T2JqZWN0ICpyZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXJl
bmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBXaWRnZXQgKndpZGdldCA9IHN0YXRpY19jYXN0PFJlbmRlcldp
ZGdldCAqPihyZW5kZXJlciktPndpZGdldCgpOwotICAgICAgICAgICAgaWYgKCF3aWRnZXQgfHwg
IXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBGcmFtZSAqc3ViZnJhbWVQYXJ0ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3ICo+
KHdpZGdldCktPmZyYW1lKCk7Ci0gICAgICAgICAgICBpZiAoIXN1YmZyYW1lUGFydCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBBU1NFUlQoc3ViZnJhbWVQYXJ0
KTsKICAgICAgICAgICAgIFtNYWMoc3ViZnJhbWVQYXJ0KS0+YnJpZGdlKCkgbW91c2VNb3ZlZDpf
Y3VycmVudEV2ZW50XTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4
OiBXZWJDb3JlL2JyaWRnZS9tYWMvTWFjRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9tYWMvTWFjRnJhbWUuaAkocmV2aXNpb24gMTMzNzEpCisrKyBXZWJDb3JlL2JyaWRnZS9t
YWMvTWFjRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50KE5TRXZlbnQgKik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgcGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQoV2lkZ2V0ICopOwotICAgIHZpcnR1YWwg
Ym9vbCBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyAmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSopOwogICAgIHZpcnR1YWwgYm9vbCBw
YXNzV2hlZWxFdmVudFRvQ2hpbGRXaWRnZXQoTm9kZUltcGwgKik7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyUmVjb3JkZWRGb3JtVmFsdWVzKCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTMzNzEp
CisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDcgKzU5Myw3
IEBAIHB1YmxpYzoKICAgdmlydHVhbCB2b2lkIG9wZW5VUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpID0gMDsKICAgdmlydHVhbCB2b2lkIHN1Ym1pdEZvcm0oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgPSAwOwogICB2aXJ0dWFsIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgPSAwOwotICB2aXJ0dWFsIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKSA9IDA7CisgIHZpcnR1YWwgYm9vbCBwYXNz
U3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZy
YW1lKiBzdWJmcmFtZVBhcnQgPSAwKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBwYXNzV2hlZWxFdmVu
dFRvQ2hpbGRXaWRnZXQoTm9kZUltcGwgKikgPSAwOwogICB2aXJ0dWFsIGJvb2wgbGFzdEV2ZW50
SXNNb3VzZVVwKCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIFFTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5
cGUoKSBjb25zdCA9IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTMzNzEpCisrKyBX
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpCiAgICAgewogICAgICAgICB1bmRlck1vdXNlID0g
MDsKKyAgICAgICAgb2xkVW5kZXIgPSAwOworICAgICAgICBvbGRTdWJmcmFtZSA9IDA7CiAgICAg
ICAgIGxpbmtQcmVzc2VkID0gZmFsc2U7CiAgICAgICAgIHVzZVNsb3dSZXBhaW50cyA9IGZhbHNl
OwogICAgICAgICBkcmFnVGFyZ2V0ID0gMDsKQEAgLTg0LDggKzg2LDYgQEAgcHVibGljOgogICAg
ICAgICBpZ25vcmVXaGVlbEV2ZW50cyA9IGZhbHNlOwogICAgICAgICBib3JkZXJYID0gMzA7CiAg
ICAgICAgIGJvcmRlclkgPSAzMDsKLSAgICAgICAgcHJldk1vdXNlWCA9IC0xOwotICAgICAgICBw
cmV2TW91c2VZID0gLTE7CiAgICAgICAgIGNsaWNrQ291bnQgPSAwOwogICAgICAgICBjbGlja05v
ZGUgPSAwOwogICAgICAgICBzY3JvbGxpbmdTZWxmID0gZmFsc2U7CkBAIC0xMDQsNiArMTA0LDgg
QEAgcHVibGljOgogICAgIH0KIAogICAgIFJlZlB0cjxOb2RlSW1wbD4gdW5kZXJNb3VzZTsKKyAg
ICBSZWZQdHI8Tm9kZUltcGw+IG9sZFVuZGVyOworICAgIFJlZlB0cjxGcmFtZT4gb2xkU3ViZnJh
bWU7CiAKICAgICBib29sIGJvcmRlclRvdWNoZWQgOiAxOwogICAgIGJvb2wgYm9yZGVyU3RhcnQg
OiAxOwpAQCAtMTIxLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBpbnQgY2xpY2tDb3VudDsKICAg
ICBSZWZQdHI8Tm9kZUltcGw+IGNsaWNrTm9kZTsKIAotICAgIGludCBwcmV2TW91c2VYLCBwcmV2
TW91c2VZOwogICAgIGJvb2wgc2Nyb2xsaW5nU2VsZjsKICAgICBUaW1lcjxGcmFtZVZpZXc+IGxh
eW91dFRpbWVyOwogICAgIGJvb2wgZGVsYXllZExheW91dDsKQEAgLTQ2Myw2ICs0NjQsMjIgQEAg
dm9pZCBGcmFtZVZpZXc6OmxheW91dCgpCiAvLwogLy8vLy8vLy8vLy8vLy8vLy8KIAorc3RhdGlj
IEZyYW1lKiBzdWJmcmFtZUZvckV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIG1ldikKK3sKKyAgICBpZiAoIW1ldi5pbm5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gbWV2LmlubmVyTm9kZSgpLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFdpZGdldCAqd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyV2lk
Z2V0ICo+KHJlbmRlcmVyKS0+d2lkZ2V0KCk7CisgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+
aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RnJhbWVWaWV3ICo+KHdpZGdldCktPmZyYW1lKCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojp2
aWV3cG9ydE1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogewog
ICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSkKQEAgLTQ3MCwxMiArNDg3LDkgQEAgdm9pZCBG
cmFtZVZpZXc6OnZpZXdwb3J0TW91c2VQcmVzc0V2ZW50KAogCiAgICAgUmVmUHRyPEZyYW1lVmll
dz4gcHJvdGVjdG9yKHRoaXMpOwogCi0gICAgaW50IHhtLCB5bTsKLSAgICB2aWV3cG9ydFRvQ29u
dGVudHMobW91c2VFdmVudC54KCksIG1vdXNlRXZlbnQueSgpLCB4bSwgeW0pOwotCiAgICAgZC0+
bW91c2VQcmVzc2VkID0gdHJ1ZTsKIAotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
bWV2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQoZmFsc2UsIHRydWUs
IGZhbHNlLCB4bSwgeW0sIG1vdXNlRXZlbnQpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQoZmFsc2UsIHRydWUsIGZhbHNlLCBtb3VzZUV2
ZW50KTsKIAogICAgIGlmIChtX2ZyYW1lLT5wYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2
KSkgewogICAgICAgICBpbnZhbGlkYXRlQ2xpY2soKTsKQEAgLTUwNiwxMyArNTIwLDEwIEBAIHZv
aWQgRnJhbWVWaWV3Ojp2aWV3cG9ydE1vdXNlRG91YmxlQ2xpY2sKIAogICAgIFJlZlB0cjxGcmFt
ZVZpZXc+IHByb3RlY3Rvcih0aGlzKTsKIAotICAgIGludCB4bSwgeW07Ci0gICAgdmlld3BvcnRU
b0NvbnRlbnRzKG1vdXNlRXZlbnQueCgpLCBtb3VzZUV2ZW50LnkoKSwgeG0sIHltKTsKLQogICAg
IC8vIFdlIGdldCB0aGlzIGluc3RlYWQgb2YgYSBzZWNvbmQgbW91c2UtdXAgCiAgICAgZC0+bW91
c2VQcmVzc2VkID0gZmFsc2U7CiAKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KGZhbHNlLCB0cnVlLCBm
YWxzZSwgeG0sIHltLCBtb3VzZUV2ZW50KTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KGZhbHNlLCB0cnVlLCBmYWxzZSwgbW91c2VFdmVu
dCk7CiAKICAgICBpZiAobV9mcmFtZS0+cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldikp
CiAgICAgICAgIHJldHVybjsKQEAgLTYwMSwxMiArNjEyLDExIEBAIHZvaWQgRnJhbWVWaWV3Ojp2
aWV3cG9ydE1vdXNlTW92ZUV2ZW50KGMKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3Rl
Y3Rvcih0aGlzKTsKKyAgICAKICAgICBpZiAoZC0+aG92ZXJUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBkLT5ob3ZlclRpbWVyLnN0b3AoKTsKIAotICAgIGludCB4bSwgeW07Ci0gICAgdmlld3Bv
cnRUb0NvbnRlbnRzKG1vdXNlRXZlbnQueCgpLCBtb3VzZUV2ZW50LnkoKSwgeG0sIHltKTsKLQog
ICAgIGlmIChkLT5yZXNpemluZ0ZyYW1lU2V0KSB7CiAgICAgICAgIGRpc3BhdGNoTW91c2VFdmVu
dChtb3VzZW1vdmVFdmVudCwgZC0+cmVzaXppbmdGcmFtZVNldC5nZXQoKSwgZmFsc2UsIDAsIG1v
dXNlRXZlbnQsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjE2LDE1ICs2MjYsMjMgQEAg
dm9pZCBGcmFtZVZpZXc6OnZpZXdwb3J0TW91c2VNb3ZlRXZlbnQoYwogICAgIC8vIGlmIHdlIGFy
ZSBhbGxvd2VkIHRvIHNlbGVjdC4KICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgOmhvdmVyIGFuZCA6
YWN0aXZlIGZyZWV6ZSBpbiB0aGUgc3RhdGUgdGhleSB3ZXJlIGluIHdoZW4gdGhlIG1vdXNlCiAg
ICAgLy8gd2FzIHByZXNzZWQsIHJhdGhlciB0aGFuIHVwZGF0aW5nIGZvciBub2RlcyB0aGUgbW91
c2UgbW92ZXMgb3ZlciBhcyB5b3UgaG9sZCB0aGUgbW91c2UgZG93bi4KLSAgICBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3Vz
ZUV2ZW50KGQtPm1vdXNlUHJlc3NlZCAmJiBtX2ZyYW1lLT5tb3VzZURvd25NYXlTdGFydFNlbGVj
dCgpLAotICAgICAgICBkLT5tb3VzZVByZXNzZWQsIHRydWUsIHhtLCB5bSwgbW91c2VFdmVudCk7
CisgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVu
dChkLT5tb3VzZVByZXNzZWQgJiYgbV9mcmFtZS0+bW91c2VEb3duTWF5U3RhcnRTZWxlY3QoKSwK
KyAgICAgICAgZC0+bW91c2VQcmVzc2VkLCB0cnVlLCBtb3VzZUV2ZW50KTsKKworICAgIGlmIChk
LT5vbGRTdWJmcmFtZSkKKyAgICAgICAgaWYgKCFtX2ZyYW1lLT5wYXNzU3ViZnJhbWVFdmVudFRv
U3ViZnJhbWUobWV2LCBkLT5vbGRTdWJmcmFtZS5nZXQoKSkpCisgICAgICAgICAgICBzZXRDdXJz
b3Ioc2VsZWN0Q3Vyc29yKG1ldiwgbV9mcmFtZS5nZXQoKSwgZC0+bW91c2VQcmVzc2VkKSk7CiAK
LSAgICBpZiAoIW1fZnJhbWUtPnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYpKQotICAg
ICAgICBzZXRDdXJzb3Ioc2VsZWN0Q3Vyc29yKG1ldiwgbV9mcmFtZS5nZXQoKSwgZC0+bW91c2VQ
cmVzc2VkKSk7Ci0gICAgICAgIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gZGlzcGF0Y2hNb3Vz
ZUV2ZW50KG1vdXNlbW92ZUV2ZW50LCBtZXYuaW5uZXJOb2RlKCksIGZhbHNlLCAwLCBtb3VzZUV2
ZW50LCB0cnVlKTsKICAgICBpZiAoIXN3YWxsb3dFdmVudCkKICAgICAgICAgbV9mcmFtZS0+a2h0
bWxNb3VzZU1vdmVFdmVudChtZXYpOworICAgIAorICAgIFJlZlB0cjxGcmFtZT4gbmV3U3ViZnJh
bWUgPSBzdWJmcmFtZUZvckV2ZW50KG1ldik7CisgICAgCisgICAgaWYgKG5ld1N1YmZyYW1lICYm
IGQtPm9sZFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQorICAgICAgICBtX2ZyYW1lLT5wYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBuZXdTdWJmcmFtZS5nZXQoKSk7CisgICAgCisgICAg
ZC0+b2xkU3ViZnJhbWUgPSBuZXdTdWJmcmFtZTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmludmFs
aWRhdGVDbGljaygpCkBAIC02NDAsOSArNjU4LDYgQEAgdm9pZCBGcmFtZVZpZXc6OnZpZXdwb3J0
TW91c2VSZWxlYXNlRXZlbgogCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKHRoaXMp
OwogCi0gICAgaW50IHhtLCB5bTsKLSAgICB2aWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVudC54
KCksIG1vdXNlRXZlbnQueSgpLCB4bSwgeW0pOwotCiAgICAgZC0+bW91c2VQcmVzc2VkID0gZmFs
c2U7CiAKICAgICBpZiAoZC0+cmVzaXppbmdGcmFtZVNldCkgewpAQCAtNjUwLDcgKzY2NSw3IEBA
IHZvaWQgRnJhbWVWaWV3Ojp2aWV3cG9ydE1vdXNlUmVsZWFzZUV2ZW4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQoZmFsc2UsIGZhbHNlLCBmYWxzZSwgeG0s
IHltLCBtb3VzZUV2ZW50KTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9
IHByZXBhcmVNb3VzZUV2ZW50KGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vdXNlRXZlbnQpOwogCiAg
ICAgaWYgKG1fZnJhbWUtPnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYpKQogICAgICAg
ICByZXR1cm47CkBAIC02ODUsOSArNzAwLDggQEAgYm9vbCBGcmFtZVZpZXc6OmRpc3BhdGNoRHJh
Z0V2ZW50KGNvbnN0IAogYm9vbCBGcmFtZVZpZXc6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IE1v
dXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmRJbXBsKiBjbGlwYm9hcmQpCiB7CiAgICAgYm9vbCBh
Y2NlcHQgPSBmYWxzZTsKLSAgICBpbnQgeG0sIHltOwotICAgIHZpZXdwb3J0VG9Db250ZW50cyhl
dmVudC54KCksIGV2ZW50LnkoKSwgeG0sIHltKTsKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIG1ldiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHRydWUs
IGZhbHNlLCBmYWxzZSwgeG0sIHltLCBNb3VzZUV2ZW50KCkpOworCisgICAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudCh0cnVlLCBmYWxzZSwgZmFs
c2UsIE1vdXNlRXZlbnQoKSk7CiAKICAgICAvLyBEcmFnIGV2ZW50cyBzaG91bGQgbmV2ZXIgZ28g
dG8gdGV4dCBub2RlcyAoZm9sbG93aW5nIElFLCBhbmQgcHJvcGVyIG1vdXNlb3Zlci9vdXQgZGlz
cGF0Y2gpCiAgICAgTm9kZUltcGwqIG5ld1RhcmdldCA9IG1ldi5pbm5lck5vZGUoKTsKQEAgLTky
NCw2ICs5MzgsMTcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFJlc2l6aW5nRnJhbWVTZXQoSFRNTAog
ICAgIGQtPnJlc2l6aW5nRnJhbWVTZXQgPSBmcmFtZVNldDsKIH0KIAorTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyBGcmFtZVZpZXc6OnByZXBhcmVNb3VzZUV2ZW50KGJvb2wgcmVhZG9ubHks
IGJvb2wgYWN0aXZlLCBib29sIG1vdXNlTW92ZSwgY29uc3QgTW91c2VFdmVudCYgbWV2KQorewor
ICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Cisg
ICAgCisgICAgaW50IHhtLCB5bTsKKyAgICB2aWV3cG9ydFRvQ29udGVudHMobWV2LngoKSwgbWV2
LnkoKSwgeG0sIHltKTsKKworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJl
TW91c2VFdmVudChyZWFkb25seSwgYWN0aXZlLCBtb3VzZU1vdmUsIHhtLCB5bSwgbWV2KTsKK30K
KwogYm9vbCBGcmFtZVZpZXc6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgTm9kZUltcGwqIHRhcmdldE5vZGUsIGJvb2wgY2FuY2VsYWJsZSwKICAgICBp
bnQgY2xpY2tDb3VudCwgY29uc3QgTW91c2VFdmVudCYgbW91c2VFdmVudCwgYm9vbCBzZXRVbmRl
cikKIHsKQEAgLTkzNCwzMSArOTU5LDE4IEBAIGJvb2wgRnJhbWVWaWV3OjpkaXNwYXRjaE1vdXNl
RXZlbnQoY29uc3QKIAogICAgIC8vIG1vdXNlb3V0L21vdXNlb3ZlcgogICAgIGlmIChzZXRVbmRl
cikgewotICAgICAgICBpbnQgY2xpZW50WCwgY2xpZW50WTsKLSAgICAgICAgdmlld3BvcnRUb0Nv
bnRlbnRzKG1vdXNlRXZlbnQueCgpLCBtb3VzZUV2ZW50LnkoKSwgY2xpZW50WCwgY2xpZW50WSk7
Ci0gICAgICAgIGlmIChkLT5wcmV2TW91c2VYICE9IGNsaWVudFggfHwgZC0+cHJldk1vdXNlWSAh
PSBjbGllbnRZKSB7Ci0gICAgICAgICAgICAvLyAjIyMgdGhpcyBjb2RlIHN1Y2tzLiB3ZSBzaG91
bGQgc2F2ZSB0aGUgb2xkVW5kZXIgaW5zdGVhZCBvZiBjYWxjdWxhdGluZwotICAgICAgICAgICAg
Ly8gaXQgYWdhaW4uIGNhbGN1bGF0aW5nIGlzIGV4cGVuc2l2ZSEgKERpcmspCi0gICAgICAgICAg
ICAvLyBBbHNvLCB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBvbGQgdW5kZXIgbm9kZSBp
cyBldmVuIGFyb3VuZCBhbnkgbW9yZSwKLSAgICAgICAgICAgIC8vIHNvIHdlIGNvdWxkIGJlIHNl
bmRpbmcgYSBtb3VzZW91dCB0byBhIG5vZGUgdGhhdCBuZXZlciBnb3QgYSBtb3VzZW92ZXIuCi0g
ICAgICAgICAgICBSZWZQdHI8Tm9kZUltcGw+IG9sZFVuZGVyOwotICAgICAgICAgICAgaWYgKGQt
PnByZXZNb3VzZVggPj0gMCkgewotICAgICAgICAgICAgICAgIG9sZFVuZGVyID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQodHJ1ZSwgZmFsc2UsIHRydWUsCi0gICAgICAg
ICAgICAgICAgICAgIGQtPnByZXZNb3VzZVgsIGQtPnByZXZNb3VzZVksIG1vdXNlRXZlbnQpLmlu
bmVyTm9kZSgpOwotICAgICAgICAgICAgICAgIGlmIChvbGRVbmRlciAmJiBvbGRVbmRlci0+aXNU
ZXh0Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBvbGRVbmRlciA9IG9sZFVuZGVyLT5wYXJl
bnROb2RlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkLT5wcmV2TW91c2VYID0gY2xp
ZW50WDsKLSAgICAgICAgICAgIGQtPnByZXZNb3VzZVkgPSBjbGllbnRZOwotICAgICAgICAgICAg
aWYgKG9sZFVuZGVyICE9IHRhcmdldE5vZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBzZW5kIG1v
dXNlb3V0IGV2ZW50IHRvIHRoZSBvbGQgbm9kZQotICAgICAgICAgICAgICAgIGlmIChvbGRVbmRl
cikKLSAgICAgICAgICAgICAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChvbGRVbmRlci5nZXQo
KSktPmRpc3BhdGNoTW91c2VFdmVudChtb3VzZUV2ZW50LCBtb3VzZW91dEV2ZW50LCAwLCB0YXJn
ZXROb2RlKTsKLSAgICAgICAgICAgICAgICAvLyBzZW5kIG1vdXNlb3ZlciBldmVudCB0byB0aGUg
bmV3IG5vZGUKLSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Tm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdCh0YXJnZXROb2RlKS0+ZGlzcGF0Y2hNb3VzZUV2ZW50
KG1vdXNlRXZlbnQsIG1vdXNlb3ZlckV2ZW50LCAwLCBvbGRVbmRlci5nZXQoKSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgIGlmIChkLT5vbGRVbmRlciAmJiBkLT5vbGRVbmRlci0+Z2V0RG9jdW1l
bnQoKSAhPSBmcmFtZSgpLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZC0+b2xkVW5kZXIgPSAw
OworCisgICAgICAgIGlmIChkLT5vbGRVbmRlciAhPSB0YXJnZXROb2RlKSB7CisgICAgICAgICAg
ICAvLyBzZW5kIG1vdXNlb3V0IGV2ZW50IHRvIHRoZSBvbGQgbm9kZQorICAgICAgICAgICAgaWYg
KGQtPm9sZFVuZGVyKQorICAgICAgICAgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoZC0+b2xk
VW5kZXIuZ2V0KCkpLT5kaXNwYXRjaE1vdXNlRXZlbnQobW91c2VFdmVudCwgbW91c2VvdXRFdmVu
dCwgMCwgdGFyZ2V0Tm9kZSk7CisgICAgICAgICAgICAvLyBzZW5kIG1vdXNlb3ZlciBldmVudCB0
byB0aGUgbmV3IG5vZGUKKyAgICAgICAgICAgIGlmICh0YXJnZXROb2RlKQorICAgICAgICAgICAg
ICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QodGFyZ2V0Tm9kZSktPmRpc3BhdGNoTW91c2VFdmVudCht
b3VzZUV2ZW50LCBtb3VzZW92ZXJFdmVudCwgMCwgZC0+b2xkVW5kZXIuZ2V0KCkpOwogICAgICAg
ICB9CisgICAgICAgIGQtPm9sZFVuZGVyID0gdGFyZ2V0Tm9kZTsKICAgICB9CiAKICAgICBib29s
IHN3YWxsb3dFdmVudCA9IGZhbHNlOwpAQCAtMTA1MSw3ICsxMDYzLDcgQEAgdm9pZCBGcmFtZVZp
ZXc6OmxheW91dFRpbWVyRmlyZWQoVGltZXI8Rgogdm9pZCBGcmFtZVZpZXc6OmhvdmVyVGltZXJG
aXJlZChUaW1lcjxGcmFtZVZpZXc+KikKIHsKICAgICBkLT5ob3ZlclRpbWVyLnN0b3AoKTsKLSAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChmYWxzZSwgZmFsc2UsIHRy
dWUsIGQtPnByZXZNb3VzZVgsIGQtPnByZXZNb3VzZVksIE1vdXNlRXZlbnQoKSk7CisgICAgcHJl
cGFyZU1vdXNlRXZlbnQoZmFsc2UsIGZhbHNlLCB0cnVlLCBNb3VzZUV2ZW50KCkpOwogfQogCiB2
b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dCgpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lv
biAxMzM3MSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNiArNTQsNyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgS2V5RXZlbnQ7CiBjbGFzcyBNYWNG
cmFtZTsKIGNsYXNzIE1vdXNlRXZlbnQ7CitjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzOwogY2xhc3MgTm9kZUltcGw7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJDYW52
YXM7CkBAIC0yMTUsNiArMjE2LDggQEAgcHJpdmF0ZToKICAgICBRU3RyaW5nTGlzdCBmb3JtQ29t
cGxldGlvbkl0ZW1zKGNvbnN0IFFTdHJpbmcgJm5hbWUpIGNvbnN0OwogICAgIHZvaWQgYWRkRm9y
bUNvbXBsZXRpb25JdGVtKGNvbnN0IFFTdHJpbmcgJm5hbWUsIGNvbnN0IFFTdHJpbmcgJnZhbHVl
KTsKIAorICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQo
Ym9vbCByZWFkb25seSwgYm9vbCBhY3RpdmUsIGJvb2wgbW91c2VNb3ZlLCBjb25zdCBNb3VzZUV2
ZW50Jik7CisKICAgICBib29sIGRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgTm9kZUltcGwqIHRhcmdldCwKICAgICAgICAgYm9vbCBjYW5jZWxhYmxlLCBp
bnQgY2xpY2tDb3VudCwgY29uc3QgTW91c2VFdmVudCYsIGJvb2wgc2V0VW5kZXIpOwogICAgIGJv
b2wgZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGVJ
bXBsKiB0YXJnZXQsCg==
</data>
<flag name="review"
          id="1887"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>