<?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>22870</bug_id>
          
          <creation_ts>2008-12-15 15:19:44 -0800</creation_ts>
          <short_desc>Animations and Transitions started in the same recalcStyle() cycle should have identical start times</short_desc>
          <delta_ts>2009-01-06 16:36:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102609</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-12-15 15:19:44 -0800</bug_when>
    <thetext>Currently the start times animations get is set by a call to currentTime() at the moment the animation is beng activated. So animations that should be started at the same time have slightly different start times. It&apos;s possible for some types of animations (rotations for instance) to therefore be slightly off from each other. It also makes animation events not fire at quite the same time. 

This can be fixed by registering an animation time value at the start of recalcStyle() and using that for all animations and transitions that start in that cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102610</commentid>
    <comment_count>1</comment_count>
      <attachid>26035</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-12-15 15:28:44 -0800</bug_when>
    <thetext>Created attachment 26035
Patch, including LayoutTest files

        Fixed https://bugs.webkit.org/show_bug.cgi?id=22870
 
        I added a recalcStyleTime value to Document. This is updated
        at the start of the document&apos;s recalcStyle cycle and also
        when the document starts loading, since animations are started
        then as well. Then I always use that value when setting animation
        start times, so all animations started in the same cycle have the 
        same start time.

        The test cases checked in test this, but in the case of the &apos;left&apos;
        test it actually doesn&apos;t make any difference in most cases. This is
        because values are clamped to whole pixels, so the start times would 
        have to be pretty far off for the test to fail using the old
        currentTime() model. Still, under really heavy load, it&apos;s possible for
        the test to fail without these changes.

        The &apos;transform&apos; test is another story. It animates to the full resolution
        of a floating point number, so the test fails miserably without this
        fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102921</commentid>
    <comment_count>2</comment_count>
      <attachid>26035</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-12-18 13:38:55 -0800</bug_when>
    <thetext>Comment on attachment 26035
Patch, including LayoutTest files

+    m_styleRecalcStartTime = -1;

A named constant would be nice here instead of -1.

+    if (m_styleRecalcStartTime &lt; 0)
+        const_cast&lt;Document*&gt;(this)-&gt;m_styleRecalcStartTime = currentTime();

Just make m_styleRecalcStartTime mutable.  I  think 

if (m_styleRecalcStartTime == cRecalcStyleTimeNotSet) 

will be more readable also (once you add the named constant).

+                if (m_startTime &lt;= 0) {
                     m_startTime = param;
+                }

These brackets shouldn&apos;t be there.

I do not understand why you would reset the m_styleRecalcStartTime when parsing is finished.  That seems unnecessary.  Finishing parsing is a pretty irrelevant milestone as far as the page rendering (the user may have been interacting with the page for a long time while it&apos;s still parsing in fact).  I think you should just remove that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103040</commentid>
    <comment_count>3</comment_count>
      <attachid>26161</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-12-19 14:51:20 -0800</bug_when>
    <thetext>Created attachment 26161
Replacement patch

This fixes the issues identified and does the implementation a bit differently. Rather than maintaining a time value in Document, it is now in AnimationController. Document now makes begin/end calls to AnimationController at the start and end of recalcStyle. Right now, the time value is reset in the begin call and the end call does nothing. But it&apos;s there to keep things symmetrical. And I will be needing the end call in the future for some of the sync logic yet to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104610</commentid>
    <comment_count>4</comment_count>
      <attachid>26161</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-01-06 13:02:38 -0800</bug_when>
    <thetext>Comment on attachment 26161
Replacement patch

I like this patch better than the previous one.  Nice.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104671</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-01-06 16:36:58 -0800</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Sending        LayoutTests/animations/animation-test-helpers.js
Adding         LayoutTests/animations/simultaneous-start-left-expected.txt
Adding         LayoutTests/animations/simultaneous-start-left.html
Adding         LayoutTests/animations/simultaneous-start-transform-expected.txt
Adding         LayoutTests/animations/simultaneous-start-transform.html
Sending        WebCore/ChangeLog
Sending        WebCore/dom/Document.cpp
Sending        WebCore/page/animation/AnimationBase.cpp
Sending        WebCore/page/animation/AnimationBase.h
Sending        WebCore/page/animation/AnimationController.cpp
Sending        WebCore/page/animation/AnimationController.h
Sending        WebCore/page/animation/KeyframeAnimation.cpp
Transmitting file data .............
Committed revision 39667.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26035</attachid>
            <date>2008-12-15 15:28:44 -0800</date>
            <delta_ts>2008-12-19 14:51:20 -0800</delta_ts>
            <desc>Patch, including LayoutTest files</desc>
            <filename>22870.patch</filename>
            <type>text/plain</type>
            <size>29916</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTMxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMDgtMTItMTUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RzOiBhbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC1sZWZ0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGFuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS5odG1sCisKKyAgICAg
