<?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>78882</bug_id>
          
          <creation_ts>2012-02-17 00:53:17 -0800</creation_ts>
          <short_desc>[CSSRegions][CSSOM] Implement regionLayoutEvent</short_desc>
          <delta_ts>2017-10-27 20:10:09 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178970</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57312</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Raul Hudea">rhudea</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559014</commentid>
    <comment_count>0</comment_count>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-02-17 00:53:17 -0800</bug_when>
    <thetext>http://dev.w3.org/csswg/css3-regions/#region-flow-layout-events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561929</commentid>
    <comment_count>1</comment_count>
      <attachid>128202</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-02-22 06:35:22 -0800</bug_when>
    <thetext>Created attachment 128202
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562335</commentid>
    <comment_count>2</comment_count>
      <attachid>128202</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-02-22 13:36:25 -0800</bug_when>
    <thetext>Comment on attachment 128202
patch

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

Minusing for the lack of a check for any listeners at all to prevent having to fire the timer/events when nobody is listening, but see my spec-related questions also.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:404
&gt; +    if (!m_regionLayoutUpdateEventTimer.isActive())
&gt; +        m_regionLayoutUpdateEventTimer.startOneShot(0);

I would add a check if any listeners for the event are registered at all. I think the common case will be that nobody will have any listeners registered, and if so, you can avoid even kicking off this timer and firing the events.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:931
&gt; +    for (Vector&lt;RefPtr&lt;Node&gt; &gt;::const_iterator it = regionNodes.begin(); it != regionNodes.end(); ++it) {
&gt; +        RefPtr&lt;Node&gt; node = *it;
&gt; +        RefPtr&lt;Document&gt; document = node-&gt;document();
&gt; +        if (!document)
&gt; +            continue;
&gt; +        // Layout needs to be uptodate after each event listener
&gt; +        document-&gt;updateLayoutIgnorePendingStylesheets();
&gt; +        RenderObject* renderer = node-&gt;renderer();
&gt; +        if (renderer &amp;&amp; renderer-&gt;isRenderRegion())
&gt; +            node-&gt;dispatchRegionLayoutUpdateEvent();
&gt; +    }

It seems very weird to me that as you fire the event on each region, the layout has been updated from any event handler changes made by the previous region. This is more of a spec issue, but I don&apos;t really agree with the idea of firing N events for N regions. Why not simply fire one event? If the code is always just going to fire on every region, you might as well just have one event that fires on the document itself and then you just grab the region node list and do whatever it is you need to do. I see no benefit to always firing an event on every single region every time you get a layout (it&apos;s also not particularly performant). Let the author decide what regions to look at and only fire one event instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563112</commentid>
    <comment_count>3</comment_count>
      <attachid>128477</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-02-23 07:52:19 -0800</bug_when>
    <thetext>Created attachment 128477
