<?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>97337</bug_id>
          
          <creation_ts>2012-09-21 07:11:18 -0700</creation_ts>
          <short_desc>[css-lists] Implement `counter-set` property</short_desc>
          <delta_ts>2023-08-22 09:58:57 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Onea">andreionea3000</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>andreionea3000</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>heycam</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>macpherson</cc>
    
    <cc>MatsPalmgren_bugz</cc>
    
    <cc>menard</cc>
    
    <cc>mihnea</cc>
    
    <cc>ntim</cc>
    
    <cc>peter+ews</cc>
    
    <cc>sebastianzartner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725495</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Onea">andreionea3000</who>
    <bug_when>2012-09-21 07:11:18 -0700</bug_when>
    <thetext>The latest CSS3 lists editor&apos;s draft defines the new counter-set property. We need to also implement this in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725555</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-21 09:07:21 -0700</bug_when>
    <thetext>&gt; We need to also implement this in WebKit.

Could you please elaborate? Why is it needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726110</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Onea">andreionea3000</who>
    <bug_when>2012-09-22 03:35:06 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; &gt; We need to also implement this in WebKit.
&gt; 
&gt; Could you please elaborate? Why is it needed?

Yeah, sorry. s/need/might want/
I&apos;ve been working on a patch for this feature during a WebKit hackathon, and thought it could be easily added to WebKit, since it&apos;s such a low hanging fruit.

Currently, only counter-reset and counter-increment are supported, and the current editor&apos;s draft also adds the counter-set property. http://dev.w3.org/csswg/css3-lists/#counter-set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726666</commentid>
    <comment_count>3</comment_count>
      <attachid>165382</attachid>
    <who name="Andrei Onea">andreionea3000</who>
    <bug_when>2012-09-24 08:04:28 -0700</bug_when>
    <thetext>Created attachment 165382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726678</commentid>
    <comment_count>4</comment_count>
      <attachid>165382</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-24 08:19:52 -0700</bug_when>
    <thetext>Comment on attachment 165382
Patch

Attachment 165382 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13992647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726686</commentid>
    <comment_count>5</comment_count>
      <attachid>165382</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-24 08:27:32 -0700</bug_when>
    <thetext>Comment on attachment 165382
Patch

Attachment 165382 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13989699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726688</commentid>
    <comment_count>6</comment_count>
      <attachid>165382</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 08:28:28 -0700</bug_when>
    <thetext>Comment on attachment 165382
Patch

Attachment 165382 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14002411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726707</commentid>
    <comment_count>7</comment_count>
      <attachid>165382</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-24 08:43:54 -0700</bug_when>
    <thetext>Comment on attachment 165382
Patch

Attachment 165382 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13985747</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727008</commentid>
    <comment_count>8</comment_count>
      <attachid>165382</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-24 14:30:55 -0700</bug_when>
    <thetext>Comment on attachment 165382
Patch

Attachment 165382 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13984899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727433</commentid>
    <comment_count>9</comment_count>
      <attachid>165563</attachid>
    <who name="Andrei Onea">andreionea3000</who>
    <bug_when>2012-09-25 02:34:38 -0700</bug_when>
    <thetext>Created attachment 165563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727744</commentid>
    <comment_count>10</comment_count>
      <attachid>165563</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-09-25 09:48:52 -0700</bug_when>
    <thetext>Comment on attachment 165563
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Test: fast/css/counters/counter-set.html

This seems like really light test coverage for this. We need a test that covers a bit more, at least exercising all the code that was added.

For example, this does not test getComputedStyle behavior for the new property, nor does it test the behavior of changes to the property rather than just an initial value set. It does not test parsing edge cases instead having just a single test case.

With all the code we have to write to support things like inheriting we need to make sure our test cases cover those cases as well. Removing any line of code should make a test fail, but I think that currently there are many lines of code I could remove without having any effect on this one test.

&gt; Source/WebCore/css/StyleBuilder.cpp:1002
&gt; -enum CounterBehavior {Increment = 0, Reset};
&gt; +enum CounterBehavior {Increment = 0, Reset, Set};

Nor new, but the formatting here is not our standard. There should be spaces inside the braces { Increment, Reset, Set } and the = 0 should not be there since it adds no value.