ICAgRml4ZWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODcwCisg
CisgICAgICAgIEkgYWRkZWQgYSByZWNhbGNTdHlsZVRpbWUgdmFsdWUgdG8gRG9jdW1lbnQuIFRo
aXMgaXMgdXBkYXRlZAorICAgICAgICBhdCB0aGUgc3RhcnQgb2YgdGhlIGRvY3VtZW50J3MgcmVj
YWxjU3R5bGUgY3ljbGUgYW5kIGFsc28KKyAgICAgICAgd2hlbiB0aGUgZG9jdW1lbnQgc3RhcnRz
IGxvYWRpbmcsIHNpbmNlIGFuaW1hdGlvbnMgYXJlIHN0YXJ0ZWQKKyAgICAgICAgdGhlbiBhcyB3
ZWxsLiBUaGVuIEkgYWx3YXlzIHVzZSB0aGF0IHZhbHVlIHdoZW4gc2V0dGluZyBhbmltYXRpb24K
KyAgICAgICAgc3RhcnQgdGltZXMsIHNvIGFsbCBhbmltYXRpb25zIHN0YXJ0ZWQgaW4gdGhlIHNh
bWUgY3ljbGUgaGF2ZSB0aGUgCisgICAgICAgIHNhbWUgc3RhcnQgdGltZS4KKworICAgICAgICBU
aGUgdGVzdCBjYXNlcyBjaGVja2VkIGluIHRlc3QgdGhpcywgYnV0IGluIHRoZSBjYXNlIG9mIHRo
ZSAnbGVmdCcKKyAgICAgICAgdGVzdCBpdCBhY3R1YWxseSBkb2Vzbid0IG1ha2UgYW55IGRpZmZl
cmVuY2UgaW4gbW9zdCBjYXNlcy4gVGhpcyBpcworICAgICAgICBiZWNhdXNlIHZhbHVlcyBhcmUg
Y2xhbXBlZCB0byB3aG9sZSBwaXhlbHMsIHNvIHRoZSBzdGFydCB0aW1lcyB3b3VsZCAKKyAgICAg
ICAgaGF2ZSB0byBiZSBwcmV0dHkgZmFyIG9mZiBmb3IgdGhlIHRlc3QgdG8gZmFpbCB1c2luZyB0
aGUgb2xkCisgICAgICAgIGN1cnJlbnRUaW1lKCkgbW9kZWwuIFN0aWxsLCB1bmRlciByZWFsbHkg
aGVhdnkgbG9hZCwgaXQncyBwb3NzaWJsZSBmb3IKKyAgICAgICAgdGhlIHRlc3QgdG8gZmFpbCB3
aXRob3V0IHRoZXNlIGNoYW5nZXMuCisKKyAgICAgICAgVGhlICd0cmFuc2Zvcm0nIHRlc3QgaXMg
YW5vdGhlciBzdG9yeS4gSXQgYW5pbWF0ZXMgdG8gdGhlIGZ1bGwgcmVzb2x1dGlvbgorICAgICAg
ICBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgc28gdGhlIHRlc3QgZmFpbHMgbWlzZXJhYmx5
IHdpdGhvdXQgdGhpcworICAgICAgICBmaXguCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZmluaXNoUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVSZWNhbGNT
dGFydFRpbWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFz
ZTo6dXBkYXRlU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6
OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25CYXNlOjp3aWxsTmVlZFNlcnZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFz
ZTo6cHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6Z29JbnRvRW5k
aW5nT3JMb29waW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6c3R5
bGVSZWNhbGNTdGFydFRpbWUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKToKKwogMjAwOC0xMi0xNSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMzkyNTUpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw2ICszMTUsNyBAQCBEb2N1bWVudDo6
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBib29sIGlzCiAjaWYgVVNFKExPV19CQU5EV0lEVEhfRElT
UExBWSkKICAgICAsIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5KGZhbHNlKQogI2VuZGlmCisgICAg
LCBtX3N0eWxlUmVjYWxjU3RhcnRUaW1lKC0xKQogewogICAgIG1fZG9jdW1lbnQucmVzZXRTa2lw
cGluZ1JlZih0aGlzKTsKIApAQCAtMTE2OSw2ICsxMTcwLDggQEAgYmFpbF9vdXQ6CiAgICAgICAg
IG1fY2xvc2VBZnRlclN0eWxlUmVjYWxjID0gZmFsc2U7CiAgICAgICAgIGltcGxpY2l0Q2xvc2Uo
KTsKICAgICB9CisgICAgCisgICAgbV9zdHlsZVJlY2FsY1N0YXJ0VGltZSA9IC0xOwogfQogCiB2
b2lkIERvY3VtZW50Ojp1cGRhdGVSZW5kZXJpbmcoKQpAQCAtMTcxMSw2ICsxNzE0LDggQEAgdm9p
ZCBEb2N1bWVudDo6ZmluaXNoUGFyc2luZygpCiAgICAgLy8gKDMpIERhdGEgaXMgc3RpbGwgcmVt
YWluaW5nIHRvIGJlIHBhcnNlZC4KICAgICBpZiAobV90b2tlbml6ZXIpCiAgICAgICAgIG1fdG9r
ZW5pemVyLT5maW5pc2goKTsKKyAgICAgICAgCisgICAgbV9zdHlsZVJlY2FsY1N0YXJ0VGltZSA9
IC0xOwogfQogCiB2b2lkIERvY3VtZW50OjpjbGVhcigpCkBAIC00MzIwLDQgKzQzMjUsMTEgQEAg
dm9pZCBEb2N1bWVudDo6cG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPgogICAgIH0KIH0KIAorZG91
YmxlIERvY3VtZW50OjpzdHlsZVJlY2FsY1N0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgaWYgKG1f
c3R5bGVSZWNhbGNTdGFydFRpbWUgPCAwKQorICAgICAgICBjb25zdF9jYXN0PERvY3VtZW50Kj4o
dGhpcyktPm1fc3R5bGVSZWNhbGNTdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIHJldHVy
biBtX3N0eWxlUmVjYWxjU3RhcnRUaW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHJldmlzaW9uIDM5MjU1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQ3LDYgKzQ0Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByaW50
aW5nKGJvb2wgcCkgeyBtX3ByaW50aW5nID0gcDsgfQogCiAgICAgZW51bSBQYXJzZU1vZGUgeyBD
b21wYXQsIEFsbW9zdFN0cmljdCwgU3RyaWN0IH07CisgICAgCisgICAgZG91YmxlIHN0eWxlUmVj
YWxjU3RhcnRUaW1lKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRldGVy
bWluZVBhcnNlTW9kZSgpIHt9CkBAIC0xMDk0LDYgKzEwOTYsOCBAQCBwcml2YXRlOgogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPGludCwgRE9NVGltZXIqPiBUaW1lb3V0c01hcDsKICAgICBUaW1lb3V0
c01hcCBtX3RpbWVvdXRzOworICAgIAorICAgIGRvdWJsZSBtX3N0eWxlUmVjYWxjU3RhcnRUaW1l
OwogfTsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3Ry
aW5nSW1wbCogaWQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAJKHJldmlzaW9uIDM5MjU1KQorKysgV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgQW5p
bWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEEKICAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSBpbiBBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFJlc3BvbnNlLCB0aGUgYW5pbWF0aW9uIHdpbGwg
Z2V0IGNhbmNlbGVkIGJlZm9yZSAKICAgICAgICAgICAgIC8vIHdlIGdldCBhIHJlc3BvbnNlLCBz
byBtb3ZlIHRvIHRoZSBuZXh0IHN0YXRlLgogICAgICAgICAgICAgZW5kQW5pbWF0aW9uKGZhbHNl
KTsKLSAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0U3Rh
cnRUaW1lU2V0LCBjdXJyZW50VGltZSgpKTsKKyAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGlu
ZShBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRUaW1lU2V0LCBzdHlsZVJlY2FsY1N0YXJ0VGltZSgp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTUyLDcgKzU1Miw3IEBA
IHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEEKICAgICAgICAgICAgIEFT
U0VSVChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRBbmltYXRpb24gfHwgaW5wdXQg
PT0gQW5pbWF0aW9uU3RhdGVJbnB1dFBsYXlTdGF0ZVJ1bm5uaW5nIHx8IGlucHV0ID09IEFuaW1h
dGlvblN0YXRlSW5wdXRQbGF5U3RhdGVQYXVzZWQpOwogICAgICAgICAgICAgaWYgKGlucHV0ID09
IEFuaW1hdGlvblN0YXRlSW5wdXRTdGFydEFuaW1hdGlvbiB8fCBpbnB1dCA9PSBBbmltYXRpb25T
dGF0ZUlucHV0UGxheVN0YXRlUnVubm5pbmcpIHsKICAgICAgICAgICAgICAgICBtX3dhaXRlZEZv
clJlc3BvbnNlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTdGFydFRpbWUg
PSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVkU3RhcnRUaW1lID0g
c3R5bGVSZWNhbGNTdGFydFRpbWUoKTsKICAgICAgICAgICAgICAgICBtX2FuaW1TdGF0ZSA9IEFu
aW1hdGlvblN0YXRlU3RhcnRXYWl0VGltZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRl
TWFjaGluZShBCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVCgh
cGF1c2VkKCkpOwogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBzdGFy
dCB0aW1lciB0byBmaXJlIGFuZCB3ZSBnb3QgYSBwYXVzZS4gQ2FuY2VsIHRoZSB0aW1lciwgcGF1
c2UgYW5kIHdhaXQKLSAgICAgICAgICAgICAgICBtX3BhdXNlVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBzdHlsZVJlY2FsY1N0YXJ0VGltZSgpOwog
ICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVQYXVzZWRXYWl0VGlt
ZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5Miw3ICs1OTIsNyBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBCiAgICAgICAgICAgICBp
ZiAob3ZlcnJpZGRlbigpIHx8ICFzdGFydEFuaW1hdGlvbigwKSkgewogICAgICAgICAgICAgICAg
IC8vIFdlJ3JlIG5vdCBnb2luZyB0byBnZXQgYSBzdGFydFRpbWUgY2FsbGJhY2ssIHNvIGZpcmUg
dGhlIHN0YXJ0IHRpbWUgaGVyZQogICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0
aW9uU3RhdGVTdGFydFdhaXRSZXNwb25zZTsKLSAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1h
Y2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCwgY3VycmVudFRpbWUoKSk7Cisg
ICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXRTdGFy
dFRpbWVTZXQsIHN0eWxlUmVjYWxjU3RhcnRUaW1lKCkpOwogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgbV93YWl0ZWRGb3JSZXNwb25zZSA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTYwMiw4ICs2MDIsOSBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRl
TWFjaGluZShBCiAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dFN0
YXJ0VGltZVNldCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbSA+PSAwKTsKICAgICAg
ICAgICAgICAgICAvLyBXZSBoYXZlIGEgc3RhcnQgdGltZSwgc2V0IGl0LCB1bmxlc3MgdGhlIHN0
YXJ0VGltZSBpcyBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgIGlmIChtX3N0YXJ0VGltZSA8
PSAwKQorICAgICAgICAgICAgICAgIGlmIChtX3N0YXJ0VGltZSA8PSAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhcnRUaW1lID0gcGFyYW07CisgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgLy8gRGVjaWRlIHdoZXRoZXIgdG8gZ28gaW50byBsb29waW5nIG9yIGVuZGlu
ZyBzdGF0ZQogICAgICAgICAgICAgICAgIGdvSW50b0VuZGluZ09yTG9vcGluZ1N0YXRlKCk7CkBA
IC02MzMsNyArNjM0LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUo
QQogICAgICAgICAgICAgICAgIGdvSW50b0VuZGluZ09yTG9vcGluZ1N0YXRlKCk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxlIHJ1
bm5pbmcuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0Ci0gICAgICAgICAgICAgICAgbV9w
YXVzZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0g
c3R5bGVSZWNhbGNTdGFydFRpbWUoKTsKICAgICAgICAgICAgICAgICBlbmRBbmltYXRpb24oZmFs
c2UpOwogICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVQYXVzZWRS
dW47CiAgICAgICAgICAgICB9CkBAIC02NTcsNyArNjU4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNl
Ojp1cGRhdGVTdGF0ZU1hY2hpbmUoQQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgcnVubmluZy4g
Q2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQKLSAgICAgICAgICAgICAgICBtX3BhdXNlVGlt
ZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBzdHlsZVJl
Y2FsY1N0YXJ0VGltZSgpOwogICAgICAgICAgICAgICAgIGVuZEFuaW1hdGlvbihmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgbV9hbmltU3RhdGUgPSBBbmltYXRpb25TdGF0ZVBhdXNlZFJ1bjsKICAg
ICAgICAgICAgIH0KQEAgLTY2Nyw3ICs2NjgsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0
ZVN0YXRlTWFjaGluZShBCiAgICAgICAgICAgICBBU1NFUlQoaW5wdXQgPT0gQW5pbWF0aW9uU3Rh
dGVJbnB1dFBsYXlTdGF0ZVJ1bm5uaW5nKTsKICAgICAgICAgICAgIEFTU0VSVChwYXVzZWQoKSk7
CiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWVzCi0gICAgICAgICAgICBtX3N0YXJ0VGlt
ZSArPSBjdXJyZW50VGltZSgpIC0gbV9wYXVzZVRpbWU7CisgICAgICAgICAgICBtX3N0YXJ0VGlt
ZSArPSBzdHlsZVJlY2FsY1N0YXJ0VGltZSgpIC0gbV9wYXVzZVRpbWU7CiAgICAgICAgICAgICBt
X3BhdXNlVGltZSA9IC0xOwogCiAgICAgICAgICAgICAvLyB3ZSB3ZXJlIHdhaXRpbmcgZm9yIHRo
ZSBzdGFydCB0aW1lciB0byBmaXJlLCBnbyBiYWNrIGFuZCB3YWl0IGFnYWluCkBAIC02ODQsNyAr
Njg1LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQQogICAgICAg
ICAgICAgQVNTRVJUKHBhdXNlZCgpKTsKICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGltZXMK
ICAgICAgICAgICAgIGlmIChtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZVBhdXNlZFJ1bikK
LSAgICAgICAgICAgICAgICBtX3N0YXJ0VGltZSArPSBjdXJyZW50VGltZSgpIC0gbV9wYXVzZVRp
bWU7CisgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgKz0gc3R5bGVSZWNhbGNTdGFydFRpbWUo
KSAtIG1fcGF1c2VUaW1lOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1fc3Rh
cnRUaW1lID0gMDsKICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gLTE7CkBAIC02OTUsNyArNjk2
LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQQogICAgICAgICAg
ICAgLy8gU3RhcnQgdGhlIGFuaW1hdGlvbgogICAgICAgICAgICAgaWYgKG92ZXJyaWRkZW4oKSB8
fCAhc3RhcnRBbmltYXRpb24obV9zdGFydFRpbWUpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2Un
cmUgbm90IGdvaW5nIHRvIGdldCBhIHN0YXJ0VGltZSBjYWxsYmFjaywgc28gZmlyZSB0aGUgc3Rh
cnQgdGltZSBoZXJlCi0gICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlv
blN0YXRlSW5wdXRTdGFydFRpbWVTZXQsIGN1cnJlbnRUaW1lKCkpOworICAgICAgICAgICAgICAg
IHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRUaW1lU2V0LCBzdHls
ZVJlY2FsY1N0YXJ0VGltZSgpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IG1fd2FpdGVkRm9yUmVzcG9uc2UgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MjAs
MTIgKzcyMSwxMiBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJCiAg
ICAgCiAgICAgLy8gQ2hlY2sgZm9yIHN0YXJ0IHRpbWVvdXQKICAgICBpZiAobV9hbmltU3RhdGUg
PT0gQW5pbWF0aW9uU3RhdGVTdGFydFdhaXRUaW1lcikgewotICAgICAgICBpZiAoY3VycmVudFRp
bWUoKSAtIG1fcmVxdWVzdGVkU3RhcnRUaW1lID49IG1fYW5pbWF0aW9uLT5kZWxheSgpKQorICAg
ICAgICBpZiAoc3R5bGVSZWNhbGNTdGFydFRpbWUoKSAtIG1fcmVxdWVzdGVkU3RhcnRUaW1lID49
IG1fYW5pbWF0aW9uLT5kZWxheSgpKQogICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFu
aW1hdGlvblN0YXRlSW5wdXRTdGFydFRpbWVyRmlyZWQsIDApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIGRvdWJsZSBlbGFwc2VkRHVyYXRpb24gPSBjdXJyZW50VGltZSgpIC0g
bV9zdGFydFRpbWU7CisgICAgZG91YmxlIGVsYXBzZWREdXJhdGlvbiA9IHN0eWxlUmVjYWxjU3Rh
cnRUaW1lKCkgLSBtX3N0YXJ0VGltZTsKICAgICBBU1NFUlQoZWxhcHNlZER1cmF0aW9uID49IDAp
OwogICAgIAogICAgIC8vIENoZWNrIGZvciBlbmQgdGltZW91dApAQCAtNzY3LDcgKzc2OCw3IEBA
IGRvdWJsZSBBbmltYXRpb25CYXNlOjp3aWxsTmVlZFNlcnZpY2UoKSAKICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICAKICAgICBpZiAobV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVTdGFy
dFdhaXRUaW1lcikgewotICAgICAgICBkb3VibGUgdGltZUZyb21Ob3cgPSBtX2FuaW1hdGlvbi0+
ZGVsYXkoKSAtIChjdXJyZW50VGltZSgpIC0gbV9yZXF1ZXN0ZWRTdGFydFRpbWUpOworICAgICAg
ICBkb3VibGUgdGltZUZyb21Ob3cgPSBtX2FuaW1hdGlvbi0+ZGVsYXkoKSAtIChzdHlsZVJlY2Fs
Y1N0YXJ0VGltZSgpIC0gbV9yZXF1ZXN0ZWRTdGFydFRpbWUpOwogICAgICAgICByZXR1cm4gKGZs
b2F0KSAoKHRpbWVGcm9tTm93ID4gMCkgPyB0aW1lRnJvbU5vdyA6IDApOwogICAgIH0KICAgICAK
QEAgLTc4MCw3ICs3ODEsNyBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6cHJvZ3Jlc3MoZG91Ymxl
IHNjCiAgICAgaWYgKHByZUFjdGl2ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGRvdWJs
ZSBlbGFwc2VkVGltZSA9IHJ1bm5pbmcoKSAmJiAhcGF1c2VkKCkgPyAoY3VycmVudFRpbWUoKSAt
IG1fc3RhcnRUaW1lKSA6IChtX3BhdXNlVGltZSAtIG1fc3RhcnRUaW1lKTsKKyAgICBkb3VibGUg
ZWxhcHNlZFRpbWUgPSBydW5uaW5nKCkgJiYgIXBhdXNlZCgpID8gKHN0eWxlUmVjYWxjU3RhcnRU
aW1lKCkgLSBtX3N0YXJ0VGltZSkgOiAobV9wYXVzZVRpbWUgLSBtX3N0YXJ0VGltZSk7CiAgICAg
aWYgKHJ1bm5pbmcoKSAmJiBlbGFwc2VkVGltZSA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBA
IC04MjYsNyArODI3LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpnb0ludG9FbmRpbmdPckxvb3Bp
bgogICAgIGlmIChtX2FuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKSA+IDApCiAgICAgICAgIHRv
dGFsRHVyYXRpb24gPSBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSAqIG1fYW5pbWF0aW9uLT5pdGVy
YXRpb25Db3VudCgpOwogCi0gICAgY29uc3QgZG91YmxlIGVsYXBzZWREdXJhdGlvbiA9IGN1cnJl
bnRUaW1lKCkgLSBtX3N0YXJ0VGltZTsKKyAgICBjb25zdCBkb3VibGUgZWxhcHNlZER1cmF0aW9u
ID0gc3R5bGVSZWNhbGNTdGFydFRpbWUoKSAtIG1fc3RhcnRUaW1lOwogICAgIEFTU0VSVChlbGFw
c2VkRHVyYXRpb24gPj0gMCk7CiAgICAgZG91YmxlIGR1cmF0aW9uTGVmdCA9IDA7CiAgICAgZG91
YmxlIG5leHRJdGVyYXRpb25UaW1lID0gdG90YWxEdXJhdGlvbjsKQEAgLTg1Miw0ICs4NTMsOSBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnBhdXNlQXRUaW1lKGRvdWJsZSB0CiAgICAgbV9wYXVzZVRp
bWUgPSBtX3N0YXJ0VGltZSArIHQgLSBtX2FuaW1hdGlvbi0+ZGVsYXkoKTsKIH0KIAorZG91Ymxl
IEFuaW1hdGlvbkJhc2U6OnN0eWxlUmVjYWxjU3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9vYmplY3QtPmRvY3VtZW50KCkgPyBtX29iamVjdC0+ZG9jdW1lbnQoKS0+c3R5bGVSZWNh
bGNTdGFydFRpbWUoKSA6IGN1cnJlbnRUaW1lKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCShyZXZpc2lvbiAz
OTI1NSkKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcGF1c2VB
dFRpbWUoZG91YmxlIHQpOwogICAgIAorICAgIGRvdWJsZSBzdHlsZVJlY2FsY1N0YXJ0VGltZSgp
IGNvbnN0OworICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvdmVycmlkZUFuaW1h
dGlvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lT3ZlcnJpZGRlbkFuaW1hdGlvbnMo
KSB7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gMzkyNTUpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRy
b2xsZXI6OmNhbmNlbEFuaW1hdGlvCiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1h
dGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKQoteyAgICAKK3sKICAgICAvLyBEb24ndCBkbyBhbnl0aGlu
ZyBpZiB3ZSdyZSBpbiB0aGUgY2FjaGUKICAgICBpZiAoIXJlbmRlcmVyLT5kb2N1bWVudCgpIHx8
IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQogICAgICAgICByZXR1cm4gbmV3
U3R5bGU7CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcAkocmV2aXNpb24gMzkyNTUpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1l
QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCB2b2lkIEtleWZy
YW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0CiAgICAgLy8gV2Ugc2hvdWxkIGNhY2hlIHRo
ZSBsYXN0IHBhaXIgb3Igc29tZXRoaW5nLgogCiAgICAgLy8gRmluZCB0aGUgZmlyc3Qga2V5Ci0g
ICAgZG91YmxlIGVsYXBzZWRUaW1lID0gKG1fc3RhcnRUaW1lID4gMCB8fCBtX3BhdXNlVGltZSA+
IDApID8gKCghcGF1c2VkKCkgPyBjdXJyZW50VGltZSgpIDogbV9wYXVzZVRpbWUpIC0gbV9zdGFy
dFRpbWUpIDogMDsKKyAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSAobV9zdGFydFRpbWUgPiAwIHx8
IG1fcGF1c2VUaW1lID4gMCkgPyAoKCFwYXVzZWQoKSA/IHN0eWxlUmVjYWxjU3RhcnRUaW1lKCkg
OiBtX3BhdXNlVGltZSkgLSBtX3N0YXJ0VGltZSkgOiAwOwogICAgIGlmIChlbGFwc2VkVGltZSA8
IDApCiAgICAgICAgIGVsYXBzZWRUaW1lID0gMDsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzkzMTQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAwOC0xMi0xNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBjYXNlcyBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODcwCisKKyAgICAgICAg
KiBhbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanM6CisgICAgICAgIChydW5Bbmlt
YXRpb25UZXN0Lm1hdHJpeFN0cmluZ1RvQXJyYXkpOgorICAgICAgICAocnVuQW5pbWF0aW9uVGVz
dC5jaGVja0V4cGVjdGVkVmFsdWUpOgorICAgICAgICAqIGFuaW1hdGlvbnMvc2ltdWx0YW5lb3Vz
LXN0YXJ0LWxlZnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3Np
bXVsdGFuZW91cy1zdGFydC1sZWZ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMv
c2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGFuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS5odG1sOiBBZGRlZC4K
KwogMjAwOC0xMi0xNSAgUGllcnJlLU9saXZpZXIgTGF0b3VyICA8cG9sQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwkocmV2aXNpb24gMzkyNTUp
CisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEyLDE1ICsxMiwxOSBAQCBGdW5jdGlvbiBwYXJhbWV0ZXJzOgogICAg
IEVhY2ggc3ViLWFycmF5IG11c3QgY29udGFpbiB0aGVzZSBpdGVtcyBpbiB0aGlzIG9yZGVyOgog
ICAgIC0gdGhlIG5hbWUgb2YgdGhlIENTUyBhbmltYXRpb24gKG1heSBiZSBudWxsKSBbMV0KICAg
ICAtIHRoZSB0aW1lIGluIHNlY29uZHMgYXQgd2hpY2ggdG8gc25hcHNob3QgdGhlIENTUyBwcm9w
ZXJ0eQotICAgIC0gdGhlIGlkIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRvIGdldCB0aGUgQ1NT
IHByb3BlcnR5IHZhbHVlCi0gICAgLSB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIGdl
dCBbMl0KKyAgICAtIHRoZSBpZCBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCB0byBnZXQgdGhlIENT
UyBwcm9wZXJ0eSB2YWx1ZSBbMl0KKyAgICAtIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkg
dG8gZ2V0IFszXQogICAgIC0gdGhlIGV4cGVjdGVkIHZhbHVlIGZvciB0aGUgQ1NTIHByb3BlcnR5
CiAgICAgLSB0aGUgdG9sZXJhbmNlIHRvIHVzZSB3aGVuIGNvbXBhcmluZyB0aGUgZWZmZWN0aXZl
IENTUyBwcm9wZXJ0eSB2YWx1ZSB3aXRoIGl0cyBleHBlY3RlZCB2YWx1ZQogCiAgICAgWzFdIElm
IG51bGwgaXMgcGFzc2VkLCBhIHJlZ3VsYXIgc2V0VGltZW91dCgpIHdpbGwgYmUgdXNlZCBpbnN0
ZWFkIHRvIHNuYXBzaG90IHRoZSBhbmltYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZnV0dXJlLAotICAg
IGluc3RlYWQgb2YgZmFzdCBmb3J3YXJkaW5nIHVzaW5nIHRoZSBwYXVzZUFuaW1hdGlvbkF0VGlt
ZU9uRWxlbWVudFdpdGhJZCgpIEpTIEFQSSBmcm9tIERSVCAKKyAgICBpbnN0ZWFkIG9mIGZhc3Qg
Zm9yd2FyZGluZyB1c2luZyB0aGUgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQo
KSBKUyBBUEkgZnJvbSBEUlQKKyAgICAKKyAgICBbMl0gSWYgYSBzaW5nbGUgc3RyaW5nIGlzIHBh
c3NlZCwgaXQgaXMgdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRvIHRlc3QuIElmIGFuIGFycmF5IHdp
dGggMiBlbGVtZW50cyBpcyBwYXNzZWQgdGhleQorICAgIGFyZSB0aGUgaWRzIG9mIDIgZWxlbWVu
dHMsIHdob3NlIHZhbHVlcyBhcmUgY29tcGFyZWQgZm9yIGVxdWFsaXR5LiBJbiB0aGlzIGNhc2Ug
dGhlIGV4cGVjdGVkIHZhbHVlIGlzIGlnbm9yZWQKKyAgICBidXQgdGhlIHRvbGVyYW5jZSBpcyB1
c2VkIGluIHRoZSBjb21wYXJpc29uLgogCi0gICAgWzJdIElmIHRoZSBDU1MgcHJvcGVydHkgbmFt
ZSBpcyAid2Via2l0VHJhbnNmb3JtIiwgZXhwZWN0ZWQgdmFsdWUgbXVzdCBiZSBhbiBhcnJheSBv
ZiAxIG9yIG1vcmUgbnVtYmVycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYXRyaXggZWxlbWVudHMs
CisgICAgWzNdIElmIHRoZSBDU1MgcHJvcGVydHkgbmFtZSBpcyAid2Via2l0VHJhbnNmb3JtIiwg
ZXhwZWN0ZWQgdmFsdWUgbXVzdCBiZSBhbiBhcnJheSBvZiAxIG9yIG1vcmUgbnVtYmVycyBjb3Jy
ZXNwb25kaW5nIHRvIHRoZSBtYXRyaXggZWxlbWVudHMsCiAgICAgb3IgYSBzdHJpbmcgd2hpY2gg
d2lsbCBiZSBjb21wYXJlZCBkaXJlY3RseSAodXNlZnVsIGlmIHRoZSBleHBlY3RlZCB2YWx1ZSBp
cyAibm9uZSIpCiAgICAgSWYgdGhlIENTUyBwcm9wZXJ0eSBuYW1lIGlzICJ3ZWJraXRUcmFuc2Zv
cm0uTiIsIGV4cGVjdGVkIHZhbHVlIG11c3QgYmUgYSBudW1iZXIgY29ycmVzcG9uZGluZyB0byB0
aGUgTnRoIGVsZW1lbnQgb2YgdGhlIG1hdHJpeAogCkBAIC0zNSw3ICszOSwxNCBAQCBmdW5jdGlv
biBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkLCBjYWxsCiAgICAgICAgIHZhciBkaWZmID0gTWF0
aC5hYnMoYWN0dWFsIC0gZGVzaXJlZCk7CiAgICAgICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5j
ZTsKICAgICB9Ci0KKyAgICAKKyAgICBmdW5jdGlvbiBtYXRyaXhTdHJpbmdUb0FycmF5KHMpCisg
ICAgeworICAgICAgICB2YXIgbSA9IHMuc3BsaXQoIigiKTsKKyAgICAgICAgbSA9IG1bMV0uc3Bs
aXQoIikiKTsKKyAgICAgICAgcmV0dXJuIG1bMF0uc3BsaXQoIiwiKTsKKyAgICB9CisgICAgCiAg
ICAgZnVuY3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlKGV4cGVjdGVkLCBpbmRleCkKICAgICB7CiAg
ICAgICAgIHZhciBhbmltYXRpb25OYW1lID0gZXhwZWN0ZWRbaW5kZXhdWzBdOwpAQCAtNDUsNDQg
KzU2LDkwIEBAIGZ1bmN0aW9uIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWQsIGNhbGwKICAgICAg
ICAgdmFyIGV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZFtpbmRleF1bNF07CiAgICAgICAgIHZhciB0
b2xlcmFuY2UgPSBleHBlY3RlZFtpbmRleF1bNV07CiAKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEg
cGFpciBvZiBlbGVtZW50IElkcworICAgICAgICB2YXIgY29tcGFyZUVsZW1lbnRzID0gZmFsc2U7
CisgICAgICAgIHZhciBlbGVtZW50SWQyOworICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRJZCAh
PSAic3RyaW5nIikgeworICAgICAgICAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGggIT0gMikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBlbGVt
ZW50SWQyID0gZWxlbWVudElkWzFdOworICAgICAgICAgICAgZWxlbWVudElkID0gZWxlbWVudElk
WzBdOworICAgICAgICAgICAgY29tcGFyZUVsZW1lbnRzID0gdHJ1ZTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChhbmltYXRpb25OYW1lICYmIGhhc1BhdXNlQW5pbWF0aW9uQVBJICYmICFsYXlv
dXRUZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChhbmlt
YXRpb25OYW1lLCB0aW1lLCBlbGVtZW50SWQpKSB7CiAgICAgICAgICAgICByZXN1bHQgKz0gIkZB
SUwgLSBhbmltYXRpb24gXCIiICsgYW5pbWF0aW9uTmFtZSArICJcIiBpcyBub3QgcnVubmluZyIg
KyAiPGJyPiI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICB2YXIg
Y29tcHV0ZWRWYWx1ZTsKLSAgICAgICAgdmFyIHBhc3M7CisgICAgICAgIAorICAgICAgICBpZiAo
Y29tcGFyZUVsZW1lbnRzICYmIGFuaW1hdGlvbk5hbWUgJiYgaGFzUGF1c2VBbmltYXRpb25BUEkg
JiYgIWxheW91dFRlc3RDb250cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGFuaW1hdGlvbk5hbWUsIHRpbWUsIGVsZW1lbnRJZDIpKSB7CisgICAgICAgICAgICByZXN1
bHQgKz0gIkZBSUwgLSBhbmltYXRpb24gXCIiICsgYW5pbWF0aW9uTmFtZSArICJcIiBpcyBub3Qg
cnVubmluZyIgKyAiPGJyPiI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHZhciBjb21wdXRlZFZhbHVlLCBjb21wdXRlZFZhbHVlMjsKKyAgICAgICAg
dmFyIHBhc3MgPSB0cnVlOwogICAgICAgICBpZiAoIXByb3BlcnR5LmluZGV4T2YoIndlYmtpdFRy
YW5zZm9ybSIpKSB7CiAgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkud2Via2l0VHJhbnNm
b3JtOwotCi0gICAgICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gInN0cmluZyIp
Ci0gICAgICAgICAgICAgICAgcGFzcyA9IChjb21wdXRlZFZhbHVlID09IGV4cGVjdGVkVmFsdWUp
OwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gIm51bWJlciIp
IHsKLSAgICAgICAgICAgICAgICB2YXIgbSA9IGNvbXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKLSAg
ICAgICAgICAgICAgICB2YXIgbSA9IG1bMV0uc3BsaXQoIiwiKTsKLSAgICAgICAgICAgICAgICBw
YXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0KG1bcGFyc2VJbnQocHJvcGVydHkuc3Vic3Ry
aW5nKDE2KSldKSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgdmFyIG0gPSBjb21wdXRlZFZhbHVlLnNwbGl0KCIoIik7Ci0g
ICAgICAgICAgICAgICAgdmFyIG0gPSBtWzFdLnNwbGl0KCIsIik7Ci0gICAgICAgICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2gocGFyc2VGbG9hdChtW2ldKSwgZXhwZWN0ZWRW
YWx1ZVtpXSwgdG9sZXJhbmNlKTsKKyAgICAgICAgICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsK
KyAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlMiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZDIpKS53ZWJraXRUcmFuc2Zvcm07Cisg
ICAgICAgICAgICAgICAgdmFyIG0xID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZhbHVl
KTsKKyAgICAgICAgICAgICAgICB2YXIgbTIgPSBtYXRyaXhTdHJpbmdUb0FycmF5KGNvbXB1dGVk
VmFsdWUyKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdl
IGFzc3VtZSB0aGF0IGJvdGggbWF0cmljZXMgYXJlIGVpdGhlciBib3RoIDJEIG9yIGJvdGggM0QK
KyAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAoY29tcHV0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwg
NykgPT0gIm1hdHJpeDNkIikgPyAxNiA6IDY7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3Nl
RW5vdWdoKHBhcnNlRmxvYXQobTFbaV0pLCBtMltpXSwgdG9sZXJhbmNlKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKHR5cGVvZiBleHBlY3RlZFZhbHVlID09ICJzdHJpbmciKQorICAgICAg
ICAgICAgICAgICAgICBwYXNzID0gKGNvbXB1dGVkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gIm51bWJlciIp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBtYXRyaXhTdHJpbmdUb0FycmF5KGNvbXB1
dGVkVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChwYXJz
ZUZsb2F0KG1bcGFyc2VJbnQocHJvcGVydHkuc3Vic3RyaW5nKDE2KSldKSwgZXhwZWN0ZWRWYWx1
ZSwgdG9sZXJhbmNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgbSA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBleHBlY3RlZFZhbHVlLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0
KG1baV0pLCBleHBlY3RlZFZhbHVlW2ldLCB0b2xlcmFuY2UpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwYXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09ICJsaW5lSGVpZ2h0IikgewogICAgICAgICAgICAg
Y29tcHV0ZWRWYWx1ZSA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmxpbmVIZWlnaHQpOwotICAgICAgICAgICAgcGFz
cyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNl
KTsKLSAgICAgICAgfSBlbHNlIHsgICAgCisgICAgICAgICAgICBpZiAoY29tcGFyZUVsZW1lbnRz
KSB7CisgICAgICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZTIgPSBwYXJzZUludCh3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQyKSkubGluZUhl
aWdodCk7CisgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1
ZSwgY29tcHV0ZWRWYWx1ZTIsIHRvbGVyYW5jZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29tcHV0ZWRWYWx1
ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHZhciBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7
CiAgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gY29tcHV0ZWRTdHlsZS5nZXRGbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpOwotICAgICAgICAgICAgcGFzcyA9IGlzQ2xv
c2VFbm91Z2goY29tcHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKKyAgICAg
ICAgICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29tcHV0
ZWRTdHlsZTIgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChlbGVtZW50SWQyKSkuZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgICAg
ICAgICAgY29tcHV0ZWRWYWx1ZTIgPSBjb21wdXRlZFN0eWxlMi5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3Nl
RW5vdWdoKGNvbXB1dGVkVmFsdWUsIGNvbXB1dGVkVmFsdWUyLCB0b2xlcmFuY2UpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3Nl
RW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5jZSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAocGFzcykKLSAgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyAtIFwi
IiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgZWxl
bWVudCBhdCAiICsgdGltZSArICJzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86ICIgKyBleHBlY3Rl
ZFZhbHVlICsgIjxicj4iOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgKz0gIkZB
SUwgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsg
IlwiIGVsZW1lbnQgYXQgIiArIHRpbWUgKyAicyBleHBlY3RlZDogIiArIGV4cGVjdGVkVmFsdWUg
KyAiIGJ1dCBzYXc6ICIgKyBjb21wdXRlZFZhbHVlICsgIjxicj4iOworICAgICAgICBpZiAoY29t
cGFyZUVsZW1lbnRzKSB7CisgICAgICAgICAgICBpZiAocGFzcykKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gIlBBU1MgLSBcIiIgKyBwcm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsg
ZWxlbWVudElkICsgIlwiIGFuZCBcIiIgKyBlbGVtZW50SWQyICsgIlwiIGVsZW1lbnRzIGF0ICIg
KyB0aW1lICsgInMgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyIiArICI8YnI+IjsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBcIiIgKyBw
cm9wZXJ0eSArICJcIiBwcm9wZXJ0eSBmb3IgXCIiICsgZWxlbWVudElkICsgIlwiIGFuZCBcIiIg
KyBlbGVtZW50SWQyICsgIlwiIGVsZW1lbnRzIGF0ICIgKyB0aW1lICsgInMgc2F3OiBcIiIgKyBj
b21wdXRlZFZhbHVlICsgIlwiIGFuZCBcIiIgKyBjb21wdXRlZFZhbHVlMiArICJcIiB3aGljaCBh
cmUgbm90IGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyIiArICI8YnI+IjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChwYXNzKQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAi
UEFTUyAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQg
KyAiXCIgZWxlbWVudCBhdCAiICsgdGltZSArICJzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86ICIg
KyBleHBlY3RlZFZhbHVlICsgIjxicj4iOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJlc3VsdCArPSAiRkFJTCAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBc
IiIgKyBlbGVtZW50SWQgKyAiXCIgZWxlbWVudCBhdCAiICsgdGltZSArICJzIGV4cGVjdGVkOiAi
ICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IHNhdzogIiArIGNvbXB1dGVkVmFsdWUgKyAiPGJyPiI7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBmdW5jdGlvbiBlbmRUZXN0KCkKSW5kZXg6IExheW91
dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LWxlZnQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LWxl
ZnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9z
aW11bHRhbmVvdXMtc3RhcnQtbGVmdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxlZnQgcHJv
cGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMTAgc2Vjb25kcy4gSXQgdGFrZXMgMyBzbmFwc2hvdHMg
YW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLgor
UEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogMTcwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIgZWxl
bWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNzAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3gxIiBhbmQgImJveDIiIGVsZW1lbnRzIGF0IDJzIGFyZSBjbG9zZSBlbm91
Z2ggdG8gZWFjaCBvdGhlcgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1l
bnQgYXQgNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNDEwCitQQVNTIC0gImxlZnQiIHByb3Bl
cnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCA1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MTAK
K1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBhbmQgImJveDIiIGVsZW1lbnRzIGF0
IDVzIGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlcgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0
eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgOHMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNjUwCitQ
QVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCA4cyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiA2NTAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBhbmQg
ImJveDIiIGVsZW1lbnRzIGF0IDhzIGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlcgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC1sZWZ0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQt
bGVmdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRh
bmVvdXMtc3RhcnQtbGVmdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACis8IURP
Q1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VO
IgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxh
bmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0IHNpbXVsdGFuZW91
cyBzdGFydGluZyBvZiB0d28gYW5pbWF0aW9uczwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgLXdlYmtpdC1h
bmltYXRpb24tZHVyYXRpb246IDEwczsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1m
dW5jdGlvbjogbGluZWFyOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogImFuaW0iOwor
ICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgImFuaW0iIHsKKyAgICAgICAgZnJvbSB7IGxl
ZnQ6IDEwcHg7IH0KKyAgICAgICAgdG8gICB7IGxlZnQ6IDgxMHB4OyB9CisgICAgfQorICAgICNi
b3gxIHsKKyAgICAgICAgdG9wOiAxMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OworICAgIH0KKyAgICAjYm94MiB7CisgICAgICAgIHRvcDogMTBweDsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCBzcmM9ImFuaW1h
dGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPjwvc2NyaXB0PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0i
dXRmLTgiPgorCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0
aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9s
ZXJhbmNlXQorICAgICAgWyJhbmltIiwgMiwgImJveDEiLCAibGVmdCIsIDE3MCwgNV0sCisgICAg
ICBbImFuaW0iLCAyLCAiYm94MiIsICJsZWZ0IiwgMTcwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDIs
IFsiYm94MSIsICJib3gyIl0sICJsZWZ0IiwgIiIsIDBdLAorICAgICAgWyJhbmltIiwgNSwgImJv
eDEiLCAibGVmdCIsIDQxMCwgNV0sCisgICAgICBbImFuaW0iLCA1LCAiYm94MiIsICJsZWZ0Iiwg
NDEwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDUsIFsiYm94MSIsICJib3gyIl0sICJsZWZ0IiwgIiIs
IDBdLAorICAgICAgWyJhbmltIiwgOCwgImJveDEiLCAibGVmdCIsIDY1MCwgNV0sCisgICAgICBb
ImFuaW0iLCA4LCAiYm94MiIsICJsZWZ0IiwgNjUwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDgsIFsi
Ym94MSIsICJib3gyIl0sICJsZWZ0IiwgIiIsIDBdLAorICAgIF07CisgICAgCisgICAgcnVuQW5p
bWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CisgICAgCisgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsZWZ0IHByb3Bl
cnR5LiBJdCBhbmltYXRlcyBvdmVyIDEwIHNlY29uZHMuCitJdCB0YWtlcyAzIHNuYXBzaG90cyBh
bmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuCis8
ZGl2IGlkPSJib3gxIiBjbGFzcz0iYm94Ij4KKzwvZGl2PgorPGRpdiBpZD0iYm94MiIgY2xhc3M9
ImJveCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5z
Zm9ybS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9z
aW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBwZXJmb3Jt
cyBhbiBhbmltYXRpb24gb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3Zl
ciAxMCBzZWNvbmRzLiBJdCB0YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3Vs
dCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuIFBBU1MgLSAid2Via2l0VHJhbnNmb3Jt
IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogMC4zMDkwMTcsMC45NTEwNTcKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBm
b3IgImJveDIiIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC4zMDkwMTcs
MC45NTEwNTcKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGFu
ZCAiYm94MiIgZWxlbWVudHMgYXQgMnMgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyCitQ
QVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDVz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IC0xLDAKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBw
cm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
LTEsMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgYW5kICJi
b3gyIiBlbGVtZW50cyBhdCA1cyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIKK1BBU1Mg
LSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgOHMgc2F3
IHNvbWV0aGluZyBjbG9zZSB0bzogMC4zMDkwMTcsLTAuOTUxMDU3CitQQVNTIC0gIndlYmtpdFRy
YW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDhzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IDAuMzA5MDE3LC0wLjk1MTA1NworUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHBy
b3BlcnR5IGZvciAiYm94MSIgYW5kICJib3gyIiBlbGVtZW50cyBhdCA4cyBhcmUgY2xvc2UgZW5v
dWdoIHRvIGVhY2ggb3RoZXIKKwpJbmRleDogTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRh
bmVvdXMtc3RhcnQtdHJhbnNmb3JtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0uaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdCBzaW11bHRhbmVvdXMgc3RhcnRpbmcgb2YgdHdvIGFu
aW1hdGlvbnM8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4i
PgorICAgIC5ib3ggeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgdG9wOiA0MHB4
OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTBz
OworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAg
ICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7CisgICAgfQorICAgIEAtd2Via2l0LWtl
eWZyYW1lcyAiYW5pbSIgeworICAgICAgICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZSgwZGVnKTsgfQorICAgICAgICB0byAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBk
ZWcpOyB9CisgICAgfQorICAgICNib3gxIHsKKyAgICAgICAgbGVmdDogNDBweDsKKyAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9CisgICAgI2JveDIgeworICAgICAgICBsZWZ0
OiAxNjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIH0KKyAgPC9zdHls
ZT4KKyAgPHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1
ZXMgPSBbCisgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3Bl
cnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWyJhbmltIiwgMiwgImJveDEi
LCAid2Via2l0VHJhbnNmb3JtIiwgWyAwLjMwOTAxNywgMC45NTEwNTcgXSwgMC4wNV0sCisgICAg
ICBbImFuaW0iLCAyLCAiYm94MiIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbIDAuMzA5MDE3LCAwLjk1
MTA1NyBdLCAwLjA1XSwKKyAgICAgIFsiYW5pbSIsIDIsIFsiYm94MSIsICJib3gyIl0sICJ3ZWJr
aXRUcmFuc2Zvcm0iLCAiIiwgMF0sCisgICAgICBbImFuaW0iLCA1LCAiYm94MSIsICJ3ZWJraXRU
cmFuc2Zvcm0iLCBbIC0xLCAwIF0sIDAuMDVdLAorICAgICAgWyJhbmltIiwgNSwgImJveDIiLCAi
d2Via2l0VHJhbnNmb3JtIiwgWyAtMSwgMCBdLCAwLjA1XSwKKyAgICAgIFsiYW5pbSIsIDUsIFsi
Ym94MSIsICJib3gyIl0sICJ3ZWJraXRUcmFuc2Zvcm0iLCAiIiwgMF0sCisgICAgICBbImFuaW0i
LCA4LCAiYm94MSIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbIDAuMzA5MDE3LCAtMC45NTEwNTcgXSwg
MC4wNV0sCisgICAgICBbImFuaW0iLCA4LCAiYm94MiIsICJ3ZWJraXRUcmFuc2Zvcm0iLCBbIDAu
MzA5MDE3LCAtMC45NTEwNTcgXSwgMC4wNV0sCisgICAgICBbImFuaW0iLCA4LCBbImJveDEiLCAi
Ym94MiJdLCAid2Via2l0VHJhbnNmb3JtIiwgIiIsIDBdLAorICAgIF07CisgICAgCisgICAgcnVu
QW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CisgICAgCisgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSB0cmFuc2Zv
cm0gcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMTAgc2Vjb25kcy4KK0l0IHRha2VzIDMgc25h
cHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCBy
YW5nZS4KKzxkaXYgaWQ9ImJveDEiIGNsYXNzPSJib3giPgorPC9kaXY+Cis8ZGl2IGlkPSJib3gy
IiBjbGFzcz0iYm94Ij4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0IiBzdHlsZT0icG9zaXRpb246
YWJzb2x1dGU7IHRvcDoxNTBweCI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="12263"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26161</attachid>
            <date>2008-12-19 14:51:20 -0800</date>
            <delta_ts>2009-01-06 13:02:38 -0800</delta_ts>
            <desc>Replacement patch</desc>
            <filename>22870.patch</filename>
            <type>text/plain</type>
            <size>30875</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTQxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDgtMTItMTkgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RzOiBhbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC1sZWZ0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGFuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS5odG1sCisKKyAgICAg