not yet for review (no new tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572136</commentid>
    <comment_count>4</comment_count>
      <attachid>130439</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-03-06 14:03:30 -0800</bug_when>
    <thetext>Created attachment 130439
New patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572940</commentid>
    <comment_count>5</comment_count>
      <attachid>130439</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-03-07 09:10:15 -0800</bug_when>
    <thetext>Comment on attachment 130439
New patch

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

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:349
&gt; +static bool hasRegionLayoutUpdateListeners(Node* node)
&gt; +{
&gt; +    if (!node)
&gt; +        return false;
&gt; +
&gt; +    if (node-&gt;hasEventListeners(eventNames().webkitRegionLayoutUpdateEvent))
&gt; +        return true;
&gt; +
&gt; +    for (node = node-&gt;parentNode(); node; node = node-&gt;parentNode())
&gt; +        if (node-&gt;hasEventListeners(eventNames().webkitRegionLayoutUpdateEvent))
&gt; +            return true;
&gt; +
&gt; +    return false;
&gt; +}

I wasn&apos;t really asking for a node crawl all the way up... just for something a bit simpler, e.g., a single global that indicated whether there are any registered listeners anywhere in the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576293</commentid>
    <comment_count>6</comment_count>
      <attachid>131355</attachid>
    <who name="Raul Hudea">rhudea</who>
    <bug_when>2012-03-12 11:13:33 -0700</bug_when>
    <thetext>Created attachment 131355
Added simple check for any existing listeners</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576326</commentid>
    <comment_count>7</comment_count>
      <attachid>131355</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-12 11:36:07 -0700</bug_when>
    <thetext>Comment on attachment 131355
Added simple check for any existing listeners

Attachment 131355 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11943016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578548</commentid>
    <comment_count>8</comment_count>
      <attachid>131355</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-03-14 10:43:28 -0700</bug_when>
    <thetext>Comment on attachment 131355
Added simple check for any existing listeners

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

I still disagree with the idea of firing on every region, but I guess we can argue about that on the list. Especially once we have regions that have no elements, I don&apos;t think it will make sense to try to make them the target of events.

Anyway, r=me.

&gt; Source/WebCore/dom/Node.cpp:2782
&gt; +    if (!document()-&gt;hasListenerType(Document::REGIONLAYOUTUPDATE_LISTENER))
&gt; +        return;

Yup, great, that&apos;s all I was looking for here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578560</commentid>
    <comment_count>9</comment_count>
      <attachid>131355</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-03-14 11:02:00 -0700</bug_when>
    <thetext>Comment on attachment 131355
Added simple check for any existing listeners

The mac build worked locally, so adding CQ+ to make it try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578667</commentid>
    <comment_count>10</comment_count>
      <attachid>131355</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 12:48:21 -0700</bug_when>
    <thetext>Comment on attachment 131355
Added simple check for any existing listeners

Clearing flags on attachment: 131355

Committed r110731: &lt;http://trac.webkit.org/changeset/110731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578669</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 12:48:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750410</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 23:20:20 -0700</bug_when>
    <thetext>webkitRegionLayoutUpdate is named incorrectly.  It should be in all lower case.  Please let me know if you&apos;d like me to file a bug on this topic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750419</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 23:28:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; webkitRegionLayoutUpdate is named incorrectly.  It should be in all lower case.  Please let me know if you&apos;d like me to file a bug on this topic.

I filed bug 100335 on this topic.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128202</attachid>
            <date>2012-02-22 06:35:22 -0800</date>
            <delta_ts>2012-02-23 07:52:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19901</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YzE0ODQ0Li40NWU2MGZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDIt
MjIgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IHJlZ2lvbkxheW91dEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1h
ZGQtdG8tZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1kb20uaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1m
bG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1l
dmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy9yZWdpb24tZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMjEgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdUkVHUkVTU0lPTihyOTIyNTQp
OiBJdCBtYWRlIDIgdGVzdHMgdGltZW91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmQwZmUwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgcmVnaW9uTGF5b3V0RXZlbnQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisgRmxvdyBjb250ZW50CitQQVNTIGV2ZW50LnRhcmdl
dC5pZCBpcyAicmVnaW9uXzEiCitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVnaW9uXzEiCitQ
QVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVnaW9uXzIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc4YzA2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93Lmh0bWwKQEAgLTAsMCArMSw3
NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdl
YmtpdC1mbG93LWludG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9
CisjcmVnaW9uXzEgeworICAgIC13ZWJraXQtZmxvdy1mcm9tOiBub19hcnRpY2xlOworICAgIG92
ZXJmbG93OmhpZGRlbjsKKyAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1h
bGlnbjp0b3A7CisgICAgbWFyZ2luOjEwcHg7Cit9CisuYmxvY2sgeworICAgZGlzcGxheTpibG9j
azsKK30KKyNyZWdpb25fMSwgI3JlZ2lvbl8yIHsgaGVpZ2h0OjExMHB4OyB3aWR0aDoyMDBweDsg
bWFyZ2luOiA1cHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iIGNsYXNzPSJibG9jayI+PC9kaXY+Cis8ZGl2IGlkPSJhcnRpY2xlIj4KKyAgICA8ZGl2
PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0iaGVpZ2h0OiAyMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlk
PSJyZWdpb25fMSI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb25fMiI+PC9kaXY+CisKKzxkaXYgaWQ9
ImNvbnNvbGUiIGNsYXNzPSJibG9jayI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRlc3RzIHJlZ2lvbkxheW91dEV2ZW50IikKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgZnVuY3Rpb24gZmxvd0NvbnRlbnQo
cmVnaW9uLCBmbG93TmFtZSkgeworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHJlZ2lvbik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsK
KyAgICB9CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiByZWdpb24xVXBkYXRlZChl
dmVudCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5pZCIs
ICJyZWdpb25fMSIpOworICAgICAgICBpZiAoKytjb3VudCA+IDEpIHsKKyAgICAgICAgICAgdmFy
IHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgICAgIHIx
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFV
cGRhdGVkKTsKKyAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZsb3dDb250
ZW50KCJyZWdpb25fMiIsICJhcnRpY2xlIik7IC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGEgbmV3IHJv
dW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5b3V0CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJV
cGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LmlkIiwgInJlZ2lvbl8yIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByMi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIC8vIHRoaXMg
c2hvdWxkIGJlIHJlYWNoZWQgYWZ0ZXIgcmVnaW9uXzIgaXMgcmVtb3ZlZCBmcm9tIGZsb3cKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
KyAgICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7Cisg
ICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAg
ICAgICByMS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdp
b24xVXBkYXRlZCk7CisgICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxh
eW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAgICAgZGVidWcoIkZsb3cgY29udGVu
dCIpOworICAgICAgICBmbG93Q29udGVudCgicmVnaW9uXzEiLCAiYXJ0aWNsZSIpOworICAgIH0K
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVnaW9uLWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jMjk1NzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMg
cmVnaW9uTGF5b3V0RXZlbnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisgCitGbG93
IGNvbnRlbnQKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQu
dGFyZ2V0LmlkIGlzICJyZWdpb25fMiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
cmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxOWIyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9t
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVudAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyBGbG93IGNvbnRlbnQKK1BBU1MgZXZlbnQu
dGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25f
MiIKK1JlbW92aW5nIHJlZ2lvbl8yIGZyb20gRE9NCitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAi
cmVnaW9uXzEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1y
ZW1vdmUtZnJvbS1kb20uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZl
bnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2FjNjliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWlu
dG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEs
ICNyZWdpb25fMnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVy
ZmxvdzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxp
Z246dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7
Cit9CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1h
cmdpbjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0i
cmVnaW9uXzEiPjwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyMiI+CisgICAgPGRpdiBpZD0icmVn
aW9uXzIiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiIGNsYXNzPSJibG9jayI+
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHJlZ2lvbkxheW91dEV2
ZW50IikKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgZnVuY3Rpb24gZmxvd0NvbnRlbnQoZmxvd05hbWUpIHsKKyAgICAgICAgdmFy
IHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAgci5zdHls
ZS53ZWJraXRGbG93RnJvbSA9IGZsb3dOYW1lOworICAgICAgICByID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBm
bG93TmFtZTsKKyAgICB9CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiByZWdpb24x
VXBkYXRlZChldmVudCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5pZCIsICJyZWdpb25fMSIpOworICAgICAgICBpZiAoKytjb3VudCA+IDEpIHsKKyAgICAg
ICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAg
ICAgICAgIHIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIs
IHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgcmVhY2hlZCBh
ZnRlciByZWdpb25fMiBpcyByZW1vdmVkIGZyb20gRE9NCisgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJVcGRhdGVkKGV2ZW50
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJl
Z2lvbl8yIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b25fMiIpOworICAgICAgICByMi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlv
dXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvblVwZGF0ZWQpOworICAgICAgICB2YXIg
YzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyMiIpOworICAgICAgICBkZWJ1
ZygiUmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBET00iKTsKKyAgICAgICAgYzIuaW5uZXJIVE1MID0g
IiI7IC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGEgbmV3IHJvdW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5
b3V0CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvblVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAg
dGVzdEZhaWxlZChldmVudC50YXJnZXQuaWQgKyAiIGV2ZW50IHNob3VsZG4ndCBoYXZlIGJlZW4g
ZGlzcGF0Y2hlZCIgKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAg
ICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAg
dmFyIHIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIx
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFVcGRh
dGVkKTsKKyAgICAgICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBk
YXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50Iik7Cisg
ICAgICAgIGZsb3dDb250ZW50KCJhcnRpY2xlIik7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2
ZW50LXJlbW92ZS1mcm9tLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2I2OGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVudAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyAKK0Zsb3cgY29udGVudAorUEFTUyBldmVudC50YXJn
ZXQuaWQgaXMgInJlZ2lvbl8xIgorUEFTUyBldmVudC50YXJnZXQuaWQgaXMgInJlZ2lvbl8yIgor
UmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBmbG93CitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVn
aW9uXzEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1v
dmUtZnJvbS1mbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50
LXJlbW92ZS1mcm9tLWZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41NzA0MjdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jl
Z2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWlu
dG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEs
ICNyZWdpb25fMnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVy
ZmxvdzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxp
Z246dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7
Cit9CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1h
cmdpbjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0i
cmVnaW9uXzEiPjwvZGl2PgorPGRpdiBpZD0icmVnaW9uXzIiPjwvZGl2PgorCis8ZGl2IGlkPSJj
b25zb2xlIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0cyByZWdpb25MYXlvdXRFdmVudCIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KGZs
b3dOYW1lKSB7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bl8xIik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsKKyAgICAg
ICAgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByLnN0
eWxlLndlYmtpdEZsb3dGcm9tID0gZmxvd05hbWU7CisgICAgfQorICAgIHZhciBjb3VudCA9IDA7
CisgICAgZnVuY3Rpb24gcmVnaW9uMVVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzEiKTsKKyAgICAgICAgaWYg
KCsrY291bnQgPiAxKSB7CisgICAgICAgICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb25fMSIpOworICAgICAgICAgICByMS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24xVXBkYXRlZCk7CisgICAgICAgICAgIC8vIHRo
aXMgc2hvdWxkIGJlIHJlYWNoZWQgYWZ0ZXIgcmVnaW9uXzIgaXMgcmVtb3ZlZCBmcm9tIGZsb3cK
KyAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rp
b24gcmVnaW9uMlVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzIiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAg
ICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9u
VXBkYXRlZCk7CisgICAgICAgIGRlYnVnKCJSZW1vdmluZyByZWdpb25fMiBmcm9tIGZsb3ciKTsK
KyAgICAgICAgcjIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSAibm9uZSI7IC8vIHRoaXMgd2lsbCB0
cmlnZ2VyIGEgbmV3IHJvdW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5b3V0CisgICAgfQorICAgIGZ1
bmN0aW9uIHJlZ2lvblVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZChldmVudC50
YXJnZXQuaWQgKyAiIGV2ZW50IHNob3VsZG4ndCBoYXZlIGJlZW4gZGlzcGF0Y2hlZCIgKTsKKyAg
ICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICB2YXIgcjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIxLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgcjIu
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMlVwZGF0
ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50Iik7CisgICAgICAgIGZsb3dDb250ZW50
KCJhcnRpY2xlIik7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
c3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDY3ZWI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9yZWdpb24tZXZlbnQuaHRtbApAQCAtMCwwICsxLDY4IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KKyNhcnRpY2xlIHsKKyAgICAtd2Via2l0LWZsb3ctaW50bzog
YXJ0aWNsZTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsKK30KKyNyZWdpb25fMSwgI3Jl
Z2lvbl8yeworICAgIC13ZWJraXQtZmxvdy1mcm9tOiBub19hcnRpY2xlOworICAgIG92ZXJmbG93
OmhpZGRlbjsKKyAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1hbGlnbjp0
b3A7CisgICAgbWFyZ2luOjEwcHg7Cit9CisuYmxvY2sgeworICAgZGlzcGxheTpibG9jazsKK30K
KyNyZWdpb25fMSwgI3JlZ2lvbl8yIHsgaGVpZ2h0OjExMHB4OyB3aWR0aDoyMDBweH0KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIiBjbGFzcz0iYmxvY2si
PjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdiBpZD0i
Y29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+
PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0icmVnaW9uXzEiPjwvZGl2Pgor
PGRpdiBpZD0icmVnaW9uXzIiPjwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIiBjbGFzcz0iYmxv
Y2siPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyByZWdpb25MYXlv
dXRFdmVudCIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KGZsb3dOYW1lKSB7CisgICAgICAg
IHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgIHIu
c3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsKKyAgICAgICAgciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByLnN0eWxlLndlYmtpdEZsb3dGcm9t
ID0gZmxvd05hbWU7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjFVcGRhdGVkKGV2ZW50KSB7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJlZ2lv
bl8xIik7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJVcGRhdGVkKGV2ZW50KSB7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJlZ2lvbl8yIik7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7CisgICAgICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIp
OworICAgICAgICB2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzIiKTsK
KyAgICAgICAgcjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwg
cmVnaW9uMVVwZGF0ZWQpOworICAgICAgICByMi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdp
b25MYXlvdXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIGRlYnVnKCJGbG93IGNv
bnRlbnQiKTsKKyAgICAgICAgZmxvd0NvbnRlbnQoImFydGljbGUiKTsKKyAgICB9CisgICAgLy9z
dGFydFRlc3QoKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVz
dCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZj
Y2I2NjkuLmM4OTUxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wMi0yMiAg
UmF1bCBIdWRlYSAgPHJodWRlYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NT
U09NXSBJbXBsZW1lbnQgcmVnaW9uTGF5b3V0RXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSByZWdpb25MYXlvdXRFdmVudCB0aGF0
IGlzIGRpc3BhdGNoIGZvciBhbGwgcmVnaW9ucyBhZnRlciBlYWNoIGZsb3ctdGhyZWFkIGxheW91
dC4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxv
dy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJlbW92ZS1m
cm9tLWRvbS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJl
bW92ZS1mcm9tLWZsb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3JlZ2lvbi1l
dmVudC5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlz
cGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
UmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjps
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uTGF5b3V0
VXBkYXRlRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisKIDIwMTItMDItMjEgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCmluZGV4IGE2MTZmNzQuLjE1M2Q1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApA
QCAtMjAwLDYgKzIwMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8o
d2Via2l0cG9pbnRlcmxvY2tsb3N0KSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdFJlZ2lvbkxh
eW91dFVwZGF0ZSkgXAorICAgIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFD
SAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggMDliOTE1NS4uYzk0NDRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtMjc4OCw2ICsyNzg4LDEyIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2
ZW50KHRoaXMsIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50KSk7CiB9CiAKK3Zv
aWQgTm9kZTo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCit7CisgICAgQVNTRVJU
KCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoVUlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRSZWdpb25MYXlvdXRVcGRhdGVFdmVudCwg
dHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCkpOworfQorCiB2b2lkIE5v
ZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKQogewogICAgIEFTU0VSVCghZXZlbnRE
aXNwYXRjaEZvcmJpZGRlbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUwMjkyMGMuLjE1OTU2MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtNTkxLDYgKzU5MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwogCisgICAgdm9pZCBkaXNwYXRjaFJlZ2lvbkxh
eW91dFVwZGF0ZUV2ZW50KCk7CisKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQoKTsKICAgICB2b2lkIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNz
UmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hGb2N1c0lu
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8Tm9kZT4gb2xk
Rm9jdXNlZE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwCmluZGV4IDllNDdkNGQuLjllNzcwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgUmVuZGVyRmxvd1Ro
cmVhZDo6UmVuZGVyRmxvd1RocmVhZChOb2RlKiBub2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGZs
b3dUaHJlYWQpCiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCh0cnVlKQog
ICAgICwgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCiAgICAgLCBtX292
ZXJmbG93KGZhbHNlKQorICAgICwgbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyKHRoaXMs
ICZSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyRmlyZWQpCiB7
CiAgICAgQVNTRVJUKG5vZGUtPmRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVkKCkpOwogICAg
IHNldElzQW5vbnltb3VzKGZhbHNlKTsKQEAgLTM5OSw2ICs0MDAsOCBAQCB2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OmxheW91dCgpCiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVy
KHZpZXcoKSwgdGhpcywgcmVnaW9uc0NoYW5nZWQpOwogICAgIFJlbmRlckJsb2NrOjpsYXlvdXQo
KTsKICAgICBzdGF0ZVB1c2hlci5wb3AoKTsKKyAgICBpZiAoIW1fcmVnaW9uTGF5b3V0VXBkYXRl
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1
dGVMb2dpY2FsV2lkdGgoKQpAQCAtOTA1LDQgKzkwOCwyNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmNvbXB1dGVPdmVyZmxvd1N0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFm
dGVyRQogICAgIG1fb3ZlcmZsb3cgPSBsYXN0UmVnICYmIChsYXN0UmVnLT5yZWdpb25TdGF0ZSgp
ID09IFJlbmRlclJlZ2lvbjo6UmVnaW9uT3ZlcmZsb3cpOwogfQogCit2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OnJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJGbG93
VGhyZWFkPiopCit7CisgICAgLy8gQ3JlYXRlIGEgY29weSBvZiByZWdpb24gbm9kZXMsIHRvIHBy
b3RlY3QgdGhlbSBmb3IgYmVpbmcgZGVzdHJveWVkIGluIHRoZSBldmVudCBsaXN0ZW5lcgorICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZWdpb25Ob2RlczsKKyAgICByZWdpb25Ob2Rlcy5yZXNl
cnZlQ2FwYWNpdHkobV9yZWdpb25MaXN0LnNpemUoKSk7CisgICAgZm9yIChSZW5kZXJSZWdpb25M
aXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdp
b25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAq
aXRlcjsKKyAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bm9kZSgpICYmIHJlZ2lvbi0+bm9kZSgpLT5p
c0VsZW1lbnROb2RlKCkpOworICAgICAgICByZWdpb25Ob2Rlcy5hcHBlbmQocmVnaW9uLT5ub2Rl
KCkpOworICAgIH0KKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSByZWdpb25Ob2Rlcy5iZWdpbigpOyBpdCAhPSByZWdpb25Ob2Rlcy5lbmQoKTsgKytp
dCkgeworICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9ICppdDsKKyAgICAgICAgUmVmUHRyPERv
Y3VtZW50PiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1l
bnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gTGF5b3V0IG5lZWRzIHRvIGJl
IHVwdG9kYXRlIGFmdGVyIGVhY2ggZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyICYm
IHJlbmRlcmVyLT5pc1JlbmRlclJlZ2lvbigpKQorICAgICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hS
ZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXgg
ZDA1OTM4OC4uNmNlY2ZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoZWNrSW52
YWxpZFJlZ2lvbnMoKTsKIAogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25zdCBMYXlvdXRSZWN0
JikgY29uc3Q7CisgICAgdm9pZCByZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyRmlyZWQoVGlt
ZXI8UmVuZGVyRmxvd1RocmVhZD4qKTsKIAogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVy
T2JqZWN0Kj4gRmxvd1RocmVhZENoaWxkTGlzdDsKICAgICBGbG93VGhyZWFkQ2hpbGRMaXN0IG1f
Zmxvd1RocmVhZENoaWxkTGlzdDsKQEAgLTE5OCw2ICsxOTksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0OwogICAgIGJvb2wgbV9vdmVyZmxv
dzsKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBtX25hbWVkRmxvdzsKKyAgICBUaW1lcjxS
ZW5kZXJGbG93VGhyZWFkPiBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXI7CiB9OwogCiBp
bmxpbmUgUmVuZGVyRmxvd1RocmVhZCogdG9SZW5kZXJGbG93VGhyZWFkKFJlbmRlck9iamVjdCog
b2JqZWN0KQo=
</data>
<flag name="review"
          id="130516"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="130517"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128477</attachid>
            <date>2012-02-23 07:52:19 -0800</date>
            <delta_ts>2012-03-12 11:13:33 -0700</delta_ts>
            <desc>not yet for review (no new tests) </desc>
            <filename>patch_2</filename>
            <type>text/plain</type>
            <size>24042</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YzE0ODQ0Li40NWU2MGZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDIt
MjIgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IHJlZ2lvbkxheW91dEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1h
ZGQtdG8tZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1kb20uaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1m
bG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1l
dmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy9yZWdpb24tZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMjEgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdUkVHUkVTU0lPTihyOTIyNTQp
OiBJdCBtYWRlIDIgdGVzdHMgdGltZW91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmQwZmUwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgcmVnaW9uTGF5b3V0RXZlbnQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisgRmxvdyBjb250ZW50CitQQVNTIGV2ZW50LnRhcmdl
dC5pZCBpcyAicmVnaW9uXzEiCitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVnaW9uXzEiCitQ
QVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVnaW9uXzIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc4YzA2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93Lmh0bWwKQEAgLTAsMCArMSw3
NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdl
YmtpdC1mbG93LWludG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9
CisjcmVnaW9uXzEgeworICAgIC13ZWJraXQtZmxvdy1mcm9tOiBub19hcnRpY2xlOworICAgIG92
ZXJmbG93OmhpZGRlbjsKKyAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1h
bGlnbjp0b3A7CisgICAgbWFyZ2luOjEwcHg7Cit9CisuYmxvY2sgeworICAgZGlzcGxheTpibG9j
azsKK30KKyNyZWdpb25fMSwgI3JlZ2lvbl8yIHsgaGVpZ2h0OjExMHB4OyB3aWR0aDoyMDBweDsg
bWFyZ2luOiA1cHg7fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3Jp
cHRpb24iIGNsYXNzPSJibG9jayI+PC9kaXY+Cis8ZGl2IGlkPSJhcnRpY2xlIj4KKyAgICA8ZGl2
PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0iaGVpZ2h0OiAyMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlk
PSJyZWdpb25fMSI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb25fMiI+PC9kaXY+CisKKzxkaXYgaWQ9
ImNvbnNvbGUiIGNsYXNzPSJibG9jayI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRlc3RzIHJlZ2lvbkxheW91dEV2ZW50IikKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgZnVuY3Rpb24gZmxvd0NvbnRlbnQo
cmVnaW9uLCBmbG93TmFtZSkgeworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHJlZ2lvbik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsK
KyAgICB9CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiByZWdpb24xVXBkYXRlZChl
dmVudCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5pZCIs
ICJyZWdpb25fMSIpOworICAgICAgICBpZiAoKytjb3VudCA+IDEpIHsKKyAgICAgICAgICAgdmFy
IHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgICAgIHIx
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFV
cGRhdGVkKTsKKyAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZsb3dDb250
ZW50KCJyZWdpb25fMiIsICJhcnRpY2xlIik7IC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGEgbmV3IHJv
dW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5b3V0CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJV
cGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LmlkIiwgInJlZ2lvbl8yIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByMi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIC8vIHRoaXMg
c2hvdWxkIGJlIHJlYWNoZWQgYWZ0ZXIgcmVnaW9uXzIgaXMgcmVtb3ZlZCBmcm9tIGZsb3cKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
KyAgICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7Cisg
ICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAg
ICAgICByMS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdp
b24xVXBkYXRlZCk7CisgICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxh
eW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAgICAgZGVidWcoIkZsb3cgY29udGVu
dCIpOworICAgICAgICBmbG93Q29udGVudCgicmVnaW9uXzEiLCAiYXJ0aWNsZSIpOworICAgIH0K
KyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVnaW9uLWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jMjk1NzRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMg
cmVnaW9uTGF5b3V0RXZlbnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisgCitGbG93
IGNvbnRlbnQKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQu
dGFyZ2V0LmlkIGlzICJyZWdpb25fMiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
cmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxOWIyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9t
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVudAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyBGbG93IGNvbnRlbnQKK1BBU1MgZXZlbnQu
dGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25f
MiIKK1JlbW92aW5nIHJlZ2lvbl8yIGZyb20gRE9NCitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAi
cmVnaW9uXzEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1y
ZW1vdmUtZnJvbS1kb20uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZl
bnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2FjNjliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWlu
dG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEs
ICNyZWdpb25fMnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVy
ZmxvdzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxp
Z246dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7
Cit9CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1h
cmdpbjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0i
cmVnaW9uXzEiPjwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyMiI+CisgICAgPGRpdiBpZD0icmVn
aW9uXzIiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiIGNsYXNzPSJibG9jayI+
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHJlZ2lvbkxheW91dEV2
ZW50IikKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgZnVuY3Rpb24gZmxvd0NvbnRlbnQoZmxvd05hbWUpIHsKKyAgICAgICAgdmFy
IHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAgci5zdHls
ZS53ZWJraXRGbG93RnJvbSA9IGZsb3dOYW1lOworICAgICAgICByID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBm
bG93TmFtZTsKKyAgICB9CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiByZWdpb24x
VXBkYXRlZChldmVudCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5pZCIsICJyZWdpb25fMSIpOworICAgICAgICBpZiAoKytjb3VudCA+IDEpIHsKKyAgICAg
ICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAg
ICAgICAgIHIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIs
IHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgcmVhY2hlZCBh
ZnRlciByZWdpb25fMiBpcyByZW1vdmVkIGZyb20gRE9NCisgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJVcGRhdGVkKGV2ZW50
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJl
Z2lvbl8yIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b25fMiIpOworICAgICAgICByMi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlv
dXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvblVwZGF0ZWQpOworICAgICAgICB2YXIg
YzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyMiIpOworICAgICAgICBkZWJ1
ZygiUmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBET00iKTsKKyAgICAgICAgYzIuaW5uZXJIVE1MID0g
IiI7IC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGEgbmV3IHJvdW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5
b3V0CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvblVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAg
dGVzdEZhaWxlZChldmVudC50YXJnZXQuaWQgKyAiIGV2ZW50IHNob3VsZG4ndCBoYXZlIGJlZW4g
ZGlzcGF0Y2hlZCIgKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAg
ICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAg
dmFyIHIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIx
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFVcGRh
dGVkKTsKKyAgICAgICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBk
YXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50Iik7Cisg
ICAgICAgIGZsb3dDb250ZW50KCJhcnRpY2xlIik7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2
ZW50LXJlbW92ZS1mcm9tLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2I2OGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVudAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyAKK0Zsb3cgY29udGVudAorUEFTUyBldmVudC50YXJn
ZXQuaWQgaXMgInJlZ2lvbl8xIgorUEFTUyBldmVudC50YXJnZXQuaWQgaXMgInJlZ2lvbl8yIgor
UmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBmbG93CitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVn
aW9uXzEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1v
dmUtZnJvbS1mbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50
LXJlbW92ZS1mcm9tLWZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41NzA0MjdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jl
Z2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWlu
dG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEs
ICNyZWdpb25fMnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVy
ZmxvdzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxp
Z246dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7
Cit9CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1h
cmdpbjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0i
cmVnaW9uXzEiPjwvZGl2PgorPGRpdiBpZD0icmVnaW9uXzIiPjwvZGl2PgorCis8ZGl2IGlkPSJj
b25zb2xlIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0cyByZWdpb25MYXlvdXRFdmVudCIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KGZs
b3dOYW1lKSB7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bl8xIik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsKKyAgICAg
ICAgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByLnN0
eWxlLndlYmtpdEZsb3dGcm9tID0gZmxvd05hbWU7CisgICAgfQorICAgIHZhciBjb3VudCA9IDA7
CisgICAgZnVuY3Rpb24gcmVnaW9uMVVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzEiKTsKKyAgICAgICAgaWYg
KCsrY291bnQgPiAxKSB7CisgICAgICAgICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb25fMSIpOworICAgICAgICAgICByMS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24xVXBkYXRlZCk7CisgICAgICAgICAgIC8vIHRo
aXMgc2hvdWxkIGJlIHJlYWNoZWQgYWZ0ZXIgcmVnaW9uXzIgaXMgcmVtb3ZlZCBmcm9tIGZsb3cK
KyAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rp
b24gcmVnaW9uMlVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzIiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAg
ICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9u
VXBkYXRlZCk7CisgICAgICAgIGRlYnVnKCJSZW1vdmluZyByZWdpb25fMiBmcm9tIGZsb3ciKTsK
KyAgICAgICAgcjIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSAibm9uZSI7IC8vIHRoaXMgd2lsbCB0
cmlnZ2VyIGEgbmV3IHJvdW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5b3V0CisgICAgfQorICAgIGZ1
bmN0aW9uIHJlZ2lvblVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZChldmVudC50
YXJnZXQuaWQgKyAiIGV2ZW50IHNob3VsZG4ndCBoYXZlIGJlZW4gZGlzcGF0Y2hlZCIgKTsKKyAg
ICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICB2YXIgcjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIxLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgcjIu
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMlVwZGF0
ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50Iik7CisgICAgICAgIGZsb3dDb250ZW50
KCJhcnRpY2xlIik7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
c3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDY3ZWI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9yZWdpb24tZXZlbnQuaHRtbApAQCAtMCwwICsxLDY4IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KKyNhcnRpY2xlIHsKKyAgICAtd2Via2l0LWZsb3ctaW50bzog
YXJ0aWNsZTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsKK30KKyNyZWdpb25fMSwgI3Jl
Z2lvbl8yeworICAgIC13ZWJraXQtZmxvdy1mcm9tOiBub19hcnRpY2xlOworICAgIG92ZXJmbG93
OmhpZGRlbjsKKyAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1hbGlnbjp0
b3A7CisgICAgbWFyZ2luOjEwcHg7Cit9CisuYmxvY2sgeworICAgZGlzcGxheTpibG9jazsKK30K
KyNyZWdpb25fMSwgI3JlZ2lvbl8yIHsgaGVpZ2h0OjExMHB4OyB3aWR0aDoyMDBweH0KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIiBjbGFzcz0iYmxvY2si
PjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4KKyAgICAgICAgPGRpdiBpZD0i
Y29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+
PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0icmVnaW9uXzEiPjwvZGl2Pgor
PGRpdiBpZD0icmVnaW9uXzIiPjwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIiBjbGFzcz0iYmxv
Y2siPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyByZWdpb25MYXlv
dXRFdmVudCIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KGZsb3dOYW1lKSB7CisgICAgICAg
IHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgIHIu
c3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsKKyAgICAgICAgciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByLnN0eWxlLndlYmtpdEZsb3dGcm9t
ID0gZmxvd05hbWU7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjFVcGRhdGVkKGV2ZW50KSB7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJlZ2lv
bl8xIik7CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJVcGRhdGVkKGV2ZW50KSB7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJlZ2lvbl8yIik7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7CisgICAgICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIp
OworICAgICAgICB2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzIiKTsK
KyAgICAgICAgcjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwg
cmVnaW9uMVVwZGF0ZWQpOworICAgICAgICByMi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdp
b25MYXlvdXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIGRlYnVnKCJGbG93IGNv
bnRlbnQiKTsKKyAgICAgICAgZmxvd0NvbnRlbnQoImFydGljbGUiKTsKKyAgICB9CisgICAgLy9z
dGFydFRlc3QoKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0VGVz
dCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZj
Y2I2NjkuLmM4OTUxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wMi0yMiAg
UmF1bCBIdWRlYSAgPHJodWRlYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdW0NT
U09NXSBJbXBsZW1lbnQgcmVnaW9uTGF5b3V0RXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRoZSByZWdpb25MYXlvdXRFdmVudCB0aGF0
IGlzIGRpc3BhdGNoIGZvciBhbGwgcmVnaW9ucyBhZnRlciBlYWNoIGZsb3ctdGhyZWFkIGxheW91
dC4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxv
dy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJlbW92ZS1m
cm9tLWRvbS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJl
bW92ZS1mcm9tLWZsb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3JlZ2lvbi1l
dmVudC5odG1sCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlz
cGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
UmVuZGVyRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjps
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uTGF5b3V0
VXBkYXRlRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisKIDIwMTItMDItMjEgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCmluZGV4IGE2MTZmNzQuLjE1M2Q1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApA
QCAtMjAwLDYgKzIwMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8o
d2Via2l0cG9pbnRlcmxvY2tsb3N0KSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdFJlZ2lvbkxh
eW91dFVwZGF0ZSkgXAorICAgIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFD
SAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggMDliOTE1NS4uYzk0NDRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtMjc4OCw2ICsyNzg4LDEyIEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2
ZW50KHRoaXMsIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50KSk7CiB9CiAKK3Zv
aWQgTm9kZTo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCit7CisgICAgQVNTRVJU
KCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOworICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoVUlF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRSZWdpb25MYXlvdXRVcGRhdGVFdmVudCwg
dHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCkpOworfQorCiB2b2lkIE5v
ZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKQogewogICAgIEFTU0VSVCghZXZlbnRE
aXNwYXRjaEZvcmJpZGRlbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUwMjkyMGMuLjE1OTU2MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtNTkxLDYgKzU5MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwogCisgICAgdm9pZCBkaXNwYXRjaFJlZ2lvbkxh
eW91dFVwZGF0ZUV2ZW50KCk7CisKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQoKTsKICAgICB2b2lkIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNz
UmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hGb2N1c0lu
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8Tm9kZT4gb2xk
Rm9jdXNlZE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwCmluZGV4IDllNDdkNGQuLjQ2OWJmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgUmVuZGVyRmxvd1Ro
cmVhZDo6UmVuZGVyRmxvd1RocmVhZChOb2RlKiBub2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGZs
b3dUaHJlYWQpCiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCh0cnVlKQog
ICAgICwgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCiAgICAgLCBtX292
ZXJmbG93KGZhbHNlKQorICAgICwgbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyKHRoaXMs
ICZSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyRmlyZWQpCiB7
CiAgICAgQVNTRVJUKG5vZGUtPmRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVkKCkpOwogICAg
IHNldElzQW5vbnltb3VzKGZhbHNlKTsKQEAgLTMzMiw2ICszMzMsMjEgQEAgcHJpdmF0ZToKICAg
ICBSZW5kZXJGbG93VGhyZWFkKiBtX3JlbmRlckZsb3dUaHJlYWQ7CiB9OwogCitzdGF0aWMgYm9v
bCBoYXNSZWdpb25MYXlvdXRVcGRhdGVMaXN0ZW5lcnMoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChub2RlLT5oYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAobm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgaWYgKG5vZGUtPmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRSZWdpb25MYXlvdXRVcGRhdGVFdmVudCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogewogICAgIGJvb2wgcmVnaW9uc0NoYW5nZWQg
PSBtX3JlZ2lvbnNJbnZhbGlkYXRlZCAmJiBldmVySGFkTGF5b3V0KCk7CkBAIC0zOTksNiArNDE1
LDE1IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICBMYXlvdXRTdGF0ZU1h
aW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCByZWdpb25zQ2hhbmdlZCk7CiAgICAg
UmVuZGVyQmxvY2s6OmxheW91dCgpOwogICAgIHN0YXRlUHVzaGVyLnBvcCgpOworICAgIGlmICgh
bV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIGZvciAo
UmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBp
dGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBSZW5kZXJS
ZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICAgICAgaWYgKHJlZ2lvbi0+c2hvdWxkRGlz
cGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpICYmIGhhc1JlZ2lvbkxheW91dFVwZGF0ZUxp
c3RlbmVycyhyZWdpb24tPm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBhdCBsZWFzdCBv
bmUgcmVnaW9uIG5lZWRzIHRvIGRpc3BhdGNoIHRoZSBldmVudAorICAgICAgICAgICAgICAgIG1f
cmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIH0KIAogdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKQEAgLTg5MiwxMiArOTE3LDIwIEBAIHZv
aWQgUmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZU92ZXJmbG93U3RhdGVGb3JSZWdpb25zKExheW91
dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFCiAgICAgICAgIH0KICAgICAgICAgTGF5b3V0VW5pdCBmbG93
TWluID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPnJlZ2lv
blJlY3QoKS55KCkgOiByZWdpb24tPnJlZ2lvblJlY3QoKS54KCkpOwogICAgICAgICBMYXlvdXRV
bml0IGZsb3dNYXggPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lv
bi0+cmVnaW9uUmVjdCgpLm1heFkoKSA6IHJlZ2lvbi0+cmVnaW9uUmVjdCgpLm1heFgoKSk7Cisg
ICAgICAgIFJlbmRlclJlZ2lvbjo6UmVnaW9uU3RhdGUgcHJldmlvdXNTdGF0ZSA9IHJlZ2lvbi0+
cmVnaW9uU3RhdGUoKTsKICAgICAgICAgUmVuZGVyUmVnaW9uOjpSZWdpb25TdGF0ZSBzdGF0ZSA9
IFJlbmRlclJlZ2lvbjo6UmVnaW9uRml0OwogICAgICAgICBpZiAoZmxvd01pbiA8PSAwKQogICAg
ICAgICAgICAgc3RhdGUgPSBSZW5kZXJSZWdpb246OlJlZ2lvbkVtcHR5OwogICAgICAgICBpZiAo
Zmxvd01heCA+IDApCiAgICAgICAgICAgICBzdGF0ZSA9IFJlbmRlclJlZ2lvbjo6UmVnaW9uT3Zl
cmZsb3c7CiAgICAgICAgIHJlZ2lvbi0+c2V0UmVnaW9uU3RhdGUoc3RhdGUpOworICAgICAgICAv
LyBkZXRlcm1pbmUgd2hldGhlciB0aGlzIHJlZ2lvbiBzaG91bGQgZGlzcGF0Y2ggYSByZWdpb25M
YXlvdXRVcGRhdGUgZXZlbnQKKyAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBpdCBjYW5ub3Qg
ZGV0ZXJtaW5lIHdoZXRoZXIgYSByZWdpb24gd2hvc2UgcmVnaW9uT3ZlcmZsb3cgc3RhdGUgcmVt
YWluZWQgZWl0aGVyICJmaXQiIG9yICJvdmVyZmxvdyIgaGFzIGFjdHVhbGx5CisgICAgICAgIC8v
IGNoYW5nZWQsIHNvIGl0IGp1c3QgYXNzdW1lcyB0aGF0IHRob3NlIHJlZ2lvbiBzaG91bGQgZGlz
cGF0Y2ggdGhlIGV2ZW50CisgICAgICAgIGlmIChwcmV2aW91c1N0YXRlICE9IHN0YXRlIHx8Cisg
ICAgICAgICAgICBzdGF0ZSA9PSBSZW5kZXJSZWdpb246OlJlZ2lvbkZpdCB8fAorICAgICAgICAg
ICAgc3RhdGUgPT0gUmVuZGVyUmVnaW9uOjpSZWdpb25PdmVyZmxvdykKKyAgICAgICAgICAgIHJl
Z2lvbi0+c2V0RGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCh0cnVlKTsKICAgICB9CiAK
ICAgICAvLyBXaXRoIHRoZSByZWdpb25zIG92ZXJmbG93IHN0YXRlIGNvbXB1dGVkIHdlIGNhbiBh
bHNvIHNldCB0aGUgb3ZlcmZsb3cgZm9yIHRoZSBuYW1lZCBmbG93LgpAQCAtOTA1LDQgKzkzOCwz
MiBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyZmxvd1N0YXRlRm9yUmVnaW9u
cyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRQogICAgIG1fb3ZlcmZsb3cgPSBsYXN0UmVnICYm
IChsYXN0UmVnLT5yZWdpb25TdGF0ZSgpID09IFJlbmRlclJlZ2lvbjo6UmVnaW9uT3ZlcmZsb3cp
OwogfQogCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGlt
ZXJGaXJlZChUaW1lcjxSZW5kZXJGbG93VGhyZWFkPiopCit7CisgICAgLy8gQ3JlYXRlIGEgY29w
eSBvZiByZWdpb24gbm9kZXMsIHRvIHByb3RlY3QgdGhlbSBmb3IgYmVpbmcgZGVzdHJveWVkIGlu
IHRoZSBldmVudCBsaXN0ZW5lcgorICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiByZWdpb25Ob2Rl
czsKKyAgICByZWdpb25Ob2Rlcy5yZXNlcnZlQ2FwYWNpdHkobV9yZWdpb25MaXN0LnNpemUoKSk7
CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0
LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bm9k
ZSgpICYmIHJlZ2lvbi0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpOworICAgICAgICAvLyBkaXNw
YXRjaCB0aGUgZXZlbnQgb25seSBmb3IgbWFya2VkIHJlZ2lvbnMgYW5kIG9ubHkgZm9yIHRob3Nl
IHdobyBoYXZlIGEgbGlzdGVuZXIKKyAgICAgICAgaWYgKHJlZ2lvbi0+c2hvdWxkRGlzcGF0Y2hS
ZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpICYmIGhhc1JlZ2lvbkxheW91dFVwZGF0ZUxpc3RlbmVy
cyhyZWdpb24tPm5vZGUoKSkpIHsKKyAgICAgICAgICAgIHJlZ2lvbk5vZGVzLmFwcGVuZChyZWdp
b24tPm5vZGUoKSk7CisgICAgICAgICAgICAvLyBjbGVhciB0aGUgZGlzcGF0Y2ggZmxhZyBoZXJl
LCBhcyBpdCBpcyBwb3NzaWJsZSB0byBiZSBzZXQgYWdhaW4gZHVlIHRvIGV2ZW50IGxpc3RlbmVy
cworICAgICAgICAgICAgcmVnaW9uLT5zZXREaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8Tm9kZT4g
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWdpb25Ob2Rlcy5iZWdpbigpOyBpdCAhPSByZWdpb25O
b2Rlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9ICppdDsKKyAg
ICAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CisgICAg
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gTGF5
b3V0IG5lZWRzIHRvIGJlIHVwdG9kYXRlIGFmdGVyIGVhY2ggZXZlbnQgbGlzdGVuZXIKKyAgICAg
ICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAg
aWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1JlbmRlclJlZ2lvbigpKQorICAgICAgICAgICAg
bm9kZS0+ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmgKaW5kZXggZDA1OTM4OC4uNmNlY2ZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNoZWNrSW52YWxpZFJlZ2lvbnMoKTsKIAogICAgIGJvb2wgc2hvdWxkUmVwYWludChj
b25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgdm9pZCByZWdpb25MYXlvdXRVcGRhdGVFdmVu
dFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyRmxvd1RocmVhZD4qKTsKIAogICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gRmxvd1RocmVhZENoaWxkTGlzdDsKICAgICBGbG93VGhy
ZWFkQ2hpbGRMaXN0IG1fZmxvd1RocmVhZENoaWxkTGlzdDsKQEAgLTE5OCw2ICsxOTksNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0OwogICAg
IGJvb2wgbV9vdmVyZmxvdzsKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBtX25hbWVkRmxv
dzsKKyAgICBUaW1lcjxSZW5kZXJGbG93VGhyZWFkPiBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
VGltZXI7CiB9OwogCiBpbmxpbmUgUmVuZGVyRmxvd1RocmVhZCogdG9SZW5kZXJGbG93VGhyZWFk
KFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcAppbmRleCA0MmY3ZDI5Li4xYzVjZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDgsNiArNDgsNyBAQCBSZW5kZXJSZWdpb246OlJlbmRl
clJlZ2lvbihOb2RlKiBub2RlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogICAgICwg
bV9pc1ZhbGlkKGZhbHNlKQogICAgICwgbV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAg
ICAsIG1fcmVnaW9uU3RhdGUoUmVnaW9uVW5kZWZpbmVkKQorICAgICwgbV9kaXNwYXRjaFJlZ2lv
bkxheW91dFVwZGF0ZUV2ZW50KGZhbHNlKQogewogICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgp
LT5jc3NSZWdpb25zRW5hYmxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uaAppbmRleCBkNDZkNmRhLi4yNGY0OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oCkBAIC05MSw2ICs5MSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZ2lvblN0
YXRlIHJlZ2lvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZCgpID8gbV9yZWdpb25TdGF0
ZSA6IFJlZ2lvblVuZGVmaW5lZDsgfQogICAgIHZvaWQgc2V0UmVnaW9uU3RhdGUoUmVnaW9uU3Rh
dGUgcmVnaW9uU3RhdGUpIHsgbV9yZWdpb25TdGF0ZSA9IHJlZ2lvblN0YXRlOyB9CisgICAgdm9p
ZCBzZXREaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KGJvb2wgdmFsdWUpIHsgbV9kaXNw
YXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50ID0gdmFsdWU7IH0KKyAgICBib29sIHNob3VsZERp
c3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKSB7IHJldHVybiBtX2Rpc3BhdGNoUmVnaW9u
TGF5b3V0VXBkYXRlRXZlbnQ7IH0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIApAQCAtMTIwLDYg
KzEyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQ7CiAgICAgYm9vbCBtX2hhc0N1
c3RvbVJlZ2lvblN0eWxlOwogICAgIFJlZ2lvblN0YXRlIG1fcmVnaW9uU3RhdGU7CisgICAgYm9v
bCBtX2Rpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQ7CiB9OwogCiBpbmxpbmUgUmVuZGVy
UmVnaW9uKiB0b1JlbmRlclJlZ2lvbihSZW5kZXJPYmplY3QqIG9iamVjdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130439</attachid>
            <date>2012-03-06 14:03:30 -0800</date>
            <delta_ts>2012-03-12 11:13:33 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25569</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZjYxN2Y5Li5hZDcwZmVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDMt
MDYgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IHJlZ2lvbkxheW91dEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1h
ZGQtdG8tZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1kb20uaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1m
bG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1l
dmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy9yZWdpb24tZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMDYgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgc2VsZWN0LWxpbmUtYnJlYWstd2l0aC1vcHBv
c2l0ZS1kaXJlY3Rpb25hbGl0eS5odG1sIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3ctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZDBmZTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1m
bG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVu
dAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyBGbG93IGNvbnRlbnQKK1BBU1MgZXZl
bnQudGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdp
b25fMSIKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25fMiIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjMDZhMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbApAQCAt
MCwwICsxLDc1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNhcnRpY2xlIHsK
KyAgICAtd2Via2l0LWZsb3ctaW50bzogYXJ0aWNsZTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCBi
bGFjazsKK30KKyNyZWdpb25fMSB7CisgICAgLXdlYmtpdC1mbG93LWZyb206IG5vX2FydGljbGU7
CisgICAgb3ZlcmZsb3c6aGlkZGVuOworICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrOworICAgIHZl
cnRpY2FsLWFsaWduOnRvcDsKKyAgICBtYXJnaW46MTBweDsKK30KKy5ibG9jayB7CisgICBkaXNw
bGF5OmJsb2NrOworfQorI3JlZ2lvbl8xLCAjcmVnaW9uXzIgeyBoZWlnaHQ6MTEwcHg7IHdpZHRo
OjIwMHB4OyBtYXJnaW46IDVweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiIgY2xhc3M9ImJsb2NrIj48L2Rpdj4KKzxkaXYgaWQ9ImFydGljbGUiPgor
ICAgIDxkaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJoZWlnaHQ6IDIwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisK
KzxkaXYgaWQ9InJlZ2lvbl8xIj48L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbl8yIj48L2Rpdj4KKwor
PGRpdiBpZD0iY29uc29sZSIgY2xhc3M9ImJsb2NrIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVGVzdHMgcmVnaW9uTGF5b3V0RXZlbnQiKQorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgfQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBmdW5jdGlvbiBmbG93
Q29udGVudChyZWdpb24sIGZsb3dOYW1lKSB7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQocmVnaW9uKTsKKyAgICAgICAgci5zdHlsZS53ZWJraXRGbG93RnJvbSA9IGZs
b3dOYW1lOworICAgIH0KKyAgICB2YXIgY291bnQgPSAwOworICAgIGZ1bmN0aW9uIHJlZ2lvbjFV
cGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LmlkIiwgInJlZ2lvbl8xIik7CisgICAgICAgIGlmICgrK2NvdW50ID4gMSkgeworICAgICAg
ICAgICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAg
ICAgICAgcjEucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwg
cmVnaW9uMVVwZGF0ZWQpOworICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Zmxvd0NvbnRlbnQoInJlZ2lvbl8yIiwgImFydGljbGUiKTsgLy8gdGhpcyB3aWxsIHRyaWdnZXIg
YSBuZXcgcm91bmQgb2YgZXZlbnRzIGR1ZSB0byBsYXlvdXQKKyAgICB9CisgICAgZnVuY3Rpb24g
cmVnaW9uMlVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzIiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAgICAg
Ly8gdGhpcyBzaG91bGQgYmUgcmVhY2hlZCBhZnRlciByZWdpb25fMiBpcyByZW1vdmVkIGZyb20g
ZmxvdworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RhcnRU
ZXN0KCkgeworICAgICAgICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9u
XzEiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8y
Iik7CisgICAgICAgIHIxLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0
ZSIsIHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0
UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICBkZWJ1ZygiRmxv
dyBjb250ZW50Iik7CisgICAgICAgIGZsb3dDb250ZW50KCJyZWdpb25fMSIsICJhcnRpY2xlIik7
CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc0M2IyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBA
CitUZXN0cyB0aGF0IHJlZ2lvbkxheW91dEV2ZW50IGlzIG9ubHkgZGlzcGF0Y2hlZCB0byByZWdp
b25zIHRoYXQgaGF2ZSBjb250ZW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworIAor
cmVnaW9uXzEgb3ZlcmZsb3c6IGZpdAorcmVnaW9uXzIgb3ZlcmZsb3c6IGVtcHR5CitGbG93IGNv
bnRlbnQKK3JlZ2lvbl8xIG92ZXJmbG93OiBmaXQKK3JlZ2lvbl8yIG92ZXJmbG93OiBlbXB0eQor
cmVnaW9uXzEKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQu
dGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
cmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxOWIyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9t
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVudAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyBGbG93IGNvbnRlbnQKK1BBU1MgZXZlbnQu
dGFyZ2V0LmlkIGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25f
MiIKK1JlbW92aW5nIHJlZ2lvbl8yIGZyb20gRE9NCitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAi
cmVnaW9uXzEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1y
ZW1vdmUtZnJvbS1kb20uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZl
bnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2FjNjliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWlu
dG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEs
ICNyZWdpb25fMnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVy
ZmxvdzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxp
Z246dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7
Cit9CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1h
cmdpbjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0i
cmVnaW9uXzEiPjwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyMiI+CisgICAgPGRpdiBpZD0icmVn
aW9uXzIiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiIGNsYXNzPSJibG9jayI+
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHJlZ2lvbkxheW91dEV2
ZW50IikKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgZnVuY3Rpb24gZmxvd0NvbnRlbnQoZmxvd05hbWUpIHsKKyAgICAgICAgdmFy
IHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAgci5zdHls
ZS53ZWJraXRGbG93RnJvbSA9IGZsb3dOYW1lOworICAgICAgICByID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBm
bG93TmFtZTsKKyAgICB9CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBmdW5jdGlvbiByZWdpb24x
VXBkYXRlZChldmVudCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5pZCIsICJyZWdpb25fMSIpOworICAgICAgICBpZiAoKytjb3VudCA+IDEpIHsKKyAgICAg
ICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAg
ICAgICAgIHIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIs
IHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgcmVhY2hlZCBh
ZnRlciByZWdpb25fMiBpcyByZW1vdmVkIGZyb20gRE9NCisgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvbjJVcGRhdGVkKGV2ZW50
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJl
Z2lvbl8yIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdp
b25fMiIpOworICAgICAgICByMi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlv
dXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvblVwZGF0ZWQpOworICAgICAgICB2YXIg
YzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyMiIpOworICAgICAgICBkZWJ1
ZygiUmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBET00iKTsKKyAgICAgICAgYzIuaW5uZXJIVE1MID0g
IiI7IC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGEgbmV3IHJvdW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5
b3V0CisgICAgfQorICAgIGZ1bmN0aW9uIHJlZ2lvblVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAg
dGVzdEZhaWxlZChldmVudC50YXJnZXQuaWQgKyAiIGV2ZW50IHNob3VsZG4ndCBoYXZlIGJlZW4g
ZGlzcGF0Y2hlZCIgKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAg
ICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAg
dmFyIHIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIx
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFVcGRh
dGVkKTsKKyAgICAgICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBk
YXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50Iik7Cisg
ICAgICAgIGZsb3dDb250ZW50KCJhcnRpY2xlIik7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2
ZW50LXJlbW92ZS1mcm9tLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2I2OGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyByZWdpb25MYXlvdXRFdmVudAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKyAKK0Zsb3cgY29udGVudAorUEFTUyBldmVudC50YXJn
ZXQuaWQgaXMgInJlZ2lvbl8xIgorUEFTUyBldmVudC50YXJnZXQuaWQgaXMgInJlZ2lvbl8yIgor
UmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBmbG93CitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVn
aW9uXzEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1v
dmUtZnJvbS1mbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50
LXJlbW92ZS1mcm9tLWZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41NzA0MjdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jl
Z2lvbi1ldmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWlu
dG86IGFydGljbGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEs
ICNyZWdpb25fMnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVy
ZmxvdzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxp
Z246dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7
Cit9CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1h
cmdpbjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0i
cmVnaW9uXzEiPjwvZGl2PgorPGRpdiBpZD0icmVnaW9uXzIiPjwvZGl2PgorCis8ZGl2IGlkPSJj
b25zb2xlIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0cyByZWdpb25MYXlvdXRFdmVudCIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KGZs
b3dOYW1lKSB7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bl8xIik7CisgICAgICAgIHIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsKKyAgICAg
ICAgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByLnN0
eWxlLndlYmtpdEZsb3dGcm9tID0gZmxvd05hbWU7CisgICAgfQorICAgIHZhciBjb3VudCA9IDA7
CisgICAgZnVuY3Rpb24gcmVnaW9uMVVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzEiKTsKKyAgICAgICAgaWYg
KCsrY291bnQgPiAxKSB7CisgICAgICAgICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb25fMSIpOworICAgICAgICAgICByMS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24xVXBkYXRlZCk7CisgICAgICAgICAgIC8vIHRo
aXMgc2hvdWxkIGJlIHJlYWNoZWQgYWZ0ZXIgcmVnaW9uXzIgaXMgcmVtb3ZlZCBmcm9tIGZsb3cK
KyAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rp
b24gcmVnaW9uMlVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQuaWQiLCAicmVnaW9uXzIiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAg
ICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9u
VXBkYXRlZCk7CisgICAgICAgIGRlYnVnKCJSZW1vdmluZyByZWdpb25fMiBmcm9tIGZsb3ciKTsK
KyAgICAgICAgcjIuc3R5bGUud2Via2l0Rmxvd0Zyb20gPSAibm9uZSI7IC8vIHRoaXMgd2lsbCB0
cmlnZ2VyIGEgbmV3IHJvdW5kIG9mIGV2ZW50cyBkdWUgdG8gbGF5b3V0CisgICAgfQorICAgIGZ1
bmN0aW9uIHJlZ2lvblVwZGF0ZWQoZXZlbnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZChldmVudC50
YXJnZXQuaWQgKyAiIGV2ZW50IHNob3VsZG4ndCBoYXZlIGJlZW4gZGlzcGF0Y2hlZCIgKTsKKyAg
ICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICB2YXIgcjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAgICAgICAgdmFyIHIyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAgICAgIHIxLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjFVcGRhdGVkKTsKKyAgICAgICAgcjIu
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMlVwZGF0
ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50Iik7CisgICAgICAgIGZsb3dDb250ZW50
KCJhcnRpY2xlIik7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
c3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWJhYWFjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9yZWdpb24tZXZlbnQuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KKyNhcnRpY2xlIHsKKyAgICAtd2Via2l0LWZsb3ctaW50bzog
YXJ0aWNsZTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCBibGFjazsKK30KKyNyZWdpb25fMSwgI3Jl
Z2lvbl8yeworICAgIC13ZWJraXQtZmxvdy1mcm9tOiBhcnRpY2xlOworICAgIG92ZXJmbG93Omhp
ZGRlbjsKKyAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKKyAgICB2ZXJ0aWNhbC1hbGlnbjp0b3A7
CisgICAgbWFyZ2luOjEwcHg7Cit9CisuYmxvY2sgeworICAgZGlzcGxheTpibG9jazsKK30KKyNy
ZWdpb25fMSB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHh9CisjcmVnaW9uXzIgeyBoZWlnaHQ6
MTMwcHg7IHdpZHRoOjIwMHB4fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iIGNsYXNzPSJibG9jayI+PC9kaXY+Cis8ZGl2IGlkPSJhcnRpY2xlIj4KKyAg
ICA8ZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0iaGVpZ2h0OiAzMHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxk
aXYgaWQ9InJlZ2lvbl8xIj48L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbl8yIj48L2Rpdj4KKworPGRp
diBpZD0iY29uc29sZSIgY2xhc3M9ImJsb2NrIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCByZWdpb25MYXlvdXRFdmVudCBpcyBvbmx5IGRpc3BhdGNoZWQg
dG8gcmVnaW9ucyB0aGF0IGhhdmUgY29udGVudCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQor
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBmdW5jdGlvbiBtb2RpZnlDb250
ZW50KHNpemUpIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29udGVudCIpOworICAgICAgICBjb250ZW50LnN0eWxlLmhlaWdodCA9IHNpemUgKyAicHgi
OworICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb25VcGRhdGVkKGV2ZW50KSB7CisgICAgICAgIGRl
YnVnKGV2ZW50LnRhcmdldC5pZCk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LmlkIiwgInJlZ2lvbl8xIik7CisgICAgICAgIHZhciByMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb25fMSIpOworICAgICAgICByMS5yZW1vdmVFdmVudExpc3RlbmVy
KCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb25VcGRhdGVkKTsKKyAgICAgICAgcjEu
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgZmluaXNoVGVzdCk7
CisgICAgICAgIG1vZGlmeUNvbnRlbnQoNTApOworICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb25V
cGRhdGVkVW5leHBlY3RlZCgpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVnaW9uXzIgcmVjZWl2
ZWQgYW4gdW5leHBlY3RlZCByZWdpb25MYXlvdXRVcGRhdGUgZXZlbnQiKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJlZ2lvbl8xIik7Cisg
ICAgICAgIGV2ZW50LnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlv
dXRVcGRhdGUiLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQor
ICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICBkZWJ1ZygicmVnaW9uXzEgb3ZlcmZsb3c6
ICIgKyByMS53ZWJraXRSZWdpb25PdmVyZmxvdyk7CisgICAgICAgIGRlYnVnKCJyZWdpb25fMiBv
dmVyZmxvdzogIiArIHIyLndlYmtpdFJlZ2lvbk92ZXJmbG93KTsKKyAgICAgICAgcjEuYWRkRXZl
bnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uVXBkYXRlZCk7Cisg
ICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJl
Z2lvblVwZGF0ZWRVbmV4cGVjdGVkKTsKKyAgICAgICAgZGVidWcoIkZsb3cgY29udGVudCIpOwor
ICAgICAgICBtb2RpZnlDb250ZW50KDQwKTsKKyAgICAgICAgZGVidWcoInJlZ2lvbl8xIG92ZXJm
bG93OiAiICsgcjEud2Via2l0UmVnaW9uT3ZlcmZsb3cpOworICAgICAgICBkZWJ1ZygicmVnaW9u
XzIgb3ZlcmZsb3c6ICIgKyByMi53ZWJraXRSZWdpb25PdmVyZmxvdyk7CisgICAgfQorICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgc3RhcnRUZXN0KTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU3MDg4NS4uMDIwZjc2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAzLTA2ICBSYXVsIEh1ZGVhICA8cmh1ZGVh
QGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTUmVnaW9uc11bQ1NTT01dIEltcGxlbWVudCByZWdp
b25MYXlvdXRFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzg4ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpbmcgdGhlIHJlZ2lvbkxheW91dEV2ZW50IHRoYXQgaXMgZGlzcGF0Y2ggZm9yIGFs
bCByZWdpb25zIHRoYXQgYXJlIG5vbi1lbXB0eSBvciBoYWQgdGhlaXIgb3ZlcmZsb3cgc3RhdGUg
Y2hhbmdlZCBkdXJpbmcgdGhlIGxhc3QgbGF5b3V0LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Jl
Z2lvbnMvcmVnaW9uLWV2ZW50LWFkZC10by1mbG93Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
cmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZmxvdy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9F
dmVudE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChO
b2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6Omhhc1JlZ2lvbkxheW91dFVwZGF0ZUxpc3RlbmVycyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlT3ZlcmZsb3dTdGF0ZUZvclJl
Z2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uTGF5b3V0
VXBkYXRlRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6c2V0RGlz
cGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
ZWdpb246OnNob3VsZERpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpOgorICAgICAgICAo
UmVuZGVyUmVnaW9uKToKKwogMjAxMi0wMy0wNiAgRGF2aWQgQ29ydm95c2llciAgPGRhdmlkLmNv
cnZveXNpZXJAb3JhbmdlLmNvbT4KIAogICAgICAgICBVbnJlbGVhc2VkIGdzdF9vYmplY3RfcmVm
ZXJlbmNlIHRvIGF1ZGlvIHNpbmsgaW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAppbmRleCBhNjE2Zjc0Li4xNTNkNTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKQEAgLTIwMCw2ICsyMDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAog
ICAgIG1hY3JvKHdlYmtpdHBvaW50ZXJsb2NrbG9zdCkgXAogICAgIFwKKyAgICBtYWNybyh3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUpIFwKKyAgICBcCiAKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFN
RVNfRk9SX0VBQ0gKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDY0ZjgxMDAuLjI3MjkzMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTI4MDIsNiArMjgwMiwxMiBAQCBib29sIE5vZGU6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hFdmVudCh0aGlzLCBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudCkp
OwogfQogCit2b2lkIE5vZGU6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKQorewor
ICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKKyAgICBkaXNwYXRjaFNjb3Bl
ZEV2ZW50KFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0UmVnaW9uTGF5b3V0VXBk
YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDApKTsKK30K
Kwogdm9pZCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCkKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBjYWxsIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHNpbmNlIGl0IHNob3VsZCBo
YXZlIGFscmVhZHkgYmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTYxZTE0My4uNWY0YTUwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCkBAIC01NzYsNiArNTc2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUxvY2FsRXZlbnRzKEV2ZW50Kik7CiAKKyAgICB2b2lkIGRpc3BhdGNoUmVnaW9uTGF5b3V0
VXBkYXRlRXZlbnQoKTsKKwogICAgIHZvaWQgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgp
OwogICAgIHZvaWQgZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGludCBkZXRhaWwsIFBhc3NSZWZQ
dHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAgICAgdm9pZCBkaXNwYXRjaEZvY3VzSW5FdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1
c2VkTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5j
cHAKaW5kZXggZTI0MWQ5Ni4uMmE2NjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtNTIsNiArNTIsNyBAQCBSZW5kZXJGbG93VGhyZWFk
OjpSZW5kZXJGbG93VGhyZWFkKE5vZGUqIG5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1Ro
cmVhZCkKICAgICAsIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoKHRydWUpCiAgICAg
LCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxIZWlnaHQodHJ1ZSkKICAgICAsIG1fb3ZlcmZs
b3coZmFsc2UpCisgICAgLCBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIodGhpcywgJlJl
bmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXJGaXJlZCkKIHsKICAg
ICBBU1NFUlQobm9kZS0+ZG9jdW1lbnQoKS0+Y3NzUmVnaW9uc0VuYWJsZWQoKSk7CiAgICAgc2V0
SXNBbm9ueW1vdXMoZmFsc2UpOwpAQCAtMzMyLDYgKzMzMywyMSBAQCBwcml2YXRlOgogICAgIFJl
bmRlckZsb3dUaHJlYWQqIG1fcmVuZGVyRmxvd1RocmVhZDsKIH07CiAKK3N0YXRpYyBib29sIGhh
c1JlZ2lvbkxheW91dFVwZGF0ZUxpc3RlbmVycyhOb2RlKiBub2RlKQoreworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG5vZGUtPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRSZWdpb25MYXlvdXRVcGRhdGVFdmVudCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgZm9yIChub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICBpZiAobm9kZS0+aGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJl
bmRlckZsb3dUaHJlYWQ6OmxheW91dCgpCiB7CiAgICAgYm9vbCByZWdpb25zQ2hhbmdlZCA9IG1f
cmVnaW9uc0ludmFsaWRhdGVkICYmIGV2ZXJIYWRMYXlvdXQoKTsKQEAgLTM5OSw2ICs0MTUsMTgg
QEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgIExheW91dFN0YXRlTWFpbnRh
aW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIHJlZ2lvbnNDaGFuZ2VkKTsKICAgICBSZW5k
ZXJCbG9jazo6bGF5b3V0KCk7CiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CisgICAgaWYgKCFtX3Jl
Z2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBib29sIHNo
b3VsZEZpcmVUaW1lciA9IGZhbHNlOworICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0
ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3Qu
ZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRl
cjsKKyAgICAgICAgICAgIGlmIChyZWdpb24tPnNob3VsZERpc3BhdGNoUmVnaW9uTGF5b3V0VXBk
YXRlRXZlbnQoKSAmJiBoYXNSZWdpb25MYXlvdXRVcGRhdGVMaXN0ZW5lcnMocmVnaW9uLT5ub2Rl
KCkpKQorICAgICAgICAgICAgICAgIHNob3VsZEZpcmVUaW1lciA9IHRydWU7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVnaW9uLT5zZXREaXNwYXRjaFJlZ2lvbkxheW91dFVw
ZGF0ZUV2ZW50KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hvdWxkRmlyZVRpbWVy
KQorICAgICAgICAgICAgbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxvZ2ljYWxX
aWR0aCgpCkBAIC04OTIsMTIgKzkyMCwyMCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1
dGVPdmVyZmxvd1N0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRQogICAg
ICAgICB9CiAgICAgICAgIExheW91dFVuaXQgZmxvd01pbiA9IGhlaWdodCAtIChpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5yZWdpb25SZWN0KCkueSgpIDogcmVnaW9uLT5yZWdp
b25SZWN0KCkueCgpKTsKICAgICAgICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0gKGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPnJlZ2lvblJlY3QoKS5tYXhZKCkgOiBy
ZWdpb24tPnJlZ2lvblJlY3QoKS5tYXhYKCkpOworICAgICAgICBSZW5kZXJSZWdpb246OlJlZ2lv
blN0YXRlIHByZXZpb3VzU3RhdGUgPSByZWdpb24tPnJlZ2lvblN0YXRlKCk7CiAgICAgICAgIFJl
bmRlclJlZ2lvbjo6UmVnaW9uU3RhdGUgc3RhdGUgPSBSZW5kZXJSZWdpb246OlJlZ2lvbkZpdDsK
ICAgICAgICAgaWYgKGZsb3dNaW4gPD0gMCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyUmVn
aW9uOjpSZWdpb25FbXB0eTsKICAgICAgICAgaWYgKGZsb3dNYXggPiAwKQogICAgICAgICAgICAg
c3RhdGUgPSBSZW5kZXJSZWdpb246OlJlZ2lvbk92ZXJmbG93OwogICAgICAgICByZWdpb24tPnNl
dFJlZ2lvblN0YXRlKHN0YXRlKTsKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBy
ZWdpb24gc2hvdWxkIGRpc3BhdGNoIGEgcmVnaW9uTGF5b3V0VXBkYXRlIGV2ZW50CisgICAgICAg
IC8vIEZJWE1FOiBjdXJyZW50bHkgaXQgY2Fubm90IGRldGVybWluZSB3aGV0aGVyIGEgcmVnaW9u
IHdob3NlIHJlZ2lvbk92ZXJmbG93IHN0YXRlIHJlbWFpbmVkIGVpdGhlciAiZml0IiBvciAib3Zl
cmZsb3ciIGhhcyBhY3R1YWxseQorICAgICAgICAvLyBjaGFuZ2VkLCBzbyBpdCBqdXN0IGFzc3Vt
ZXMgdGhhdCB0aG9zZSByZWdpb24gc2hvdWxkIGRpc3BhdGNoIHRoZSBldmVudAorICAgICAgICBp
ZiAocHJldmlvdXNTdGF0ZSAhPSBzdGF0ZQorICAgICAgICAgICAgfHwgc3RhdGUgPT0gUmVuZGVy
UmVnaW9uOjpSZWdpb25GaXQKKyAgICAgICAgICAgIHx8IHN0YXRlID09IFJlbmRlclJlZ2lvbjo6
UmVnaW9uT3ZlcmZsb3cpCisgICAgICAgICAgICByZWdpb24tPnNldERpc3BhdGNoUmVnaW9uTGF5
b3V0VXBkYXRlRXZlbnQodHJ1ZSk7CiAgICAgfQogCiAgICAgLy8gV2l0aCB0aGUgcmVnaW9ucyBv
dmVyZmxvdyBzdGF0ZSBjb21wdXRlZCB3ZSBjYW4gYWxzbyBzZXQgdGhlIG92ZXJmbG93IGZvciB0
aGUgbmFtZWQgZmxvdy4KQEAgLTk3MCw1ICsxMDA2LDMzIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVh
ZDo6b2JqZWN0SW5GbG93UmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBS
ZW5kCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lv
bkxheW91dFVwZGF0ZUV2ZW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJGbG93VGhyZWFkPiopCit7
CisgICAgLy8gQ3JlYXRlIGEgY29weSBvZiByZWdpb24gbm9kZXMsIHRvIHByb3RlY3QgdGhlbSBm
b3IgYmVpbmcgZGVzdHJveWVkIGluIHRoZSBldmVudCBsaXN0ZW5lcgorICAgIFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiByZWdpb25Ob2RlczsKKyAgICByZWdpb25Ob2Rlcy5yZXNlcnZlQ2FwYWNpdHko
bV9yZWdpb25MaXN0LnNpemUoKSk7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRv
ciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgp
OyArK2l0ZXIpIHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAg
ICAgQVNTRVJUKHJlZ2lvbi0+bm9kZSgpICYmIHJlZ2lvbi0+bm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpOworICAgICAgICAvLyBkaXNwYXRjaCB0aGUgZXZlbnQgb25seSBmb3IgbWFya2VkIHJlZ2lv
bnMgYW5kIG9ubHkgZm9yIHRob3NlIHdobyBoYXZlIGEgbGlzdGVuZXIKKyAgICAgICAgaWYgKHJl
Z2lvbi0+c2hvdWxkRGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpICYmIGhhc1JlZ2lv
bkxheW91dFVwZGF0ZUxpc3RlbmVycyhyZWdpb24tPm5vZGUoKSkpIHsKKyAgICAgICAgICAgIHJl
Z2lvbk5vZGVzLmFwcGVuZChyZWdpb24tPm5vZGUoKSk7CisgICAgICAgICAgICAvLyBjbGVhciB0
aGUgZGlzcGF0Y2ggZmxhZyBoZXJlLCBhcyBpdCBpcyBwb3NzaWJsZSB0byBiZSBzZXQgYWdhaW4g
ZHVlIHRvIGV2ZW50IGxpc3RlbmVycworICAgICAgICAgICAgcmVnaW9uLT5zZXREaXNwYXRjaFJl
Z2lvbkxheW91dFVwZGF0ZUV2ZW50KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWdpb25Ob2Rlcy5i
ZWdpbigpOyBpdCAhPSByZWdpb25Ob2Rlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9ICppdDsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG5v
ZGUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgLy8gTGF5b3V0IG5lZWRzIHRvIGJlIHVwdG9kYXRlIGFmdGVyIGVhY2gg
ZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1JlbmRlclJl
Z2lvbigpKQorICAgICAgICAgICAgbm9kZS0+ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVu
dCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCBiOTU4ZWIxLi40MTFkMDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTE0OSw2
ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tJbnZhbGlkUmVnaW9ucygpOwogCiAg
ICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKKyAgICB2b2lk
IHJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJGbG93VGhyZWFk
PiopOwogCiAgICAgYm9vbCByZWdpb25JblJhbmdlKGNvbnN0IFJlbmRlclJlZ2lvbiogdGFyZ2V0
UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdp
b24qIGVuZFJlZ2lvbikgY29uc3Q7CiAKQEAgLTIwNCw2ICsyMDUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0OwogICAgIGJvb2wgbV9vdmVy
ZmxvdzsKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBtX25hbWVkRmxvdzsKKyAgICBUaW1l
cjxSZW5kZXJGbG93VGhyZWFkPiBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXI7CiB9Owog
CiBpbmxpbmUgUmVuZGVyRmxvd1RocmVhZCogdG9SZW5kZXJGbG93VGhyZWFkKFJlbmRlck9iamVj
dCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRl
eCA1Yjc2OTJhLi5hZjI2ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcApAQCAtNDgsNiArNDgsNyBAQCBSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihOb2Rl
KiBub2RlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogICAgICwgbV9pc1ZhbGlkKGZh
bHNlKQogICAgICwgbV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1fcmVnaW9u
U3RhdGUoUmVnaW9uVW5kZWZpbmVkKQorICAgICwgbV9kaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0
ZUV2ZW50KGZhbHNlKQogewogICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgpLT5jc3NSZWdpb25z
RW5hYmxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRl
eCA3MGZhMjNiLi43NDAzMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIFJlZ2lvblN0YXRlIHJlZ2lvblN0
YXRlKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZCgpID8gbV9yZWdpb25TdGF0ZSA6IFJlZ2lvblVu
ZGVmaW5lZDsgfQogICAgIHZvaWQgc2V0UmVnaW9uU3RhdGUoUmVnaW9uU3RhdGUgcmVnaW9uU3Rh
dGUpIHsgbV9yZWdpb25TdGF0ZSA9IHJlZ2lvblN0YXRlOyB9CisgICAgdm9pZCBzZXREaXNwYXRj
aFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KGJvb2wgdmFsdWUpIHsgbV9kaXNwYXRjaFJlZ2lvbkxh
eW91dFVwZGF0ZUV2ZW50ID0gdmFsdWU7IH0KKyAgICBib29sIHNob3VsZERpc3BhdGNoUmVnaW9u
TGF5b3V0VXBkYXRlRXZlbnQoKSB7IHJldHVybiBtX2Rpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRl
RXZlbnQ7IH0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIApAQCAtMTIxLDYgKzEyMyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQ7CiAgICAgYm9vbCBtX2hhc0N1c3RvbVJlZ2lvblN0
eWxlOwogICAgIFJlZ2lvblN0YXRlIG1fcmVnaW9uU3RhdGU7CisgICAgYm9vbCBtX2Rpc3BhdGNo
UmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQ7CiB9OwogCiBpbmxpbmUgUmVuZGVyUmVnaW9uKiB0b1Jl
bmRlclJlZ2lvbihSZW5kZXJPYmplY3QqIG9iamVjdCkK
</data>
<flag name="review"
          id="133443"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="133444"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131355</attachid>
            <date>2012-03-12 11:13:33 -0700</date>
            <delta_ts>2012-03-14 12:48:20 -0700</delta_ts>
            <desc>Added simple check for any existing listeners</desc>
            <filename>patch3</filename>
            <type>text/plain</type>
            <size>25461</size>
            <attacher name="Raul Hudea">rhudea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZTgzMjY2Li5lODFjMzZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDMt
MTIgIFJhdWwgSHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25z
XVtDU1NPTV0gSW1wbGVtZW50IHJlZ2lvbkxheW91dEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1h
ZGQtdG8tZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdp
b25zL3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZG9tLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1kb20uaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1m
bG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3JlZ2lvbi1l
dmVudC1yZW1vdmUtZnJvbS1mbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy9yZWdpb24tZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMTIgIEhhbnMgV2VubmJvcmcg
IDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGVlY2ggSmF2YVNjcmlwdCBBUEk6IFNw
ZWVjaFJlY29nbml0aW9uRXZlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZkMGZlMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3ctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHJlZ2lvbkxheW91dEV2ZW50CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworIEZsb3cgY29udGVudAorUEFTUyBldmVudC50YXJnZXQuaWQg
aXMgInJlZ2lvbl8xIgorUEFTUyBldmVudC50YXJnZXQuaWQgaXMgInJlZ2lvbl8xIgorUEFTUyBl
dmVudC50YXJnZXQuaWQgaXMgInJlZ2lvbl8yIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43OGMwNmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1ldmVudC1hZGQtdG8tZmxvdy5odG1sCkBAIC0wLDAgKzEsNzUgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorI2FydGljbGUgeworICAgIC13ZWJraXQt
Zmxvdy1pbnRvOiBhcnRpY2xlOworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworfQorI3Jl
Z2lvbl8xIHsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVyZmxv
dzpoaWRkZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxpZ246
dG9wOworICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7Cit9
CisjcmVnaW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHg7IG1hcmdp
bjogNXB4O30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
IiBjbGFzcz0iYmxvY2siPjwvZGl2PgorPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAgPGRpdj4KKyAg
ICAgICAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9ImhlaWdodDogMjAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0icmVn
aW9uXzEiPjwvZGl2PgorPGRpdiBpZD0icmVnaW9uXzIiPjwvZGl2PgorCis8ZGl2IGlkPSJjb25z
b2xlIiBjbGFzcz0iYmxvY2siPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyByZWdpb25MYXlvdXRFdmVudCIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KHJlZ2lv
biwgZmxvd05hbWUpIHsKKyAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChy
ZWdpb24pOworICAgICAgICByLnN0eWxlLndlYmtpdEZsb3dGcm9tID0gZmxvd05hbWU7CisgICAg
fQorICAgIHZhciBjb3VudCA9IDA7CisgICAgZnVuY3Rpb24gcmVnaW9uMVVwZGF0ZWQoZXZlbnQp
IHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQuaWQiLCAicmVn
aW9uXzEiKTsKKyAgICAgICAgaWYgKCsrY291bnQgPiAxKSB7CisgICAgICAgICAgIHZhciByMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIpOworICAgICAgICAgICByMS5yZW1v
dmVFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24xVXBkYXRl
ZCk7CisgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmbG93Q29udGVudCgi
cmVnaW9uXzIiLCAiYXJ0aWNsZSIpOyAvLyB0aGlzIHdpbGwgdHJpZ2dlciBhIG5ldyByb3VuZCBv
ZiBldmVudHMgZHVlIHRvIGxheW91dAorICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb24yVXBkYXRl
ZChldmVudCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5p
ZCIsICJyZWdpb25fMiIpOworICAgICAgICB2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVnaW9uXzIiKTsKKyAgICAgICAgcjIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0UmVn
aW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICAvLyB0aGlzIHNob3Vs
ZCBiZSByZWFjaGVkIGFmdGVyIHJlZ2lvbl8yIGlzIHJlbW92ZWQgZnJvbSBmbG93CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAg
ICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIpOworICAgICAg
ICB2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzIiKTsKKyAgICAgICAg
cjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMVVw
ZGF0ZWQpOworICAgICAgICByMi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlvdXRV
cGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIGRlYnVnKCJGbG93IGNvbnRlbnQiKTsK
KyAgICAgICAgZmxvd0NvbnRlbnQoInJlZ2lvbl8xIiwgImFydGljbGUiKTsKKyAgICB9CisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9yZWdpb24tZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3JlZ2lvbi1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYzI5NTc0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9yZWdpb24tZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHJlZ2lv
bkxheW91dEV2ZW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworIAorRmxvdyBjb250
ZW50CitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVnaW9uXzEiCitQQVNTIGV2ZW50LnRhcmdl
dC5pZCBpcyAicmVnaW9uXzIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lv
bi1ldmVudC1yZW1vdmUtZnJvbS1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTliMjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJlbW92ZS1mcm9tLWRvbS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgcmVnaW9uTGF5b3V0RXZlbnQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisgRmxvdyBjb250ZW50CitQQVNTIGV2ZW50LnRhcmdl
dC5pZCBpcyAicmVnaW9uXzEiCitQQVNTIGV2ZW50LnRhcmdldC5pZCBpcyAicmVnaW9uXzIiCitS
ZW1vdmluZyByZWdpb25fMiBmcm9tIERPTQorUEFTUyBldmVudC50YXJnZXQuaWQgaXMgInJlZ2lv
bl8xIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3Zl
LWZyb20tZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWV2ZW50LXJl
bW92ZS1mcm9tLWRvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdh
YzY5YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9u
LWV2ZW50LXJlbW92ZS1mcm9tLWRvbS5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHN0eWxlPgorI2FydGljbGUgeworICAgIC13ZWJraXQtZmxvdy1pbnRvOiBh
cnRpY2xlOworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworfQorI3JlZ2lvbl8xLCAjcmVn
aW9uXzJ7CisgICAgLXdlYmtpdC1mbG93LWZyb206IG5vX2FydGljbGU7CisgICAgb3ZlcmZsb3c6
aGlkZGVuOworICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrOworICAgIHZlcnRpY2FsLWFsaWduOnRv
cDsKKyAgICBtYXJnaW46MTBweDsKK30KKy5ibG9jayB7CisgICBkaXNwbGF5OmJsb2NrOworfQor
I3JlZ2lvbl8xLCAjcmVnaW9uXzIgeyBoZWlnaHQ6MTEwcHg7IHdpZHRoOjIwMHB4OyBtYXJnaW46
IDVweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiIg
Y2xhc3M9ImJsb2NrIj48L2Rpdj4KKzxkaXYgaWQ9ImFydGljbGUiPgorICAgIDxkaXY+CisgICAg
ICAgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlZ2lv
bl8xIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnRhaW5lcjIiPgorICAgIDxkaXYgaWQ9InJlZ2lvbl8y
Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIiBjbGFzcz0iYmxvY2siPjwvZGl2
PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyByZWdpb25MYXlvdXRFdmVudCIp
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIGZ1bmN0aW9uIGZsb3dDb250ZW50KGZsb3dOYW1lKSB7CisgICAgICAgIHZhciByID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgIHIuc3R5bGUud2Vi
a2l0Rmxvd0Zyb20gPSBmbG93TmFtZTsKKyAgICAgICAgciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWdpb25fMiIpOworICAgICAgICByLnN0eWxlLndlYmtpdEZsb3dGcm9tID0gZmxvd05h
bWU7CisgICAgfQorICAgIHZhciBjb3VudCA9IDA7CisgICAgZnVuY3Rpb24gcmVnaW9uMVVwZGF0
ZWQoZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQu
aWQiLCAicmVnaW9uXzEiKTsKKyAgICAgICAgaWYgKCsrY291bnQgPiAxKSB7CisgICAgICAgICAg
IHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIpOworICAgICAgICAg
ICByMS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdp
b24xVXBkYXRlZCk7CisgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIHJlYWNoZWQgYWZ0ZXIg
cmVnaW9uXzIgaXMgcmVtb3ZlZCBmcm9tIERPTQorICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb24yVXBkYXRlZChldmVudCkgewor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5pZCIsICJyZWdpb25f
MiIpOworICAgICAgICB2YXIgcjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzIi
KTsKKyAgICAgICAgcjIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5b3V0VXBk
YXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICByMi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb25VcGRhdGVkKTsKKyAgICAgICAgdmFyIGMyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjIiKTsKKyAgICAgICAgZGVidWcoIlJl
bW92aW5nIHJlZ2lvbl8yIGZyb20gRE9NIik7CisgICAgICAgIGMyLmlubmVySFRNTCA9ICIiOyAv
LyB0aGlzIHdpbGwgdHJpZ2dlciBhIG5ldyByb3VuZCBvZiBldmVudHMgZHVlIHRvIGxheW91dAor
ICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb25VcGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHRlc3RG
YWlsZWQoZXZlbnQudGFyZ2V0LmlkICsgIiBldmVudCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGRpc3Bh
dGNoZWQiICk7CisgICAgfQorICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgdmFy
IHIxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgIHZhciBy
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByMS5hZGRF
dmVudExpc3RlbmVyKCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24xVXBkYXRlZCk7
CisgICAgICAgIHIyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIs
IHJlZ2lvbjJVcGRhdGVkKTsKKyAgICAgICAgZGVidWcoIkZsb3cgY29udGVudCIpOworICAgICAg
ICBmbG93Q29udGVudCgiYXJ0aWNsZSIpOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHN0YXJ0VGVzdCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1y
ZW1vdmUtZnJvbS1mbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9y
ZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjNiNjhhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZyb20tZmxvdy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgcmVnaW9uTGF5b3V0RXZlbnQKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisgCitGbG93IGNvbnRlbnQKK1BBU1MgZXZlbnQudGFyZ2V0Lmlk
IGlzICJyZWdpb25fMSIKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICJyZWdpb25fMiIKK1JlbW92
aW5nIHJlZ2lvbl8yIGZyb20gZmxvdworUEFTUyBldmVudC50YXJnZXQuaWQgaXMgInJlZ2lvbl8x
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtcmVtb3ZlLWZy
b20tZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1v
dmUtZnJvbS1mbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcw
NDI3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24t
ZXZlbnQtcmVtb3ZlLWZyb20tZmxvdy5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHN0eWxlPgorI2FydGljbGUgeworICAgIC13ZWJraXQtZmxvdy1pbnRvOiBh
cnRpY2xlOworICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOworfQorI3JlZ2lvbl8xLCAjcmVn
aW9uXzJ7CisgICAgLXdlYmtpdC1mbG93LWZyb206IG5vX2FydGljbGU7CisgICAgb3ZlcmZsb3c6
aGlkZGVuOworICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrOworICAgIHZlcnRpY2FsLWFsaWduOnRv
cDsKKyAgICBtYXJnaW46MTBweDsKK30KKy5ibG9jayB7CisgICBkaXNwbGF5OmJsb2NrOworfQor
I3JlZ2lvbl8xLCAjcmVnaW9uXzIgeyBoZWlnaHQ6MTEwcHg7IHdpZHRoOjIwMHB4OyBtYXJnaW46
IDVweDt9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiIg
Y2xhc3M9ImJsb2NrIj48L2Rpdj4KKzxkaXYgaWQ9ImFydGljbGUiPgorICAgIDxkaXY+CisgICAg
ICAgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlZ2lv
bl8xIj48L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbl8yIj48L2Rpdj4KKworPGRpdiBpZD0iY29uc29s
ZSIgY2xhc3M9ImJsb2NrIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVz
dHMgcmVnaW9uTGF5b3V0RXZlbnQiKQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBmdW5jdGlvbiBmbG93Q29udGVudChmbG93TmFt
ZSkgeworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIp
OworICAgICAgICByLnN0eWxlLndlYmtpdEZsb3dGcm9tID0gZmxvd05hbWU7CisgICAgICAgIHIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzIiKTsKKyAgICAgICAgci5zdHlsZS53
ZWJraXRGbG93RnJvbSA9IGZsb3dOYW1lOworICAgIH0KKyAgICB2YXIgY291bnQgPSAwOworICAg
IGZ1bmN0aW9uIHJlZ2lvbjFVcGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LmlkIiwgInJlZ2lvbl8xIik7CisgICAgICAgIGlmICgrK2Nv
dW50ID4gMSkgeworICAgICAgICAgICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVnaW9uXzEiKTsKKyAgICAgICAgICAgcjEucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0UmVn
aW9uTGF5b3V0VXBkYXRlIiwgcmVnaW9uMVVwZGF0ZWQpOworICAgICAgICAgICAvLyB0aGlzIHNo
b3VsZCBiZSByZWFjaGVkIGFmdGVyIHJlZ2lvbl8yIGlzIHJlbW92ZWQgZnJvbSBmbG93CisgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHJl
Z2lvbjJVcGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LmlkIiwgInJlZ2lvbl8yIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByMi5yZW1vdmVFdmVudExpc3RlbmVy
KCJ3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24yVXBkYXRlZCk7CisgICAgICAgIHIy
LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvblVwZGF0
ZWQpOworICAgICAgICBkZWJ1ZygiUmVtb3ZpbmcgcmVnaW9uXzIgZnJvbSBmbG93Iik7CisgICAg
ICAgIHIyLnN0eWxlLndlYmtpdEZsb3dGcm9tID0gIm5vbmUiOyAvLyB0aGlzIHdpbGwgdHJpZ2dl
ciBhIG5ldyByb3VuZCBvZiBldmVudHMgZHVlIHRvIGxheW91dAorICAgIH0KKyAgICBmdW5jdGlv
biByZWdpb25VcGRhdGVkKGV2ZW50KSB7CisgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQudGFyZ2V0
LmlkICsgIiBldmVudCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGRpc3BhdGNoZWQiICk7CisgICAgfQor
ICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAgICAgdmFyIHIxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlZ2lvbl8xIik7CisgICAgICAgIHZhciByMiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWdpb25fMiIpOworICAgICAgICByMS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJr
aXRSZWdpb25MYXlvdXRVcGRhdGUiLCByZWdpb24xVXBkYXRlZCk7CisgICAgICAgIHIyLmFkZEV2
ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lvbjJVcGRhdGVkKTsK
KyAgICAgICAgZGVidWcoIkZsb3cgY29udGVudCIpOworICAgICAgICBmbG93Q29udGVudCgiYXJ0
aWNsZSIpOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0
VGVzdCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmQ2N2ViOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVnaW9uLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CisjYXJ0aWNsZSB7CisgICAgLXdlYmtpdC1mbG93LWludG86IGFydGlj
bGU7CisgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7Cit9CisjcmVnaW9uXzEsICNyZWdpb25f
MnsKKyAgICAtd2Via2l0LWZsb3ctZnJvbTogbm9fYXJ0aWNsZTsKKyAgICBvdmVyZmxvdzpoaWRk
ZW47CisgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7CisgICAgdmVydGljYWwtYWxpZ246dG9wOwor
ICAgIG1hcmdpbjoxMHB4OworfQorLmJsb2NrIHsKKyAgIGRpc3BsYXk6YmxvY2s7Cit9CisjcmVn
aW9uXzEsICNyZWdpb25fMiB7IGhlaWdodDoxMTBweDsgd2lkdGg6MjAwcHh9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiIgY2xhc3M9ImJsb2NrIj48L2Rp
dj4KKzxkaXYgaWQ9ImFydGljbGUiPgorICAgIDxkaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRl
bnQiIHN0eWxlPSJoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2
PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlZ2lvbl8xIj48L2Rpdj4KKzxkaXYg
aWQ9InJlZ2lvbl8yIj48L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSIgY2xhc3M9ImJsb2NrIj48
L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdHMgcmVnaW9uTGF5b3V0RXZl
bnQiKQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICBmdW5jdGlvbiBmbG93Q29udGVudChmbG93TmFtZSkgeworICAgICAgICB2YXIg
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb25fMSIpOworICAgICAgICByLnN0eWxl
LndlYmtpdEZsb3dGcm9tID0gZmxvd05hbWU7CisgICAgICAgIHIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uXzIiKTsKKyAgICAgICAgci5zdHlsZS53ZWJraXRGbG93RnJvbSA9IGZs
b3dOYW1lOworICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb24xVXBkYXRlZChldmVudCkgeworICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5pZCIsICJyZWdpb25fMSIp
OworICAgIH0KKyAgICBmdW5jdGlvbiByZWdpb24yVXBkYXRlZChldmVudCkgeworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5pZCIsICJyZWdpb25fMiIpOworICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewor
ICAgICAgICB2YXIgcjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uXzEiKTsKKyAg
ICAgICAgdmFyIHIyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbl8yIik7CisgICAg
ICAgIHIxLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFJlZ2lvbkxheW91dFVwZGF0ZSIsIHJlZ2lv
bjFVcGRhdGVkKTsKKyAgICAgICAgcjIuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0UmVnaW9uTGF5
b3V0VXBkYXRlIiwgcmVnaW9uMlVwZGF0ZWQpOworICAgICAgICBkZWJ1ZygiRmxvdyBjb250ZW50
Iik7CisgICAgICAgIGZsb3dDb250ZW50KCJhcnRpY2xlIik7CisgICAgfQorICAgIC8vc3RhcnRU
ZXN0KCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydFRlc3QpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MDYyY2Q0
Li45NmQzMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDMtMTIgIFJhdWwg
SHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1NSZWdpb25zXVtDU1NPTV0g
SW1wbGVtZW50IHJlZ2lvbkxheW91dEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03ODg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGluZyB0aGUgcmVnaW9uTGF5b3V0RXZlbnQgdGhhdCBpcyBk
aXNwYXRjaCBmb3IgYWxsIHJlZ2lvbnMgYWZ0ZXIgZWFjaCBmbG93LXRocmVhZCBsYXlvdXQuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQtYWRkLXRvLWZsb3cuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUtZnJvbS1k
b20uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3JlZ2lvbi1ldmVudC1yZW1vdmUt
ZnJvbS1mbG93Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9yZWdpb24tZXZlbnQu
aHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZCk6IEFkZGVkIGNoZWNrIGZvciByZWdpb25M
YXlvdXRVcGRhdGUgbGlzdGVuZXJzCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBk
YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKE5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KTogU3RhcnQgdGhlIGV2
ZW50IGRpc3BhdGNoIHRpbWVyIGJ1dCBvbmx5IGlmIHRoZXJlIGFyZSByZWdpb25MYXlvdXRVcGRh
dGUgbGlzdGVuZXJzIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcmVnaW9uIHRoYXQgaGFkIGl0
cyBsYXlvdXQgdXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNv
bXB1dGVPdmVyZmxvd1N0YXRlRm9yUmVnaW9ucyk6IE1hcmsgcmVnaW9ucyB0aGF0IG1pZ2h0IGhh
ZCBhIGxheW91dCB1cGRhdGUKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJl
Z2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpSZW5k
ZXJSZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6c2V0RGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnNob3VsZERpc3BhdGNoUmVnaW9u
TGF5b3V0VXBkYXRlRXZlbnQpOgorICAgICAgICAoUmVuZGVyUmVnaW9uKToKKwogMjAxMi0wMy0x
MiAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBK
YXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb25FdmVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggODA5Zjk5MC4uNWNhNjA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0z
Nzk2LDYgKzM3OTYsOCBAQCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKICNlbmRpZgogICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQpCiAgICAgICAgIGFkZExpc3RlbmVyVHlw
ZShTQ1JPTExfTElTVEVORVIpOworICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkud2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpCisgICAgICAgIGFkZExpc3RlbmVyVHlw
ZShSRUdJT05MQVlPVVRVUERBVEVfTElTVEVORVIpOwogfQogCiBDU1NTdHlsZURlY2xhcmF0aW9u
KiBEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggMWUzMDVkNC4uNGFhYzE2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTc3Myw3ICs3NzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFRSQU5TSVRJT05FTkRfTElT
VEVORVIgICAgICAgICAgICAgICA9IDB4ODAwLAogICAgICAgICBCRUZPUkVMT0FEX0xJU1RFTkVS
ICAgICAgICAgICAgICAgICAgPSAweDEwMDAsCiAgICAgICAgIFRPVUNIX0xJU1RFTkVSICAgICAg
ICAgICAgICAgICAgICAgICA9IDB4MjAwMCwKLSAgICAgICAgU0NST0xMX0xJU1RFTkVSICAgICAg
ICAgICAgICAgICAgICAgID0gMHg0MDAwCisgICAgICAgIFNDUk9MTF9MSVNURU5FUiAgICAgICAg
ICAgICAgICAgICAgICA9IDB4NDAwMCwKKyAgICAgICAgUkVHSU9OTEFZT1VUVVBEQVRFX0xJU1RF
TkVSICAgICAgICAgID0gMHg4MDAwCiAgICAgfTsKIAogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBl
KExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0IHsgcmV0dXJuIChtX2xpc3RlbmVyVHlw
ZXMgJiBsaXN0ZW5lclR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA4NjA0MjMy
Li43NGE4ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTIxMiw2ICsyMTIsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdHBvaW50ZXJsb2NrbG9z
dCkgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRSZWdpb25MYXlvdXRVcGRhdGUpIFwKKyAgICBc
CiAKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IGFhNzg5ZjUuLmI2ODhiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3NzQsNiArMjc3NCwx
NiBAQCBib29sIE5vZGU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAg
ICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBFdmVudERpc3Bh
dGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudCkpOwogfQogCit2b2lkIE5vZGU6OmRpc3BhdGNoUmVn
aW9uTGF5b3V0VXBkYXRlRXZlbnQoKQoreworICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJp
ZGRlbigpKTsKKworICAgIGlmICghZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50
OjpSRUdJT05MQVlPVVRVUERBVEVfTElTVEVORVIpKQorICAgICAgICByZXR1cm47CisKKyAgICBk
aXNwYXRjaFNjb3BlZEV2ZW50KFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0UmVn
aW9uTGF5b3V0VXBkYXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3
KCksIDApKTsKK30KKwogdm9pZCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCkK
IHsKICAgICBpZiAoaXNJblNoYWRvd1RyZWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGIyZDQwM2UuLmEz
OTljMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTczLDYgKzU3Myw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwogCisgICAgdm9pZCBkaXNwYXRj
aFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KCk7CisKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKICAgICB2b2lkIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0
YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogICAgIHZvaWQgZGlzcGF0
Y2hGb2N1c0luRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
Tm9kZT4gb2xkRm9jdXNlZE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCmluZGV4IGUyNDFkOTYuLmU5NTA0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgUmVu
ZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChOb2RlKiBub2RlLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZsb3dUaHJlYWQpCiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0
aCh0cnVlKQogICAgICwgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCiAg
ICAgLCBtX292ZXJmbG93KGZhbHNlKQorICAgICwgbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRp
bWVyKHRoaXMsICZSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVy
RmlyZWQpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmRvY3VtZW50KCktPmNzc1JlZ2lvbnNFbmFibGVk
KCkpOwogICAgIHNldElzQW5vbnltb3VzKGZhbHNlKTsKQEAgLTM5OSw2ICs0MDAsMTUgQEAgdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBz
dGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIHJlZ2lvbnNDaGFuZ2VkKTsKICAgICBSZW5kZXJCbG9j
azo6bGF5b3V0KCk7CiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CisgICAgaWYgKGRvY3VtZW50KCkt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6UkVHSU9OTEFZT1VUVVBEQVRFX0xJU1RFTkVSKSAm
JiAhbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIGZv
ciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigp
OyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICAgICAgaWYgKHJlZ2lvbi0+c2hvdWxk
RGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpKSB7CisgICAgICAgICAgICAgICAgLy8g
YXQgbGVhc3Qgb25lIHJlZ2lvbiBuZWVkcyB0byBkaXNwYXRjaCB0aGUgZXZlbnQKKyAgICAgICAg
ICAgICAgICBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiB9CiAKIHZv
aWQgUmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aCgpCkBAIC04OTIsMTIgKzkw
MiwyMCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyZmxvd1N0YXRlRm9yUmVn
aW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRQogICAgICAgICB9CiAgICAgICAgIExheW91
dFVuaXQgZmxvd01pbiA9IGhlaWdodCAtIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVn
aW9uLT5yZWdpb25SZWN0KCkueSgpIDogcmVnaW9uLT5yZWdpb25SZWN0KCkueCgpKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyByZWdpb24tPnJlZ2lvblJlY3QoKS5tYXhZKCkgOiByZWdpb24tPnJlZ2lvblJlY3QoKS5t
YXhYKCkpOworICAgICAgICBSZW5kZXJSZWdpb246OlJlZ2lvblN0YXRlIHByZXZpb3VzU3RhdGUg
PSByZWdpb24tPnJlZ2lvblN0YXRlKCk7CiAgICAgICAgIFJlbmRlclJlZ2lvbjo6UmVnaW9uU3Rh
dGUgc3RhdGUgPSBSZW5kZXJSZWdpb246OlJlZ2lvbkZpdDsKICAgICAgICAgaWYgKGZsb3dNaW4g
PD0gMCkKICAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyUmVnaW9uOjpSZWdpb25FbXB0eTsKICAg
ICAgICAgaWYgKGZsb3dNYXggPiAwKQogICAgICAgICAgICAgc3RhdGUgPSBSZW5kZXJSZWdpb246
OlJlZ2lvbk92ZXJmbG93OwogICAgICAgICByZWdpb24tPnNldFJlZ2lvblN0YXRlKHN0YXRlKTsK
KyAgICAgICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyByZWdpb24gc2hvdWxkIGRpc3BhdGNo
IGEgcmVnaW9uTGF5b3V0VXBkYXRlIGV2ZW50CisgICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkg
aXQgY2Fubm90IGRldGVybWluZSB3aGV0aGVyIGEgcmVnaW9uIHdob3NlIHJlZ2lvbk92ZXJmbG93
IHN0YXRlIHJlbWFpbmVkIGVpdGhlciAiZml0IiBvciAib3ZlcmZsb3ciIGhhcyBhY3R1YWxseQor
ICAgICAgICAvLyBjaGFuZ2VkLCBzbyBpdCBqdXN0IGFzc3VtZXMgdGhhdCB0aG9zZSByZWdpb24g
c2hvdWxkIGRpc3BhdGNoIHRoZSBldmVudAorICAgICAgICBpZiAocHJldmlvdXNTdGF0ZSAhPSBz
dGF0ZQorICAgICAgICAgICAgfHwgc3RhdGUgPT0gUmVuZGVyUmVnaW9uOjpSZWdpb25GaXQKKyAg
ICAgICAgICAgIHx8IHN0YXRlID09IFJlbmRlclJlZ2lvbjo6UmVnaW9uT3ZlcmZsb3cpCisgICAg
ICAgICAgICByZWdpb24tPnNldERpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQodHJ1ZSk7
CiAgICAgfQogCiAgICAgLy8gV2l0aCB0aGUgcmVnaW9ucyBvdmVyZmxvdyBzdGF0ZSBjb21wdXRl
ZCB3ZSBjYW4gYWxzbyBzZXQgdGhlIG92ZXJmbG93IGZvciB0aGUgbmFtZWQgZmxvdy4KQEAgLTk3
MCw1ICs5ODgsMzQgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpvYmplY3RJbkZsb3dSZWdpb24o
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmQKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1l
ckZpcmVkKFRpbWVyPFJlbmRlckZsb3dUaHJlYWQ+KikKK3sKKyAgICAvLyBDcmVhdGUgYSBjb3B5
IG9mIHJlZ2lvbiBub2RlcywgdG8gcHJvdGVjdCB0aGVtIGZvciBiZWluZyBkZXN0cm95ZWQgaW4g
dGhlIGV2ZW50IGxpc3RlbmVyCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlZ2lvbk5vZGVz
OworICAgIHJlZ2lvbk5vZGVzLnJlc2VydmVDYXBhY2l0eShtX3JlZ2lvbkxpc3Quc2l6ZSgpKTsK
KyAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3Qu
YmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgICAgICBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBBU1NFUlQocmVnaW9uLT5ub2Rl
KCkgJiYgcmVnaW9uLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSk7CisgICAgICAgIC8vIGRpc3Bh
dGNoIHRoZSBldmVudCBvbmx5IGZvciBtYXJrZWQgcmVnaW9ucyBhbmQgb25seSBmb3IgdGhvc2Ug
d2hvIGhhdmUgYSBsaXN0ZW5lcgorICAgICAgICBpZiAocmVnaW9uLT5zaG91bGREaXNwYXRjaFJl
Z2lvbkxheW91dFVwZGF0ZUV2ZW50KCkpIHsKKyAgICAgICAgICAgIHJlZ2lvbk5vZGVzLmFwcGVu
ZChyZWdpb24tPm5vZGUoKSk7CisgICAgICAgICAgICAvLyBjbGVhciB0aGUgZGlzcGF0Y2ggZmxh
ZyBoZXJlLCBhcyBpdCBpcyBwb3NzaWJsZSB0byBiZSBzZXQgYWdhaW4gZHVlIHRvIGV2ZW50IGxp
c3RlbmVycworICAgICAgICAgICAgcmVnaW9uLT5zZXREaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0
ZUV2ZW50KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8
Tm9kZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWdpb25Ob2Rlcy5iZWdpbigpOyBpdCAhPSBy
ZWdpb25Ob2Rlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9ICpp
dDsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7
CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmIChy
ZW5kZXJlciAmJiByZW5kZXJlci0+aXNSZW5kZXJSZWdpb24oKSkgeworICAgICAgICAgICAgbm9k
ZS0+ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOworICAgICAgICAgICAgLy8gTGF5
b3V0IG5lZWRzIHRvIGJlIHVwdG9kYXRlIGFmdGVyIGVhY2ggZXZlbnQgbGlzdGVuZXIKKyAgICAg
ICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCBiOTU4ZWIxLi40MTFk
MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAg
LTE0OSw2ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tJbnZhbGlkUmVnaW9ucygp
OwogCiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKKyAg
ICB2b2lkIHJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXJGaXJlZChUaW1lcjxSZW5kZXJGbG93
VGhyZWFkPiopOwogCiAgICAgYm9vbCByZWdpb25JblJhbmdlKGNvbnN0IFJlbmRlclJlZ2lvbiog
dGFyZ2V0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uLCBjb25zdCBSZW5k
ZXJSZWdpb24qIGVuZFJlZ2lvbikgY29uc3Q7CiAKQEAgLTIwNCw2ICsyMDUsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0OwogICAgIGJvb2wg
bV9vdmVyZmxvdzsKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBtX25hbWVkRmxvdzsKKyAg
ICBUaW1lcjxSZW5kZXJGbG93VGhyZWFkPiBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXI7
CiB9OwogCiBpbmxpbmUgUmVuZGVyRmxvd1RocmVhZCogdG9SZW5kZXJGbG93VGhyZWFkKFJlbmRl
ck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNw
cAppbmRleCA1Yjc2OTJhLi5hZjI2ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcApAQCAtNDgsNiArNDgsNyBAQCBSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lv
bihOb2RlKiBub2RlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogICAgICwgbV9pc1Zh
bGlkKGZhbHNlKQogICAgICwgbV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1f
cmVnaW9uU3RhdGUoUmVnaW9uVW5kZWZpbmVkKQorICAgICwgbV9kaXNwYXRjaFJlZ2lvbkxheW91
dFVwZGF0ZUV2ZW50KGZhbHNlKQogewogICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgpLT5jc3NS
ZWdpb25zRW5hYmxlZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAppbmRleCA3MGZhMjNiLi43NDAzMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oCkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIFJlZ2lvblN0YXRlIHJl
Z2lvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZCgpID8gbV9yZWdpb25TdGF0ZSA6IFJl
Z2lvblVuZGVmaW5lZDsgfQogICAgIHZvaWQgc2V0UmVnaW9uU3RhdGUoUmVnaW9uU3RhdGUgcmVn
aW9uU3RhdGUpIHsgbV9yZWdpb25TdGF0ZSA9IHJlZ2lvblN0YXRlOyB9CisgICAgdm9pZCBzZXRE
aXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KGJvb2wgdmFsdWUpIHsgbV9kaXNwYXRjaFJl
Z2lvbkxheW91dFVwZGF0ZUV2ZW50ID0gdmFsdWU7IH0KKyAgICBib29sIHNob3VsZERpc3BhdGNo
UmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKSB7IHJldHVybiBtX2Rpc3BhdGNoUmVnaW9uTGF5b3V0
VXBkYXRlRXZlbnQ7IH0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIApAQCAtMTIxLDYgKzEyMyw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQ7CiAgICAgYm9vbCBtX2hhc0N1c3RvbVJl
Z2lvblN0eWxlOwogICAgIFJlZ2lvblN0YXRlIG1fcmVnaW9uU3RhdGU7CisgICAgYm9vbCBtX2Rp
c3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQ7CiB9OwogCiBpbmxpbmUgUmVuZGVyUmVnaW9u
KiB0b1JlbmRlclJlZ2lvbihSZW5kZXJPYmplY3QqIG9iamVjdCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>