&gt; Source/WebCore/css/StyleBuilder.cpp:1028
&gt; -            if (counterBehavior == Reset) {
&gt; +            switch (counterBehavior) {
&gt; +            case Reset:
&gt;                  directives.inheritReset(it-&gt;second);
&gt; -            } else {
&gt; +                break;
&gt; +            case Increment:
&gt;                  directives.inheritIncrement(it-&gt;second);
&gt; +                break;
&gt; +            case Set:
&gt; +                directives.inheritSet(it-&gt;second);
&gt; +                break;
&gt; +            default:
&gt; +                ASSERT_NOT_REACHED();
&gt;              }

We normally don’t include defaults in switch statements, because that turns off the compiler warnings for unhandled enum values. I understand the value of the ASSERT_NOT_REACHED, but the compile time warning is even more valuable.

There may also be a more elegant way to handle this. Passing in an enum and using a bunch of switch statements seems inferior to using a traits class that can supply the various functions needed inside the class.

&gt; Source/WebCore/css/StyleBuilder.cpp:1055
&gt; -            if (counterBehavior == Reset)
&gt; +            switch (counterBehavior) {
&gt; +            case Reset:
&gt;                  it-&gt;second.clearReset();
&gt; -            else
&gt; +                break;
&gt; +            case Increment:
&gt;                  it-&gt;second.clearIncrement();
&gt; +                break;
&gt; +            case Set:
&gt; +                it-&gt;second.clearSet();
&gt; +                break;
&gt; +            default:
&gt; +                ASSERT_NOT_REACHED();
&gt; +            }

Same comment applies here.

&gt; Source/WebCore/css/StyleBuilder.cpp:1082
&gt; -            if (counterBehavior == Reset) {
&gt; +            switch (counterBehavior) {
&gt; +            case Reset:
&gt;                  directives.setResetValue(value);
&gt; -            } else {
&gt; +                break;
&gt; +            case Increment:
&gt;                  directives.addIncrementValue(value);
&gt; +                break;
&gt; +            case Set:
&gt; +                directives.setSetValue(value);
&gt; +                break;
&gt; +            default:
&gt; +                ASSERT_NOT_REACHED();
&gt; +                break;

And here.

&gt; Source/WebCore/rendering/CounterNode.h:45
&gt; -    static PassRefPtr&lt;CounterNode&gt; create(RenderObject*, bool isReset, int value);
&gt; +    static PassRefPtr&lt;CounterNode&gt; create(RenderObject*, bool isSet, bool isReset, int value);

The use of two booleans here is not good. We should replace the boolean with an enum. Rather than having two booleans that if they were both set would be incorrect.

&gt; LayoutTests/fast/css/counters/counter-set.html:19
&gt; +        newSpanElement.innerText = window.internals.counterValue(document.getElementById(spanList.item(i).getAttribute(&quot;id&quot;))) + &quot; &quot;;

You can use “internals” here, no need to use “window.internals”.

But also, the test is carefully using “window.testRunner” to try to run outside the test runner, but that’s really pointless if the test relies on window.internals which is also present only inside the test runner.

What does this test do in the browser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667192</commentid>
    <comment_count>11</comment_count>
    <who name="Zihua Li">webkit</who>
    <bug_when>2020-06-29 10:58:58 -0700</bug_when>
    <thetext>Has there been any progress on this issue?

For further references, Chromium/Blink recently implemented this property and will release it in Chrome v85: https://www.chromestatus.com/feature/4688138070917120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807499</commentid>
    <comment_count>12</comment_count>
    <who name="Mats Palmgren">MatsPalmgren_bugz</who>
    <bug_when>2021-10-21 19:19:03 -0700</bug_when>
    <thetext>Any chance Safari could add &apos;counter-set&apos; for better web-compat?
This is causing real issues for web developers.
Firefox and Chrome already support it for a few years now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807502</commentid>
    <comment_count>13</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-21 20:02:28 -0700</bug_when>
    <thetext>The testing situation is improved a little now, with some counter-set tests in WPT.  The patch probably needs a bit of unbitrotting though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838973</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-08 17:58:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/88663348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838975</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-08 17:59:30 -0800</bug_when>
    <thetext>One use case in the wild:
“Our product is a WYSIWYG editor library, and we need it to control list numbering.”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1972255</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2023-08-19 15:39:26 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/16868</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1972646</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-08-22 09:58:54 -0700</bug_when>
    <thetext>Committed 267137@main (35c672ab4264): &lt;https://commits.webkit.org/267137@main&gt;

Reviewed commits have been landed. Closing PR #16868 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165382</attachid>
            <date>2012-09-24 08:04:28 -0700</date>
            <delta_ts>2012-09-25 02:34:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97337-20120924180339.patch</filename>
            <type>text/plain</type>
            <size>23043</size>
            <attacher name="Andrei Onea">andreionea3000</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU1OTg3YTNjMGRkYzhm
NzVjZjUyZmMwNDcyYmJhNjkxOWExMzIxMS4uNDg2YzgxMDhlZDdjNWZmNDRiZmJkMzlhYjQ4N2I1
YTY5NGViYzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTI0ICBBbmRy
ZWkgT25lYSAgPG9uZWFAYWRvYmUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBjb3VudGVyLXNl
dCBwcm9wZXJ0eSBmcm9tIENTUzMgbGlzdHMgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3IgY291bnRlci1zZXQgcHJv
cGVydHkuIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtbGlzdHMvI2NvdW50ZXItc2V0CisK
KyAgICAgICAgVGVzdDogZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1zZXQuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01DU1MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TUNTUy5tbToKKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBjb3VudGVyU2V0XSk6
CisgICAgICAgICgtW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gc2V0Q291bnRlclNldDpdKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvdW50ZXJUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgor
ICAgICAgICBBbHNvIHBhcnNlIHRoZSBjb3VudGVyLXNldCBwcm9wZXJ0eS4KKyAgICAgICAgKiBj
c3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzSW5o
ZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAg
ICAgICBBZGQgdGhlIGNvdW50ZXItc2V0IHByb3BlcnR5LgorICAgICAgICAqIGNzcy9TdHlsZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVy
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9Db3VudGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6
Q291bnRlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlck5vZGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6Y29tcHV0ZUNvdW50SW5QYXJlbnQpOgorICAg
ICAgICBXaGVuZXZlciBjb21wdXRpbmcgdGhlIHZhbHVlLCBzdG9wIGF0IGEgQ291bnRlck5vZGUg
dGhhdCBpcyBmcm9tIGNvdW50ZXItc2V0LgorICAgICAgICAoV2ViQ29yZTo6c2hvd1RyZWVBbmRN
YXJrKToKKyAgICAgICAgTWFrZSBzaG93Q291bnRlclRyZWUgYWxzbyBkaXNwbGF5IENvdW50ZXJO
b2RlJ3MgdGhhdCBhcmUgZnJvbSBjb3VudGVyLXNldC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ291
bnRlck5vZGUuaDoKKyAgICAgICAgKENvdW50ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXJOb2RlOjpoYXNTZXRUeXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlQ291bnRlck5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGly
ZWN0aXZlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXJEaXJlY3RpdmVzOjpDb3VudGVyRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyRGlyZWN0aXZlczo6aXNTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVj
dGl2ZXM6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjpz
ZXRTZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6Y2xlYXJT
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmluaGVyaXRTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmlzRGVmaW5lZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6Y29tYmluZWRWYWx1ZSk6CisgICAgICAgIChD
b3VudGVyRGlyZWN0aXZlcyk6CisKIDIwMTItMDktMjQgIEFuZHJleSBBZGFpa2luICA8YWFuZHJl
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZhc10gc3VwcG9y
dCAyRCBjYW52YXMgaW5zdHJ1bWVudGF0aW9uIGZyb20gdGhlIGluc3BlY3RvciBDKysgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgKaW5kZXggZGFhYThhMGZiOTU1MmRhMTlj
ZGUwNzVhNzk3ZTZjZTI0ZmIyMzhhMy4uNzM3YWMxNzJhYThhZjI3MDYxNDc3YWMxOGUzZGZmMTVl
N2NkMDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5oCkBAIC0xMjUsNiAr
MTI1LDggQEAKIC0gKHZvaWQpc2V0Q291bnRlckluY3JlbWVudDooTlNTdHJpbmcgKiljb3VudGVy
SW5jcmVtZW50OwogLSAoTlNTdHJpbmcgKiljb3VudGVyUmVzZXQ7CiAtICh2b2lkKXNldENvdW50
ZXJSZXNldDooTlNTdHJpbmcgKiljb3VudGVyUmVzZXQ7CistIChOU1N0cmluZyAqKWNvdW50ZXJT
ZXQ7CistICh2b2lkKXNldENvdW50ZXJTZXQ6KE5TU3RyaW5nICopY291bnRlclNldDsKIC0gKE5T
U3RyaW5nICopY3VlOwogLSAodm9pZClzZXRDdWU6KE5TU3RyaW5nICopY3VlOwogLSAoTlNTdHJp
bmcgKiljdWVBZnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQ1NTLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DU1MubW0KaW5kZXgg
MWFkYWJmZjIyM2IwZjk0OGEwMTdiZjkzMzBlMTFkMDJiNTA0NDA5Yi4uZjMyMjcwYmFmZjFlM2Qy
Y2FiNGQxOTgxMzA0NjFjZGQxMzc5NWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01DU1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01DU1MubW0KQEAgLTUxMSw2ICs1MTEsMTYgQEAgQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6Q1NT
VmFsdWUqIGltcGwpCiAgICAgW3NlbGYgc2V0UHJvcGVydHk6QCJjb3VudGVyLXJlc2V0IiB2YWx1
ZTpjb3VudGVyUmVzZXQgcHJpb3JpdHk6QCIiXTsKIH0KIAorLSAoTlNTdHJpbmcgKiljb3VudGVy
U2V0Cit7CisgICAgcmV0dXJuIFtzZWxmIGdldFByb3BlcnR5VmFsdWU6QCJjb3VudGVyLXNldCJd
OworfQorCistICh2b2lkKXNldENvdW50ZXJTZXQ6KE5TU3RyaW5nICopY291bnRlclNldAorewor
ICAgIFtzZWxmIHNldFByb3BlcnR5OkAiY291bnRlci1zZXQiIHZhbHVlOmNvdW50ZXJTZXQgcHJp
b3JpdHk6QCIiXTsKK30KKwogLSAoTlNTdHJpbmcgKiljdWUKIHsKICAgICByZXR1cm4gW3NlbGYg
Z2V0UHJvcGVydHlWYWx1ZTpAImN1ZSJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkMTBkNzM4YTMwOWY5MWE5YWM4NjQz
MzNlNzg1MThkZTljNjE1NGY5Li44OWEyMWRkZWE2MTEyMjA5NjAxYjIxNGM3MzE4YzkwOWE5MTk1
YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcApAQCAtMTMwMSw3ICsxMzAxLDIwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENTU1Byb3Bl
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBtYXAtPmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShpdC0+Zmlyc3QsIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0gICAgICAgIHNob3J0IG51bWJlciA9IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50ID8gaXQtPnNlY29uZC5pbmNyZW1l
bnRWYWx1ZSgpIDogaXQtPnNlY29uZC5yZXNldFZhbHVlKCk7CisgICAgICAgIHNob3J0IG51bWJl
cjsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDb3VudGVySW5jcmVtZW50OgorICAgICAgICAgICAgbnVtYmVyID0gaXQtPnNlY29uZC5pbmNy
ZW1lbnRWYWx1ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlDb3VudGVyUmVzZXQ6CisgICAgICAgICAgICBudW1iZXIgPSBpdC0+c2Vjb25kLnJlc2V0VmFs
dWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRl
clNldDoKKyAgICAgICAgICAgIG51bWJlciA9IGl0LT5zZWNvbmQuc2V0VmFsdWUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKChkb3VibGUpbnVtYmVyLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CkBAIC0yNDE3LDYgKzI0MzAs
OCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJU
b0NTU1ZhbHVlKHN0eWxlLmdldCgpLCBwcm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvdW50ZXJSZXNldDoKICAgICAgICAgICAgIHJldHVybiBjb3VudGVyVG9DU1NWYWx1ZShz
dHlsZS5nZXQoKSwgcHJvcGVydHlJRCk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVy
U2V0OgorICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1ZhbHVlKHN0eWxlLmdldCgpLCBw
cm9wZXJ0eUlEKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOgogICAg
ICAgICAgICAgaWYgKENsaXBQYXRoT3BlcmF0aW9uKiBvcGVyYXRpb24gPSBzdHlsZS0+Y2xpcFBh
dGgoKSkgewogICAgICAgICAgICAgICAgIGlmIChvcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUo
KSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6U0hBUEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmlu
ZGV4IGVmZDliYWUzYTA2OGRkZTVlZDE5ZWY4M2NhNzU0Yzc2MjZlODE4MzAuLjViOWFkZDZiYzY3
NTJjN2Q1NDgyNWExMTQ3NzY2YWM0MGM4YzdiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CkBAIC0yMTcwLDYgKzIxNzAsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNl
Q291bnRlcihwcm9wSWQsIDAsIGltcG9ydGFudCk7CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJTZXQ6IC8v
IFsgPGlkZW50aWZpZXI+IDxpbnRlZ2VyPj8gXSsgfCBub25lIHwgaW5oZXJpdAorICAgICAgICBp
ZiAoaWQgIT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ291bnRlcihw
cm9wSWQsIDEsIGltcG9ydGFudCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHk6CiAgICAgICAgIC8v
IFtbIDxmYW1pbHktbmFtZT4gfCA8Z2VuZXJpYy1mYW1pbHk+IF0sXSogWzxmYW1pbHktbmFtZT4g
fCA8Z2VuZXJpYy1mYW1pbHk+XSB8IGluaGVyaXQKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmNwcAppbmRleCBiNWE5ZDNmNGYzYTNjODIxNTY0MTg5MWU2ODg5NTJhMzMzMjRiODkyLi42
YTZlN2Y1OTljNGEwNmRmMmFmYWZiZmY1Y2MwNjBiNzU2NDBkYjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eS5jcHAKQEAgLTQ1Niw2ICs0NTYsNyBAQCBib29sIENTU1Byb3BlcnR5Ojppc0lu
aGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICBjYXNlIENTU1By
b3BlcnR5Q29udGVudDoKICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb3Vu
dGVyU2V0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKICAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2g6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggYmRkODQ4ODExMWMzOGU0ODg1ZGNjOTk0ZmEyNjgz
MTA0YWVhNDZmMy4uOTY5YmEzYTAwMzJjNjE2YzIzZWNjMTk3NGQ1MmNlMzQ5OGMyZDU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTk5LDYgKzk5LDcgQEAgY2xp
cAogY29udGVudAogY291bnRlci1pbmNyZW1lbnQKIGNvdW50ZXItcmVzZXQKK2NvdW50ZXItc2V0
CiBjdXJzb3IKIGVtcHR5LWNlbGxzCiBmbG9hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNw
cAppbmRleCAwOWMyN2I3MTc5ZmMyNDI0MzRkNWI0NjBmZGM4ZmM3YmJhNDE5N2RhLi43ZTA2OWQw
N2M2OGI2Y2ZiMTY1OTFkNTg4MzQ1NWJmNzhmMDU1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyLmNwcApAQCAtOTk5LDcgKzk5OSw3IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1lbnVt
IENvdW50ZXJCZWhhdmlvciB7SW5jcmVtZW50ID0gMCwgUmVzZXR9OworZW51bSBDb3VudGVyQmVo
YXZpb3Ige0luY3JlbWVudCA9IDAsIFJlc2V0LCBTZXR9OwogdGVtcGxhdGUgPENvdW50ZXJCZWhh
dmlvciBjb3VudGVyQmVoYXZpb3I+CiBjbGFzcyBBcHBseVByb3BlcnR5Q291bnRlciB7CiBwdWJs
aWM6CkBAIC0xMDEzLDEwICsxMDEzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgSXRlcmF0b3IgZW5k
ID0gcGFyZW50TWFwLmVuZCgpOwogICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gcGFyZW50TWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2
ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSku
aXRlcmF0b3ItPnNlY29uZDsKLSAgICAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVz
ZXQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY291bnRlckJlaGF2aW9yKSB7CisgICAgICAgICAg
ICBjYXNlIFJlc2V0OgogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMuaW5oZXJpdFJlc2V0KGl0
LT5zZWNvbmQpOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSW5jcmVtZW50OgogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMu
aW5oZXJpdEluY3JlbWVudChpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgU2V0OgorICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMuaW5oZXJpdFNl
dChpdC0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDMyLDEwICsxMDQwLDE5IEBAIHB1YmxpYzoKIAogICAg
ICAgICBJdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQg
PSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgaWYgKGNvdW50ZXJC
ZWhhdmlvciA9PSBSZXNldCkKKyAgICAgICAgICAgIHN3aXRjaCAoY291bnRlckJlaGF2aW9yKSB7
CisgICAgICAgICAgICBjYXNlIFJlc2V0OgogICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQuY2xl
YXJSZXNldCgpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBJbmNyZW1lbnQ6CiAgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5jbGVh
ckluY3JlbWVudCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
ZXQ6CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5jbGVhclNldCgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICBpbnQgbGVuZ3RoID0gbGlz
dCA/IGxpc3QtPmxlbmd0aCgpIDogMDsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewpAQCAtMTA1MCwxMCArMTA2NywxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBB
dG9taWNTdHJpbmcgaWRlbnRpZmllciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
cGFpci0+Zmlyc3QoKSktPmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBpbnQgdmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhaXItPnNlY29uZCgpKS0+Z2V0SW50
VmFsdWUoKTsKICAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFw
LmFkZChpZGVudGlmaWVyLCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+c2Vjb25kOwot
ICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgeworICAgICAgICAgICAg
c3dpdGNoIChjb3VudGVyQmVoYXZpb3IpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzZXQ6CiAgICAg
ICAgICAgICAgICAgZGlyZWN0aXZlcy5zZXRSZXNldFZhbHVlKHZhbHVlKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEluY3Jl
bWVudDoKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLmFkZEluY3JlbWVudFZhbHVlKHZhbHVl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2V0OgorICAgICAg
ICAgICAgICAgIGRpcmVjdGl2ZXMuc2V0U2V0VmFsdWUodmFsdWUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE4NDYsNiArMTg3Miw3IEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWls
ZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDb2xvciwgQXBwbHlQcm9w
ZXJ0eUNvbG9yPEluaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmNvbG9yLCAmUmVuZGVy
U3R5bGU6OnNldENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IsICZSZW5k
ZXJTdHlsZTo6aW52YWxpZENvbG9yLCBSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yPjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDb3VudGVySW5j
cmVtZW50LCBBcHBseVByb3BlcnR5Q291bnRlcjxJbmNyZW1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkp
OwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCwgQXBwbHlQ
cm9wZXJ0eUNvdW50ZXI8UmVzZXQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUNvdW50ZXJTZXQsIEFwcGx5UHJvcGVydHlDb3VudGVyPFNldD46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q3Vy
c29yLCBBcHBseVByb3BlcnR5Q3Vyc29yOjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURpcmVjdGlvbjwm
UmVuZGVyU3R5bGU6OmRpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjpzZXREaXJlY3Rpb24sIFJlbmRl
clN0eWxlOjppbml0aWFsRGlyZWN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXNwbGF5LCBBcHBseVByb3BlcnR5RGlzcGxheTo6Y3Jl
YXRlSGFuZGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBlYzBj
MzljNDlhZGU4M2RkMmRiYzkxYmEyOTJhZjQxMGI1MjlmYmMzLi4xZTJjNjUzMTZlZGVjMjkzOTRh
ODQ0YWY4ZjRlNGVhMjNiY2Y1NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC00MjcxLDYgKzQyNzEsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHko
Q1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlD
b2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudDoKICAgICBjYXNlIENT
U1Byb3BlcnR5Q291bnRlclJlc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVyU2V0Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlv
bjoKICAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q291bnRlck5vZGUuY3BwCmluZGV4IDA5ZjAxNzVlNTgzZmMyZTA5OTk3ZDQ4YTAwOGRkMDU1NzY1
Zjc5ZDkuLjU5YzU5MGU3NDhlZTk4NjNjMWUwMTc0ZTUwMzEyZjViNDk3ZGQ5MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcApAQCAtMjgsOCArMjgsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvdW50ZXJOb2RlOjpDb3VudGVyTm9kZShSZW5kZXJPYmpl
Y3QqIG8sIGJvb2wgaGFzUmVzZXRUeXBlLCBpbnQgdmFsdWUpCitDb3VudGVyTm9kZTo6Q291bnRl
ck5vZGUoUmVuZGVyT2JqZWN0KiBvLCBib29sIGhhc1NldFR5cGUsIGJvb2wgaGFzUmVzZXRUeXBl
LCBpbnQgdmFsdWUpCiAgICAgOiBtX2hhc1Jlc2V0VHlwZShoYXNSZXNldFR5cGUpCisgICAgLCBt
X2hhc1NldFR5cGUoaGFzU2V0VHlwZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBtX2Nv
dW50SW5QYXJlbnQoMCkKICAgICAsIG1fb3duZXIobykKQEAgLTkwLDkgKzkxLDkgQEAgQ291bnRl
ck5vZGU6On5Db3VudGVyTm9kZSgpCiAgICAgcmVzZXRSZW5kZXJlcnMoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxDb3VudGVyTm9kZT4gQ291bnRlck5vZGU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIG93bmVy
LCBib29sIGhhc1Jlc2V0VHlwZSwgaW50IHZhbHVlKQorUGFzc1JlZlB0cjxDb3VudGVyTm9kZT4g
Q291bnRlck5vZGU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIG93bmVyLCBib29sIGhhc1NldFR5cGUs
IGJvb2wgaGFzUmVzZXRUeXBlLCBpbnQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb3VudGVyTm9kZShvd25lciwgaGFzUmVzZXRUeXBlLCB2YWx1ZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ291bnRlck5vZGUob3duZXIsIGhhc1NldFR5cGUsIGhhc1Jlc2V0VHlwZSwg
dmFsdWUpKTsKIH0KIAogQ291bnRlck5vZGUqIENvdW50ZXJOb2RlOjpuZXh0SW5QcmVPcmRlckFm
dGVyQ2hpbGRyZW4oY29uc3QgQ291bnRlck5vZGUqIHN0YXlXaXRoaW4pIGNvbnN0CkBAIC0xNDQs
NyArMTQ1LDkgQEAgQ291bnRlck5vZGUqIENvdW50ZXJOb2RlOjpwcmV2aW91c0luUHJlT3JkZXIo
KSBjb25zdAogCiBpbnQgQ291bnRlck5vZGU6OmNvbXB1dGVDb3VudEluUGFyZW50KCkgY29uc3QK
IHsKLSAgICBpbnQgaW5jcmVtZW50ID0gYWN0c0FzUmVzZXQoKSA/IDAgOiBtX3ZhbHVlOworICAg
IGlmIChoYXNTZXRUeXBlKCkpCisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIGludCBpbmNy
ZW1lbnQgPSBhY3RzQXNSZXNldCgpPyAwIDogbV92YWx1ZTsKICAgICBpZiAobV9wcmV2aW91c1Np
YmxpbmcpCiAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzU2libGluZy0+bV9jb3VudEluUGFyZW50
ICsgaW5jcmVtZW50OwogICAgIEFTU0VSVChtX3BhcmVudC0+bV9maXJzdENoaWxkID09IHRoaXMp
OwpAQCAtMzYzLDcgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBD
b3VudGVyTm9kZSogbm9kZSkKICAgICAgICAgZm9yIChjb25zdCBDb3VudGVyTm9kZSogcGFyZW50
ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVudCAhPSByb290OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudCgpKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgIik7CiAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiJXAgJXM6ICVkICVkIFA6JXAgUFM6JXAgTlM6JXAgUjolcFxuIiwKLSAg
ICAgICAgICAgIGN1cnJlbnQsIGN1cnJlbnQtPmFjdHNBc1Jlc2V0KCkgPyAicmVzZXRfX19fIiA6
ICJpbmNyZW1lbnQiLCBjdXJyZW50LT52YWx1ZSgpLAorICAgICAgICAgICAgY3VycmVudCwgY3Vy
cmVudC0+YWN0c0FzUmVzZXQoKSA/ICJyZXNldF9fX18iIDogKGN1cnJlbnQtPmhhc1NldFR5cGUo
KSA/ICJzZXRfX19fX18iIDogImluY3JlbWVudCIpLCBjdXJyZW50LT52YWx1ZSgpLAogICAgICAg
ICAgICAgY3VycmVudC0+Y291bnRJblBhcmVudCgpLCBjdXJyZW50LT5wYXJlbnQoKSwgY3VycmVu
dC0+cHJldmlvdXNTaWJsaW5nKCksCiAgICAgICAgICAgICBjdXJyZW50LT5uZXh0U2libGluZygp
LCBjdXJyZW50LT5vd25lcigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ291bnRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVy
Tm9kZS5oCmluZGV4IDdkNmRlZjgxYmRiN2I3YTM2YTk3YzBjYjBjM2JlOTFlNTE5YjJkZDguLjk2
NzZkNzczOGI5YzNhZTlmZTAzNzUxMTRjMmU0ZGYxYTNmODM0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Db3VudGVyTm9kZS5oCkBAIC00MiwxMCArNDIsMTEgQEAgY2xhc3MgUmVuZGVyQ291
bnRlcjsKIAogY2xhc3MgQ291bnRlck5vZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDb3VudGVyTm9k
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvdW50ZXJOb2RlPiBjcmVhdGUo
UmVuZGVyT2JqZWN0KiwgYm9vbCBpc1Jlc2V0LCBpbnQgdmFsdWUpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvdW50ZXJOb2RlPiBjcmVhdGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBpc1NldCwgYm9v
bCBpc1Jlc2V0LCBpbnQgdmFsdWUpOwogICAgIH5Db3VudGVyTm9kZSgpOwogICAgIGJvb2wgYWN0
c0FzUmVzZXQoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jlc2V0VHlwZSB8fCAhbV9wYXJlbnQ7IH0K
ICAgICBib29sIGhhc1Jlc2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVzZXRUeXBlOyB9
CisgICAgYm9vbCBoYXNTZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTZXRUeXBlOyB9CiAg
ICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIGludCBjb3VudElu
UGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudEluUGFyZW50OyB9CiAgICAgUmVuZGVyT2Jq
ZWN0KiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KQEAgLTcxLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2hpbGQoQ291bnRlck5vZGUqKTsKIAogcHJpdmF0ZToK
LSAgICBDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqLCBib29sIGlzUmVzZXQsIGludCB2YWx1ZSk7
CisgICAgQ291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBpc1NldCwgYm9vbCBpc1Jlc2V0
LCBpbnQgdmFsdWUpOwogICAgIGludCBjb21wdXRlQ291bnRJblBhcmVudCgpIGNvbnN0OwogICAg
IC8vIEludmFsaWRhdGVzIHRoZSB0ZXh0IGluIHRoZSByZW5kZXJlciBvZiB0aGlzIGNvdW50ZXIs
IGlmIGFueSwKICAgICAvLyBhbmQgaW4gdGhlIHJlbmRlcmVycyBvZiBhbGwgZGVzY2VuZGFudHMg
b2YgdGhpcyBjb3VudGVyLCBpZiBhbnkuCkBAIC03OSw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWNvdW50KCk7CiAKICAgICBib29sIG1faGFzUmVzZXRUeXBlOworICAgIGJvb2wgbV9o
YXNTZXRUeXBlOwogICAgIGludCBtX3ZhbHVlOwogICAgIGludCBtX2NvdW50SW5QYXJlbnQ7CiAg
ICAgUmVuZGVyT2JqZWN0KiBtX293bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCmluZGV4IGUzNDk2YjEzNjU2MmExYTFjN2IwMmVlMTdiN2MxMGM0NGIxYTRj
MTMuLjVkMTU2OGQxY2YyYjA4NmFjYjZhYjEyMjMxNWRmOGQzZmM0NTlkNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBu
ZXh0c2libGluZzoKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wmIGlzUmVz
ZXQsIGludCYgdmFsdWUpCitzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1NldCwgYm9vbCYg
aXNSZXNldCwgaW50JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKIApAQCAtMjQ2LDYg
KzI0Niw3IEBAIHN0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvCiAgICAgaWYgKGRpcmVjdGl2ZXMuaXNE
ZWZpbmVkKCkpIHsKICAgICAgICAgdmFsdWUgPSBkaXJlY3RpdmVzLmNvbWJpbmVkVmFsdWUoKTsK
ICAgICAgICAgaXNSZXNldCA9IGRpcmVjdGl2ZXMuaXNSZXNldCgpOworICAgICAgICBpc1NldCA9
IGRpcmVjdGl2ZXMuaXNTZXQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC00
MTgsMTMgKzQxOSwxNCBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZAogICAgIH0KIAogICAgIGJv
b2wgaXNSZXNldCA9IGZhbHNlOworICAgIGJvb2wgaXNTZXQgPSBmYWxzZTsKICAgICBpbnQgdmFs
dWUgPSAwOwotICAgIGlmICghcGxhbkNvdW50ZXIob2JqZWN0LCBpZGVudGlmaWVyLCBpc1Jlc2V0
LCB2YWx1ZSkgJiYgIWFsd2F5c0NyZWF0ZUNvdW50ZXIpCisgICAgaWYgKCFwbGFuQ291bnRlcihv
YmplY3QsIGlkZW50aWZpZXIsIGlzU2V0LCBpc1Jlc2V0LCB2YWx1ZSkgJiYgIWFsd2F5c0NyZWF0
ZUNvdW50ZXIpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPENvdW50ZXJOb2RlPiBu
ZXdQYXJlbnQgPSAwOwogICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3UHJldmlvdXNTaWJsaW5n
ID0gMDsKLSAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld05vZGUgPSBDb3VudGVyTm9kZTo6Y3Jl
YXRlKG9iamVjdCwgaXNSZXNldCwgdmFsdWUpOworICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3
Tm9kZSA9IENvdW50ZXJOb2RlOjpjcmVhdGUob2JqZWN0LCBpc1NldCwgaXNSZXNldCwgdmFsdWUp
OwogICAgIGlmIChmaW5kUGxhY2VGb3JDb3VudGVyKG9iamVjdCwgaWRlbnRpZmllciwgaXNSZXNl
dCwgbmV3UGFyZW50LCBuZXdQcmV2aW91c1NpYmxpbmcpKQogICAgICAgICBuZXdQYXJlbnQtPmlu
c2VydEFmdGVyKG5ld05vZGUuZ2V0KCksIG5ld1ByZXZpb3VzU2libGluZy5nZXQoKSwgaWRlbnRp
Zmllcik7CiAgICAgQ291bnRlck1hcCogbm9kZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCmluZGV4IDA2ZDQ0ZGRmNmYz
ZjZlMGI5MTgxMjczMmU0OTExMzg1MDdmYWM4ZjYuLjBkYTYzYzc4MDNiM2RjYTA3YTVkZDFmZWNl
NGNjN2FiNDIyNGExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcApAQCAtMzAsNyArMzAsOSBAQCBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBi
KQogICAgIHJldHVybiBhLmlzSW5jcmVtZW50KCkgPT0gYi5pc0luY3JlbWVudCgpCiAgICAgICAm
JiBhLmluY3JlbWVudFZhbHVlKCkgPT0gYi5pbmNyZW1lbnRWYWx1ZSgpCiAgICAgICAmJiBhLmlz
UmVzZXQoKSA9PSBiLmlzUmVzZXQoKQotICAgICAgJiYgYS5yZXNldFZhbHVlKCkgPT0gYi5yZXNl
dFZhbHVlKCk7CisgICAgICAmJiBhLnJlc2V0VmFsdWUoKSA9PSBiLnJlc2V0VmFsdWUoKQorICAg
ICAgJiYgYS5pc1NldCgpID09IGIuaXNTZXQoKQorICAgICAgJiYgYS5zZXRWYWx1ZSgpID09IGIu
c2V0VmFsdWUoKTsKIH0KIAogUGFzc093blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShj
b25zdCBDb3VudGVyRGlyZWN0aXZlTWFwJiBjb3VudGVyRGlyZWN0aXZlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKaW5kZXggY2Y3
OTNiYjhmMDkzNWM1NDQ3ZDg3NGQ0YTM1ZWZhMGI5OGU3ZjAzOC4uNGMyN2ExMWZjZjQxNDBiMjFh
MWVhNWMyNjA0Njk4OTNmNTAyNjE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKQEAgLTM3LDggKzM3LDEwIEBAIGNsYXNzIENv
dW50ZXJEaXJlY3RpdmVzIHsKIHB1YmxpYzoKICAgICBDb3VudGVyRGlyZWN0aXZlcygpCiAgICAg
ICAgIDogbV9pc1Jlc2V0U2V0KGZhbHNlKQorICAgICAgICAsIG1faXNTZXRTZXQoZmFsc2UpCiAg
ICAgICAgICwgbV9pc0luY3JlbWVudFNldChmYWxzZSkKICAgICAgICAgLCBtX3Jlc2V0VmFsdWUo
MCkKKyAgICAgICAgLCBtX3NldFZhbHVlKDApCiAgICAgICAgICwgbV9pbmNyZW1lbnRWYWx1ZSgw
KQogICAgIHsKICAgICB9CkBAIC02Myw3ICs2NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVz
ZXRWYWx1ZSA9IHBhcmVudC5tX3Jlc2V0VmFsdWU7CiAgICAgICAgIG1faXNSZXNldFNldCA9IHBh
cmVudC5tX2lzUmVzZXRTZXQ7CiAgICAgfQotCisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTZXRTZXQ7IH0KKyAgICBpbnQgc2V0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Nl
dFZhbHVlOyB9CisgICAgdm9pZCBzZXRTZXRWYWx1ZShpbnQgdmFsdWUpCisgICAgeworICAgICAg
ICBtX3NldFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1faXNTZXRTZXQgPSB0cnVlOworICAgIH0K
KyAgICB2b2lkIGNsZWFyU2V0KCkKKyAgICB7CisgICAgICAgIG1fc2V0VmFsdWUgPSAwOworICAg
ICAgICBtX2lzU2V0U2V0ID0gZmFsc2U7CisgICAgfQorICAgIHZvaWQgaW5oZXJpdFNldChDb3Vu
dGVyRGlyZWN0aXZlcyYgcGFyZW50KQorICAgIHsKKyAgICAgICAgbV9zZXRWYWx1ZSA9IHBhcmVu
dC5tX3NldFZhbHVlOworICAgICAgICBtX2lzU2V0U2V0ID0gcGFyZW50Lm1faXNTZXRTZXQ7Cisg
ICAgfQogICAgIGJvb2wgaXNJbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5jcmVtZW50
U2V0OyB9CiAgICAgaW50IGluY3JlbWVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmNyZW1l
bnRWYWx1ZTsgfQogICAgIHZvaWQgYWRkSW5jcmVtZW50VmFsdWUoaW50IHZhbHVlKQpAQCAtODIs
MjAgKzEwMCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIG1faXNJbmNyZW1lbnRTZXQgPSBwYXJlbnQu
bV9pc0luY3JlbWVudFNldDsKICAgICB9CiAKLSAgICBib29sIGlzRGVmaW5lZCgpIGNvbnN0IHsg
cmV0dXJuIGlzUmVzZXQoKSB8fCBpc0luY3JlbWVudCgpOyB9CisgICAgYm9vbCBpc0RlZmluZWQo
KSBjb25zdCB7IHJldHVybiBpc1Jlc2V0KCkgfHwgaXNJbmNyZW1lbnQoKSB8fCBpc1NldCgpOyB9
CiAKICAgICBpbnQgY29tYmluZWRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
bV9pc1Jlc2V0U2V0IHx8ICFtX3Jlc2V0VmFsdWUpOwogICAgICAgICBBU1NFUlQobV9pc0luY3Jl
bWVudFNldCB8fCAhbV9pbmNyZW1lbnRWYWx1ZSk7CisgICAgICAgIEFTU0VSVChtX2lzU2V0U2V0
IHx8ICFtX2lzU2V0U2V0KTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCBhbGxvdyBvdmVy
ZmxvdyBoZXJlLgotICAgICAgICByZXR1cm4gbV9yZXNldFZhbHVlICsgbV9pbmNyZW1lbnRWYWx1
ZTsKKyAgICAgICAgcmV0dXJuIG1fc2V0VmFsdWUgKyBtX3Jlc2V0VmFsdWUgKyBtX2luY3JlbWVu
dFZhbHVlOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1faXNSZXNldFNldDsKKyAgICBi
b29sIG1faXNTZXRTZXQ7CiAgICAgYm9vbCBtX2lzSW5jcmVtZW50U2V0OwogICAgIGludCBtX3Jl
c2V0VmFsdWU7CisgICAgaW50IG1fc2V0VmFsdWU7CiAgICAgaW50IG1faW5jcmVtZW50VmFsdWU7
CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZDk3OTM0MmNlNDhjZDM2OTRiMWQ5NzhjMWZiMDg0ZDU0NmY5NDU1Ni4u
MDY0NzUxZjVlZDMyNTIwMmZhYmI4YjRjNzA3M2NhZTQyOTAxOWY4MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTA5LTI0ICBBbmRyZWkgT25lYSAgPG9uZWFAYWRvYmUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBjb3VudGVyLXNldCBwcm9wZXJ0eSBmcm9tIENTUzMgbGlzdHMgc3BlYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0
IGZvciBjb3VudGVyLXNldCBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJz
L2NvdW50ZXItc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291
bnRlcnMvY291bnRlci1zZXQuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMjQgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVbnNr
aXAgcHJvcGVyIHNoYWRvdyBkb20gdGVzdCBjYXNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXNldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUy
Mzk2ZGUwOWQ4MmNjODBjYjQxYjc1Mzg1YmU0MzRkOTc1ODc0MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItc2V0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDUgQEAKK1RoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBiZSB0aGUgc2Ft
ZToKKworICAKKzEgLTMgLTIKKzEgLTMgLTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL2NvdW50ZXItc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3Vu
dGVycy9jb3VudGVyLXNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2NjI5OTRiMDAzNjk2YmQxMjcwZDlj
ZmI2YjBiNDg0NDQwMjY5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jb3VudGVycy9jb3VudGVyLXNldC5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzxodG1sPgorPGhl
YWQ+CisgIDxzdHlsZT4KKyAgICAuc2V0IHsgY291bnRlci1zZXQ6IGl0ZW0gLTQgfQorICAgIC5p
bmNyIHsgY291bnRlci1pbmNyZW1lbnQ6IGl0ZW0gMSB9CisgICAgLmluY3I6OmJlZm9yZSB7IGNv
bnRlbnQ6IGNvdW50ZXIoaXRlbSkgfQorICA8L3N0eWxlPgorIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsgICAKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgfQorIGZ1
bmN0aW9uIHJ1bigpIHsKKyAgICAgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIik7CisgICAgIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3QiKTsKKyAgICAgc3Bhbkxpc3QgPSB0ZXN0RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
c3BhbiIpOworICAgICBmb3IgKGkgPSAwOyBpIDwgc3Bhbkxpc3QubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgbmV3U3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgICAgIG5ld1NwYW5FbGVtZW50LmlubmVyVGV4dCA9IHdpbmRvdy5pbnRlcm5hbHMuY291bnRl
clZhbHVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYW5MaXN0Lml0ZW0oaSkuZ2V0QXR0cmli
dXRlKCJpZCIpKSkgKyAiICI7CisgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobmV3U3BhbkVs
ZW1lbnQpOyAKKyAgICAgfQorICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworIH0KKyAKKyA8L3NjcmlwdD4gIAorPC9oZWFkPgorPGJv
ZHkgIG9ubG9hZD0icnVuKCk7Ij4KKyAgPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxk
IGJlIHRoZSBzYW1lOjwvcD4KKyAgCisgIDxkaXYgaWQ9InRlc3QiPgorICA8c3BhbiBpZD0ic3Bh
bjEiIGNsYXNzPSJpbmNyIj4KKyAgICAgIDxzcGFuIGlkPSJzcGFuMiIgY2xhc3M9InNldCBpbmNy
Ij48L3NwYW4+CisgIDwvc3Bhbj4KKyAgPHNwYW4gaWQ9InNwYW4zIiBjbGFzcz0iaW5jciI+PC9z
cGFuPgorICA8L2Rpdj4KKyAgPGRpdiBpZD0icmVmZXJlbmNlIj4xIC0zIC0yPC9kaXY+CisgIDxo
cj4KKyAgPGRpdiBpZD0iY29uc29sZSIvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165563</attachid>
            <date>2012-09-25 02:34:38 -0700</date>
            <delta_ts>2012-09-25 09:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97337-20120925123357.patch</filename>
            <type>text/plain</type>
            <size>23065</size>
            <attacher name="Andrei Onea">andreionea3000</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyZjkyYTMxYWQ5Y2I4
NzVhNWY5NWNlM2UwNDI4YzFiMTlmOWYxZC4uZDRlZmUxOWZhZTM0MzYzYWEyZjQwYTQzOTJiMjM0
MjgyYTlmZDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA5LTI0ICBBbmRy
ZWkgT25lYSAgPG9uZWFAYWRvYmUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBjb3VudGVyLXNl
dCBwcm9wZXJ0eSBmcm9tIENTUzMgbGlzdHMgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3IgY291bnRlci1zZXQgcHJv
cGVydHkuIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtbGlzdHMvI2NvdW50ZXItc2V0CisK
KyAgICAgICAgVGVzdDogZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1zZXQuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01DU1MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TUNTUy5tbToKKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiBjb3VudGVyU2V0XSk6
CisgICAgICAgICgtW0RPTUNTU1N0eWxlRGVjbGFyYXRpb24gc2V0Q291bnRlclNldDpdKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvdW50ZXJUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgor
ICAgICAgICBBbHNvIHBhcnNlIHRoZSBjb3VudGVyLXNldCBwcm9wZXJ0eS4KKyAgICAgICAgKiBj
c3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzSW5o
ZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAg
ICAgICBBZGQgdGhlIGNvdW50ZXItc2V0IHByb3BlcnR5LgorICAgICAgICAqIGNzcy9TdHlsZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVy
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9Db3VudGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6
Q291bnRlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlck5vZGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6Y29tcHV0ZUNvdW50SW5QYXJlbnQpOgorICAg
ICAgICBXaGVuZXZlciBjb21wdXRpbmcgdGhlIHZhbHVlLCBzdG9wIGF0IGEgQ291bnRlck5vZGUg
dGhhdCBpcyBmcm9tIGNvdW50ZXItc2V0LgorICAgICAgICAoV2ViQ29yZTo6c2hvd1RyZWVBbmRN
YXJrKToKKyAgICAgICAgTWFrZSBzaG93Q291bnRlclRyZWUgYWxzbyBkaXNwbGF5IENvdW50ZXJO
b2RlJ3MgdGhhdCBhcmUgZnJvbSBjb3VudGVyLXNldC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ291
bnRlck5vZGUuaDoKKyAgICAgICAgKENvdW50ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXJOb2RlOjpoYXNTZXRUeXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlQ291bnRlck5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGly
ZWN0aXZlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXJEaXJlY3RpdmVzOjpDb3VudGVyRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyRGlyZWN0aXZlczo6aXNTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVj
dGl2ZXM6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjpz
ZXRTZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6Y2xlYXJT
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmluaGVyaXRTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmlzRGVmaW5lZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6Y29tYmluZWRWYWx1ZSk6CisgICAgICAgIChD
b3VudGVyRGlyZWN0aXZlcyk6CisKIDIwMTItMDktMjAgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWxhdGl2ZSBVUkwg
TGluayBUb29sdGlwcyBkbyBub3QgcmVzcGVjdCA8YmFzZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNTUy5oCmluZGV4IGRhYWE4YTBmYjk1NTJkYTE5Y2RlMDc1YTc5N2U2Y2UyNGZiMjM4
YTMuLjczN2FjMTcyYWE4YWYyNzA2MTQ3N2FjMThlM2RmZjE1ZTdjZDAyYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01DU1MuaApAQCAtMTI1LDYgKzEyNSw4IEBACiAtICh2b2lkKXNl
dENvdW50ZXJJbmNyZW1lbnQ6KE5TU3RyaW5nICopY291bnRlckluY3JlbWVudDsKIC0gKE5TU3Ry
aW5nICopY291bnRlclJlc2V0OwogLSAodm9pZClzZXRDb3VudGVyUmVzZXQ6KE5TU3RyaW5nICop
Y291bnRlclJlc2V0OworLSAoTlNTdHJpbmcgKiljb3VudGVyU2V0OworLSAodm9pZClzZXRDb3Vu
dGVyU2V0OihOU1N0cmluZyAqKWNvdW50ZXJTZXQ7CiAtIChOU1N0cmluZyAqKWN1ZTsKIC0gKHZv
aWQpc2V0Q3VlOihOU1N0cmluZyAqKWN1ZTsKIC0gKE5TU3RyaW5nICopY3VlQWZ0ZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNTUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCmluZGV4IDFhZGFiZmYyMjNiMGY5NDhhMDE3
YmY5MzMwZTExZDAyYjUwNDQwOWIuLmYzMjI3MGJhZmYxZTNkMmNhYjRkMTk4MTMwNDYxY2RkMTM3
OTVjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCkBAIC01MTEsNiAr
NTExLDE2IEBAIENsYXNzIGtpdENsYXNzKFdlYkNvcmU6OkNTU1ZhbHVlKiBpbXBsKQogICAgIFtz
ZWxmIHNldFByb3BlcnR5OkAiY291bnRlci1yZXNldCIgdmFsdWU6Y291bnRlclJlc2V0IHByaW9y
aXR5OkAiIl07CiB9CiAKKy0gKE5TU3RyaW5nICopY291bnRlclNldAoreworICAgIHJldHVybiBb
c2VsZiBnZXRQcm9wZXJ0eVZhbHVlOkAiY291bnRlci1zZXQiXTsKK30KKworLSAodm9pZClzZXRD
b3VudGVyU2V0OihOU1N0cmluZyAqKWNvdW50ZXJTZXQKK3sKKyAgICBbc2VsZiBzZXRQcm9wZXJ0
eTpAImNvdW50ZXItc2V0IiB2YWx1ZTpjb3VudGVyU2V0IHByaW9yaXR5OkAiIl07Cit9CisKIC0g
KE5TU3RyaW5nICopY3VlCiB7CiAgICAgcmV0dXJuIFtzZWxmIGdldFByb3BlcnR5VmFsdWU6QCJj
dWUiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggZDEwZDczOGEzMDlmOTFhOWFjODY0MzMzZTc4NTE4ZGU5YzYxNTRmOS4u
YWQxMjliNjkzNmY0M2Y5MjQxMGIyNWQ4MGM2ZmNiYTczNWNmZjUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEzMDEs
NyArMTMwMSwyMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFs
dWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcm9wZQogICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAg
Zm9yIChDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4o
KTsgaXQgIT0gbWFwLT5lbmQoKTsgKytpdCkgewogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sKCkuY3JlYXRlVmFsdWUoaXQtPmZpcnN0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORykpOwotICAgICAgICBzaG9ydCBudW1iZXIgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
Q291bnRlckluY3JlbWVudCA/IGl0LT5zZWNvbmQuaW5jcmVtZW50VmFsdWUoKSA6IGl0LT5zZWNv
bmQucmVzZXRWYWx1ZSgpOworICAgICAgICBzaG9ydCBudW1iZXI7CisgICAgICAgIHN3aXRjaCAo
cHJvcGVydHlJRCkgeworICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudDoK
KyAgICAgICAgICAgIG51bWJlciA9IGl0LT5zZWNvbmQuaW5jcmVtZW50VmFsdWUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0OgorICAg
ICAgICAgICAgbnVtYmVyID0gaXQtPnNlY29uZC5yZXNldFZhbHVlKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJTZXQ6CisgICAgICAgICAgICBu
dW1iZXIgPSBpdC0+c2Vjb25kLnNldFZhbHVlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgbnVtYmVyID0gMDsKKyAgICAgICAgfQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sKCkuY3JlYXRlVmFsdWUoKGRvdWJsZSludW1iZXIsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKSk7CiAgICAgfQogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKQEAgLTI0MTcsNiAr
MjQzMSw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gY291
bnRlclRvQ1NTVmFsdWUoc3R5bGUuZ2V0KCksIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Q291bnRlclJlc2V0OgogICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXJUb0NTU1Zh
bHVlKHN0eWxlLmdldCgpLCBwcm9wZXJ0eUlEKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
dW50ZXJTZXQ6CisgICAgICAgICAgICByZXR1cm4gY291bnRlclRvQ1NTVmFsdWUoc3R5bGUuZ2V0
KCksIHByb3BlcnR5SUQpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6
CiAgICAgICAgICAgICBpZiAoQ2xpcFBhdGhPcGVyYXRpb24qIG9wZXJhdGlvbiA9IHN0eWxlLT5j
bGlwUGF0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9u
VHlwZSgpID09IENsaXBQYXRoT3BlcmF0aW9uOjpTSEFQRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggOWE5MjJmMTkxMjdmOTY5OTYyNmIwY2YzM2IzODMzY2YyNmQzMGY4NC4uNTExZjZh
YTVkODFiNTNkMDM5ODlmNGRiYmY1Y2I1ZGFhYzUwMDcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTIxNzAsNiArMjE3MCwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4g
cGFyc2VDb3VudGVyKHByb3BJZCwgMCwgaW1wb3J0YW50KTsKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclNl
dDogLy8gWyA8aWRlbnRpZmllcj4gPGludGVnZXI+PyBdKyB8IG5vbmUgfCBpbmhlcml0CisgICAg
ICAgIGlmIChpZCAhPSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VDb3Vu
dGVyKHByb3BJZCwgMSwgaW1wb3J0YW50KTsKKyAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKICAgICAg
ICAgLy8gW1sgPGZhbWlseS1uYW1lPiB8IDxnZW5lcmljLWZhbWlseT4gXSxdKiBbPGZhbWlseS1u
YW1lPiB8IDxnZW5lcmljLWZhbWlseT5dIHwgaW5oZXJpdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHkuY3BwCmluZGV4IGI1YTlkM2Y0ZjNhM2M4MjE1NjQxODkxZTY4ODk1MmEzMzMyNGI4
OTIuLjZhNmU3ZjU5OWM0YTA2ZGYyYWZhZmJmZjVjYzA2MGI3NTY0MGRiNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtNDU2LDYgKzQ1Niw3IEBAIGJvb2wgQ1NTUHJvcGVydHk6
OmlzSW5oZXJpdGVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb250ZW50OgogICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNvdW50ZXJTZXQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgogICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250U3RyZXRjaDoKICAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCBiZGQ4NDg4MTExYzM4ZTQ4ODVkY2M5OTRm
YTI2ODMxMDRhZWE0NmYzLi45NjliYTNhMDAzMmM2MTZjMjNlY2MxOTc0ZDUyY2UzNDk4YzJkNTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtOTksNiArOTksNyBA
QCBjbGlwCiBjb250ZW50CiBjb3VudGVyLWluY3JlbWVudAogY291bnRlci1yZXNldAorY291bnRl
ci1zZXQKIGN1cnNvcgogZW1wdHktY2VsbHMKIGZsb2F0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXIuY3BwCmluZGV4IDA5YzI3YjcxNzlmYzI0MjQzNGQ1YjQ2MGZkYzhmYzdiYmE0MTk3ZGEuLjdl
MDY5ZDA3YzY4YjZjZmIxNjU5MWQ1ODgzNDU1YmY3OGYwNTViNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXIuY3BwCkBAIC05OTksNyArOTk5LDcgQEAgcHVibGljOgogICAgIH0KIH07CiAK
LWVudW0gQ291bnRlckJlaGF2aW9yIHtJbmNyZW1lbnQgPSAwLCBSZXNldH07CitlbnVtIENvdW50
ZXJCZWhhdmlvciB7SW5jcmVtZW50ID0gMCwgUmVzZXQsIFNldH07CiB0ZW1wbGF0ZSA8Q291bnRl
ckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KIGNsYXNzIEFwcGx5UHJvcGVydHlDb3VudGVyIHsK
IHB1YmxpYzoKQEAgLTEwMTMsMTAgKzEwMTMsMTggQEAgcHVibGljOgogICAgICAgICBJdGVyYXRv
ciBlbmQgPSBwYXJlbnRNYXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBwYXJl
bnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBDb3VudGVyRGly
ZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0aXZl
cygpKS5pdGVyYXRvci0+c2Vjb25kOwotICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9
PSBSZXNldCkgeworICAgICAgICAgICAgc3dpdGNoIChjb3VudGVyQmVoYXZpb3IpIHsKKyAgICAg
ICAgICAgIGNhc2UgUmVzZXQ6CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5pbmhlcml0UmVz
ZXQoaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBJbmNyZW1lbnQ6CiAgICAgICAgICAgICAgICAgZGlyZWN0
aXZlcy5pbmhlcml0SW5jcmVtZW50KGl0LT5zZWNvbmQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTZXQ6CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5pbmhl
cml0U2V0KGl0LT5zZWNvbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTEwMzIsMTAgKzEwNDAsMTkgQEAgcHVibGljOgog
CiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICAgICAgZm9yIChJdGVyYXRv
ciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpZiAoY291
bnRlckJlaGF2aW9yID09IFJlc2V0KQorICAgICAgICAgICAgc3dpdGNoIChjb3VudGVyQmVoYXZp
b3IpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzZXQ6CiAgICAgICAgICAgICAgICAgaXQtPnNlY29u
ZC5jbGVhclJlc2V0KCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEluY3JlbWVudDoKICAgICAgICAgICAgICAgICBpdC0+c2Vjb25k
LmNsZWFySW5jcmVtZW50KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIFNldDoKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLmNsZWFyU2V0KCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQogCiAgICAgICAgIGludCBsZW5ndGgg
PSBsaXN0ID8gbGlzdC0+bGVuZ3RoKCkgOiAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CkBAIC0xMDUwLDEwICsxMDY3LDE5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIGludCB2
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpLT5n
ZXRJbnRWYWx1ZSgpOwogICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMg
PSBtYXAuYWRkKGlkZW50aWZpZXIsIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNv
bmQ7Ci0gICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGNvdW50ZXJCZWhhdmlvcikgeworICAgICAgICAgICAgY2FzZSBSZXNldDoK
ICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLnNldFJlc2V0VmFsdWUodmFsdWUpOwotICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
SW5jcmVtZW50OgogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMuYWRkSW5jcmVtZW50VmFsdWUo
dmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTZXQ6Cisg
ICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5zZXRTZXRWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMTg0Niw2ICsxODcyLDcgQEAgU3R5bGVCdWlsZGVyOjpTdHls
ZUJ1aWxkZXIoKQogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNvbG9yLCBBcHBs
eVByb3BlcnR5Q29sb3I8SW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZS
ZW5kZXJTdHlsZTo6c2V0Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2xvciwg
JlJlbmRlclN0eWxlOjppbnZhbGlkQ29sb3IsIFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3I+Ojpj
cmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNvdW50
ZXJJbmNyZW1lbnQsIEFwcGx5UHJvcGVydHlDb3VudGVyPEluY3JlbWVudD46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q291bnRlclJlc2V0LCBB
cHBseVByb3BlcnR5Q291bnRlcjxSZXNldD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q291bnRlclNldCwgQXBwbHlQcm9wZXJ0eUNvdW50ZXI8
U2V0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlDdXJzb3IsIEFwcGx5UHJvcGVydHlDdXJzb3I6OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBBcHBseVByb3BlcnR5RGlyZWN0
aW9uPCZSZW5kZXJTdHlsZTo6ZGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldERpcmVjdGlvbiwg
UmVuZGVyU3R5bGU6OmluaXRpYWxEaXJlY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eURpc3BsYXksIEFwcGx5UHJvcGVydHlEaXNwbGF5
OjpjcmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4
IDZhZTM1YWNmOGMzM2NjODI4MGUyZGUzMTMwZDI4YjlhOTRlMjU2MDQuLjFmMWM2Yzc1ZGRiZThh
MGQwOTE2MGJlZDBhNjYyZWVjZjJkZjgyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTQyNjcsNiArNDI2Nyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbG9yOgogICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgogICAgIGNh
c2UgQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJT
ZXQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5RGly
ZWN0aW9uOgogICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Db3VudGVyTm9kZS5jcHAKaW5kZXggMDlmMDE3NWU1ODNmYzJlMDk5OTdkNDhhMDA4ZGQw
NTU3NjVmNzlkOS4uNTljNTkwZTc0OGVlOTg2M2MxZTAxNzRlNTAzMTJmNWI0OTdkZDkwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCkBAIC0yOCw4ICsyOCw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ291bnRlck5vZGU6OkNvdW50ZXJOb2RlKFJlbmRl
ck9iamVjdCogbywgYm9vbCBoYXNSZXNldFR5cGUsIGludCB2YWx1ZSkKK0NvdW50ZXJOb2RlOjpD
b3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG8sIGJvb2wgaGFzU2V0VHlwZSwgYm9vbCBoYXNSZXNl
dFR5cGUsIGludCB2YWx1ZSkKICAgICA6IG1faGFzUmVzZXRUeXBlKGhhc1Jlc2V0VHlwZSkKKyAg
ICAsIG1faGFzU2V0VHlwZShoYXNTZXRUeXBlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAs
IG1fY291bnRJblBhcmVudCgwKQogICAgICwgbV9vd25lcihvKQpAQCAtOTAsOSArOTEsOSBAQCBD
b3VudGVyTm9kZTo6fkNvdW50ZXJOb2RlKCkKICAgICByZXNldFJlbmRlcmVycygpOwogfQogCi1Q
YXNzUmVmUHRyPENvdW50ZXJOb2RlPiBDb3VudGVyTm9kZTo6Y3JlYXRlKFJlbmRlck9iamVjdCog
b3duZXIsIGJvb2wgaGFzUmVzZXRUeXBlLCBpbnQgdmFsdWUpCitQYXNzUmVmUHRyPENvdW50ZXJO
b2RlPiBDb3VudGVyTm9kZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogb3duZXIsIGJvb2wgaGFzU2V0
VHlwZSwgYm9vbCBoYXNSZXNldFR5cGUsIGludCB2YWx1ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENvdW50ZXJOb2RlKG93bmVyLCBoYXNSZXNldFR5cGUsIHZhbHVlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDb3VudGVyTm9kZShvd25lciwgaGFzU2V0VHlwZSwgaGFzUmVzZXRU
eXBlLCB2YWx1ZSkpOwogfQogCiBDb3VudGVyTm9kZSogQ291bnRlck5vZGU6Om5leHRJblByZU9y
ZGVyQWZ0ZXJDaGlsZHJlbihjb25zdCBDb3VudGVyTm9kZSogc3RheVdpdGhpbikgY29uc3QKQEAg
LTE0NCw3ICsxNDUsOSBAQCBDb3VudGVyTm9kZSogQ291bnRlck5vZGU6OnByZXZpb3VzSW5QcmVP
cmRlcigpIGNvbnN0CiAKIGludCBDb3VudGVyTm9kZTo6Y29tcHV0ZUNvdW50SW5QYXJlbnQoKSBj
b25zdAogewotICAgIGludCBpbmNyZW1lbnQgPSBhY3RzQXNSZXNldCgpID8gMCA6IG1fdmFsdWU7
CisgICAgaWYgKGhhc1NldFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgaW50
IGluY3JlbWVudCA9IGFjdHNBc1Jlc2V0KCk/IDAgOiBtX3ZhbHVlOwogICAgIGlmIChtX3ByZXZp
b3VzU2libGluZykKICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXNTaWJsaW5nLT5tX2NvdW50SW5Q
YXJlbnQgKyBpbmNyZW1lbnQ7CiAgICAgQVNTRVJUKG1fcGFyZW50LT5tX2ZpcnN0Q2hpbGQgPT0g
dGhpcyk7CkBAIC0zNjMsNyArMzY2LDcgQEAgc3RhdGljIHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNv
bnN0IENvdW50ZXJOb2RlKiBub2RlKQogICAgICAgICBmb3IgKGNvbnN0IENvdW50ZXJOb2RlKiBw
YXJlbnQgPSBjdXJyZW50OyBwYXJlbnQgJiYgcGFyZW50ICE9IHJvb3Q7IHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAiKTsKICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIlcCAlczogJWQgJWQgUDolcCBQUzolcCBOUzolcCBSOiVwXG4i
LAotICAgICAgICAgICAgY3VycmVudCwgY3VycmVudC0+YWN0c0FzUmVzZXQoKSA/ICJyZXNldF9f
X18iIDogImluY3JlbWVudCIsIGN1cnJlbnQtPnZhbHVlKCksCisgICAgICAgICAgICBjdXJyZW50
LCBjdXJyZW50LT5hY3RzQXNSZXNldCgpID8gInJlc2V0X19fXyIgOiAoY3VycmVudC0+aGFzU2V0
VHlwZSgpID8gInNldF9fX19fXyIgOiAiaW5jcmVtZW50IiksIGN1cnJlbnQtPnZhbHVlKCksCiAg
ICAgICAgICAgICBjdXJyZW50LT5jb3VudEluUGFyZW50KCksIGN1cnJlbnQtPnBhcmVudCgpLCBj
dXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSwKICAgICAgICAgICAgIGN1cnJlbnQtPm5leHRTaWJs
aW5nKCksIGN1cnJlbnQtPm93bmVyKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Nv
dW50ZXJOb2RlLmgKaW5kZXggN2Q2ZGVmODFiZGI3YjdhMzZhOTdjMGNiMGMzYmU5MWU1MTliMmRk
OC4uOTY3NmQ3NzM4YjljM2FlOWZlMDM3NTExNGMyZTRkZjFhM2Y4MzQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgKQEAgLTQyLDEwICs0MiwxMSBAQCBjbGFzcyBSZW5k
ZXJDb3VudGVyOwogCiBjbGFzcyBDb3VudGVyTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENvdW50
ZXJOb2RlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q291bnRlck5vZGU+IGNy
ZWF0ZShSZW5kZXJPYmplY3QqLCBib29sIGlzUmVzZXQsIGludCB2YWx1ZSk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q291bnRlck5vZGU+IGNyZWF0ZShSZW5kZXJPYmplY3QqLCBib29sIGlzU2V0
LCBib29sIGlzUmVzZXQsIGludCB2YWx1ZSk7CiAgICAgfkNvdW50ZXJOb2RlKCk7CiAgICAgYm9v
bCBhY3RzQXNSZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVzZXRUeXBlIHx8ICFtX3BhcmVu
dDsgfQogICAgIGJvb2wgaGFzUmVzZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZXNldFR5
cGU7IH0KKyAgICBib29sIGhhc1NldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2hhc1NldFR5cGU7
IH0KICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgaW50IGNv
dW50SW5QYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50SW5QYXJlbnQ7IH0KICAgICBSZW5k
ZXJPYmplY3QqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQpAQCAtNzEsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDaGlsZChDb3VudGVyTm9kZSopOwogCiBwcml2
YXRlOgotICAgIENvdW50ZXJOb2RlKFJlbmRlck9iamVjdCosIGJvb2wgaXNSZXNldCwgaW50IHZh
bHVlKTsKKyAgICBDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqLCBib29sIGlzU2V0LCBib29sIGlz
UmVzZXQsIGludCB2YWx1ZSk7CiAgICAgaW50IGNvbXB1dGVDb3VudEluUGFyZW50KCkgY29uc3Q7
CiAgICAgLy8gSW52YWxpZGF0ZXMgdGhlIHRleHQgaW4gdGhlIHJlbmRlcmVyIG9mIHRoaXMgY291
bnRlciwgaWYgYW55LAogICAgIC8vIGFuZCBpbiB0aGUgcmVuZGVyZXJzIG9mIGFsbCBkZXNjZW5k
YW50cyBvZiB0aGlzIGNvdW50ZXIsIGlmIGFueS4KQEAgLTc5LDYgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlY291bnQoKTsKIAogICAgIGJvb2wgbV9oYXNSZXNldFR5cGU7CisgICAgYm9v
bCBtX2hhc1NldFR5cGU7CiAgICAgaW50IG1fdmFsdWU7CiAgICAgaW50IG1fY291bnRJblBhcmVu
dDsKICAgICBSZW5kZXJPYmplY3QqIG1fb3duZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAKaW5kZXggZTM0OTZiMTM2NTYyYTFhMWM3YjAyZWUxN2I3YzEwYzQ0
YjFhNGMxMy4uNWQxNTY4ZDFjZjJiMDg2YWNiNmFiMTIyMzE1ZGY4ZDNmYzQ1OWQ1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtMjEzLDcgKzIxMyw3
IEBAIG5leHRzaWJsaW5nOgogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm9vbCYg
aXNSZXNldCwgaW50JiB2YWx1ZSkKK3N0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlck9iamVj
dCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wmIGlzU2V0LCBi
b29sJiBpc1Jlc2V0LCBpbnQmIHZhbHVlKQogewogICAgIEFTU0VSVChvYmplY3QpOwogCkBAIC0y
NDYsNiArMjQ2LDcgQEAgc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm8KICAgICBpZiAoZGlyZWN0aXZl
cy5pc0RlZmluZWQoKSkgewogICAgICAgICB2YWx1ZSA9IGRpcmVjdGl2ZXMuY29tYmluZWRWYWx1
ZSgpOwogICAgICAgICBpc1Jlc2V0ID0gZGlyZWN0aXZlcy5pc1Jlc2V0KCk7CisgICAgICAgIGlz
U2V0ID0gZGlyZWN0aXZlcy5pc1NldCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTQxOCwxMyArNDE5LDE0IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2Rl
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAgICAgfQogCiAg
ICAgYm9vbCBpc1Jlc2V0ID0gZmFsc2U7CisgICAgYm9vbCBpc1NldCA9IGZhbHNlOwogICAgIGlu
dCB2YWx1ZSA9IDA7Ci0gICAgaWYgKCFwbGFuQ291bnRlcihvYmplY3QsIGlkZW50aWZpZXIsIGlz
UmVzZXQsIHZhbHVlKSAmJiAhYWx3YXlzQ3JlYXRlQ291bnRlcikKKyAgICBpZiAoIXBsYW5Db3Vu
dGVyKG9iamVjdCwgaWRlbnRpZmllciwgaXNTZXQsIGlzUmVzZXQsIHZhbHVlKSAmJiAhYWx3YXlz
Q3JlYXRlQ291bnRlcikKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8Q291bnRlck5v
ZGU+IG5ld1BhcmVudCA9IDA7CiAgICAgUmVmUHRyPENvdW50ZXJOb2RlPiBuZXdQcmV2aW91c1Np
YmxpbmcgPSAwOwotICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3Tm9kZSA9IENvdW50ZXJOb2Rl
OjpjcmVhdGUob2JqZWN0LCBpc1Jlc2V0LCB2YWx1ZSk7CisgICAgUmVmUHRyPENvdW50ZXJOb2Rl
PiBuZXdOb2RlID0gQ291bnRlck5vZGU6OmNyZWF0ZShvYmplY3QsIGlzU2V0LCBpc1Jlc2V0LCB2
YWx1ZSk7CiAgICAgaWYgKGZpbmRQbGFjZUZvckNvdW50ZXIob2JqZWN0LCBpZGVudGlmaWVyLCBp
c1Jlc2V0LCBuZXdQYXJlbnQsIG5ld1ByZXZpb3VzU2libGluZykpCiAgICAgICAgIG5ld1BhcmVu
dC0+aW5zZXJ0QWZ0ZXIobmV3Tm9kZS5nZXQoKSwgbmV3UHJldmlvdXNTaWJsaW5nLmdldCgpLCBp
ZGVudGlmaWVyKTsKICAgICBDb3VudGVyTWFwKiBub2RlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAKaW5kZXggMDZkNDRk
ZGY2ZjNmNmUwYjkxODEyNzMyZTQ5MTEzODUwN2ZhYzhmNi4uMGRhNjNjNzgwM2IzZGNhMDdhNWRk
MWZlY2U0Y2M3YWI0MjI0YTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCkBAIC0zMCw3ICszMCw5IEBAIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYSwgY29uc3QgQ291bnRlckRpcmVjdGl2
ZXMmIGIpCiAgICAgcmV0dXJuIGEuaXNJbmNyZW1lbnQoKSA9PSBiLmlzSW5jcmVtZW50KCkKICAg
ICAgICYmIGEuaW5jcmVtZW50VmFsdWUoKSA9PSBiLmluY3JlbWVudFZhbHVlKCkKICAgICAgICYm
IGEuaXNSZXNldCgpID09IGIuaXNSZXNldCgpCi0gICAgICAmJiBhLnJlc2V0VmFsdWUoKSA9PSBi
LnJlc2V0VmFsdWUoKTsKKyAgICAgICYmIGEucmVzZXRWYWx1ZSgpID09IGIucmVzZXRWYWx1ZSgp
CisgICAgICAmJiBhLmlzU2V0KCkgPT0gYi5pc1NldCgpCisgICAgICAmJiBhLnNldFZhbHVlKCkg
PT0gYi5zZXRWYWx1ZSgpOwogfQogCiBQYXNzT3duUHRyPENvdW50ZXJEaXJlY3RpdmVNYXA+IGNs
b25lKGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAmIGNvdW50ZXJEaXJlY3RpdmVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAppbmRl
eCBjZjc5M2JiOGYwOTM1YzU0NDdkODc0ZDRhMzVlZmEwYjk4ZTdmMDM4Li40YzI3YTExZmNmNDE0
MGIyMWExZWE1YzI2MDQ2OTg5M2Y1MDI2MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaApAQCAtMzcsOCArMzcsMTAgQEAgY2xh
c3MgQ291bnRlckRpcmVjdGl2ZXMgewogcHVibGljOgogICAgIENvdW50ZXJEaXJlY3RpdmVzKCkK
ICAgICAgICAgOiBtX2lzUmVzZXRTZXQoZmFsc2UpCisgICAgICAgICwgbV9pc1NldFNldChmYWxz
ZSkKICAgICAgICAgLCBtX2lzSW5jcmVtZW50U2V0KGZhbHNlKQogICAgICAgICAsIG1fcmVzZXRW
YWx1ZSgwKQorICAgICAgICAsIG1fc2V0VmFsdWUoMCkKICAgICAgICAgLCBtX2luY3JlbWVudFZh
bHVlKDApCiAgICAgewogICAgIH0KQEAgLTYzLDcgKzY1LDIzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9yZXNldFZhbHVlID0gcGFyZW50Lm1fcmVzZXRWYWx1ZTsKICAgICAgICAgbV9pc1Jlc2V0U2V0
ID0gcGFyZW50Lm1faXNSZXNldFNldDsKICAgICB9Ci0KKyAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc1NldFNldDsgfQorICAgIGludCBzZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2V0VmFsdWU7IH0KKyAgICB2b2lkIHNldFNldFZhbHVlKGludCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIG1fc2V0VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgbV9pc1NldFNldCA9IHRydWU7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXJTZXQoKQorICAgIHsKKyAgICAgICAgbV9zZXRWYWx1ZSA9IDA7
CisgICAgICAgIG1faXNTZXRTZXQgPSBmYWxzZTsKKyAgICB9CisgICAgdm9pZCBpbmhlcml0U2V0
KENvdW50ZXJEaXJlY3RpdmVzJiBwYXJlbnQpCisgICAgeworICAgICAgICBtX3NldFZhbHVlID0g
cGFyZW50Lm1fc2V0VmFsdWU7CisgICAgICAgIG1faXNTZXRTZXQgPSBwYXJlbnQubV9pc1NldFNl
dDsKKyAgICB9CiAgICAgYm9vbCBpc0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmNy
ZW1lbnRTZXQ7IH0KICAgICBpbnQgaW5jcmVtZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lu
Y3JlbWVudFZhbHVlOyB9CiAgICAgdm9pZCBhZGRJbmNyZW1lbnRWYWx1ZShpbnQgdmFsdWUpCkBA
IC04MiwyMCArMTAwLDIzIEBAIHB1YmxpYzoKICAgICAgICAgbV9pc0luY3JlbWVudFNldCA9IHBh
cmVudC5tX2lzSW5jcmVtZW50U2V0OwogICAgIH0KIAotICAgIGJvb2wgaXNEZWZpbmVkKCkgY29u
c3QgeyByZXR1cm4gaXNSZXNldCgpIHx8IGlzSW5jcmVtZW50KCk7IH0KKyAgICBib29sIGlzRGVm
aW5lZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVzZXQoKSB8fCBpc0luY3JlbWVudCgpIHx8IGlzU2V0
KCk7IH0KIAogICAgIGludCBjb21iaW5lZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2lzUmVzZXRTZXQgfHwgIW1fcmVzZXRWYWx1ZSk7CiAgICAgICAgIEFTU0VSVChtX2lz
SW5jcmVtZW50U2V0IHx8ICFtX2luY3JlbWVudFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKG1faXNT
ZXRTZXQgfHwgIW1faXNTZXRTZXQpOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IGFsbG93
IG92ZXJmbG93IGhlcmUuCi0gICAgICAgIHJldHVybiBtX3Jlc2V0VmFsdWUgKyBtX2luY3JlbWVu
dFZhbHVlOworICAgICAgICByZXR1cm4gbV9zZXRWYWx1ZSArIG1fcmVzZXRWYWx1ZSArIG1faW5j
cmVtZW50VmFsdWU7CiAgICAgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Jlc2V0U2V0Owor
ICAgIGJvb2wgbV9pc1NldFNldDsKICAgICBib29sIG1faXNJbmNyZW1lbnRTZXQ7CiAgICAgaW50
IG1fcmVzZXRWYWx1ZTsKKyAgICBpbnQgbV9zZXRWYWx1ZTsKICAgICBpbnQgbV9pbmNyZW1lbnRW
YWx1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwNjZmYjljMzZjYTc3Y2IzMTU0NzIwMTYyYjllN2VhMTZkNmI2
ZDc3Li4yOWVhYzJmZGQzYzdmN2E4NWNmODBhYzc4OThlNzZjNWNiZWE4ZDFkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDktMjQgIEFuZHJlaSBPbmVhICA8b25lYUBhZG9iZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IGNvdW50ZXItc2V0IHByb3BlcnR5IGZyb20gQ1NTMyBsaXN0cyBz
cGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzMz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IHRlc3QgZm9yIGNvdW50ZXItc2V0IHByb3BlcnR5LgorCisgICAgICAgICogZmFzdC9jc3MvY291
bnRlcnMvY291bnRlci1zZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9jb3VudGVycy9jb3VudGVyLXNldC5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0yMCAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlbGF0aXZlIFVSTCBMaW5rIFRvb2x0aXBzIGRvIG5vdCByZXNwZWN0IDxiYXNlPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1zZXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1zZXQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1MjM5NmRlMDlkODJjYzgwY2I0MWI3NTM4NWJlNDM0ZDk3NTg3
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3Vu
dGVyLXNldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGUgZm9sbG93aW5nIHR3byBs
aW5lcyBzaG91bGQgYmUgdGhlIHNhbWU6CisKKyAgCisxIC0zIC0yCisxIC0zIC0yCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXNldC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1zZXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NjYyOTk0YjAwMzY5NmJkMTI3MGQ5Y2ZiNmIwYjQ4NDQ0MDI2OWZmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1zZXQuaHRtbApAQCAtMCww
ICsxLDQxIEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLnNldCB7IGNvdW50ZXIt
c2V0OiBpdGVtIC00IH0KKyAgICAuaW5jciB7IGNvdW50ZXItaW5jcmVtZW50OiBpdGVtIDEgfQor
ICAgIC5pbmNyOjpiZWZvcmUgeyBjb250ZW50OiBjb3VudGVyKGl0ZW0pIH0KKyAgPC9zdHlsZT4K
KyA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7ICAgCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgIH0KKyBmdW5jdGlvbiBydW4oKSB7CisgICAgIGNvbnNvbGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICB0ZXN0RWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgIHNwYW5MaXN0ID0gdGVzdEVsZW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKKyAgICAgZm9yIChpID0gMDsgaSA8IHNwYW5M
aXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIG5ld1NwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBuZXdTcGFuRWxlbWVudC5pbm5lclRleHQgPSB3
aW5kb3cuaW50ZXJuYWxzLmNvdW50ZXJWYWx1ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFu
TGlzdC5pdGVtKGkpLmdldEF0dHJpYnV0ZSgiaWQiKSkpICsgIiAiOworICAgICAgICBjb25zb2xl
LmFwcGVuZENoaWxkKG5ld1NwYW5FbGVtZW50KTsgCisgICAgIH0KKyAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyB9CisgCisgPC9z
Y3JpcHQ+ICAKKzwvaGVhZD4KKzxib2R5ICBvbmxvYWQ9InJ1bigpOyI+CisgIDxwPlRoZSBmb2xs
b3dpbmcgdHdvIGxpbmVzIHNob3VsZCBiZSB0aGUgc2FtZTo8L3A+CisgIAorICA8ZGl2IGlkPSJ0
ZXN0Ij4KKyAgPHNwYW4gaWQ9InNwYW4xIiBjbGFzcz0iaW5jciI+CisgICAgICA8c3BhbiBpZD0i
c3BhbjIiIGNsYXNzPSJzZXQgaW5jciI+PC9zcGFuPgorICA8L3NwYW4+CisgIDxzcGFuIGlkPSJz
cGFuMyIgY2xhc3M9ImluY3IiPjwvc3Bhbj4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9InJlZmVyZW5j
ZSI+MSAtMyAtMjwvZGl2PgorICA8aHI+CisgIDxkaXYgaWQ9ImNvbnNvbGUiLz4KKzwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="177632"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>