ICAgRml4ZWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODcwCisg
CisgICAgICAgIEkgYWRkZWQgY2FsbHMgYmVnaW5BbmltYXRpb25VcGRhdGUoKSBhbmQgZW5kQW5p
bWF0aW9uVXBkYXRlKCkgY2FsbHMKKyAgICAgICAgdG8gQW5pbWF0aW9uQ29udHJvbGxlci4gVGhl
c2UgYXJlIGNhbGxlZCBieSBEb2N1bWVudCBhdCB0aGUgc3RhcnQKKyAgICAgICAgYW5kIGVuZCBv
ZiB0aGUgcmVjYWxjU3R5bGUgY3ljbGUuIFJpZ2h0IG5vdywgSSdtIGp1c3QgdXNpbmcgdGhlIAor
ICAgICAgICBiZWdpbkFuaW1hdGlvblVwZGF0ZSgpIG1ldGhvZCB0byByZXNldCBhbiBhbmltYXRp
b24gdGltZSB2YWx1ZS4KKyAgICAgICAgVGhlIGZpcnN0IHRpbWUgdGhlIGFuaW1hdGlvbiB0aW1l
IGlzIGFjY2Vzc2VkIGFmdGVyIHRoaXMgcmVzZXQgSSBzZXQKKyAgICAgICAgaXQgdG8gdGhlIGN1
cnJlbnRUaW1lLiBTbyBhbGwgYW5pbWF0aW9ucyBpbiB0aGF0IGN5Y2xlIGdldCB0aGUgc2FtZQor
ICAgICAgICBzdGFydCB0aW1lLiAKKworICAgICAgICBUaGUgdGVzdCBjYXNlcyBjaGVja2VkIGlu
IHRlc3QgdGhpcywgYnV0IGluIHRoZSBjYXNlIG9mIHRoZSAnbGVmdCcKKyAgICAgICAgdGVzdCBp
dCBhY3R1YWxseSBkb2Vzbid0IG1ha2UgYW55IGRpZmZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gVGhp
cyBpcworICAgICAgICBiZWNhdXNlIHZhbHVlcyBhcmUgY2xhbXBlZCB0byB3aG9sZSBwaXhlbHMs
IHNvIHRoZSBzdGFydCB0aW1lcyB3b3VsZCAKKyAgICAgICAgaGF2ZSB0byBiZSBwcmV0dHkgZmFy
IG9mZiBmb3IgdGhlIHRlc3QgdG8gZmFpbCB1c2luZyB0aGUgb2xkCisgICAgICAgIGN1cnJlbnRU
aW1lKCkgbW9kZWwuIFN0aWxsLCB1bmRlciByZWFsbHkgaGVhdnkgbG9hZCwgaXQncyBwb3NzaWJs
ZSBmb3IKKyAgICAgICAgdGhlIHRlc3QgdG8gZmFpbCB3aXRob3V0IHRoZXNlIGNoYW5nZXMuCisK
KyAgICAgICAgVGhlICd0cmFuc2Zvcm0nIHRlc3QgaXMgYW5vdGhlciBzdG9yeS4gSXQgYW5pbWF0
ZXMgdG8gdGhlIGZ1bGwgcmVzb2x1dGlvbgorICAgICAgICBvZiBhIGZsb2F0aW5nIHBvaW50IG51
bWJlciwgc28gdGhlIHRlc3QgZmFpbHMgbWlzZXJhYmx5IHdpdGhvdXQgdGhpcworICAgICAgICBm
aXguCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFj
aGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZl
bnRzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6d2lsbE5lZWRT
ZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnByb2dyZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmdvSW50b0VuZGluZ09yTG9vcGluZ1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmJlZ2luQW5pbWF0aW9uVXBkYXRl
VGltZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c2V0QmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpiZWdpbkFuaW1hdGlvblVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjplbmRBbmltYXRpb25V
cGRhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisKIDIwMDgtMTItMTkgIFN0
ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQu
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAzOTQwNykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNCw3ICsxMTA0LDkgQEAgdm9pZCBEb2N1bWVudDo6
cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgYwogICAgIAogICAgIGlmIChtX2luU3R5bGVSZWNhbGMp
CiAgICAgICAgIHJldHVybjsgLy8gR3VhcmQgYWdhaW5zdCByZS1lbnRyYW5jeS4gLWR3aAotICAg
ICAgICAKKyAgICAKKyAgICBtX2ZyYW1lLT5hbmltYXRpb24oKS0+YmVnaW5BbmltYXRpb25VcGRh
dGUoKTsKKwogICAgIG1faW5TdHlsZVJlY2FsYyA9IHRydWU7CiAgICAgc3VzcGVuZFBvc3RBdHRh
Y2hDYWxsYmFja3MoKTsKICAgICAKQEAgLTExNjksNiArMTE3MSw4IEBAIGJhaWxfb3V0OgogICAg
ICAgICBtX2Nsb3NlQWZ0ZXJTdHlsZVJlY2FsYyA9IGZhbHNlOwogICAgICAgICBpbXBsaWNpdENs
b3NlKCk7CiAgICAgfQorICAgIAorICAgIG1fZnJhbWUtPmFuaW1hdGlvbigpLT5lbmRBbmltYXRp
b25VcGRhdGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6dXBkYXRlUmVuZGVyaW5nKCkKSW5kZXg6
IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAkocmV2aXNpb24gMzk0MDcp
CisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1h
Y2hpbmUoQQogICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIEFuaW1hdGlvblN0YXRlU3RhcnRX
YWl0UmVzcG9uc2UsIHRoZSBhbmltYXRpb24gd2lsbCBnZXQgY2FuY2VsZWQgYmVmb3JlIAogICAg
ICAgICAgICAgLy8gd2UgZ2V0IGEgcmVzcG9uc2UsIHNvIG1vdmUgdG8gdGhlIG5leHQgc3RhdGUu
CiAgICAgICAgICAgICBlbmRBbmltYXRpb24oZmFsc2UpOwotICAgICAgICAgICAgdXBkYXRlU3Rh
dGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXRTdGFydFRpbWVTZXQsIGN1cnJlbnRUaW1lKCkp
OworICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXRTdGFy
dFRpbWVTZXQsIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6
dXBkYXRlU3RhdGVNYWNoaW5lKEEKICAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9PSBBbmltYXRp
b25TdGF0ZUlucHV0U3RhcnRBbmltYXRpb24gfHwgaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1
dFBsYXlTdGF0ZVJ1bm5uaW5nIHx8IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXRQbGF5U3Rh
dGVQYXVzZWQpOwogICAgICAgICAgICAgaWYgKGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXRT
dGFydEFuaW1hdGlvbiB8fCBpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0UGxheVN0YXRlUnVu
bm5pbmcpIHsKICAgICAgICAgICAgICAgICBtX3dhaXRlZEZvclJlc3BvbnNlID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOworICAg
ICAgICAgICAgICAgIG1fcmVxdWVzdGVkU3RhcnRUaW1lID0gYmVnaW5BbmltYXRpb25VcGRhdGVU
aW1lKCk7CiAgICAgICAgICAgICAgICAgbV9hbmltU3RhdGUgPSBBbmltYXRpb25TdGF0ZVN0YXJ0
V2FpdFRpbWVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC01NzEsNyAr
NTcxLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQQogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXBhdXNlZCgpKTsKICAgICAg
ICAgICAgICAgICAvLyBXZSdyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSBh
bmQgd2UgZ290IGEgcGF1c2UuIENhbmNlbCB0aGUgdGltZXIsIHBhdXNlIGFuZCB3YWl0Ci0gICAg
ICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgICAgICAgICAgICAg
IG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCk7CiAgICAgICAgICAgICAg
ICAgbV9hbmltU3RhdGUgPSBBbmltYXRpb25TdGF0ZVBhdXNlZFdhaXRUaW1lcjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgQW5pbWF0
aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEEKICAgICAgICAgICAgIGlmIChvdmVycmlkZGVu
KCkgfHwgIXN0YXJ0QW5pbWF0aW9uKDApKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgbm90
IGdvaW5nIHRvIGdldCBhIHN0YXJ0VGltZSBjYWxsYmFjaywgc28gZmlyZSB0aGUgc3RhcnQgdGlt
ZSBoZXJlCiAgICAgICAgICAgICAgICAgbV9hbmltU3RhdGUgPSBBbmltYXRpb25TdGF0ZVN0YXJ0
V2FpdFJlc3BvbnNlOwotICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRp
b25TdGF0ZUlucHV0U3RhcnRUaW1lU2V0LCBjdXJyZW50VGltZSgpKTsKKyAgICAgICAgICAgICAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCwgYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lKCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgbV93YWl0ZWRGb3JSZXNwb25zZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTYzMyw3ICs2MzMsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShB
CiAgICAgICAgICAgICAgICAgZ29JbnRvRW5kaW5nT3JMb29waW5nU3RhdGUoKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgcnVu
bmluZy4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQKLSAgICAgICAgICAgICAgICBtX3Bh
dXNlVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBi
ZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKTsKICAgICAgICAgICAgICAgICBlbmRBbmltYXRpb24o
ZmFsc2UpOwogICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVQYXVz
ZWRSdW47CiAgICAgICAgICAgICB9CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBBbmltYXRpb25C
YXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgcnVubmlu
Zy4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQKLSAgICAgICAgICAgICAgICBtX3BhdXNl
VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBiZWdp
bkFuaW1hdGlvblVwZGF0ZVRpbWUoKTsKICAgICAgICAgICAgICAgICBlbmRBbmltYXRpb24oZmFs
c2UpOwogICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVQYXVzZWRS
dW47CiAgICAgICAgICAgICB9CkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBBbmltYXRpb25CYXNl
Ojp1cGRhdGVTdGF0ZU1hY2hpbmUoQQogICAgICAgICAgICAgQVNTRVJUKGlucHV0ID09IEFuaW1h
dGlvblN0YXRlSW5wdXRQbGF5U3RhdGVSdW5ubmluZyk7CiAgICAgICAgICAgICBBU1NFUlQocGF1
c2VkKCkpOwogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSB0aW1lcwotICAgICAgICAgICAgbV9z
dGFydFRpbWUgKz0gY3VycmVudFRpbWUoKSAtIG1fcGF1c2VUaW1lOworICAgICAgICAgICAgbV9z
dGFydFRpbWUgKz0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3BhdXNlVGltZTsKICAg
ICAgICAgICAgIG1fcGF1c2VUaW1lID0gLTE7CiAKICAgICAgICAgICAgIC8vIHdlIHdlcmUgd2Fp
dGluZyBmb3IgdGhlIHN0YXJ0IHRpbWVyIHRvIGZpcmUsIGdvIGJhY2sgYW5kIHdhaXQgYWdhaW4K
QEAgLTY4NCw3ICs2ODQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGlu
ZShBCiAgICAgICAgICAgICBBU1NFUlQocGF1c2VkKCkpOwogICAgICAgICAgICAgLy8gVXBkYXRl
IHRoZSB0aW1lcwogICAgICAgICAgICAgaWYgKG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRl
UGF1c2VkUnVuKQotICAgICAgICAgICAgICAgIG1fc3RhcnRUaW1lICs9IGN1cnJlbnRUaW1lKCkg
LSBtX3BhdXNlVGltZTsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0VGltZSArPSBiZWdpbkFuaW1h
dGlvblVwZGF0ZVRpbWUoKSAtIG1fcGF1c2VUaW1lOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsKICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gLTE7
CkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hp
bmUoQQogICAgICAgICAgICAgLy8gU3RhcnQgdGhlIGFuaW1hdGlvbgogICAgICAgICAgICAgaWYg
KG92ZXJyaWRkZW4oKSB8fCAhc3RhcnRBbmltYXRpb24obV9zdGFydFRpbWUpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gV2UncmUgbm90IGdvaW5nIHRvIGdldCBhIHN0YXJ0VGltZSBjYWxsYmFjaywg
c28gZmlyZSB0aGUgc3RhcnQgdGltZSBoZXJlCi0gICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVN
YWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXRTdGFydFRpbWVTZXQsIGN1cnJlbnRUaW1lKCkpOwor
ICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0U3Rh
cnRUaW1lU2V0LCBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBtX3dhaXRlZEZvclJlc3BvbnNlID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNzIwLDEyICs3MjAsMTIgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJl
QW5pbWF0aW9uRXZlbnRzSQogICAgIAogICAgIC8vIENoZWNrIGZvciBzdGFydCB0aW1lb3V0CiAg
ICAgaWYgKG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0VGltZXIpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRUaW1lKCkgLSBtX3JlcXVlc3RlZFN0YXJ0VGltZSA+PSBtX2FuaW1h
dGlvbi0+ZGVsYXkoKSkKKyAgICAgICAgaWYgKGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0g
bV9yZXF1ZXN0ZWRTdGFydFRpbWUgPj0gbV9hbmltYXRpb24tPmRlbGF5KCkpCiAgICAgICAgICAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZXJGaXJlZCwg
MCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgZG91YmxlIGVsYXBzZWREdXJh
dGlvbiA9IGN1cnJlbnRUaW1lKCkgLSBtX3N0YXJ0VGltZTsKKyAgICBkb3VibGUgZWxhcHNlZER1
cmF0aW9uID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZTsKICAgICBB
U1NFUlQoZWxhcHNlZER1cmF0aW9uID49IDApOwogICAgIAogICAgIC8vIENoZWNrIGZvciBlbmQg
dGltZW91dApAQCAtNzY3LDcgKzc2Nyw3IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjp3aWxsTmVl
ZFNlcnZpY2UoKSAKICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAKICAgICBpZiAobV9hbmlt
U3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVTdGFydFdhaXRUaW1lcikgewotICAgICAgICBkb3VibGUg
dGltZUZyb21Ob3cgPSBtX2FuaW1hdGlvbi0+ZGVsYXkoKSAtIChjdXJyZW50VGltZSgpIC0gbV9y
ZXF1ZXN0ZWRTdGFydFRpbWUpOworICAgICAgICBkb3VibGUgdGltZUZyb21Ob3cgPSBtX2FuaW1h
dGlvbi0+ZGVsYXkoKSAtIChiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fcmVxdWVzdGVk
U3RhcnRUaW1lKTsKICAgICAgICAgcmV0dXJuIChmbG9hdCkgKCh0aW1lRnJvbU5vdyA+IDApID8g
dGltZUZyb21Ob3cgOiAwKTsKICAgICB9CiAgICAgCkBAIC03ODAsNyArNzgwLDcgQEAgZG91Ymxl
IEFuaW1hdGlvbkJhc2U6OnByb2dyZXNzKGRvdWJsZSBzYwogICAgIGlmIChwcmVBY3RpdmUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSBydW5uaW5nKCkg
JiYgIXBhdXNlZCgpID8gKGN1cnJlbnRUaW1lKCkgLSBtX3N0YXJ0VGltZSkgOiAobV9wYXVzZVRp
bWUgLSBtX3N0YXJ0VGltZSk7CisgICAgZG91YmxlIGVsYXBzZWRUaW1lID0gcnVubmluZygpICYm
ICFwYXVzZWQoKSA/IChiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3RhcnRUaW1lKSA6
IChtX3BhdXNlVGltZSAtIG1fc3RhcnRUaW1lKTsKICAgICBpZiAocnVubmluZygpICYmIGVsYXBz
ZWRUaW1lIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lk
IEFuaW1hdGlvbkJhc2U6OmdvSW50b0VuZGluZ09yTG9vcGluCiAgICAgaWYgKG1fYW5pbWF0aW9u
LT5pdGVyYXRpb25Db3VudCgpID4gMCkKICAgICAgICAgdG90YWxEdXJhdGlvbiA9IG1fYW5pbWF0
aW9uLT5kdXJhdGlvbigpICogbV9hbmltYXRpb24tPml0ZXJhdGlvbkNvdW50KCk7CiAKLSAgICBj
b25zdCBkb3VibGUgZWxhcHNlZER1cmF0aW9uID0gY3VycmVudFRpbWUoKSAtIG1fc3RhcnRUaW1l
OworICAgIGNvbnN0IGRvdWJsZSBlbGFwc2VkRHVyYXRpb24gPSBiZWdpbkFuaW1hdGlvblVwZGF0
ZVRpbWUoKSAtIG1fc3RhcnRUaW1lOwogICAgIEFTU0VSVChlbGFwc2VkRHVyYXRpb24gPj0gMCk7
CiAgICAgZG91YmxlIGR1cmF0aW9uTGVmdCA9IDA7CiAgICAgZG91YmxlIG5leHRJdGVyYXRpb25U
aW1lID0gdG90YWxEdXJhdGlvbjsKQEAgLTg1Miw0ICs4NTIsOSBAQCB2b2lkIEFuaW1hdGlvbkJh
c2U6OnBhdXNlQXRUaW1lKGRvdWJsZSB0CiAgICAgbV9wYXVzZVRpbWUgPSBtX3N0YXJ0VGltZSAr
IHQgLSBtX2FuaW1hdGlvbi0+ZGVsYXkoKTsKIH0KIAorZG91YmxlIEFuaW1hdGlvbkJhc2U6OmJl
Z2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tcEFuaW0t
PmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5oCShyZXZpc2lvbiAzOTQwNykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgcGF1c2VBdFRpbWUoZG91YmxlIHQpOwogICAgIAorICAgIGRvdWJsZSBi
ZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSBjb25zdDsKKyAgICAKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgb3ZlcnJpZGVBbmltYXRpb25zKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
c3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCkgeyB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDM5NDA3KQorKysgV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiU3lzdGVtVGltZS5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGRvdWJsZSBjQW5pbWF0aW9uVGltZXJEZWxheSA9IDAuMDI1Oworc3RhdGljIGNvbnN0IGRv
dWJsZSBjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0ID0gLTE7CiAKIGNsYXNzIEFuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlIHsKIHB1YmxpYzoKQEAgLTY1LDYgKzY3LDE1IEBAIHB1Ymxp
YzoKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlck9iamVjdCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgZG91YmxlIHQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJl
bmRlck9iamVjdCosIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KTsKIAorICAgIGRv
dWJsZSBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lID09IGNCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWVOb3RTZXQp
CisgICAgICAgICAgICBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgICAgIHJldHVybiBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBzZXRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoZG91YmxlIHQpIHsgbV9iZWdp
bkFuaW1hdGlvblVwZGF0ZVRpbWUgPSB0OyB9CisgICAgCiBwcml2YXRlOgogICAgIHR5cGVkZWYg
SGFzaE1hcDxSZW5kZXJPYmplY3QqLCBSZWZQdHI8Q29tcG9zaXRlQW5pbWF0aW9uPiA+IFJlbmRl
ck9iamVjdEFuaW1hdGlvbk1hcDsKIApAQCAtODIsMTIgKzkzLDE1IEBAIHByaXZhdGU6CiAgICAg
fTsKICAgICAKICAgICBWZWN0b3I8RXZlbnRUb0Rpc3BhdGNoPiBtX2V2ZW50c1RvRGlzcGF0Y2g7
CisgICAgCisgICAgZG91YmxlIG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lOwogfTsKIAogQW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlKEZyYW1l
KiBmcmFtZSkKICAgICA6IG1fYW5pbWF0aW9uVGltZXIodGhpcywgJkFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjphbmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV91cGRhdGVSZW5kZXJpbmdE
aXNwYXRjaGVyKHRoaXMsICZBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlUmVuZGVy
aW5nRGlzcGF0Y2hlckZpcmVkKQogICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fYmVnaW5B
bmltYXRpb25VcGRhdGVUaW1lKGNCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWVOb3RTZXQpCiB7CiB9
CiAKQEAgLTMxNiw3ICszMzAsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFu
aW1hdGlvCiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRyb2xsZXI6
OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIG5l
d1N0eWxlKQoteyAgICAKK3sKICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSBpbiB0
aGUgY2FjaGUKICAgICBpZiAoIXJlbmRlcmVyLT5kb2N1bWVudCgpIHx8IHJlbmRlcmVyLT5kb2N1
bWVudCgpLT5pblBhZ2VDYWNoZSgpKQogICAgICAgICByZXR1cm4gbmV3U3R5bGU7CkBAIC00MDIs
NCArNDE2LDE4IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlcjo6c3R5bGVBdmFpbGFibGUKICAg
ICBtX2RhdGEtPnN0eWxlQXZhaWxhYmxlKCk7CiB9CiAKK2RvdWJsZSBBbmltYXRpb25Db250cm9s
bGVyOjpiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKQoreworICAgIHJldHVybiBtX2RhdGEtPmJl
Z2luQW5pbWF0aW9uVXBkYXRlVGltZSgpOworfQorCit2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6
OmJlZ2luQW5pbWF0aW9uVXBkYXRlKCkKK3sKKyAgICBtX2RhdGEtPnNldEJlZ2luQW5pbWF0aW9u
VXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0KTsKK30KKwordm9pZCBB
bmltYXRpb25Db250cm9sbGVyOjplbmRBbmltYXRpb25VcGRhdGUoKQoreworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMzk0MDcpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTEgQEAg
cHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX251bVN0eWxlQXZhaWxhYmxlV2Fp
dGVycy0tOwogICAgIH0KKyAgICAKKyAgICBkb3VibGUgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1l
KCk7CisgICAgCisgICAgdm9pZCBiZWdpbkFuaW1hdGlvblVwZGF0ZSgpOworICAgIHZvaWQgZW5k
QW5pbWF0aW9uVXBkYXRlKCk7CiAKIHByaXZhdGU6CiAgICAgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGUqIG1fZGF0YTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmlt
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVB
bmltYXRpb24uY3BwCShyZXZpc2lvbiAzOTQwNykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHZv
aWQgS2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQKICAgICAvLyBXZSBzaG91bGQg
Y2FjaGUgdGhlIGxhc3QgcGFpciBvciBzb21ldGhpbmcuCiAKICAgICAvLyBGaW5kIHRoZSBmaXJz
dCBrZXkKLSAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSAobV9zdGFydFRpbWUgPiAwIHx8IG1fcGF1
c2VUaW1lID4gMCkgPyAoKCFwYXVzZWQoKSA/IGN1cnJlbnRUaW1lKCkgOiBtX3BhdXNlVGltZSkg
LSBtX3N0YXJ0VGltZSkgOiAwOworICAgIGRvdWJsZSBlbGFwc2VkVGltZSA9IChtX3N0YXJ0VGlt
ZSA+IDAgfHwgbV9wYXVzZVRpbWUgPiAwKSA/ICgoIXBhdXNlZCgpID8gYmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lKCkgOiBtX3BhdXNlVGltZSkgLSBtX3N0YXJ0VGltZSkgOiAwOwogICAgIGlmIChl
bGFwc2VkVGltZSA8IDApCiAgICAgICAgIGVsYXBzZWRUaW1lID0gMDsKIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMzk0MTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAwOC0xMi0xOSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
bmltYXRpb25zL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanM6CisgICAgICAgIChydW5BbmltYXRp
b25UZXN0Lm1hdHJpeFN0cmluZ1RvQXJyYXkpOgorICAgICAgICAocnVuQW5pbWF0aW9uVGVzdC5j
aGVja0V4cGVjdGVkVmFsdWUpOgorICAgICAgICAqIGFuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0
YXJ0LWxlZnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3NpbXVs
dGFuZW91cy1zdGFydC1sZWZ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvc2lt
dWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGFuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS5odG1sOiBBZGRlZC4KKwog
MjAwOC0xMi0xOSAgUGFtZWxhIEdyZWVuZSAgPHBhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL2Fu
aW1hdGlvbi10ZXN0LWhlbHBlcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCShyZXZpc2lvbiAzOTQwNykKKysrIExheW91
dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTIsMTUgKzEyLDE5IEBAIEZ1bmN0aW9uIHBhcmFtZXRlcnM6CiAgICAgRWFjaCBzdWIt
YXJyYXkgbXVzdCBjb250YWluIHRoZXNlIGl0ZW1zIGluIHRoaXMgb3JkZXI6CiAgICAgLSB0aGUg
bmFtZSBvZiB0aGUgQ1NTIGFuaW1hdGlvbiAobWF5IGJlIG51bGwpIFsxXQogICAgIC0gdGhlIHRp
bWUgaW4gc2Vjb25kcyBhdCB3aGljaCB0byBzbmFwc2hvdCB0aGUgQ1NTIHByb3BlcnR5Ci0gICAg
LSB0aGUgaWQgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggdG8gZ2V0IHRoZSBDU1MgcHJvcGVydHkg
dmFsdWUKLSAgICAtIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gZ2V0IFsyXQorICAg
IC0gdGhlIGlkIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRvIGdldCB0aGUgQ1NTIHByb3BlcnR5
IHZhbHVlIFsyXQorICAgIC0gdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byBnZXQgWzNd
CiAgICAgLSB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVydHkKICAgICAtIHRo
ZSB0b2xlcmFuY2UgdG8gdXNlIHdoZW4gY29tcGFyaW5nIHRoZSBlZmZlY3RpdmUgQ1NTIHByb3Bl
cnR5IHZhbHVlIHdpdGggaXRzIGV4cGVjdGVkIHZhbHVlCiAKICAgICBbMV0gSWYgbnVsbCBpcyBw
YXNzZWQsIGEgcmVndWxhciBzZXRUaW1lb3V0KCkgd2lsbCBiZSB1c2VkIGluc3RlYWQgdG8gc25h
cHNob3QgdGhlIGFuaW1hdGVkIHByb3BlcnR5IGluIHRoZSBmdXR1cmUsCi0gICAgaW5zdGVhZCBv
ZiBmYXN0IGZvcndhcmRpbmcgdXNpbmcgdGhlIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkKCkgSlMgQVBJIGZyb20gRFJUIAorICAgIGluc3RlYWQgb2YgZmFzdCBmb3J3YXJkaW5n
IHVzaW5nIHRoZSBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCgpIEpTIEFQSSBm
cm9tIERSVAorICAgIAorICAgIFsyXSBJZiBhIHNpbmdsZSBzdHJpbmcgaXMgcGFzc2VkLCBpdCBp
cyB0aGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gdGVzdC4gSWYgYW4gYXJyYXkgd2l0aCAyIGVsZW1l
bnRzIGlzIHBhc3NlZCB0aGV5CisgICAgYXJlIHRoZSBpZHMgb2YgMiBlbGVtZW50cywgd2hvc2Ug
dmFsdWVzIGFyZSBjb21wYXJlZCBmb3IgZXF1YWxpdHkuIEluIHRoaXMgY2FzZSB0aGUgZXhwZWN0
ZWQgdmFsdWUgaXMgaWdub3JlZAorICAgIGJ1dCB0aGUgdG9sZXJhbmNlIGlzIHVzZWQgaW4gdGhl
IGNvbXBhcmlzb24uCiAKLSAgICBbMl0gSWYgdGhlIENTUyBwcm9wZXJ0eSBuYW1lIGlzICJ3ZWJr
aXRUcmFuc2Zvcm0iLCBleHBlY3RlZCB2YWx1ZSBtdXN0IGJlIGFuIGFycmF5IG9mIDEgb3IgbW9y
ZSBudW1iZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1hdHJpeCBlbGVtZW50cywKKyAgICBbM10g
SWYgdGhlIENTUyBwcm9wZXJ0eSBuYW1lIGlzICJ3ZWJraXRUcmFuc2Zvcm0iLCBleHBlY3RlZCB2
YWx1ZSBtdXN0IGJlIGFuIGFycmF5IG9mIDEgb3IgbW9yZSBudW1iZXJzIGNvcnJlc3BvbmRpbmcg
dG8gdGhlIG1hdHJpeCBlbGVtZW50cywKICAgICBvciBhIHN0cmluZyB3aGljaCB3aWxsIGJlIGNv
bXBhcmVkIGRpcmVjdGx5ICh1c2VmdWwgaWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzICJub25lIikK
ICAgICBJZiB0aGUgQ1NTIHByb3BlcnR5IG5hbWUgaXMgIndlYmtpdFRyYW5zZm9ybS5OIiwgZXhw
ZWN0ZWQgdmFsdWUgbXVzdCBiZSBhIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBOdGggZWxl
bWVudCBvZiB0aGUgbWF0cml4CiAKQEAgLTM1LDcgKzM5LDE0IEBAIGZ1bmN0aW9uIHJ1bkFuaW1h
dGlvblRlc3QoZXhwZWN0ZWQsIGNhbGwKICAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhhY3R1
YWwgLSBkZXNpcmVkKTsKICAgICAgICAgcmV0dXJuIGRpZmYgPD0gdG9sZXJhbmNlOwogICAgIH0K
LQorICAgIAorICAgIGZ1bmN0aW9uIG1hdHJpeFN0cmluZ1RvQXJyYXkocykKKyAgICB7CisgICAg
ICAgIHZhciBtID0gcy5zcGxpdCgiKCIpOworICAgICAgICBtID0gbVsxXS5zcGxpdCgiKSIpOwor
ICAgICAgICByZXR1cm4gbVswXS5zcGxpdCgiLCIpOworICAgIH0KKyAgICAKICAgICBmdW5jdGlv
biBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGluZGV4KQogICAgIHsKICAgICAgICAgdmFy
IGFuaW1hdGlvbk5hbWUgPSBleHBlY3RlZFtpbmRleF1bMF07CkBAIC00NSw0NCArNTYsOTAgQEAg
ZnVuY3Rpb24gcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZCwgY2FsbAogICAgICAgICB2YXIgZXhw
ZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkW2luZGV4XVs0XTsKICAgICAgICAgdmFyIHRvbGVyYW5jZSA9
IGV4cGVjdGVkW2luZGV4XVs1XTsKIAorICAgICAgICAvLyBDaGVjayBmb3IgYSBwYWlyIG9mIGVs
ZW1lbnQgSWRzCisgICAgICAgIHZhciBjb21wYXJlRWxlbWVudHMgPSBmYWxzZTsKKyAgICAgICAg
dmFyIGVsZW1lbnRJZDI7CisgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudElkICE9ICJzdHJpbmci
KSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudElkLmxlbmd0aCAhPSAyKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsZW1lbnRJZDIgPSBl
bGVtZW50SWRbMV07CisgICAgICAgICAgICBlbGVtZW50SWQgPSBlbGVtZW50SWRbMF07CisgICAg
ICAgICAgICBjb21wYXJlRWxlbWVudHMgPSB0cnVlOworICAgICAgICB9CisKICAgICAgICAgaWYg
KGFuaW1hdGlvbk5hbWUgJiYgaGFzUGF1c2VBbmltYXRpb25BUEkgJiYgIWxheW91dFRlc3RDb250
cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGFuaW1hdGlvbk5hbWUs
IHRpbWUsIGVsZW1lbnRJZCkpIHsKICAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAtIGFuaW1h
dGlvbiBcIiIgKyBhbmltYXRpb25OYW1lICsgIlwiIGlzIG5vdCBydW5uaW5nIiArICI8YnI+IjsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIHZhciBjb21wdXRlZFZh
bHVlOwotICAgICAgICB2YXIgcGFzczsKKyAgICAgICAgCisgICAgICAgIGlmIChjb21wYXJlRWxl
bWVudHMgJiYgYW5pbWF0aW9uTmFtZSAmJiBoYXNQYXVzZUFuaW1hdGlvbkFQSSAmJiAhbGF5b3V0
VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoYW5pbWF0
aW9uTmFtZSwgdGltZSwgZWxlbWVudElkMikpIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJ
TCAtIGFuaW1hdGlvbiBcIiIgKyBhbmltYXRpb25OYW1lICsgIlwiIGlzIG5vdCBydW5uaW5nIiAr
ICI8YnI+IjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdmFyIGNvbXB1dGVkVmFsdWUsIGNvbXB1dGVkVmFsdWUyOworICAgICAgICB2YXIgcGFzcyA9
IHRydWU7CiAgICAgICAgIGlmICghcHJvcGVydHkuaW5kZXhPZigid2Via2l0VHJhbnNmb3JtIikp
IHsKICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS53ZWJraXRUcmFuc2Zvcm07Ci0KLSAg
ICAgICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAic3RyaW5nIikKLSAgICAgICAg
ICAgICAgICBwYXNzID0gKGNvbXB1dGVkVmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAibnVtYmVyIikgewotICAgICAg
ICAgICAgICAgIHZhciBtID0gY29tcHV0ZWRWYWx1ZS5zcGxpdCgiKCIpOwotICAgICAgICAgICAg
ICAgIHZhciBtID0gbVsxXS5zcGxpdCgiLCIpOwotICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Ns
b3NlRW5vdWdoKHBhcnNlRmxvYXQobVtwYXJzZUludChwcm9wZXJ0eS5zdWJzdHJpbmcoMTYpKV0p
LCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICB2YXIgbSA9IGNvbXB1dGVkVmFsdWUuc3BsaXQoIigiKTsKLSAgICAgICAgICAg
ICAgICB2YXIgbSA9IG1bMV0uc3BsaXQoIiwiKTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgZXhwZWN0ZWRWYWx1ZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBw
YXNzID0gaXNDbG9zZUVub3VnaChwYXJzZUZsb2F0KG1baV0pLCBleHBlY3RlZFZhbHVlW2ldLCB0
b2xlcmFuY2UpOworICAgICAgICAgICAgaWYgKGNvbXBhcmVFbGVtZW50cykgeworICAgICAgICAg
ICAgICAgIGNvbXB1dGVkVmFsdWUyID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkMikpLndlYmtpdFRyYW5zZm9ybTsKKyAgICAgICAgICAg
ICAgICB2YXIgbTEgPSBtYXRyaXhTdHJpbmdUb0FycmF5KGNvbXB1dGVkVmFsdWUpOworICAgICAg
ICAgICAgICAgIHZhciBtMiA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZTIpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UgYXNzdW1lIHRo
YXQgYm90aCBtYXRyaWNlcyBhcmUgZWl0aGVyIGJvdGggMkQgb3IgYm90aCAzRAorICAgICAgICAg
ICAgICAgIHZhciBjb3VudCA9IChjb21wdXRlZFZhbHVlLnN1YnN0cmluZygwLCA3KSA9PSAibWF0
cml4M2QiKSA/IDE2IDogNjsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2gocGFy
c2VGbG9hdChtMVtpXSksIG0yW2ldLCB0b2xlcmFuY2UpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoIXBhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZiAodHlwZW9mIGV4cGVjdGVkVmFsdWUgPT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAg
ICAgIHBhc3MgPSAoY29tcHV0ZWRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWRWYWx1ZSA9PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgbSA9IG1hdHJpeFN0cmluZ1RvQXJyYXkoY29tcHV0ZWRWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKHBhcnNlRmxvYXQobVtw
YXJzZUludChwcm9wZXJ0eS5zdWJzdHJpbmcoMTYpKV0pLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFu
Y2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBt
ID0gbWF0cml4U3RyaW5nVG9BcnJheShjb21wdXRlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWUubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKHBhcnNlRmxvYXQobVtpXSksIGV4
cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXBhc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAocHJvcGVydHkgPT0gImxpbmVIZWlnaHQiKSB7CiAgICAgICAgICAgICBjb21wdXRlZFZh
bHVlID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKSkubGluZUhlaWdodCk7Ci0gICAgICAgICAgICBwYXNzID0gaXNDbG9z
ZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOwotICAgICAg
ICB9IGVsc2UgeyAgICAKKyAgICAgICAgICAgIGlmIChjb21wYXJlRWxlbWVudHMpIHsKKyAgICAg
ICAgICAgICAgICBjb21wdXRlZFZhbHVlMiA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZDIpKS5saW5lSGVpZ2h0KTsKKyAg
ICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBjb21wdXRl
ZFZhbHVlMiwgdG9sZXJhbmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3Rl
ZFZhbHVlLCB0b2xlcmFuY2UpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIGNv
bXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChlbGVtZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICAgICAg
ICAgIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZFN0eWxlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWUuQ1NTX05VTUJFUik7Ci0gICAgICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChj
b21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0b2xlcmFuY2UpOworICAgICAgICAgICAgaWYg
KGNvbXBhcmVFbGVtZW50cykgeworICAgICAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlMiA9
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJ
ZDIpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBjb21w
dXRlZFZhbHVlMiA9IGNvbXB1dGVkU3R5bGUyLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUuQ1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29t
cHV0ZWRWYWx1ZSwgY29tcHV0ZWRWYWx1ZTIsIHRvbGVyYW5jZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFzcyA9IGlzQ2xvc2VFbm91Z2goY29t
cHV0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgdG9sZXJhbmNlKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChwYXNzKQotICAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIC0gXCIiICsgcHJvcGVy
dHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVtZW50IGF0ICIg
KyB0aW1lICsgInMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogIiArIGV4cGVjdGVkVmFsdWUgKyAi
PGJyPiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAtIFwiIiAr
IHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgZWxlbWVu
dCBhdCAiICsgdGltZSArICJzIGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRWYWx1ZSArICIgYnV0IHNh
dzogIiArIGNvbXB1dGVkVmFsdWUgKyAiPGJyPiI7CisgICAgICAgIGlmIChjb21wYXJlRWxlbWVu
dHMpIHsKKyAgICAgICAgICAgIGlmIChwYXNzKQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAi
UEFTUyAtIFwiIiArIHByb3BlcnR5ICsgIlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQg
KyAiXCIgYW5kIFwiIiArIGVsZW1lbnRJZDIgKyAiXCIgZWxlbWVudHMgYXQgIiArIHRpbWUgKyAi
cyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIiICsgIjxicj4iOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCAtIFwiIiArIHByb3BlcnR5ICsg
IlwiIHByb3BlcnR5IGZvciBcIiIgKyBlbGVtZW50SWQgKyAiXCIgYW5kIFwiIiArIGVsZW1lbnRJ
ZDIgKyAiXCIgZWxlbWVudHMgYXQgIiArIHRpbWUgKyAicyBzYXc6IFwiIiArIGNvbXB1dGVkVmFs
dWUgKyAiXCIgYW5kIFwiIiArIGNvbXB1dGVkVmFsdWUyICsgIlwiIHdoaWNoIGFyZSBub3QgY2xv
c2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIiICsgIjxicj4iOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKHBhc3MpCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIC0gXCIi
ICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1lbnRJZCArICJcIiBlbGVt
ZW50IGF0ICIgKyB0aW1lICsgInMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogIiArIGV4cGVjdGVk
VmFsdWUgKyAiPGJyPiI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0
ICs9ICJGQUlMIC0gXCIiICsgcHJvcGVydHkgKyAiXCIgcHJvcGVydHkgZm9yIFwiIiArIGVsZW1l
bnRJZCArICJcIiBlbGVtZW50IGF0ICIgKyB0aW1lICsgInMgZXhwZWN0ZWQ6ICIgKyBleHBlY3Rl
ZFZhbHVlICsgIiBidXQgc2F3OiAiICsgY29tcHV0ZWRWYWx1ZSArICI8YnI+IjsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGVuZFRlc3QoKQpJbmRleDogTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtbGVmdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtbGVmdC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91
cy1zdGFydC1sZWZ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAor
VGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gSXQg
YW5pbWF0ZXMgb3ZlciAxMCBzZWNvbmRzLiBJdCB0YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0
cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuCitQQVNTIC0gImxl
ZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiAxNzAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDJz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE3MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3Ig
ImJveDEiIGFuZCAiYm94MiIgZWxlbWVudHMgYXQgMnMgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNo
IG90aGVyCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCA1cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MTAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3gyIiBlbGVtZW50IGF0IDVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDQxMAorUEFTUyAtICJs
ZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGFuZCAiYm94MiIgZWxlbWVudHMgYXQgNXMgYXJlIGNs
b3NlIGVub3VnaCB0byBlYWNoIG90aGVyCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94
MSIgZWxlbWVudCBhdCA4cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA2NTAKK1BBU1MgLSAibGVm
dCIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDhzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDY1MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGFuZCAiYm94MiIgZWxl
bWVudHMgYXQgOHMgYXJlIGNsb3NlIGVub3VnaCB0byBlYWNoIG90aGVyCisKSW5kZXg6IExheW91
dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LWxlZnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC1sZWZ0Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFy
dC1sZWZ0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1s
IFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCisgICAiaHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPGh0bWwgbGFuZz0iZW4iPgor
PGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Qgc2ltdWx0YW5lb3VzIHN0YXJ0aW5n
IG9mIHR3byBhbmltYXRpb25zPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAg
IGxlZnQ6IDEwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1k
dXJhdGlvbjogMTBzOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBs
aW5lYXI7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7CisgICAgfQorICAg
IEAtd2Via2l0LWtleWZyYW1lcyAiYW5pbSIgeworICAgICAgICBmcm9tIHsgbGVmdDogMTBweDsg
fQorICAgICAgICB0byAgIHsgbGVmdDogODEwcHg7IH0KKyAgICB9CisgICAgI2JveDEgeworICAg
ICAgICB0b3A6IDEwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgfQor
ICAgICNib3gyIHsKKyAgICAgICAgdG9wOiAxMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3Qt
aGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisK
KyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwg
dGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisg
ICAgICBbImFuaW0iLCAyLCAiYm94MSIsICJsZWZ0IiwgMTcwLCA1XSwKKyAgICAgIFsiYW5pbSIs
IDIsICJib3gyIiwgImxlZnQiLCAxNzAsIDVdLAorICAgICAgWyJhbmltIiwgMiwgWyJib3gxIiwg
ImJveDIiXSwgImxlZnQiLCAiIiwgMF0sCisgICAgICBbImFuaW0iLCA1LCAiYm94MSIsICJsZWZ0
IiwgNDEwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDUsICJib3gyIiwgImxlZnQiLCA0MTAsIDVdLAor
ICAgICAgWyJhbmltIiwgNSwgWyJib3gxIiwgImJveDIiXSwgImxlZnQiLCAiIiwgMF0sCisgICAg
ICBbImFuaW0iLCA4LCAiYm94MSIsICJsZWZ0IiwgNjUwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDgs
ICJib3gyIiwgImxlZnQiLCA2NTAsIDVdLAorICAgICAgWyJhbmltIiwgOCwgWyJib3gxIiwgImJv
eDIiXSwgImxlZnQiLCAiIiwgMF0sCisgICAgXTsKKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0
KGV4cGVjdGVkVmFsdWVzKTsKKyAgICAKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFu
aW1hdGVzIG92ZXIgMTAgc2Vjb25kcy4KK0l0IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3Rz
IGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4KKzxkaXYgaWQ9ImJv
eDEiIGNsYXNzPSJib3giPgorPC9kaXY+Cis8ZGl2IGlkPSJib3gyIiBjbGFzcz0iYm94Ij4KKzwv
ZGl2PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91
cy1zdGFydC10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1h
dGlvbiBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBJdCBhbmltYXRlcyBvdmVyIDEwIHNlY29u
ZHMuIEl0IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdp
dGhpbiBhIHNwZWNpZmllZCByYW5nZS4gUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5
IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAx
NywwLjk1MTA1NworUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MiIg
ZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1Nwor
UEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgYW5kICJib3gyIiBl
bGVtZW50cyBhdCAycyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIKK1BBU1MgLSAid2Vi
a2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgNXMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogLTEsMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZv
ciAiYm94MiIgZWxlbWVudCBhdCA1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAtMSwwCitQQVNT
IC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gxIiBhbmQgImJveDIiIGVsZW1l
bnRzIGF0IDVzIGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlcgorUEFTUyAtICJ3ZWJraXRU
cmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCA4cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAwLjMwOTAxNywtMC45NTEwNTcKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBw
cm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgOHMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MC4zMDkwMTcsLTAuOTUxMDU3CitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9y
ICJib3gxIiBhbmQgImJveDIiIGVsZW1lbnRzIGF0IDhzIGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFj
aCBvdGhlcgorCkluZGV4OiBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFy
dC10cmFuc2Zvcm0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hbmltYXRpb25zL3Np
bXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFRE
IEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+
CisgIDx0aXRsZT5UZXN0IHNpbXVsdGFuZW91cyBzdGFydGluZyBvZiB0d28gYW5pbWF0aW9uczwv
dGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJv
eCB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICB0b3A6IDQwcHg7CisgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xv
cjogYmx1ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAxMHM7CisgICAgICAt
d2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICAgIC13ZWJraXQt
YW5pbWF0aW9uLW5hbWU6ICJhbmltIjsKKyAgICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzICJh
bmltIiB7CisgICAgICAgIGZyb20geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9
CisgICAgICAgIHRvICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KKyAg
ICB9CisgICAgI2JveDEgeworICAgICAgICBsZWZ0OiA0MHB4OworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOworICAgIH0KKyAgICAjYm94MiB7CisgICAgICAgIGxlZnQ6IDE2MHB4Owor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorICA8L3N0eWxlPgorICA8c2Ny
aXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAg
ICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVj
dGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbImFuaW0iLCAyLCAiYm94MSIsICJ3ZWJraXRU
cmFuc2Zvcm0iLCBbIDAuMzA5MDE3LCAwLjk1MTA1NyBdLCAwLjA1XSwKKyAgICAgIFsiYW5pbSIs
IDIsICJib3gyIiwgIndlYmtpdFRyYW5zZm9ybSIsIFsgMC4zMDkwMTcsIDAuOTUxMDU3IF0sIDAu
MDVdLAorICAgICAgWyJhbmltIiwgMiwgWyJib3gxIiwgImJveDIiXSwgIndlYmtpdFRyYW5zZm9y
bSIsICIiLCAwXSwKKyAgICAgIFsiYW5pbSIsIDUsICJib3gxIiwgIndlYmtpdFRyYW5zZm9ybSIs
IFsgLTEsIDAgXSwgMC4wNV0sCisgICAgICBbImFuaW0iLCA1LCAiYm94MiIsICJ3ZWJraXRUcmFu
c2Zvcm0iLCBbIC0xLCAwIF0sIDAuMDVdLAorICAgICAgWyJhbmltIiwgNSwgWyJib3gxIiwgImJv
eDIiXSwgIndlYmtpdFRyYW5zZm9ybSIsICIiLCAwXSwKKyAgICAgIFsiYW5pbSIsIDgsICJib3gx
IiwgIndlYmtpdFRyYW5zZm9ybSIsIFsgMC4zMDkwMTcsIC0wLjk1MTA1NyBdLCAwLjA1XSwKKyAg
ICAgIFsiYW5pbSIsIDgsICJib3gyIiwgIndlYmtpdFRyYW5zZm9ybSIsIFsgMC4zMDkwMTcsIC0w
Ljk1MTA1NyBdLCAwLjA1XSwKKyAgICAgIFsiYW5pbSIsIDgsIFsiYm94MSIsICJib3gyIl0sICJ3
ZWJraXRUcmFuc2Zvcm0iLCAiIiwgMF0sCisgICAgXTsKKyAgICAKKyAgICBydW5BbmltYXRpb25U
ZXN0KGV4cGVjdGVkVmFsdWVzKTsKKyAgICAKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
K1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0
eS4gSXQgYW5pbWF0ZXMgb3ZlciAxMCBzZWNvbmRzLgorSXQgdGFrZXMgMyBzbmFwc2hvdHMgYW5k
IGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLgorPGRp
diBpZD0iYm94MSIgY2xhc3M9ImJveCI+Cis8L2Rpdj4KKzxkaXYgaWQ9ImJveDIiIGNsYXNzPSJi
b3giPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsg
dG9wOjE1MHB4Ij4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="12353"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>