<?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>96032</bug_id>
          
          <creation_ts>2012-09-06 15:24:55 -0700</creation_ts>
          <short_desc>New time input needs accessibility</short_desc>
          <delta_ts>2012-09-12 22:49:48 -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>Accessibility</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96050</dependson>
    
    <dependson>96076</dependson>
    
    <dependson>96081</dependson>
          <blocked>88970</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>keishi</cc>
    
    <cc>tkent</cc>
    
    <cc>yosin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713768</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-06 15:24:55 -0700</bug_when>
    <thetext>The shadow dom of the new &lt;input type=time&gt; implementation needs accessibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713790</commentid>
    <comment_count>1</comment_count>
      <attachid>162608</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-06 15:59:32 -0700</bug_when>
    <thetext>Created attachment 162608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713794</commentid>
    <comment_count>2</comment_count>
      <attachid>162608</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-06 16:04:16 -0700</bug_when>
    <thetext>Comment on attachment 162608
Patch

This isn&apos;t actually ready for review.

yosin, can you help finish this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714210</commentid>
    <comment_count>3</comment_count>
      <attachid>162690</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-07 00:28:42 -0700</bug_when>
    <thetext>Created attachment 162690
Proof of Concept 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714217</commentid>
    <comment_count>4</comment_count>
      <attachid>162690</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-07 00:34:31 -0700</bug_when>
    <thetext>Comment on attachment 162690
Proof of Concept 2

This is proof of concept, not for review neither commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714314</commentid>
    <comment_count>5</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-07 02:21:30 -0700</bug_when>
    <thetext>To fix this bug, we need to have localized strings in Chromium, http://codereview.chromium.org/10911141/
and DEPS in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717034</commentid>
    <comment_count>6</comment_count>
      <attachid>163327</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-11 04:00:01 -0700</bug_when>
    <thetext>Created attachment 163327
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717035</commentid>
    <comment_count>7</comment_count>
      <attachid>163327</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-11 04:02:26 -0700</bug_when>
    <thetext>Comment on attachment 163327
Patch 1

Could you review this patch?
Thanks in advance.

P.S.
This patch will be committed after Chromium r155713 is in WebKit/chromium/DEPS to use localized string in tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717277</commentid>
    <comment_count>8</comment_count>
      <attachid>163327</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 09:39:08 -0700</bug_when>
    <thetext>Comment on attachment 163327
Patch 1

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

My main question is why did you choose to put accessibility code inside these files instead of making accessibility elements that wrapped these objects (that&apos;s the existing pattern, of course whether it&apos;s better or not is a different question).  Thanks

&gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:135
&gt; +void DateTimeFieldElement::initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText)

where is the axHelpText being set? i didn&apos;t see it in this patch
Is this an example of it?
field-&gt;initialize(ampmPsuedoId, AXAMPMFieldText());

In that case, it seems that aria_helpAttr might not be the right attribute

&gt; Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp:37
&gt; +using namespace HTMLNames;

doesn&apos;t look like you need to use HTMLNames here based on changes to this file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717831</commentid>
    <comment_count>9</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-11 19:27:58 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 163327 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163327&amp;action=review
&gt; 
&gt; My main question is why did you choose to put accessibility code inside these files instead of making accessibility elements that wrapped these objects (that&apos;s the existing pattern, of course whether it&apos;s better or not is a different question).  Thanks

Instances of DateTimeFieldElement, reside in shadow DOM tree and they aren&apos;t seen from Web authors. Having HTML attributes, in this case ARIA attributes, in DateTimeFieldElement doesn&apos;t affect user&apos;s JavaScript code and user&apos;s code can&apos;t manipulate them.

This is the differences other elements which are visible from user&apos;s code and use AX object to implement accessibility.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:135
&gt; &gt; +void DateTimeFieldElement::initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText)
&gt; 
&gt; where is the axHelpText being set? i didn&apos;t see it in this patch
&gt; Is this an example of it?
&gt; field-&gt;initialize(ampmPsuedoId, AXAMPMFieldText());
&gt; 
&gt; In that case, it seems that aria_helpAttr might not be the right attribute

axHelpText has localized message string for each field.
AXAMPMFieldText(), AXHourFieldText(), and so on, return localized string.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp:37
&gt; &gt; +using namespace HTMLNames;
&gt; 
&gt; doesn&apos;t look like you need to use HTMLNames here based on changes to this file
Thanks removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717878</commentid>
    <comment_count>10</comment_count>
      <attachid>163511</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-11 20:51:45 -0700</bug_when>
    <thetext>Created attachment 163511
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717879</commentid>
    <comment_count>11</comment_count>
      <attachid>163511</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-11 20:53:07 -0700</bug_when>
    <thetext>Comment on attachment 163511
Patch 2

Could you review this patch?
Thanks in advance.

= Changes since the last review =
* Remove references of HTMLNames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717927</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 22:26:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 163327 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163327&amp;action=review
&gt; &gt; 
&gt; &gt; My main question is why did you choose to put accessibility code inside these files instead of making accessibility elements that wrapped these objects (that&apos;s the existing pattern, of course whether it&apos;s better or not is a different question).  Thanks
&gt; 
&gt; Instances of DateTimeFieldElement, reside in shadow DOM tree and they aren&apos;t seen from Web authors. Having HTML attributes, in this case ARIA attributes, in DateTimeFieldElement doesn&apos;t affect user&apos;s JavaScript code and user&apos;s code can&apos;t manipulate them.
&gt; 
&gt; This is the differences other elements which are visible from user&apos;s code and use AX object to implement accessibility.

Yes but that is different from things like AccessibilitySpinButton and AccessibilityListBox. Those are specific ax elements to wrap elements. What&apos;s the reason that pattern can&apos;t be followed here.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:135
&gt; &gt; &gt; +void DateTimeFieldElement::initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText)
&gt; &gt; 
&gt; &gt; where is the axHelpText being set? i didn&apos;t see it in this patch
&gt; &gt; Is this an example of it?
&gt; &gt; field-&gt;initialize(ampmPsuedoId, AXAMPMFieldText());
&gt; &gt; 
&gt; &gt; In that case, it seems that aria_helpAttr might not be the right attribute
&gt; 
&gt; axHelpText has localized message string for each field.
&gt; AXAMPMFieldText(), AXHourFieldText(), and so on, return localized string.
&gt; 

What are some of those examples? I suspect aria-help is not the right attribute to use

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp:37
&gt; &gt; &gt; +using namespace HTMLNames;
&gt; &gt; 
&gt; &gt; doesn&apos;t look like you need to use HTMLNames here based on changes to this file
&gt; Thanks removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717947</commentid>
    <comment_count>13</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-11 23:19:46 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (From update of attachment 163327 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163327&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; My main question is why did you choose to put accessibility code inside these files instead of making accessibility elements that wrapped these objects (that&apos;s the existing pattern, of course whether it&apos;s better or not is a different question).  Thanks
&gt; &gt; 
&gt; &gt; Instances of DateTimeFieldElement, reside in shadow DOM tree and they aren&apos;t seen from Web authors. Having HTML attributes, in this case ARIA attributes, in DateTimeFieldElement doesn&apos;t affect user&apos;s JavaScript code and user&apos;s code can&apos;t manipulate them.
&gt; &gt; 
&gt; &gt; This is the differences other elements which are visible from user&apos;s code and use AX object to implement accessibility.
&gt; 
&gt; Yes but that is different from things like AccessibilitySpinButton and AccessibilityListBox. Those are specific ax elements to wrap elements. What&apos;s the reason that pattern can&apos;t be followed here.

Ease for implementation and reduce code size for ease of maintenance. 
Actually, I don&apos;t have strong reason not to have AX object. This is the first time to work on accessibility on WebKit.

So, should I have AccessibilityDateTimeField object?

&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:135
&gt; &gt; &gt; &gt; +void DateTimeFieldElement::initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText)
&gt; &gt; &gt; 
&gt; &gt; &gt; where is the axHelpText being set? i didn&apos;t see it in this patch
&gt; &gt; &gt; Is this an example of it?
&gt; &gt; &gt; field-&gt;initialize(ampmPsuedoId, AXAMPMFieldText());
&gt; &gt; &gt; 
&gt; &gt; &gt; In that case, it seems that aria_helpAttr might not be the right attribute
&gt; &gt; 
&gt; &gt; axHelpText has localized message string for each field.
&gt; &gt; AXAMPMFieldText(), AXHourFieldText(), and so on, return localized string.
&gt; &gt; 
&gt; 
&gt; What are some of those examples? I suspect aria-help is not the right attribute to use
&gt; 

How about using &quot;aria-label&quot; instead of &quot;aria-help&quot;? I assume screen reader reads this string when field gets focused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717956</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 23:27:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; (From update of attachment 163327 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163327&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; My main question is why did you choose to put accessibility code inside these files instead of making accessibility elements that wrapped these objects (that&apos;s the existing pattern, of course whether it&apos;s better or not is a different question).  Thanks
&gt; &gt; &gt; 
&gt; &gt; &gt; Instances of DateTimeFieldElement, reside in shadow DOM tree and they aren&apos;t seen from Web authors. Having HTML attributes, in this case ARIA attributes, in DateTimeFieldElement doesn&apos;t affect user&apos;s JavaScript code and user&apos;s code can&apos;t manipulate them.
&gt; &gt; &gt; 
&gt; &gt; &gt; This is the differences other elements which are visible from user&apos;s code and use AX object to implement accessibility.
&gt; &gt; 
&gt; &gt; Yes but that is different from things like AccessibilitySpinButton and AccessibilityListBox. Those are specific ax elements to wrap elements. What&apos;s the reason that pattern can&apos;t be followed here.
&gt; 
&gt; Ease for implementation and reduce code size for ease of maintenance. 
&gt; Actually, I don&apos;t have strong reason not to have AX object. This is the first time to work on accessibility on WebKit.
&gt; 
&gt; So, should I have AccessibilityDateTimeField object?
&gt; 

I don&apos;t think it&apos;s necessarily wrong, I wanted to know why you chose that method

&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:135
&gt; &gt; &gt; &gt; &gt; +void DateTimeFieldElement::initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; where is the axHelpText being set? i didn&apos;t see it in this patch
&gt; &gt; &gt; &gt; Is this an example of it?
&gt; &gt; &gt; &gt; field-&gt;initialize(ampmPsuedoId, AXAMPMFieldText());
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; In that case, it seems that aria_helpAttr might not be the right attribute
&gt; &gt; &gt; 
&gt; &gt; &gt; axHelpText has localized message string for each field.
&gt; &gt; &gt; AXAMPMFieldText(), AXHourFieldText(), and so on, return localized string.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; What are some of those examples? I suspect aria-help is not the right attribute to use
&gt; &gt; 
&gt; 
&gt; How about using &quot;aria-label&quot; instead of &quot;aria-help&quot;? I assume screen reader reads this string when field gets focused.

Can you point to some of the strings that are used. I&apos;m not sure what field these best fall under right now.

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717959</commentid>
    <comment_count>15</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-11 23:30:59 -0700</bug_when>
    <thetext>Here is definitions of localized strings used for aria-help in &quot;Patch 2&quot;:
http://codereview.chromium.org/10911141/diff/6/webkit/glue/webkit_strings.grd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717961</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 23:37:01 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Here is definitions of localized strings used for aria-help in &quot;Patch 2&quot;:
&gt; http://codereview.chromium.org/10911141/diff/6/webkit/glue/webkit_strings.grd

It looks like the most appropriate field is aria-valuetext
http://www.w3.org/TR/wai-aria/states_and_properties#aria-valuetext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717966</commentid>
    <comment_count>17</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-11 23:44:21 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Here is definitions of localized strings used for aria-help in &quot;Patch 2&quot;:
&gt; &gt; http://codereview.chromium.org/10911141/diff/6/webkit/glue/webkit_strings.grd
&gt; 
&gt; It looks like the most appropriate field is aria-valuetext
&gt; http://www.w3.org/TR/wai-aria/states_and_properties#aria-valuetext

We used aria-valuetext for specifying &quot;AM&quot; or &quot;PM&quot; for AM/PM field. aria-valuenow doesn&apos;t have useful information on AM/PM field, e.g. 1 or 2.

I assume AX clients use &quot;aria-valuetext&quot; with &quot;aria-valuenow&quot; at &quot;value changed&quot; AX notification. If we set fixed string to aria-valuetext, e.g. AM/PM, Hours, AX clients may not be able to tell current value of field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717967</commentid>
    <comment_count>18</comment_count>
      <attachid>163511</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 23:47:09 -0700</bug_when>
    <thetext>Comment on attachment 163511
Patch 2

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

a few more comments. thanks

&gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:50
&gt; +    setAttribute(roleAttr, &quot;spinbutton&quot;);

a comment is needed as to what this is going to do

&gt; Source/WebCore/html/shadow/DateTimeFieldElement.h:80
&gt; +    void initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText);

Part of me feels like there should be an explicit method for setting the ax attribute.
something like void setAccessibilityValueDescription(String)

&gt; Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp:122
&gt; +}

if min or max changes, are we updating aria-minmax?

&gt; LayoutTests/ChangeLog:17
&gt; +        * fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html: Added to check accessibility notification supports in multiple fields time input UI.

these layout tests should be in the accessibility folder

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-aria-attributes-expected.txt:17
&gt; +PASS helpTextOfFocusField() is &quot;AXHelp: Hours, AXValueDescription: blank, 1, 12&quot;

these results will only work on Mac due to the way attributes are outputted. 
You could make this test mac only, or you could do debug() output and gather expected results on other platforms

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-aria-attributes.html:11
&gt; +function enableAccessibility()

this method is probably not needed

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:9
&gt; +description(&apos;This test checks value changed accessibility notification.&apos;);

notification -&gt; notifications.

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:11
&gt; +function enableAccessibility()

i don&apos;t think you need a method here. it can just be inline

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:14
&gt; +        debug(&quot;Please run inside DumpRenderTree.&quot;);

this is not really necessary

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:36
&gt; +keyDown(&apos;\t&apos;);

why is the tab key needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717968</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-11 23:51:13 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; Here is definitions of localized strings used for aria-help in &quot;Patch 2&quot;:
&gt; &gt; &gt; http://codereview.chromium.org/10911141/diff/6/webkit/glue/webkit_strings.grd
&gt; &gt; 
&gt; &gt; It looks like the most appropriate field is aria-valuetext
&gt; &gt; http://www.w3.org/TR/wai-aria/states_and_properties#aria-valuetext
&gt; 
&gt; We used aria-valuetext for specifying &quot;AM&quot; or &quot;PM&quot; for AM/PM field. aria-valuenow doesn&apos;t have useful information on AM/PM field, e.g. 1 or 2.

Yea, I feel like there&apos;s not an appropriate field to use in aria. on the mac AX implementation there is a field called

AXDateTimeComponents, which specifies what kind of date time you are looking at. 

Then the screen reader chooses the appropriate string.

I think we should ask someone in ARIA about this

&gt; 
&gt; I assume AX clients use &quot;aria-valuetext&quot; with &quot;aria-valuenow&quot; at &quot;value changed&quot; AX notification. If we set fixed string to aria-valuetext, e.g. AM/PM, Hours, AX clients may not be able to tell current value of field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717972</commentid>
    <comment_count>20</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-12 00:01:21 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 163511 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163511&amp;action=review
&gt; 
&gt; a few more comments. thanks
&gt; 
&gt; &gt; Source/WebCore/html/shadow/DateTimeFieldElement.cpp:50
&gt; &gt; +    setAttribute(roleAttr, &quot;spinbutton&quot;);
&gt; 
&gt; a comment is needed as to what this is going to do
&gt; 
Will put following:

// On accessibility, DateTimeFieldElement acts like spin button.

&gt; &gt; Source/WebCore/html/shadow/DateTimeFieldElement.h:80
&gt; &gt; +    void initialize(const AtomicString&amp; shadowPseudoId, const String&amp; axHelpText);
&gt; 
&gt; Part of me feels like there should be an explicit method for setting the ax attribute.
&gt; something like void setAccessibilityValueDescription(String)
&gt; 
&gt; &gt; Source/WebCore/html/shadow/DateTimeNumericFieldElement.cpp:122
&gt; &gt; +}
&gt; 
&gt; if min or max changes, are we updating aria-minmax?

Min/max are immutable. DateTimeFieldElement is designed as immutable object except for value. DateTimeEditElement has newly create elements when layout of fields are changed, e.g. &quot;step&quot;, &quot;min&quot;, &quot;max&quot; attribute changed on the &quot;input&quot; element.

&gt; &gt; LayoutTests/ChangeLog:17
&gt; &gt; +        * fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html: Added to check accessibility notification supports in multiple fields time input UI.
&gt; 
&gt; these layout tests should be in the accessibility folder

I&apos;ll move them to accessibility folder.
 
&gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-aria-attributes-expected.txt:17
&gt; &gt; +PASS helpTextOfFocusField() is &quot;AXHelp: Hours, AXValueDescription: blank, 1, 12&quot;
&gt; 
&gt; these results will only work on Mac due to the way attributes are outputted. 
&gt; You could make this test mac only, or you could do debug() output and gather expected results on other platforms

I&apos;ll change to test string containment rather than string equal.

BTW, Chromium ports also uses prefix text &quot;AXHelp&quot; and &quot;AXValueDescription&quot;.

http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp#L263

&gt; 
&gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-aria-attributes.html:11
&gt; &gt; +function enableAccessibility()
&gt; 
&gt; this method is probably not needed
&gt; 
&gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:9
&gt; &gt; +description(&apos;This test checks value changed accessibility notification.&apos;);
&gt; 
&gt; notification -&gt; notifications.
&gt; 
&gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:11
&gt; &gt; +function enableAccessibility()
&gt; 
&gt; i don&apos;t think you need a method here. it can just be inline
&gt; 
&gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:14
&gt; &gt; +        debug(&quot;Please run inside DumpRenderTree.&quot;);
&gt; 
&gt; this is not really necessary

We tried to make this test gracefully when someone opens this file in browser.

&gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html:36
&gt; &gt; +keyDown(&apos;\t&apos;);
&gt; 
&gt; why is the tab key needed?

This steps checks we have &quot;focus&quot; accessibility notification when focus moved into another field in same DateTimeEditElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717976</commentid>
    <comment_count>21</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-12 00:04:38 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; &gt; Here is definitions of localized strings used for aria-help in &quot;Patch 2&quot;:
&gt; &gt; &gt; &gt; http://codereview.chromium.org/10911141/diff/6/webkit/glue/webkit_strings.grd
&gt; &gt; &gt; 
&gt; &gt; &gt; It looks like the most appropriate field is aria-valuetext
&gt; &gt; &gt; http://www.w3.org/TR/wai-aria/states_and_properties#aria-valuetext
&gt; &gt; 
&gt; &gt; We used aria-valuetext for specifying &quot;AM&quot; or &quot;PM&quot; for AM/PM field. aria-valuenow doesn&apos;t have useful information on AM/PM field, e.g. 1 or 2.
&gt; 
&gt; Yea, I feel like there&apos;s not an appropriate field to use in aria. on the mac AX implementation there is a field called
&gt; 
&gt; AXDateTimeComponents, which specifies what kind of date time you are looking at. 
&gt; 
&gt; Then the screen reader chooses the appropriate string.
&gt; 
&gt; I think we should ask someone in ARIA about this
&gt; 
&gt; &gt; 
&gt; &gt; I assume AX clients use &quot;aria-valuetext&quot; with &quot;aria-valuenow&quot; at &quot;value changed&quot; AX notification. If we set fixed string to aria-valuetext, e.g. AM/PM, Hours, AX clients may not be able to tell current value of field.

Dominic, could you tell us your opinion? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718000</commentid>
    <comment_count>22</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-12 00:38:43 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; &gt; My main question is why did you choose to put accessibility code inside these files instead of making accessibility elements that wrapped these objects (that&apos;s the existing pattern, of course whether it&apos;s better or not is a different question).  Thanks

That question should be directed at me. I uploaded the initial proof-of-concept patch that yosin@ graciously offered to continue, so I should get the blame. :)

Here are some reasons I think it&apos;s better to implement it this way :

* The implementation of &lt;input type=time&gt; doesn&apos;t add any new capabilities to the rendering engine that weren&apos;t there before. The UI is all built using existing elements. So it seems easier to just add a few ARIA attributes in order to make this new control accessible, rather than add a new C++ class that would need to be maintained and kept in sync as the implementation changes.

* The fundamental idea behind how &lt;input type=time&gt; is implemented using existing elements is &quot;shadow dom&quot; or &quot;web components&quot;. It lets you have a shadow subtree within an element that is hidden from the surrounding page. Shadow subtrees are already accessible - the accessibility tree digs into the shadow and everything works great. These APIs are going to be opened up to JS developers soon, allowing anyone to write their own subclasses of HTMLInputElement (and any other element) using pure JS. It&apos;s really important that accessibility works there, so we should eat our own dogfood and make shadow-dom-based WebKit controls accessible the same way we&apos;d expect JS developers to do it. If functionality is missing, we should solve it now.

* It&apos;s not clear that it&apos;d be possible to expose native &quot;date/time picker&quot; roles on all or most platforms. The native controls on each platform might behave differently. It&apos;d be nice if we could get there, but from my initial exploration it doesn&apos;t look like this would &quot;just work&quot;.

&gt; How about using &quot;aria-label&quot; instead of &quot;aria-help&quot;? I assume screen reader reads this string when field gets focused.

This is kind of a hack. The reason I did this is because if I set a label on the &lt;input type=time&gt; element, the screen reader was only reading the description of the subfield (like &quot;Hours&quot; or &quot;Minutes&quot;) and not the label for the control itself (like &quot;Alarm time&quot;). But if I put the field labels in aria-help, then screen readers get both a description and a help string for each field, and read both. Now when you tab between the fields, you hear something like:

  04, Alarm time, Hours spin button
  30, Alarm time, Minutes spin button
  00, Alarm time, Seconds spin button

It&apos;s not perfect, but I think it&apos;s the best possible without actually modifying the screen reader.

(We should definitely propose adding date/time roles to ARIA 2.0, and then get screen readers to handle them natively.)

&gt; these results will only work on Mac due to the way attributes are outputted. 

I copied this pattern for Chromium so more of the test expectations would be the same between Mac &amp; Chromium.

The pattern I use now to write cross-platform tests is that I test that the string ends with something, like endsWith(description, &quot;Hours&quot;).

&gt; &gt; &gt; I assume AX clients use &quot;aria-valuetext&quot; with &quot;aria-valuenow&quot; at &quot;value changed&quot; AX notification. If we set fixed string to aria-valuetext, e.g. AM/PM, Hours, AX clients may not be able to tell current value of field.
&gt; 
&gt; Dominic, could you tell us your opinion? Thanks in advance.

aria-valuetext is meant to be dynamic. It changes as you change the field value. It&apos;s a textual description of the current value of the control, when just reading the number wouldn&apos;t be clear enough. This seems like a perfect use for it, and it&apos;s well-supported across screen readers now.

I think the aria markup is pretty reasonable here, with the only exception being aria-help instead of the more common aria-label. I would prefer we figure out a way to solve this some other way eventually - maybe identify when something is in shadow DOM and return both an inner label and outer label appended together. But I think that&apos;s beyond the scope of this change. I propose we open a new bug for that issue - come up with a clean way for a focusable control with shadow dom to add a label to a subelement that augments, rather than replaces, a label on the control element itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718007</commentid>
    <comment_count>23</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-12 00:43:19 -0700</bug_when>
    <thetext>FYI, in Chrome it&apos;s possible to view the shadow dom in the inspector / developer tools. It might be possible in WebKit nightly as well, but I&apos;m not sure how to turn on optional developer tools experiments there.

If you do this, you get a dom something like this:

&lt;input type=&quot;time&quot; value=&quot;04:30&quot;&gt;
  #shadow-root
    &lt;div&gt;
      &lt;span tabindex=0 role=&quot;spinbutton&quot; aria-help=&quot;Hours&quot; aria-valuetext=&quot;04&quot;...&gt;04&lt;/span&gt;
      &lt;span tabindex=0 role=&quot;spinbutton&quot; aria-help=&quot;Minutes&quot; aria-valuetext=&quot;30&quot;...&gt;30&lt;/span&gt;
      &lt;span tabindex=0 role=&quot;spinbutton&quot; aria-help=&quot;AM/PM&quot; aria-valuetext=&quot;AM&quot;...&gt;AM&lt;/span&gt;
    &lt;/div&gt;
&lt;/input&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718025</commentid>
    <comment_count>24</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-12 01:08:13 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 163511 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163511&amp;action=review
&gt; &gt; &gt; LayoutTests/ChangeLog:17
&gt; &gt; &gt; +        * fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html: Added to check accessibility notification supports in multiple fields time input UI.
&gt; &gt; 
&gt; &gt; these layout tests should be in the accessibility folder
&gt; 
&gt; I&apos;ll move them to accessibility folder.

We, forms team, wants to keep these tests under fast/forms/time-multiple-fields.
The reasons are:
  1. The implementation of AX in html/shadow instead of accessibility directory.
  2. We&apos;ll change DateTime{Edit,Field}Element soon for implementing &quot;data&quot;, &quot;datetime&quot;, &quot;month&quot;, and &quot;week&quot;. We usually run fast/forms at first try. So, it is easy to catch break on AX in DateTimeFieldElement, rather than run accessibility tests in later.
  3. Code of DateTime{Edit,Field}Element are used when ENABLE_INPUT_TYPE_TIME and ENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS flags enabled, at this time Chromium ports only. All ports have &quot;Skip&quot; directive for fast/forms/time-multiple-fields directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718395</commentid>
    <comment_count>25</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-12 08:35:03 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (From update of attachment 163511 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163511&amp;action=review
&gt; &gt; &gt; &gt; LayoutTests/ChangeLog:17
&gt; &gt; &gt; &gt; +        * fast/forms/time-multiple-fields/time-multiple-fields-ax-value-changed-notification.html: Added to check accessibility notification supports in multiple fields time input UI.
&gt; &gt; &gt; 
&gt; &gt; &gt; these layout tests should be in the accessibility folder
&gt; &gt; 
&gt; &gt; I&apos;ll move them to accessibility folder.
&gt; 
&gt; We, forms team, wants to keep these tests under fast/forms/time-multiple-fields.
&gt; The reasons are:
&gt;   1. The implementation of AX in html/shadow instead of accessibility directory.
&gt;   2. We&apos;ll change DateTime{Edit,Field}Element soon for implementing &quot;data&quot;, &quot;datetime&quot;, &quot;month&quot;, and &quot;week&quot;. We usually run fast/forms at first try. So, it is easy to catch break on AX in DateTimeFieldElement, rather than run accessibility tests in later.
&gt;   3. Code of DateTime{Edit,Field}Element are used when ENABLE_INPUT_TYPE_TIME and ENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS flags enabled, at this time Chromium ports only. All ports have &quot;Skip&quot; directive for fast/forms/time-multiple-fields directory.

Ok thanks for all the explanations. Once we can determine the best current way for identifying date components for the time being using ARIA, I think the approach looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718983</commentid>
    <comment_count>26</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-12 19:09:20 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 163511 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163511&amp;action=review
&gt; &gt; &gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-aria-attributes-expected.txt:17
&gt; &gt; &gt; +PASS helpTextOfFocusField() is &quot;AXHelp: Hours, AXValueDescription: blank, 1, 12&quot;
&gt; &gt; 
&gt; &gt; these results will only work on Mac due to the way attributes are outputted. 
&gt; &gt; You could make this test mac only, or you could do debug() output and gather expected results on other platforms
&gt; 
&gt; I&apos;ll change to test string containment rather than string equal.
&gt; 
&gt; BTW, Chromium ports also uses prefix text &quot;AXHelp&quot; and &quot;AXValueDescription&quot;.

It seems other ports supporting accessibility also use &quot;AX&quot; prefix, e.g. &quot;AXHelp: &quot;. To make test scripts simpler, I would like to use string equal operator rather than checking containing tests.

Note: At this time, multiple fields time input UI is enabled only for Chromium ports, except Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718989</commentid>
    <comment_count>27</comment_count>
      <attachid>163759</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-12 19:16:04 -0700</bug_when>
    <thetext>Created attachment 163759
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718992</commentid>
    <comment_count>28</comment_count>
      <attachid>163759</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-12 19:18:45 -0700</bug_when>
    <thetext>Comment on attachment 163759
Patch 3

It seems we agree on current approach. We&apos;ll work to adopt Indie and other AX spec.

Could you review this patch?
Thanks in advance.

= Changes since the last review =
* Add a comment why we set ARIA role for DateTimeFieldElement.
* Change a word &quot;notication&quot; in time-multiple-fields-ax-value-changed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719034</commentid>
    <comment_count>29</comment_count>
      <attachid>163759</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-12 21:57:07 -0700</bug_when>
    <thetext>Comment on attachment 163759
Patch 3

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

I don&apos;t like that aria-help is used for this, but I agree there&apos;s no better choice in ARIA at this point. We should continue to pursue better API for these items

&gt; LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-ax-aria-attributes.html:19
&gt; +function helpTextOfFocusField()

This function should be named something like &quot;focusedFieldValueDescription()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719062</commentid>
    <comment_count>30</comment_count>
      <attachid>163779</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-12 22:47:13 -0700</bug_when>
    <thetext>Created attachment 163779
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719064</commentid>
    <comment_count>31</comment_count>
      <attachid>163779</attachid>
    <who name="">yosin</who>
    <bug_when>2012-09-12 22:49:41 -0700</bug_when>
    <thetext>Comment on attachment 163779
Patch 4

Clearing flags on attachment: 163779

Committed r128404: &lt;http://trac.webkit.org/changeset/128404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719065</commentid>
    <comment_count>32</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-12 22:49:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162608</attachid>
            <date>2012-09-06 15:59:32 -0700</date>
            <delta_ts>2012-09-07 00:28:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96032-20120906155913.patch</filename>
            <type>text/plain</type>
            <size>5220</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M2Yjk1MDI1Nzk2YjQ3
ODJiZjZjYzA4YzQyOGYyMGUxOWQxY2MyOS4uZjA0NzkyNzhkMjc2ODBiNGYyMmMyZjE0ZTA3NDE3
ODIzMzkyZTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA5LTA2ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIE5ldyB0aW1lIGlu
cHV0IG5lZWRzIGFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk2MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBpbmNvbXBsZXRlOgorICAgICAgICAtIFN0cmluZ3MgbmVl
ZHMgdG8gYmUgaTE4bgorICAgICAgICAtIFRoZSBtaW4gYW5kIG1heCBzaG91bGQgYmUgc2V0IGNv
cnJlY3RseSAodGhvdWdoIGluIHByYWN0aWNlIGl0CisgICAgICAgICAgc2VlbXMgdG8gd29yayBp
ZiB0aGV5J3JlIG5vdCBjb3JyZWN0KQorCisgICAgICAgIFN0aWxsLCB0aGlzIHByb29mIG9mIGNv
bmNlcHQgd29ya3Mgb25jZSByZWxhdGVkIENocm9tZSBidWdzIGFyZSBmaXhlZAorICAgICAgICBp
biBzZXBhcmF0ZSBjaGFuZ2VzOiB0aGUgZmllbGRzIGluIHRoZSBkYXRldGltZSBjb250cm9sIGFy
ZSBwcmVzZW50ZWQKKyAgICAgICAgYXMgc3BpbmJ1dHRvbnMgd2l0aCBhcHByb3ByaWF0ZSBhY2Nl
c3NpYmxlIGRlc2NyaXB0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGVUaW1lRmllbGRFbGVtZW50OjpEYXRlVGltZUZpZWxkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGVUaW1lTWludXRlRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6CisKIDIwMTIt
MDgtMzEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBkaXNhYmxlIHBvcG92ZXIgb24gY2xpY2sgb3V0c2lkZSBvZiBwb3BvdmVy
IGFuY2hvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVs
ZEVsZW1lbnQuY3BwCmluZGV4IGI2MjQ2N2Q0YjlhNzBjNjVmOTEzY2QxYTRjNTA5OTcwYjM2NDk3
MmEuLmYyZTU4NWJiYTA5NmVmMDQzYmZlMjA2MjU0NzYwY2YzYzM1NmZiYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKQEAg
LTQ1LDYgKzQ1LDcgQEAgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lRmllbGRFbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgRmllbGRPd25lciYgZmllbGQKICAgICA6IEhUTUxFbGVtZW50
KHNwYW5UYWcsIGRvY3VtZW50KQogICAgICwgbV9maWVsZE93bmVyKCZmaWVsZE93bmVyKQogewor
ICAgIHNldEF0dHJpYnV0ZShyb2xlQXR0ciwgInNwaW5idXR0b24iKTsKIH0KIAogdm9pZCBEYXRl
VGltZUZpZWxkRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0x
NjgsNiArMTY5LDExIEBAIHZvaWQgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVW
YWx1ZShFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCiAgICAgY29uc3QgU3RyaW5nIG5ld1Zp
c2libGVWYWx1ZSA9IHZpc2libGVWYWx1ZSgpOwogICAgIEFTU0VSVChuZXdWaXNpYmxlVmFsdWUu
bGVuZ3RoKCkgPiAwKTsKIAorICAgIHNldEF0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0ciwgbmV3
VmlzaWJsZVZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZXRleHRBdHRyLCBuZXdW
aXNpYmxlVmFsdWUpOworICAgIHNldEF0dHJpYnV0ZShhcmlhX3ZhbHVlbWluQXR0ciwgIjAwIik7
CisgICAgc2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtYXhBdHRyLCAiOTkiKTsKKwogICAgIGlmICh0
ZXh0Tm9kZS0+d2hvbGVUZXh0KCkgPT0gbmV3VmlzaWJsZVZhbHVlKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRF
bGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxl
bWVudHMuY3BwCmluZGV4IGQ4YmM4NDlmZDA5N2YwOTMzMWYxNzE5ODI0M2YyZmU1OGI2YzZmMWMu
LjM5Yzk1ZTIwZGEyYTA1N2YwY2VjMmE5NWRmZTdjZTg1NzRkOTliZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcApAQCAt
NDIsNiArNDIsNyBAQCBQYXNzUmVmUHRyPERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudD4gRGF0ZVRp
bWVBTVBNRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqCiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIGFtcG1Qc3VlZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQt
YW1wbS1maWVsZCIpKTsKICAgICBSZWZQdHI8RGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50PiBmaWVs
ZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxk
T3duZXIsIGFtcG1MYWJlbHMpKTsKICAgICBmaWVsZC0+aW5pdGlhbGl6ZShhbXBtUHN1ZWRvSWQp
OworICAgIGZpZWxkLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2hlbHBBdHRyLCAiQU0v
UE0iKTsKICAgICByZXR1cm4gZmllbGQucmVsZWFzZSgpOwogfQogCkBAIC02OSw2ICs3MCw3IEBA
IFBhc3NSZWZQdHI8RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50PiBEYXRlVGltZUhvdXJGaWVsZEVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCoKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaG91clBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxkIikp
OwogICAgIFJlZlB0cjxEYXRlVGltZUhvdXJGaWVsZEVsZW1lbnQ+IGZpZWxkID0gYWRvcHRSZWYo
bmV3IERhdGVUaW1lSG91ckZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgbWluaW11
bSwgbWF4aW11bSkpOwogICAgIGZpZWxkLT5pbml0aWFsaXplKGhvdXJQc3VlZG9JZCk7CisgICAg
ZmllbGQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfaGVscEF0dHIsICJIb3VycyIpOwog
ICAgIHJldHVybiBmaWVsZC5yZWxlYXNlKCk7CiB9CiAKQEAgLTEwNSw2ICsxMDcsNyBAQCBQYXNz
UmVmUHRyPERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lTWlsbGlzZWNv
bmRGaWVsZEVsZW1lbnQ6OmNyZQogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBtaWxsaXNlY29uZFBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29u
ZC1maWVsZCIpKTsKICAgICBSZWZQdHI8RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudD4g
ZmllbGQgPSBhZG9wdFJlZihuZXcgRGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudChkb2N1
bWVudCwgZmllbGRPd25lcikpOwogICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1
ZWRvSWQpOworICAgIGZpZWxkLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2hlbHBBdHRy
LCAiTWlsbGlzZWNvbmRzIik7CiAgICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAt
MTMwLDYgKzEzMyw3IEBAIFBhc3NSZWZQdHI8RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ+IERh
dGVUaW1lTWludXRlRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lCiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG1pbnV0ZVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUt
ZWRpdC1taW51dGUtZmllbGQiKSk7CiAgICAgUmVmUHRyPERhdGVUaW1lTWludXRlRmllbGRFbGVt
ZW50PiBmaWVsZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudChkb2N1
bWVudCwgZmllbGRPd25lcikpOwogICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbnV0ZVBzdWVkb0lk
KTsKKyAgICBmaWVsZC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9oZWxwQXR0ciwgIk1p
bnV0ZXMiKTsKICAgICByZXR1cm4gZmllbGQucmVsZWFzZSgpOwogfQogCkBAIC0xNTUsNiArMTU5
LDcgQEAgUGFzc1JlZlB0cjxEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudD4gRGF0ZVRpbWVTZWNv
bmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWUKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgc2Vjb25kUHN1ZWRvSWQsICgiLXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29u
ZC1maWVsZCIpKTsKICAgICBSZWZQdHI8RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ+IGZpZWxk
ID0gYWRvcHRSZWYobmV3IERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVs
ZE93bmVyKSk7CiAgICAgZmllbGQtPmluaXRpYWxpemUoc2Vjb25kUHN1ZWRvSWQpOworICAgIGZp
ZWxkLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2hlbHBBdHRyLCAiU2Vjb25kcyIpOwog
ICAgIHJldHVybiBmaWVsZC5yZWxlYXNlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162690</attachid>
            <date>2012-09-07 00:28:42 -0700</date>
            <delta_ts>2012-09-11 03:59:57 -0700</delta_ts>
            <desc>Proof of Concept 2</desc>
            <filename>bug-96032-20120907162821.patch</filename>
            <type>text/plain</type>
            <size>24861</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU2ZjE0NWQ1YWY1ODBm
ZjgxZmM0MGNmMzAyNTQ4YWVhNjZjMDYwMy4uNzRjZTM1NjE0NDhjZjc2N2ZhODA4MTMwNjYyMzdi
YWEyNTZkYjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA5LTA3ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5w
dXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3RpbWUtbXVsdGlw
bGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy5odG1sCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXhW
YWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om1p
blZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
dmFsdWVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojp2YWx1ZUZvclJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6RGF0ZVRp
bWVGaWVsZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6
OmRpZEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRFbGVtZW50Ojppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRFbGVtZW50Ojp1cGRhdGVW
aXNpYmxlVmFsdWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50
Lmg6CisgICAgICAgIChEYXRlVGltZUZpZWxkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
QU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lSG91
ckZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lTWlsbGlz
ZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZU1p
bnV0ZUZpZWxkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lU2Vj
b25kRmllbGRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1l
TnVtZXJpY0ZpZWxkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWF4aW11bSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Om1pbmltdW0pOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oOgorICAgICAgICAoRGF0
ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGlt
ZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lU3lt
Ym9saWNGaWVsZEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50OjptaW5pbXVtKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50Lmg6CisgICAgICAg
IChEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50KToKKwogMjAxMi0wOS0wNiAgWW9zaGlmdW1p
IElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlIHNob3VsZCBoYXZlIGxv
Y2FsaXplZCBzdHJpbmdzIG9mIGRhdGUgdGltZSBmaWVsZHMgZm9yIGFjY2Vzc2liaWxpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCmluZGV4IDZlYTNiZjM4ZGE3NWVjM2JhNzIzNTVkYzhiNjJlZjYzMmExMjRhZDMuLmNjNWNm
MzEzM2Q0MGE2YzU4YzQyNjcxYjZiNjMxMGM5MWUyMjgxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNTYxLDYg
KzU2MSwzNSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGFuZ3VhZ2UoKSBjb25zdAog
ICAgIAogICAgIHJldHVybiBwYXJlbnQtPmxhbmd1YWdlKCk7CiB9CisKK2Zsb2F0IEFjY2Vzc2li
aWxpdHlPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdAoreworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZW1heEF0dHIpOworICAgIGlm
ICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiB2YWx1ZS50
b0Zsb2F0KCk7Cit9CisKK2Zsb2F0IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1pblZhbHVlRm9yUmFu
Z2UoKSBjb25zdAoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1
dGUoYXJpYV92YWx1ZW1pbkF0dHIpOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiB2YWx1ZS50b0Zsb2F0KCk7Cit9CisKK1N0cmluZyBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojp2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Z2V0QXR0cmlidXRlKGFyaWFfdmFsdWV0ZXh0QXR0cikuc3RyaW5nKCk7Cit9CisKK2Zsb2F0IEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdAoreworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIpOworICAg
IGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiB2YWx1
ZS50b0Zsb2F0KCk7Cit9CiAgICAgCiBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyhjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MxLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3MyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAzM2NmYmQxYzAxOWU5MDg1YmJkMWE5NjBlMDkxYTAz
MzIyMDZmNDQ2Li4yMDE3YzRjY2ZkN2Q4YjAxMDkwMmZmZjQyOGQ2M2Q2YzFjMTM4MDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aApAQCAtNDM5LDEwICs0MzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdM
ZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
IGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBmbG9h
dCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAgIHZpcnR1YWwgZmxv
YXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KLSAgICB2aXJ0dWFs
IGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBmOyB9CisgICAgdmly
dHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQg
dmFsdWVGb3JSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5n
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAwLjBm
OyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9u
KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRUYWJJdGVtKCkgeyByZXR1cm4gMDsgfSAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGVm
NGRjZmU0ZWNmYTM5OGQ2NjAwMmJlZDU2NmE0OTJjYjc2MDY0MDUuLjAyYTgwMTk4ZWQwZDA3ZmI3
YjI4ZDVlMjJkYWNiMDU3ZmEyZGU5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTE1NCw0
NCArMTE1NCwxMSBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgpOwogfQogCi1TdHJpbmcgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgLy8g
T25seSBzbGlkZXJzIGFuZCBwcm9ncmVzcyBiYXJzIHN1cHBvcnQgdmFsdWUgZGVzY3JpcHRpb25z
IGN1cnJlbnRseS4KLSAgICBpZiAoIWlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSAmJiAhaXNTbGlkZXIo
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAotICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoYXJpYV92YWx1ZXRleHRBdHRyKS5zdHJpbmcoKTsKLX0KLSAgICAKIGZsb2F0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKHN0ZXBBdHRyKS50b0Zsb2F0KCk7CiB9CiAgICAgCi1mbG9hdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZUZvclJhbmdlKCkgY29uc3QKLXsKLSAgICBpZiAo
IWlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSAmJiAhaXNTbGlkZXIoKSAmJiAhaXNTY3JvbGxiYXIoKSkK
LSAgICAgICAgcmV0dXJuIDAuMGY7Ci0KLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFs
dWVub3dBdHRyKS50b0Zsb2F0KCk7Ci19Ci0KLWZsb2F0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdAotewotICAgIGlmICghaXNQcm9ncmVzc0luZGlj
YXRvcigpICYmICFpc1NsaWRlcigpKQotICAgICAgICByZXR1cm4gMC4wZjsKLQotICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZW1heEF0dHIpLnRvRmxvYXQoKTsKLX0KLQotZmxvYXQg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFpc1Byb2dyZXNzSW5kaWNhdG9yKCkgJiYgIWlzU2xpZGVyKCkpCi0gICAgICAgIHJl
dHVybiAwLjBmOwotCi0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3ZhbHVlbWluQXR0ciku
dG9GbG9hdCgpOwotfQotCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5n
VmFsdWUoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5k
ZXggZmNmZjRmYTkxMjQwYzJjYjk4M2JjMDE2YmM0M2EzM2IxMDZiNzVmYy4uYjZiNTI4NzNmOThk
MzYyNTg4ZTQzNDY3NWY4MGRhOGU1ZjcwMmY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTEyNSwx
MCArMTI1LDYgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JS
YWRpb1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQg
bWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9y
UmFuZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVk
UmFkaW9CdXR0b24oKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVk
VGFiSXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuY3BwCmluZGV4IGI2MjQ2N2Q0YjlhNzBjNjVmOTEzY2QxYTRjNTA5OTcwYjM2
NDk3MmEuLjE4M2ExMWQ0MzNiZGQ5M2Y4MDdhNTFiMTJlYWJmODUzNDVkNGZjN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAK
QEAgLTI3LDExICsyNywxMyBAQAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUVfTVVMVElQTEVf
RklFTERTKQogI2luY2x1ZGUgIkRhdGVUaW1lRmllbGRFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDYgKzQ3LDcgQEAgRGF0ZVRpbWVG
aWVsZEVsZW1lbnQ6OkRhdGVUaW1lRmllbGRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRmll
bGRPd25lciYgZmllbGQKICAgICA6IEhUTUxFbGVtZW50KHNwYW5UYWcsIGRvY3VtZW50KQogICAg
ICwgbV9maWVsZE93bmVyKCZmaWVsZE93bmVyKQogeworICAgIHNldEF0dHJpYnV0ZShyb2xlQXR0
ciwgInNwaW5idXR0b24iKTsKIH0KIAogdm9pZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0xMTgsNiArMTIxLDggQEAgdm9pZCBEYXRl
VGltZUZpZWxkRWxlbWVudDo6ZGlkQmx1cigpCiAKIHZvaWQgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6
OmRpZEZvY3VzKCkKIHsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQoKSkKKyAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNh
dGlvbih0aGlzLCBBWE9iamVjdENhY2hlOjpBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLCB0cnVl
KTsKICAgICBpZiAobV9maWVsZE93bmVyKQogICAgICAgICBtX2ZpZWxkT3duZXItPmRpZEZvY3Vz
T25GaWVsZCgpOwogfQpAQCAtMTI5LDggKzEzNCwxMSBAQCB2b2lkIERhdGVUaW1lRmllbGRFbGVt
ZW50Ojpmb2N1c09uTmV4dEZpZWxkKCkKICAgICBtX2ZpZWxkT3duZXItPmZvY3VzT25OZXh0Rmll
bGQoKnRoaXMpOwogfQogCi12b2lkIERhdGVUaW1lRmllbGRFbGVtZW50Ojppbml0aWFsaXplKGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQpCit2b2lkIERhdGVUaW1lRmllbGRFbGVt
ZW50Ojppbml0aWFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQsIGNvbnN0
IFN0cmluZyYgYXhIZWxwVGV4dCkKIHsKKyAgICBzZXRBdHRyaWJ1dGUoYXJpYV9oZWxwQXR0ciwg
YXhIZWxwVGV4dCk7CisgICAgc2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtaW5BdHRyLCBTdHJpbmc6
Om51bWJlcihtaW5pbXVtKCkpKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXJpYV92YWx1ZW1heEF0dHIs
IFN0cmluZzo6bnVtYmVyKG1heGltdW0oKSkpOwogICAgIHNldFNoYWRvd1BzZXVkb0lkKHNoYWRv
d1BzZXVkb0lkKTsKICAgICBhcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgdmlz
aWJsZVZhbHVlKCkpKTsKIH0KQEAgLTE3Miw2ICsxODAsOCBAQCB2b2lkIERhdGVUaW1lRmllbGRF
bGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUoRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yKQog
ICAgICAgICByZXR1cm47CiAKICAgICB0ZXh0Tm9kZS0+cmVwbGFjZVdob2xlVGV4dChuZXdWaXNp
YmxlVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHNldEF0dHJpYnV0ZShhcmlhX3Zh
bHVlbm93QXR0ciwgbmV3VmlzaWJsZVZhbHVlKTsKKyAgICBzZXRBdHRyaWJ1dGUoYXJpYV92YWx1
ZXRleHRBdHRyLCBuZXdWaXNpYmxlVmFsdWUpOwogCiAgICAgaWYgKGV2ZW50QmVoYXZpb3IgPT0g
RGlzcGF0Y2hFdmVudCAmJiBtX2ZpZWxkT3duZXIpCiAgICAgICAgIG1fZmllbGRPd25lci0+Zmll
bGRWYWx1ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRmllbGRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRl
VGltZUZpZWxkRWxlbWVudC5oCmluZGV4IDBhOWJlZTAxMDYxZDEwMzNkNDUxYzdhYzIwNDhiMTIx
OTZmM2ZmNjMuLmVkMjk3Y2NhMjMyNmI3MDdhZDkyODQwN2ZkNWJhNDNhMzI4MDU3NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaApA
QCAtNzcsNyArNzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZvY3VzKCk7
CiAgICAgdm9pZCBmb2N1c09uTmV4dEZpZWxkKCk7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopID0gMDsKLSAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQsIGNvbnN0IFN0cmluZyYgYXhIZWxwVGV4dCk7CisgICAgdmlydHVh
bCBpbnQgbWF4aW11bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIHVuaXRJbk1pbGxpc2Vjb25kKCkgY29uc3QgPSAw
OwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVoYXZpb3IpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcApp
bmRleCBkOGJjODQ5ZmQwOTdmMDkzMzFmMTcxOTgyNDNmMmZlNThiNmM2ZjFjLi5hZDRjYjA2MGYy
OGViZjg2MGU2ZDAwM2VjZGQ0N2E2YjM5YTU0NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEYXRlVGltZUZpZWxkRWxlbWVudHMuaCIKIAogI2luY2x1ZGUgIkRhdGVD
b21wb25lbnRzLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3IEBAIFBh
c3NSZWZQdHI8RGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50PiBEYXRlVGltZUFNUE1GaWVsZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCoKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgYW1wbVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1hbXBtLWZpZWxkIikp
OwogICAgIFJlZlB0cjxEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQ+IGZpZWxkID0gYWRvcHRSZWYo
bmV3IERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgYW1wbUxh
YmVscykpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKGFtcG1Qc3VlZG9JZCk7CisgICAgZmllbGQt
PmluaXRpYWxpemUoYW1wbVBzdWVkb0lkLCBBWEFNUE1GaWVsZFRleHQoKSk7CiAgICAgcmV0dXJu
IGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtNjgsNyArNjksNyBAQCBQYXNzUmVmUHRyPERhdGVU
aW1lSG91ckZpZWxkRWxlbWVudD4gRGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGhvdXJQc3Vl
ZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCIpKTsKICAgICBSZWZQdHI8
RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50PiBmaWVsZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZUhv
dXJGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIG1pbmltdW0sIG1heGltdW0pKTsK
LSAgICBmaWVsZC0+aW5pdGlhbGl6ZShob3VyUHN1ZWRvSWQpOworICAgIGZpZWxkLT5pbml0aWFs
aXplKGhvdXJQc3VlZG9JZCwgQVhIb3VyRmllbGRUZXh0KCkpOwogICAgIHJldHVybiBmaWVsZC5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTEwNCw3ICsxMDUsNyBAQCBQYXNzUmVmUHRyPERhdGVUaW1lTWls
bGlzZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OmNy
ZQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtaWxsaXNlY29uZFBz
dWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCIpKTsKICAg
ICBSZWZQdHI8RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudD4gZmllbGQgPSBhZG9wdFJl
ZihuZXcgRGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25l
cikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1ZWRvSWQpOworICAgIGZp
ZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1ZWRvSWQsIEFYTWlsbGlzZWNvbmRGaWVsZFRl
eHQoKSk7CiAgICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTI5LDcgKzEzMCw3
IEBAIFBhc3NSZWZQdHI8RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ+IERhdGVUaW1lTWludXRl
RmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG1pbnV0ZVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51
dGUtZmllbGQiKSk7CiAgICAgUmVmUHRyPERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50PiBmaWVs
ZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudChkb2N1bWVudCwgZmll
bGRPd25lcikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbnV0ZVBzdWVkb0lkKTsKKyAgICBm
aWVsZC0+aW5pdGlhbGl6ZShtaW51dGVQc3VlZG9JZCwgQVhNaW51dGVGaWVsZFRleHQoKSk7CiAg
ICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTU0LDcgKzE1NSw3IEBAIFBhc3NS
ZWZQdHI8RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lU2Vjb25kRmllbGRFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNlY29uZFBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGQi
KSk7CiAgICAgUmVmUHRyPERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50PiBmaWVsZCA9IGFkb3B0
UmVmKG5ldyBEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lcikp
OwotICAgIGZpZWxkLT5pbml0aWFsaXplKHNlY29uZFBzdWVkb0lkKTsKKyAgICBmaWVsZC0+aW5p
dGlhbGl6ZShzZWNvbmRQc3VlZG9JZCwgQVhTZWNvbmRGaWVsZFRleHQoKSk7CiAgICAgcmV0dXJu
IGZpZWxkLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggYmY4MGFmOTQy
M2Y0YmE2MTg3YjQ1NTM2ZWUzNzVjZTU5YzVjODJhZC4uNGFlN2U5ZDQ1ZDk4NzU0ZDVkZDdjYTA5
NWRiM2NmODgzMmU4NzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCkBAIC0yNywxMiArMjcsMTUg
QEAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUykKICNpbmNsdWRl
ICJEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWROdW1iZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogc3RhdGljIGNvbnN0IERPTVRp
bWVTdGFtcCB0eXBlQWhlYWRUaW1lb3V0ID0gMTAwMDsKIAogc3RhdGljIHNpemVfdCBkaXNwbGF5
U2l6ZU9mTnVtYmVyKGludCB2YWx1ZSkKQEAgLTExMSw2ICsxMTQsMTYgQEAgYm9vbCBEYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQ6Omhhc1ZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9oYXNW
YWx1ZTsKIH0KIAoraW50IERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWF4aW11bSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2UubWF4aW11bTsKK30KKworaW50IERhdGVUaW1lTnVt
ZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2Uu
bWluaW11bTsKK30KKwogdm9pZCBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6OnNldEVtcHR5
VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAgICAgbV9sYXN0RGlnaXRDaGFyVGltZSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVs
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0Zp
ZWxkRWxlbWVudC5oCmluZGV4IDI4M2U2MDY3MjNmYWZlYzdmNWI1OTdkNmQ0Nzc5ZDA1N2EzZjk2
ZGYuLjdjNzNmMWI4NjA2NDRmNThhODJiNTc3M2UxY2RkY2ViZmQ1NzJlOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxl
bWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGaWVsZEVs
ZW1lbnQgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBkaWRCbHVyKCkgT1ZFUlJJREUgRklO
QUw7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCop
IE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCB2b2lkIHNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRh
dGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJlaGF2aW9yKSBPVkVSUklERSBGSU5BTDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RlcERvd24oKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RlcFVwKCkgT1ZFUlJJREUgRklOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCmluZGV4IGJlYWRj
YTk3NDNjMTE2YzE0ZDMxODUyZTc5NTNjYWI3ZTJhZDMyMTMuLjZjYjRlYzFlMjZjNjkwNWNjMTgw
ZGQ4NzQ4MTIzZjViMGE2OTAxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCkBAIC05NSw2ICs5
NSwxNiBAQCBib29sIERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6Omhhc1ZhbHVlKCkgY29u
c3QKICAgICByZXR1cm4gbV9zZWxlY3RlZEluZGV4ID49IDA7CiB9CiAKK2ludCBEYXRlVGltZVN5
bWJvbGljRmllbGRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihtX3N5bWJvbHMuc2l6ZSgpKTsKK30KKworaW50IERhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAoreworICAgIHJldHVybiAxOworfQorCiB2b2lk
IERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6OnNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNv
bXBvbmVudHMmLCBFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAgICAgbV9zZWxlY3Rl
ZEluZGV4ID0gaW52YWxpZEluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oCmluZGV4IGIyMWE4ZTRmM2Vm
NGU3YzE1OWM0MDdkYTM2N2M3MWY1Y2Q5ZDA3NmUuLjdjNWY2N2I4OWNjZjBhZjVjZDMwMGJiNzE1
NDlkYzk2NDY3NTQ4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rh
dGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHJp
dmF0ZToKICAgICAvLyBEYXRlVGltZUZpZWxkRWxlbWVudCBmdW5jdGlvbnMuCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFIEZJTkFM
OwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOworICAg
IHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFs
IGludCBtaW5pbXVtKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVGb3JSZWFkT25seUZpZWxkLCBF
dmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RlcERvd24oKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3Rl
cFVwKCkgT1ZFUlJJREUgRklOQUw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNTE3OGJjNjYzMWQ0NDNmMjYxY2QwMzE0MmZmZGJiOTE2N2Q1Zjcy
Ny4uNzFmY2Y4OTEyMzMwNDRhZjQ1OWU0MmZhNzliNWU2MzU0NzMwZDRjYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTA5LTA3ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgTmV3IHRpbWUgaW5wdXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRo
ZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5j
dGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKGdldFZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dENocm9taXVtLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKwogMjAxMi0w
OS0wNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gVXNlIFdlYkNvbXBvc2l0b3JTdXBwb3J0IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIFdl
YkNvbXBvc2l0b3Igc3RhdGljcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Q2hyb21pdW0uY3BwCmluZGV4IDM0ZTRlM2M0ZTBiZDQ3NTg3OWM2YjE5M2E1ZmJhNTZkZjU5
YjI2NGMuLjg0ZjA5YmQ3YmUwMDg3MTNlZjkxOGJmOTZhYTNmODEzNTIxYjAwY2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudENocm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTI2Miw2
ICsyNjIsMTEgQEAgc3RyaW5nIGdldEF0dHJpYnV0ZXMoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqZWN0KQogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCitzdHJpbmcgZ2V0VmFs
dWVEZXNjcmlwdGlvbihjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit7Cisg
ICAgc3RyaW5nIHZhbHVlRGVzY3JpcHRpb24gPSBvYmplY3QudmFsdWVEZXNjcmlwdGlvbigpLnV0
ZjgoKTsKKyAgICByZXR1cm4gdmFsdWVEZXNjcmlwdGlvbi5pbnNlcnQoMCwgIkFYVmFsdWVEZXNj
cmlwdGlvbjogIik7Cit9CiAKIC8vIENvbGxlY3RzIGF0dHJpYnV0ZXMgaW50byBhIHN0cmluZywg
ZGVsaW1pdGVkIGJ5IGRhc2hlcy4gVXNlZCBieSBhbGwgbWV0aG9kcwogLy8gdGhhdCBvdXRwdXQg
bGlzdHMgb2YgYXR0cmlidXRlczogYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50c0NhbGxiYWNr
LApAQCAtMzAzLDYgKzMwOCw3IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqCiAgICAgYmluZFBy
b3BlcnR5KCJpbnRWYWx1ZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZUdldHRl
ckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoIm1pblZhbHVlIiwgJkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1pblZhbHVlR2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgibWF4
VmFsdWUiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWVHZXR0ZXJDYWxsYmFjayk7
CisgICAgYmluZFByb3BlcnR5KCJ2YWx1ZURlc2NyaXB0aW9uIiwgJkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb25HZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5
KCJjaGlsZHJlbkNvdW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnRH
ZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpbnNlcnRpb25Qb2ludExpbmVOdW1i
ZXIiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyR2V0
dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgic2VsZWN0ZWRUZXh0UmFuZ2UiLCAmQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2VHZXR0ZXJDYWxsYmFjayk7CkBA
IC00NTIsNiArNDU4LDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWVH
ZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgcmVzdWx0LT5zZXQoYWNjZXNz
aWJpbGl0eU9iamVjdCgpLm1heFZhbHVlRm9yUmFuZ2UoKSk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbkdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldChnZXRWYWx1ZURlc2NyaXB0aW9uKGFjY2Vzc2li
aWxpdHlPYmplY3QoKSkpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxk
cmVuQ291bnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaW50IGNv
dW50ID0gMTsgLy8gUm9vdCBvYmplY3QgYWx3YXlzIGhhcyBvbmx5IG9uZSBjaGlsZCwgdGhlIFdl
YlZpZXcuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaApp
bmRleCAxYjQ4YTUzYjYwMmUzODFlNGUxMjkyMzVhZDQyNTQxNWVjYjQyNzM2Li4wNzEwYjRkODAy
Njg4ZDYwOWQ3NTZmNTcwZGM5NTM5OGJiN2Y1YTI2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1
bS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGludFZhbHVlR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgbWlu
VmFsdWVHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBtYXhWYWx1ZUdldHRl
ckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHZhbHVlRGVzY3JpcHRpb25HZXR0ZXJD
YWxsYmFjayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJh
Y2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyR2V0dGVy
Q2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2VsZWN0ZWRUZXh0UmFuZ2VHZXR0ZXJD
YWxsYmFjayhDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjc5ZjY5YWQ0ZjljNjE0ZGEwNTY3ZTRmNjdk
M2Q1YjgwZjc0ZjI2OC4uYzJjYzAyOTQ0ZmE1NDQ1YTZhMTliNmZmOTU0Y2JlZWMzMDYzOWE1MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTA3ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3Np
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5wdXQgbmVlZHMgYWNjZXNzaWJp
bGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYw
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBs
ZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1h
eC1hcmlhLWF0dHJpYnV0ZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMDYgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjc4MDguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Rp
bWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmll
bGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODAzMjVkYjk5ZTlhYzRlYTA4MzBhZjE5MGIzM2ZjOWFmOTMxOTNhYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVs
ZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIGFyaWEtaGVscCBhdHRyaWJ1dGUgb2Yg
ZmllbGRzIGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0IFVJLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6
IGhvdXIsIEFYVmFsdWVEZXNjcmlwdGlvbjogMTIsIDEsIDEyIgorUEFTUyBoZWxwVGV4dE9mRm9j
dXNGaWVsZCgpIGlzICJBWEhlbHA6IG1pbnV0ZSwgQVhWYWx1ZURlc2NyaXB0aW9uOiAzNCwgMCwg
NTkiCitQQVNTIGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogc2Vjb25kLCBBWFZh
bHVlRGVzY3JpcHRpb246IDU2LCAwLCA1OSIKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBp
cyAiQVhIZWxwOiBtaWxsaXNlY29uZCwgQVhWYWx1ZURlc2NyaXB0aW9uOiA3ODksIDAsIDk5OSIK
K0ZBSUwgaGVscFRleHRPZkZvY3VzRmllbGQoKSBzaG91bGQgYmUgQVhIZWxwOiBBTS9QTSwgQVhW
YWx1ZURlc2NyaXB0aW9uOiBQTSwgMCwgMS4gV2FzIEFYSGVscDogQU0vUE0sIEFYVmFsdWVEZXNj
cmlwdGlvbjogUE0sIDEsIDIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUt
bXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11
bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWZhMjdk
MWI0Yjk2ODgwZjhjMTRjY2NhMTZiZWEyZWYxZDUwNzQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZp
ZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQg
aWQ9dGVzdCB0eXBlPSJ0aW1lIiB2YWx1ZT0iMTI6MzQ6NTYuNzg5Ij4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGhpcyB0ZXN0IGNoZWNrcyBhcmlhLWhlbHAgYXR0cmlidXRlIG9mIGZpZWxkcyBp
biBtdWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSS4nKTsKKworZnVuY3Rpb24gZW5hYmxlQWNj
ZXNzaWJpbGl0eSgpCit7CisgICAgaWYgKCF3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
CisgICAgICAgIGRlYnVnKCJQbGVhc2UgcnVuIGluc2lkZSBEdW1wUmVuZGVyVHJlZS4iKTsKK30K
KworZnVuY3Rpb24gaGVscFRleHRPZkZvY3VzRmllbGQoKQoreworICAgIGlmICghd2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgdmFyIGVsZW1lbnQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudAorICAgIHJldHVybiBlbGVt
ZW50LmhlbHBUZXh0ICsgIiwgIiArICBlbGVtZW50LnZhbHVlRGVzY3JpcHRpb24gKyAiLCAiICsg
ZWxlbWVudC5taW5WYWx1ZSArICIsICIgKyBlbGVtZW50Lm1heFZhbHVlOworfQorCitmdW5jdGlv
biBrZXlEb3duKGtleSwgbW9kaWZpZXJzKQoreworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVy
KQorICAgICAgICByZXR1cm47CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihrZXksIG1vZGlmaWVy
cyk7Cit9CisKK2VuYWJsZUFjY2Vzc2liaWxpdHkoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0IikuZm9jdXMoKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9j
dXNGaWVsZCgpJywgJ0FYSGVscDogaG91ciwgQVhWYWx1ZURlc2NyaXB0aW9uOiAxMiwgMSwgMTIn
KTsKK2tleURvd24oJ1x0Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1
c0ZpZWxkKCknLCAnQVhIZWxwOiBtaW51dGUsIEFYVmFsdWVEZXNjcmlwdGlvbjogMzQsIDAsIDU5
Jyk7CitrZXlEb3duKCdcdCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9j
dXNGaWVsZCgpJywgJ0FYSGVscDogc2Vjb25kLCBBWFZhbHVlRGVzY3JpcHRpb246IDU2LCAwLCA1
OScpOwora2V5RG93bignXHQnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZv
Y3VzRmllbGQoKScsICdBWEhlbHA6IG1pbGxpc2Vjb25kLCBBWFZhbHVlRGVzY3JpcHRpb246IDc4
OSwgMCwgOTk5Jyk7CitrZXlEb3duKCdcdCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdoZWxw
VGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogQU0vUE0sIEFYVmFsdWVEZXNjcmlwdGlvbjog
UE0sIDEsIDInKTsKKworZGVidWcoJycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163327</attachid>
            <date>2012-09-11 04:00:01 -0700</date>
            <delta_ts>2012-09-11 20:51:41 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-96032-20120911195936.patch</filename>
            <type>text/plain</type>
            <size>20395</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I4ZTg3YjU3YTY0ZWQz
NmIzZjNjNzZjN2YyNDJkNmFiMzUzNGFiNC4uYzFjYjQ2YThkYzI4YjNmZTkzNTE1OGNlOGYyNTMx
NmQ3YjczMzk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTExICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5w
dXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGludG8g
bXVsdGlwbGUgZmllbGRzIHRpbWUgaW5wdXQKKyAgICAgICAgVUkgYnkgc2V0dGluZyAicm9sZSIg
SFRNTCBhdHRyaWJ1dGUgb2YgRGF0ZVRpbWVGaWVsZEVsZW1lbnQgdG8gInNwaW5idXR0b24iCisg
ICAgICAgIGFuZCBjaGFuZ2luZyBBUklBIGF0dHJpYnV0ZXMgdG8gcG9zdCB2YWx1ZSBjaGFuZ2Ug
bm90aWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWZmZWN0cyBwb3J0cyB3aGljaCBl
bmFibGUgYm90aCBFTkFCTEVfSU5QVVRfVFlQRV9USU1FIGFuZAorICAgICAgICBFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jt
cy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJp
YnV0ZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxk
cy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1s
CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQp
OiBDaGFuZ2VkIHRvIHNldAorICAgICAgICAicm9sZSIgSFRNTCBhdHRyaWJ1dGUgdG8gInNwaW5i
dXR0b24iLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxp
emUpOiBDaGFuZ2VkIHRvIHNldCBuZXcKKyAgICAgICAgcGFyYW1ldGVyIGF4SGVscFRleHQgdG8g
YXJpYS1oZWxwIGF0dHJpYnV0ZSBhbmQgc2V0IGFyaWEtdmFsdWVtYXggYW5kCisgICAgICAgIGFy
aWEtdmFsdWVtaW4gYXR0cmlidXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRF
bGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUpOiBDaGFuZ2VkIHRvIHNldAorICAgICAgICBhcmlh
LXZhbHVldGV4dCBhbmQgYXJpYS12YWx1ZW5vdyBhdHRyaWJ1dGVzLgorICAgICAgICAqIGh0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50Lmg6CisgICAgICAgIChEYXRlVGltZUZpZWxkRWxl
bWVudCk6IENoYW5nZWQgdG8gYWRkIG5ldyBwYXJhbWV0ZXIgYXhIZWxwVGV4dCB0byBpbml0aWFs
aXplKCkuCisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lQU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKTogQ2hh
bmdlZCB0byBhZGQgbmV3IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3Vy
RmllbGRFbGVtZW50OjpjcmVhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Om1heGltdW0pOiBBZGRl
ZCBmb3IgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxpemUoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSk6IGRpdHRvLgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oOgorICAgICAgICAo
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KTogQWRkZWQgbWF4aW11bSgpIGFuZCBtaW5pbXVt
KCkgZGVjbGFyYXRpb25zLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudDo6bWF4aW11bSk6IEFkZGVkIGZvciBEYXRlVGltZUZpZWxkRWxlbWVudDo6aW5pdGlh
bGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6
bWluaW11bSk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuaDoKKyAgICAgICAgKERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQpOiBB
ZGRlZCBtYXhpbXVtKCkgYW5kIG1pbmltdW0oKSBkZWNsYXJhdGlvbnMuCisKIDIwMTItMDktMTAg
IEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSBJbnB1
dFR5cGVOYW1lcyB0byBhIHNlcGFyYXRlIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAppbmRleCBiNjI0NjdkNGI5YTcwYzY1
ZjkxM2NkMWE0YzUwOTk3MGIzNjQ5NzJhLi5mNjM5NjgzYWIzYWJmYjE0N2UxNGM1ZGQ4NzE0OGRi
YThlMzhlZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGlt
ZUZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVGaWVsZEVsZW1lbnQuY3BwCkBAIC0zMCw4ICszMCwxMCBAQAogI2luY2x1ZGUgIkRhdGVDb21w
b25lbnRzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVu
dC5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNiArNDcsNyBAQCBEYXRlVGltZUZpZWxk
RWxlbWVudDo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBGaWVsZE93
bmVyJiBmaWVsZAogICAgIDogSFRNTEVsZW1lbnQoc3BhblRhZywgZG9jdW1lbnQpCiAgICAgLCBt
X2ZpZWxkT3duZXIoJmZpZWxkT3duZXIpCiB7CisgICAgc2V0QXR0cmlidXRlKHJvbGVBdHRyLCAi
c3BpbmJ1dHRvbiIpOwogfQogCiB2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTEyOSw4ICsxMzIsMTEgQEAgdm9pZCBEYXRlVGlt
ZUZpZWxkRWxlbWVudDo6Zm9jdXNPbk5leHRGaWVsZCgpCiAgICAgbV9maWVsZE93bmVyLT5mb2N1
c09uTmV4dEZpZWxkKCp0aGlzKTsKIH0KIAotdm9pZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6aW5p
dGlhbGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKQordm9pZCBEYXRlVGlt
ZUZpZWxkRWxlbWVudDo6aW5pdGlhbGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkLCBjb25zdCBTdHJpbmcmIGF4SGVscFRleHQpCiB7CisgICAgc2V0QXR0cmlidXRlKGFyaWFf
aGVscEF0dHIsIGF4SGVscFRleHQpOworICAgIHNldEF0dHJpYnV0ZShhcmlhX3ZhbHVlbWluQXR0
ciwgU3RyaW5nOjpudW1iZXIobWluaW11bSgpKSk7CisgICAgc2V0QXR0cmlidXRlKGFyaWFfdmFs
dWVtYXhBdHRyLCBTdHJpbmc6Om51bWJlcihtYXhpbXVtKCkpKTsKICAgICBzZXRTaGFkb3dQc2V1
ZG9JZChzaGFkb3dQc2V1ZG9JZCk7CiAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHZpc2libGVWYWx1ZSgpKSk7CiB9CkBAIC0xNzIsNiArMTc4LDggQEAgdm9pZCBEYXRl
VGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVoYXZpb3IgZXZlbnRC
ZWhhdmlvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgdGV4dE5vZGUtPnJlcGxhY2VXaG9sZVRl
eHQobmV3VmlzaWJsZVZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBzZXRBdHRyaWJ1
dGUoYXJpYV92YWx1ZXRleHRBdHRyLCBoYXNWYWx1ZSgpID8gbmV3VmlzaWJsZVZhbHVlIDogQVhE
YXRlVGltZUZpZWxkRW1wdHlWYWx1ZVRleHQoKSk7CisgICAgc2V0QXR0cmlidXRlKGFyaWFfdmFs
dWVub3dBdHRyLCBuZXdWaXNpYmxlVmFsdWUpOwogCiAgICAgaWYgKGV2ZW50QmVoYXZpb3IgPT0g
RGlzcGF0Y2hFdmVudCAmJiBtX2ZpZWxkT3duZXIpCiAgICAgICAgIG1fZmllbGRPd25lci0+Zmll
bGRWYWx1ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRmllbGRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRl
VGltZUZpZWxkRWxlbWVudC5oCmluZGV4IDBhOWJlZTAxMDYxZDEwMzNkNDUxYzdhYzIwNDhiMTIx
OTZmM2ZmNjMuLmVkMjk3Y2NhMjMyNmI3MDdhZDkyODQwN2ZkNWJhNDNhMzI4MDU3NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaApA
QCAtNzcsNyArNzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZvY3VzKCk7
CiAgICAgdm9pZCBmb2N1c09uTmV4dEZpZWxkKCk7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopID0gMDsKLSAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQsIGNvbnN0IFN0cmluZyYgYXhIZWxwVGV4dCk7CisgICAgdmlydHVh
bCBpbnQgbWF4aW11bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIHVuaXRJbk1pbGxpc2Vjb25kKCkgY29uc3QgPSAw
OwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVoYXZpb3IpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcApp
bmRleCBkOGJjODQ5ZmQwOTdmMDkzMzFmMTcxOTgyNDNmMmZlNThiNmM2ZjFjLi5hZDRjYjA2MGYy
OGViZjg2MGU2ZDAwM2VjZGQ0N2E2YjM5YTU0NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEYXRlVGltZUZpZWxkRWxlbWVudHMuaCIKIAogI2luY2x1ZGUgIkRhdGVD
b21wb25lbnRzLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3IEBAIFBh
c3NSZWZQdHI8RGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50PiBEYXRlVGltZUFNUE1GaWVsZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCoKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgYW1wbVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1hbXBtLWZpZWxkIikp
OwogICAgIFJlZlB0cjxEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQ+IGZpZWxkID0gYWRvcHRSZWYo
bmV3IERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgYW1wbUxh
YmVscykpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKGFtcG1Qc3VlZG9JZCk7CisgICAgZmllbGQt
PmluaXRpYWxpemUoYW1wbVBzdWVkb0lkLCBBWEFNUE1GaWVsZFRleHQoKSk7CiAgICAgcmV0dXJu
IGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtNjgsNyArNjksNyBAQCBQYXNzUmVmUHRyPERhdGVU
aW1lSG91ckZpZWxkRWxlbWVudD4gRGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGhvdXJQc3Vl
ZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCIpKTsKICAgICBSZWZQdHI8
RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50PiBmaWVsZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZUhv
dXJGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIG1pbmltdW0sIG1heGltdW0pKTsK
LSAgICBmaWVsZC0+aW5pdGlhbGl6ZShob3VyUHN1ZWRvSWQpOworICAgIGZpZWxkLT5pbml0aWFs
aXplKGhvdXJQc3VlZG9JZCwgQVhIb3VyRmllbGRUZXh0KCkpOwogICAgIHJldHVybiBmaWVsZC5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTEwNCw3ICsxMDUsNyBAQCBQYXNzUmVmUHRyPERhdGVUaW1lTWls
bGlzZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OmNy
ZQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtaWxsaXNlY29uZFBz
dWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCIpKTsKICAg
ICBSZWZQdHI8RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudD4gZmllbGQgPSBhZG9wdFJl
ZihuZXcgRGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25l
cikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1ZWRvSWQpOworICAgIGZp
ZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1ZWRvSWQsIEFYTWlsbGlzZWNvbmRGaWVsZFRl
eHQoKSk7CiAgICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTI5LDcgKzEzMCw3
IEBAIFBhc3NSZWZQdHI8RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ+IERhdGVUaW1lTWludXRl
RmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG1pbnV0ZVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51
dGUtZmllbGQiKSk7CiAgICAgUmVmUHRyPERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50PiBmaWVs
ZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudChkb2N1bWVudCwgZmll
bGRPd25lcikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbnV0ZVBzdWVkb0lkKTsKKyAgICBm
aWVsZC0+aW5pdGlhbGl6ZShtaW51dGVQc3VlZG9JZCwgQVhNaW51dGVGaWVsZFRleHQoKSk7CiAg
ICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTU0LDcgKzE1NSw3IEBAIFBhc3NS
ZWZQdHI8RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lU2Vjb25kRmllbGRFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIHNlY29uZFBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGQi
KSk7CiAgICAgUmVmUHRyPERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50PiBmaWVsZCA9IGFkb3B0
UmVmKG5ldyBEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lcikp
OwotICAgIGZpZWxkLT5pbml0aWFsaXplKHNlY29uZFBzdWVkb0lkKTsKKyAgICBmaWVsZC0+aW5p
dGlhbGl6ZShzZWNvbmRQc3VlZG9JZCwgQVhTZWNvbmRGaWVsZFRleHQoKSk7CiAgICAgcmV0dXJu
IGZpZWxkLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggYmY4MGFmOTQy
M2Y0YmE2MTg3YjQ1NTM2ZWUzNzVjZTU5YzVjODJhZC4uNGFlN2U5ZDQ1ZDk4NzU0ZDVkZDdjYTA5
NWRiM2NmODgzMmU4NzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCkBAIC0yNywxMiArMjcsMTUg
QEAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUykKICNpbmNsdWRl
ICJEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWROdW1iZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogc3RhdGljIGNvbnN0IERPTVRp
bWVTdGFtcCB0eXBlQWhlYWRUaW1lb3V0ID0gMTAwMDsKIAogc3RhdGljIHNpemVfdCBkaXNwbGF5
U2l6ZU9mTnVtYmVyKGludCB2YWx1ZSkKQEAgLTExMSw2ICsxMTQsMTYgQEAgYm9vbCBEYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQ6Omhhc1ZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9oYXNW
YWx1ZTsKIH0KIAoraW50IERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWF4aW11bSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2UubWF4aW11bTsKK30KKworaW50IERhdGVUaW1lTnVt
ZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2Uu
bWluaW11bTsKK30KKwogdm9pZCBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6OnNldEVtcHR5
VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAgICAgbV9sYXN0RGlnaXRDaGFyVGltZSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVs
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0Zp
ZWxkRWxlbWVudC5oCmluZGV4IDI4M2U2MDY3MjNmYWZlYzdmNWI1OTdkNmQ0Nzc5ZDA1N2EzZjk2
ZGYuLjdjNzNmMWI4NjA2NDRmNThhODJiNTc3M2UxY2RkY2ViZmQ1NzJlOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxl
bWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGaWVsZEVs
ZW1lbnQgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBkaWRCbHVyKCkgT1ZFUlJJREUgRklO
QUw7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCop
IE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCB2b2lkIHNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRh
dGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJlaGF2aW9yKSBPVkVSUklERSBGSU5BTDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RlcERvd24oKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RlcFVwKCkgT1ZFUlJJREUgRklOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCmluZGV4IGJlYWRj
YTk3NDNjMTE2YzE0ZDMxODUyZTc5NTNjYWI3ZTJhZDMyMTMuLjZjYjRlYzFlMjZjNjkwNWNjMTgw
ZGQ4NzQ4MTIzZjViMGE2OTAxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCkBAIC05NSw2ICs5
NSwxNiBAQCBib29sIERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6Omhhc1ZhbHVlKCkgY29u
c3QKICAgICByZXR1cm4gbV9zZWxlY3RlZEluZGV4ID49IDA7CiB9CiAKK2ludCBEYXRlVGltZVN5
bWJvbGljRmllbGRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihtX3N5bWJvbHMuc2l6ZSgpKTsKK30KKworaW50IERhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAoreworICAgIHJldHVybiAxOworfQorCiB2b2lk
IERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6OnNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNv
bXBvbmVudHMmLCBFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAgICAgbV9zZWxlY3Rl
ZEluZGV4ID0gaW52YWxpZEluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oCmluZGV4IGIyMWE4ZTRmM2Vm
NGU3YzE1OWM0MDdkYTM2N2M3MWY1Y2Q5ZDA3NmUuLjdjNWY2N2I4OWNjZjBhZjVjZDMwMGJiNzE1
NDlkYzk2NDY3NTQ4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rh
dGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHJp
dmF0ZToKICAgICAvLyBEYXRlVGltZUZpZWxkRWxlbWVudCBmdW5jdGlvbnMuCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFIEZJTkFM
OwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOworICAg
IHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFs
IGludCBtaW5pbXVtKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVGb3JSZWFkT25seUZpZWxkLCBF
dmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RlcERvd24oKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3Rl
cFVwKCkgT1ZFUlJJREUgRklOQUw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGRhM2QxMTczNDZjMjE4ZTNkNzI5ZTNlOGYz
MDM2NzczNDViNTViNS4uZmRmYWE5OTliOGEwYzllYzY3MjExZThlMTVjYjk4YWIzMDg4NzY5ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTExICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3Np
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5wdXQgbmVlZHMgYWNjZXNzaWJp
bGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYw
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdHdvIHRlc3RzIGZvciBjaGVja2luZyBhY2Nlc3NpYmlsaXR5IGZ1bmN0aW9u
YWxpdGllcworICAgICAgICBpbiBtdWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFmZmVjdHMgcG9ydHMgd2hpY2ggZW5hYmxlIGJvdGggRU5BQkxFX0lO
UFVUX1RZUEVfVElNRSBhbmQKKyAgICAgICAgRU5BQkxFX0lOUFVUX1RZUEVfVElNRV9NVUxUSVBM
RV9GSUVMRFMuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3Rp
bWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBs
ZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLmh0bWw6IEFkZGVkIHRvIGNoZWNrIEFSSUEgYXR0
cmlidXRlcyB1c2VkIGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0IFVJLgorICAgICAgICAq
IGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgt
dmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4
LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkIHRvIGNoZWNrIGFjY2Vzc2li
aWxpdHkgbm90aWZpY2F0aW9uIHN1cHBvcnRzIGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0
IFVJLgorCiAyMDEyLTA5LTEwICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEyNzIyNik6IENhbGxpbmcgRGF0ZVRpbWVFZGl0RWxl
bWVudDo6bGF5b3V0KCkgaW4gZm9jdXMgaGFuZGxlciBzaG91bGQgbm90IGRpc3BhdGNoIGJsdXIg
ZXZlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1m
aWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0
aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
Y2VjMDRiNGRkZGE2NjA2ODE3NzM2Y2Q2YmI1ZjM1ZDliOTdlNDk1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRp
cGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKK1RoaXMgdGVzdCBjaGVja3MgYXJpYS1oZWxwIGF0dHJpYnV0ZSBvZiBmaWVsZHMgaW4gbXVs
dGlwbGUgZmllbGRzIHRpbWUgaW5wdXQgVUkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitOb24tZW1wdHkgdmFsdWUKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBpcyAiQVhI
ZWxwOiBIb3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiAxMiwgMSwgMTIiCitQQVNTIGhlbHBUZXh0
T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogTWludXRlcywgQVhWYWx1ZURlc2NyaXB0aW9uOiAz
NCwgMCwgNTkiCitQQVNTIGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogU2Vjb25k
cywgQVhWYWx1ZURlc2NyaXB0aW9uOiA1NiwgMCwgNTkiCitQQVNTIGhlbHBUZXh0T2ZGb2N1c0Zp
ZWxkKCkgaXMgIkFYSGVscDogTWlsbGlzZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IDc4OSwg
MCwgOTk5IgorUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6IEFNL1BNLCBB
WFZhbHVlRGVzY3JpcHRpb246IFBNLCAxLCAyIgorRW1wdHkgdmFsdWUKK1BBU1MgaGVscFRleHRP
ZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxwOiBBTS9QTSwgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFu
aywgMSwgMiIKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxwOiBNaWxsaXNl
Y29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDk5OSIKK1BBU1MgaGVscFRleHRP
ZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxwOiBTZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IGJs
YW5rLCAwLCA1OSIKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxwOiBNaW51
dGVzLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAwLCA1OSIKK1BBU1MgaGVscFRleHRPZkZv
Y3VzRmllbGQoKSBpcyAiQVhIZWxwOiBIb3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywg
MSwgMTIiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmll
bGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxk
cy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzdlN2YyYThmYjMzYzRhYmNl
YmQ0Y2NlMTA3MzJkYWYyOThiMDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlh
LWF0dHJpYnV0ZXMuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9dGVzdCB0eXBl
PSJ0aW1lIiB2YWx1ZT0iMTI6MzQ6NTYuNzg5Ij4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGhp
cyB0ZXN0IGNoZWNrcyBhcmlhLWhlbHAgYXR0cmlidXRlIG9mIGZpZWxkcyBpbiBtdWx0aXBsZSBm
aWVsZHMgdGltZSBpbnB1dCBVSS4nKTsKKworZnVuY3Rpb24gZW5hYmxlQWNjZXNzaWJpbGl0eSgp
Cit7CisgICAgaWYgKCF3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
ZGVidWcoIlBsZWFzZSBydW4gaW5zaWRlIER1bXBSZW5kZXJUcmVlLiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorfQorCitmdW5jdGlvbiBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpCit7CisgICAg
aWYgKCF3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICB2YXIgZWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Cisg
ICAgcmV0dXJuIGVsZW1lbnQuaGVscFRleHQgKyAiLCAiICsgIGVsZW1lbnQudmFsdWVEZXNjcmlw
dGlvbiArICIsICIgKyBlbGVtZW50Lm1pblZhbHVlICsgIiwgIiArIGVsZW1lbnQubWF4VmFsdWU7
Cit9CisKK2Z1bmN0aW9uIGtleURvd24oa2V5LCBtb2RpZmllcnMpCit7CisgICAgaWYgKCF3aW5k
b3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBldmVudFNlbmRlci5rZXlEb3du
KGtleSwgbW9kaWZpZXJzKTsKK30KKwordmFyIHRlc3RJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7CisKK2VuYWJsZUFjY2Vzc2liaWxpdHkoKTsKK3Rlc3RJbnB1dC5mb2N1
cygpOworCitkZWJ1ZygnTm9uLWVtcHR5IHZhbHVlJyk7Cit0ZXN0SW5wdXQuZm9jdXMoKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScsICdBWEhlbHA6IEhv
dXJzLCBBWFZhbHVlRGVzY3JpcHRpb246IDEyLCAxLCAxMicpOwora2V5RG93bignXHQnKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScsICdBWEhlbHA6IE1p
bnV0ZXMsIEFYVmFsdWVEZXNjcmlwdGlvbjogMzQsIDAsIDU5Jyk7CitrZXlEb3duKCdcdCcpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDog
U2Vjb25kcywgQVhWYWx1ZURlc2NyaXB0aW9uOiA1NiwgMCwgNTknKTsKK2tleURvd24oJ1x0Jyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCknLCAnQVhIZWxw
OiBNaWxsaXNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogNzg5LCAwLCA5OTknKTsKK2tleURv
d24oJ1x0Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkn
LCAnQVhIZWxwOiBBTS9QTSwgQVhWYWx1ZURlc2NyaXB0aW9uOiBQTSwgMSwgMicpOworCitkZWJ1
ZygnRW1wdHkgdmFsdWUnKTsKK2tleURvd24oJ1xiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCknLCAnQVhIZWxwOiBBTS9QTSwgQVhWYWx1ZURlc2NyaXB0
aW9uOiBibGFuaywgMSwgMicpOwora2V5RG93bignXHQnLCBbJ3NoaWZ0S2V5J10pOwora2V5RG93
bignXGInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScs
ICdBWEhlbHA6IE1pbGxpc2Vjb25kcywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywgMCwgOTk5
Jyk7CitrZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CitrZXlEb3duKCdcYicpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogU2Vjb25k
cywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywgMCwgNTknKTsKK2tleURvd24oJ1x0JywgWydz
aGlmdEtleSddKTsKK2tleURvd24oJ1xiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBU
ZXh0T2ZGb2N1c0ZpZWxkKCknLCAnQVhIZWxwOiBNaW51dGVzLCBBWFZhbHVlRGVzY3JpcHRpb246
IGJsYW5rLCAwLCA1OScpOwora2V5RG93bignXHQnLCBbJ3NoaWZ0S2V5J10pOwora2V5RG93bign
XGInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScsICdB
WEhlbHA6IEhvdXJzLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAxLCAxMicpOworCitkZWJ1
ZygnJyk7Cit0ZXN0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXN0SW5wdXQpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMt
YXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12
YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZkZjJh
N2JkNzAzNDMxMGY1Y2ZkNTg5YmY0YzMyY2JmZmQ0NTBhNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1m
aWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1RoaXMgdGVzdCBjaGVja3MgdmFsdWUgY2hhbmdlZCBhY2Nlc3NpYmlsaXR5IG5v
dGlmaWNhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkIEFYSGVscDogSG91cnM9QVhWYWx1ZURlc2NyaXB0aW9uOiAxMgorRm9jdXNl
ZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMzQK
K1ZhbHVlQ2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAwNQorVmFs
dWVDaGFuZ2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246IDA1CisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlw
bGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4
LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNlMzM3MGUyNWZi
OTVkNTA1NDQ5MjhlM2E3ZGU3ZTM4NGY3MGJhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMt
YXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
aW5wdXQgaWQ9dGVzdCB0eXBlPSJ0aW1lIiB2YWx1ZT0iMTI6MzQ6NTYuNzg5Ij4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0IGNoZWNrcyB2YWx1ZSBjaGFuZ2VkIGFjY2Vzc2liaWxp
dHkgbm90aWZpY2F0aW9uLicpOworCitmdW5jdGlvbiBlbmFibGVBY2Nlc3NpYmlsaXR5KCkKK3sK
KyAgICBpZiAoIXdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkZWJ1
ZygiUGxlYXNlIHJ1biBpbnNpZGUgRHVtcFJlbmRlclRyZWUuIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hZGROb3RpZmljYXRpb25MaXN0
ZW5lcihmdW5jdGlvbiAoZWxlbWVudCwgbm90aWZpY2F0aW9uKSB7CisgICAgICAgIGlmIChub3Rp
ZmljYXRpb24gPT0gJ0ZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkJyB8fCBub3RpZmljYXRpb24gPT0g
J1ZhbHVlQ2hhbmdlZCcpIHsKKyAgICAgICAgICAgIGRlYnVnKG5vdGlmaWNhdGlvbiArICcgJyAr
IGVsZW1lbnQuaGVscFRleHQgKyAnPScgKyBlbGVtZW50LnZhbHVlRGVzY3JpcHRpb24pOworICAg
ICAgICB9CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGtleURvd24oa2V5LCBtb2RpZmllcnMpCit7
CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KKwordmFyIHRlc3RJbnB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisKK2VuYWJsZUFjY2Vzc2liaWxpdHkoKTsK
K3Rlc3RJbnB1dC5mb2N1cygpOwora2V5RG93bignXHQnKTsKK2tleURvd24oJzQnKTsKK2tleURv
d24oJ3VwQXJyb3cnKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit3aW5kb3cu
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgZGVidWcoJycpOworICAgIHRlc3RJbnB1dC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKHRlc3RJbnB1dCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
LCAxKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163511</attachid>
            <date>2012-09-11 20:51:45 -0700</date>
            <delta_ts>2012-09-12 19:15:59 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-96032-20120912125119.patch</filename>
            <type>text/plain</type>
            <size>19980</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiMjU4NzAzYTAyY2Y3
ZDZlZGIzOGFhZTYwODJiNjMxZjRkNGRmZi4uZjJlMGEzY2YxZWZjMDBlYzJjYTRmYTdlNWFkYzli
YmQ4ODk5NDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTExICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5w
dXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGludG8g
bXVsdGlwbGUgZmllbGRzIHRpbWUgaW5wdXQKKyAgICAgICAgVUkgYnkgc2V0dGluZyAicm9sZSIg
SFRNTCBhdHRyaWJ1dGUgb2YgRGF0ZVRpbWVGaWVsZEVsZW1lbnQgdG8gInNwaW5idXR0b24iCisg
ICAgICAgIGFuZCBjaGFuZ2luZyBBUklBIGF0dHJpYnV0ZXMgdG8gcG9zdCB2YWx1ZSBjaGFuZ2Ug
bm90aWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWZmZWN0cyBwb3J0cyB3aGljaCBl
bmFibGUgYm90aCBFTkFCTEVfSU5QVVRfVFlQRV9USU1FIGFuZAorICAgICAgICBFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jt
cy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJp
YnV0ZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxk
cy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1s
CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQp
OiBDaGFuZ2VkIHRvIHNldAorICAgICAgICAicm9sZSIgSFRNTCBhdHRyaWJ1dGUgdG8gInNwaW5i
dXR0b24iLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxp
emUpOiBDaGFuZ2VkIHRvIHNldCBuZXcKKyAgICAgICAgcGFyYW1ldGVyIGF4SGVscFRleHQgdG8g
YXJpYS1oZWxwIGF0dHJpYnV0ZSBhbmQgc2V0IGFyaWEtdmFsdWVtYXggYW5kCisgICAgICAgIGFy
aWEtdmFsdWVtaW4gYXR0cmlidXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRF
bGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUpOiBDaGFuZ2VkIHRvIHNldAorICAgICAgICBhcmlh
LXZhbHVldGV4dCBhbmQgYXJpYS12YWx1ZW5vdyBhdHRyaWJ1dGVzLgorICAgICAgICAqIGh0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50Lmg6CisgICAgICAgIChEYXRlVGltZUZpZWxkRWxl
bWVudCk6IENoYW5nZWQgdG8gYWRkIG5ldyBwYXJhbWV0ZXIgYXhIZWxwVGV4dCB0byBpbml0aWFs
aXplKCkuCisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lQU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKTogQ2hh
bmdlZCB0byBhZGQgbmV3IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3Vy
RmllbGRFbGVtZW50OjpjcmVhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Om1heGltdW0pOiBBZGRl
ZCBmb3IgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxpemUoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSk6IGRpdHRvLgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oOgorICAgICAgICAo
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KTogQWRkZWQgbWF4aW11bSgpIGFuZCBtaW5pbXVt
KCkgZGVjbGFyYXRpb25zLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudDo6bWF4aW11bSk6IEFkZGVkIGZvciBEYXRlVGltZUZpZWxkRWxlbWVudDo6aW5pdGlh
bGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6
bWluaW11bSk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuaDoKKyAgICAgICAgKERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQpOiBB
ZGRlZCBtYXhpbXVtKCkgYW5kIG1pbmltdW0oKSBkZWNsYXJhdGlvbnMuCisKIDIwMTItMDktMTEg
IEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3JlYXRlIExv
Y2FsaXplciBmYWN0b3J5IG1ldGhvZCBmb3IgTG9jYWxlSUNVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggYjYyNDY3ZDRi
OWE3MGM2NWY5MTNjZDFhNGM1MDk5NzBiMzY0OTcyYS4uZjYzOTY4M2FiM2FiZmIxNDdlMTRjNWRk
ODcxNDhkYmE4ZTM4ZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcApAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJE
YXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIktleWJv
YXJkRXZlbnQuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDYgKzQ3LDcgQEAgRGF0ZVRp
bWVGaWVsZEVsZW1lbnQ6OkRhdGVUaW1lRmllbGRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwg
RmllbGRPd25lciYgZmllbGQKICAgICA6IEhUTUxFbGVtZW50KHNwYW5UYWcsIGRvY3VtZW50KQog
ICAgICwgbV9maWVsZE93bmVyKCZmaWVsZE93bmVyKQogeworICAgIHNldEF0dHJpYnV0ZShyb2xl
QXR0ciwgInNwaW5idXR0b24iKTsKIH0KIAogdm9pZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0xMjksOCArMTMyLDExIEBAIHZvaWQg
RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmZvY3VzT25OZXh0RmllbGQoKQogICAgIG1fZmllbGRPd25l
ci0+Zm9jdXNPbk5leHRGaWVsZCgqdGhpcyk7CiB9CiAKLXZvaWQgRGF0ZVRpbWVGaWVsZEVsZW1l
bnQ6OmluaXRpYWxpemUoY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCkKK3ZvaWQg
RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxpemUoY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCwgY29uc3QgU3RyaW5nJiBheEhlbHBUZXh0KQogeworICAgIHNldEF0dHJpYnV0
ZShhcmlhX2hlbHBBdHRyLCBheEhlbHBUZXh0KTsKKyAgICBzZXRBdHRyaWJ1dGUoYXJpYV92YWx1
ZW1pbkF0dHIsIFN0cmluZzo6bnVtYmVyKG1pbmltdW0oKSkpOworICAgIHNldEF0dHJpYnV0ZShh
cmlhX3ZhbHVlbWF4QXR0ciwgU3RyaW5nOjpudW1iZXIobWF4aW11bSgpKSk7CiAgICAgc2V0U2hh
ZG93UHNldWRvSWQoc2hhZG93UHNldWRvSWQpOwogICAgIGFwcGVuZENoaWxkKFRleHQ6OmNyZWF0
ZShkb2N1bWVudCgpLCB2aXNpYmxlVmFsdWUoKSkpOwogfQpAQCAtMTcyLDYgKzE3OCw4IEBAIHZv
aWQgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWx1ZShFdmVudEJlaGF2aW9y
IGV2ZW50QmVoYXZpb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRleHROb2RlLT5yZXBsYWNl
V2hvbGVUZXh0KG5ld1Zpc2libGVWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgc2V0
QXR0cmlidXRlKGFyaWFfdmFsdWV0ZXh0QXR0ciwgaGFzVmFsdWUoKSA/IG5ld1Zpc2libGVWYWx1
ZSA6IEFYRGF0ZVRpbWVGaWVsZEVtcHR5VmFsdWVUZXh0KCkpOworICAgIHNldEF0dHJpYnV0ZShh
cmlhX3ZhbHVlbm93QXR0ciwgbmV3VmlzaWJsZVZhbHVlKTsKIAogICAgIGlmIChldmVudEJlaGF2
aW9yID09IERpc3BhdGNoRXZlbnQgJiYgbV9maWVsZE93bmVyKQogICAgICAgICBtX2ZpZWxkT3du
ZXItPmZpZWxkVmFsdWVDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaAppbmRleCAwYTliZWUwMTA2MWQxMDMzZDQ1MWM3YWMy
MDQ4YjEyMTk2ZjNmZjYzLi5lZDI5N2NjYTIzMjZiNzA3YWQ5Mjg0MDdmZDViYTQzYTMyODA1NzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVt
ZW50LmgKQEAgLTc3LDcgKzc3LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
b2N1cygpOwogICAgIHZvaWQgZm9jdXNPbk5leHRGaWVsZCgpOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqKSA9IDA7Ci0gICAgdm9pZCBpbml0aWFs
aXplKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkLCBjb25zdCBTdHJpbmcmIGF4SGVscFRleHQpOworICAg
IHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWluaW11
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSB1bml0SW5NaWxsaXNlY29uZCgpIGNv
bnN0ID0gMDsKICAgICB2b2lkIHVwZGF0ZVZpc2libGVWYWx1ZShFdmVudEJlaGF2aW9yKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50
cy5jcHAKaW5kZXggZDhiYzg0OWZkMDk3ZjA5MzMxZjE3MTk4MjQzZjJmZTU4YjZjNmYxYy4uYWQ0
Y2IwNjBmMjhlYmY4NjBlNmQwMDNlY2RkNDdhNmIzOWE1NDU4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmgiCiAKICNpbmNsdWRl
ICJEYXRlQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNs
dWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArNDIs
NyBAQCBQYXNzUmVmUHRyPERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudD4gRGF0ZVRpbWVBTVBNRmll
bGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGFtcG1Qc3VlZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtYW1wbS1m
aWVsZCIpKTsKICAgICBSZWZQdHI8RGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50PiBmaWVsZCA9IGFk
b3B0UmVmKG5ldyBEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIs
IGFtcG1MYWJlbHMpKTsKLSAgICBmaWVsZC0+aW5pdGlhbGl6ZShhbXBtUHN1ZWRvSWQpOworICAg
IGZpZWxkLT5pbml0aWFsaXplKGFtcG1Qc3VlZG9JZCwgQVhBTVBNRmllbGRUZXh0KCkpOwogICAg
IHJldHVybiBmaWVsZC5yZWxlYXNlKCk7CiB9CiAKQEAgLTY4LDcgKzY5LDcgQEAgUGFzc1JlZlB0
cjxEYXRlVGltZUhvdXJGaWVsZEVsZW1lbnQ+IERhdGVUaW1lSG91ckZpZWxkRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KgogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBo
b3VyUHN1ZWRvSWQsICgiLXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQiKSk7CiAgICAg
UmVmUHRyPERhdGVUaW1lSG91ckZpZWxkRWxlbWVudD4gZmllbGQgPSBhZG9wdFJlZihuZXcgRGF0
ZVRpbWVIb3VyRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVsZE93bmVyLCBtaW5pbXVtLCBtYXhp
bXVtKSk7Ci0gICAgZmllbGQtPmluaXRpYWxpemUoaG91clBzdWVkb0lkKTsKKyAgICBmaWVsZC0+
aW5pdGlhbGl6ZShob3VyUHN1ZWRvSWQsIEFYSG91ckZpZWxkVGV4dCgpKTsKICAgICByZXR1cm4g
ZmllbGQucmVsZWFzZSgpOwogfQogCkBAIC0xMDQsNyArMTA1LDcgQEAgUGFzc1JlZlB0cjxEYXRl
VGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50PiBEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVt
ZW50OjpjcmUKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbWlsbGlz
ZWNvbmRQc3VlZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtbWlsbGlzZWNvbmQtZmllbGQi
KSk7CiAgICAgUmVmUHRyPERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ+IGZpZWxkID0g
YWRvcHRSZWYobmV3IERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZp
ZWxkT3duZXIpKTsKLSAgICBmaWVsZC0+aW5pdGlhbGl6ZShtaWxsaXNlY29uZFBzdWVkb0lkKTsK
KyAgICBmaWVsZC0+aW5pdGlhbGl6ZShtaWxsaXNlY29uZFBzdWVkb0lkLCBBWE1pbGxpc2Vjb25k
RmllbGRUZXh0KCkpOwogICAgIHJldHVybiBmaWVsZC5yZWxlYXNlKCk7CiB9CiAKQEAgLTEyOSw3
ICsxMzAsNyBAQCBQYXNzUmVmUHRyPERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50PiBEYXRlVGlt
ZU1pbnV0ZUZpZWxkRWxlbWVudDo6Y3JlYXRlKERvY3VtZQogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBtaW51dGVQc3VlZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVk
aXQtbWludXRlLWZpZWxkIikpOwogICAgIFJlZlB0cjxEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVu
dD4gZmllbGQgPSBhZG9wdFJlZihuZXcgRGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQoZG9jdW1l
bnQsIGZpZWxkT3duZXIpKTsKLSAgICBmaWVsZC0+aW5pdGlhbGl6ZShtaW51dGVQc3VlZG9JZCk7
CisgICAgZmllbGQtPmluaXRpYWxpemUobWludXRlUHN1ZWRvSWQsIEFYTWludXRlRmllbGRUZXh0
KCkpOwogICAgIHJldHVybiBmaWVsZC5yZWxlYXNlKCk7CiB9CiAKQEAgLTE1NCw3ICsxNTUsNyBA
QCBQYXNzUmVmUHRyPERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50PiBEYXRlVGltZVNlY29uZEZp
ZWxkRWxlbWVudDo6Y3JlYXRlKERvY3VtZQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBzZWNvbmRQc3VlZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtc2Vjb25k
LWZpZWxkIikpOwogICAgIFJlZlB0cjxEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudD4gZmllbGQg
PSBhZG9wdFJlZihuZXcgRGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxk
T3duZXIpKTsKLSAgICBmaWVsZC0+aW5pdGlhbGl6ZShzZWNvbmRQc3VlZG9JZCk7CisgICAgZmll
bGQtPmluaXRpYWxpemUoc2Vjb25kUHN1ZWRvSWQsIEFYU2Vjb25kRmllbGRUZXh0KCkpOwogICAg
IHJldHVybiBmaWVsZC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCmluZGV4IGJm
ODBhZjk0MjNmNGJhNjE4N2I0NTUzNmVlMzc1Y2U1OWM1YzgyYWQuLmNmOGE0YTMzODQ0N2IyM2Q5
MWE5NWI2MzNiNzZmYjg3MGM5MTdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApAQCAtMTExLDYg
KzExMSwxNiBAQCBib29sIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6aGFzVmFsdWUoKSBj
b25zdAogICAgIHJldHVybiBtX2hhc1ZhbHVlOwogfQogCitpbnQgRGF0ZVRpbWVOdW1lcmljRmll
bGRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yYW5nZS5tYXhpbXVt
OworfQorCitpbnQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjptaW5pbXVtKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yYW5nZS5taW5pbXVtOworfQorCiB2b2lkIERhdGVUaW1lTnVtZXJp
Y0ZpZWxkRWxlbWVudDo6c2V0RW1wdHlWYWx1ZShjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZUZv
clJlYWRPbmx5RmllbGQsIEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvcikKIHsKICAgICBtX2xh
c3REaWdpdENoYXJUaW1lID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKaW5kZXggMjgzZTYwNjcyM2ZhZmVj
N2Y1YjU5N2Q2ZDQ3NzlkMDU3YTNmOTZkZi4uN2M3M2YxYjg2MDY0NGY1OGE4MmI1NzczZTFjZGRj
ZWJmZDU3MmU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVOdW1lcmljRmllbGRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmgKQEAgLTY1LDYgKzY1LDggQEAgcHJpdmF0ZToK
ICAgICAvLyBEYXRlVGltZUZpZWxkRWxlbWVudCBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCB2b2lk
IGRpZEJsdXIoKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9h
cmRFdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCBpbnQg
bWF4aW11bSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgaW50IG1pbmltdW0o
KSBjb25zdCBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW1wdHlWYWx1ZShj
b25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZUZvclJlYWRPbmx5RmllbGQsIEV2ZW50QmVoYXZpb3Ip
IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwRG93bigpIE9WRVJSSURFIEZJ
TkFMOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXAoKSBPVkVSUklERSBGSU5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudC5jcHAKaW5kZXggYmVhZGNhOTc0M2MxMTZjMTRkMzE4NTJlNzk1M2NhYjdlMmFkMzIx
My4uNmNiNGVjMWUyNmM2OTA1Y2MxODBkZDg3NDgxMjNmNWIwYTY5MDE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudC5jcHAKQEAgLTk1LDYgKzk1LDE2IEBAIGJvb2wgRGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudDo6aGFzVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtX3NlbGVjdGVkSW5kZXggPj0g
MDsKIH0KIAoraW50IERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6Om1heGltdW0oKSBjb25z
dAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fc3ltYm9scy5zaXplKCkpOworfQor
CitpbnQgRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6bWluaW11bSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIDE7Cit9CisKIHZvaWQgRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6c2V0
RW1wdHlWYWx1ZShjb25zdCBEYXRlQ29tcG9uZW50cyYsIEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhh
dmlvcikKIHsKICAgICBtX3NlbGVjdGVkSW5kZXggPSBpbnZhbGlkSW5kZXg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVt
ZW50LmgKaW5kZXggYjIxYThlNGYzZWY0ZTdjMTU5YzQwN2RhMzY3YzcxZjVjZDlkMDc2ZS4uN2M1
ZjY3Yjg5Y2NmMGFmNWNkMzAwYmI3MTU0OWRjOTY0Njc1NDgzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQu
aApAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogICAgIC8vIERhdGVUaW1lRmllbGRFbGVtZW50
IGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2Fy
ZEV2ZW50KikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29u
c3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNvbnN0IE9WRVJS
SURFIEZJTkFMOworICAgIHZpcnR1YWwgaW50IG1pbmltdW0oKSBjb25zdCBPVkVSUklERSBGSU5B
TDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW1wdHlWYWx1ZShjb25zdCBEYXRlQ29tcG9uZW50cyYg
ZGF0ZUZvclJlYWRPbmx5RmllbGQsIEV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZlbnQpIE9W
RVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwRG93bigpIE9WRVJSSURFIEZJTkFM
OwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXAoKSBPVkVSUklERSBGSU5BTDsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNDlm
MjhiMDM1ODdjOWM5ZmE0ZDMzYTA1NWY5ZmQwYThjMmI1YmZjLi4wYzM4NTU5ZDEzZGRlZWYwM2M0
YzMwYjBhZTYwMDgxYmY2ZGMxYTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDktMTEg
IFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBOZXcgdGlt
ZSBpbnB1dCBuZWVkcyBhY2Nlc3NpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjAzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0d28gdGVzdHMgZm9yIGNoZWNraW5n
IGFjY2Vzc2liaWxpdHkgZnVuY3Rpb25hbGl0aWVzCisgICAgICAgIGluIG11bHRpcGxlIGZpZWxk
cyB0aW1lIGlucHV0IFVJLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWZmZWN0cyBwb3J0cyB3aGlj
aCBlbmFibGUgYm90aCBFTkFCTEVfSU5QVVRfVFlQRV9USU1FIGFuZAorICAgICAgICBFTkFCTEVf
SU5QVVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUy4KKworICAgICAgICAqIGZhc3QvZm9ybXMv
dGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90aW1lLW11bHRp
cGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRtbDog
QWRkZWQgdG8gY2hlY2sgQVJJQSBhdHRyaWJ1dGVzIHVzZWQgaW4gbXVsdGlwbGUgZmllbGRzIHRp
bWUgaW5wdXQgVUkuCisgICAgICAgICogZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90
aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMv
dGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbDog
QWRkZWQgdG8gY2hlY2sgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb24gc3VwcG9ydHMgaW4gbXVs
dGlwbGUgZmllbGRzIHRpbWUgaW5wdXQgVUkuCisKIDIwMTItMDktMTEgIFN0ZXBoYW5pZSBMZXdp
cyAgPHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBzcGF0aWFsLW5hdmlnYXRpb24g
dGVzdHMgb24gbWFjLXdrMiBiZWNhdXNlIHRoZXkgYXJlIGFsbCBmYWlsaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRp
cGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1h
cmlhLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZWMwNGI0ZGRkYTY2MDY4
MTc3MzZjZDZiYjVmMzVkOWI5N2U0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFy
aWEtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGhpcyB0ZXN0IGNo
ZWNrcyBhcmlhLWhlbHAgYXR0cmlidXRlIG9mIGZpZWxkcyBpbiBtdWx0aXBsZSBmaWVsZHMgdGlt
ZSBpbnB1dCBVSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK05vbi1lbXB0eSB2
YWx1ZQorUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6IEhvdXJzLCBBWFZh
bHVlRGVzY3JpcHRpb246IDEyLCAxLCAxMiIKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBp
cyAiQVhIZWxwOiBNaW51dGVzLCBBWFZhbHVlRGVzY3JpcHRpb246IDM0LCAwLCA1OSIKK1BBU1Mg
aGVscFRleHRPZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxwOiBTZWNvbmRzLCBBWFZhbHVlRGVzY3Jp
cHRpb246IDU2LCAwLCA1OSIKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxw
OiBNaWxsaXNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogNzg5LCAwLCA5OTkiCitQQVNTIGhl
bHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogQU0vUE0sIEFYVmFsdWVEZXNjcmlwdGlv
bjogUE0sIDEsIDIiCitFbXB0eSB2YWx1ZQorUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlz
ICJBWEhlbHA6IEFNL1BNLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAxLCAyIgorUEFTUyBo
ZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6IE1pbGxpc2Vjb25kcywgQVhWYWx1ZURl
c2NyaXB0aW9uOiBibGFuaywgMCwgOTk5IgorUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlz
ICJBWEhlbHA6IFNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDU5IgorUEFT
UyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6IE1pbnV0ZXMsIEFYVmFsdWVEZXNj
cmlwdGlvbjogYmxhbmssIDAsIDU5IgorUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJB
WEhlbHA6IEhvdXJzLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAxLCAxMiIKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBs
ZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmli
dXRlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzN2U3ZjJhOGZiMzNjNGFiY2ViZDRjY2UxMDczMmRhZjI5
OGIwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVs
dGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy5odG1s
CkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBpZD10ZXN0IHR5cGU9InRpbWUiIHZhbHVlPSIx
MjozNDo1Ni43ODkiPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3QgY2hlY2tzIGFy
aWEtaGVscCBhdHRyaWJ1dGUgb2YgZmllbGRzIGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0
IFVJLicpOworCitmdW5jdGlvbiBlbmFibGVBY2Nlc3NpYmlsaXR5KCkKK3sKKyAgICBpZiAoIXdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkZWJ1ZygiUGxlYXNlIHJ1
biBpbnNpZGUgRHVtcFJlbmRlclRyZWUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBlbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQKKyAgICByZXR1cm4gZWxlbWVu
dC5oZWxwVGV4dCArICIsICIgKyAgZWxlbWVudC52YWx1ZURlc2NyaXB0aW9uICsgIiwgIiArIGVs
ZW1lbnQubWluVmFsdWUgKyAiLCAiICsgZWxlbWVudC5tYXhWYWx1ZTsKK30KKworZnVuY3Rpb24g
a2V5RG93bihrZXksIG1vZGlmaWVycykKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikK
KyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMp
OworfQorCit2YXIgdGVzdElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsK
KworZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwordGVzdElucHV0LmZvY3VzKCk7CisKK2RlYnVnKCdO
b24tZW1wdHkgdmFsdWUnKTsKK3Rlc3RJbnB1dC5mb2N1cygpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogSG91cnMsIEFYVmFsdWVEZXNj
cmlwdGlvbjogMTIsIDEsIDEyJyk7CitrZXlEb3duKCdcdCcpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogTWludXRlcywgQVhWYWx1ZURl
c2NyaXB0aW9uOiAzNCwgMCwgNTknKTsKK2tleURvd24oJ1x0Jyk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCknLCAnQVhIZWxwOiBTZWNvbmRzLCBBWFZhbHVl
RGVzY3JpcHRpb246IDU2LCAwLCA1OScpOwora2V5RG93bignXHQnKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScsICdBWEhlbHA6IE1pbGxpc2Vjb25kcywg
QVhWYWx1ZURlc2NyaXB0aW9uOiA3ODksIDAsIDk5OScpOwora2V5RG93bignXHQnKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScsICdBWEhlbHA6IEFNL1BN
LCBBWFZhbHVlRGVzY3JpcHRpb246IFBNLCAxLCAyJyk7CisKK2RlYnVnKCdFbXB0eSB2YWx1ZScp
Owora2V5RG93bignXGInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3Vz
RmllbGQoKScsICdBWEhlbHA6IEFNL1BNLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAxLCAy
Jyk7CitrZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CitrZXlEb3duKCdcYicpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogTWlsbGlz
ZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAwLCA5OTknKTsKK2tleURvd24oJ1x0
JywgWydzaGlmdEtleSddKTsKK2tleURvd24oJ1xiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCknLCAnQVhIZWxwOiBTZWNvbmRzLCBBWFZhbHVlRGVzY3Jp
cHRpb246IGJsYW5rLCAwLCA1OScpOwora2V5RG93bignXHQnLCBbJ3NoaWZ0S2V5J10pOwora2V5
RG93bignXGInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQo
KScsICdBWEhlbHA6IE1pbnV0ZXMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDU5Jyk7
CitrZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CitrZXlEb3duKCdcYicpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogSG91cnMsIEFY
VmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDEsIDEyJyk7CisKK2RlYnVnKCcnKTsKK3Rlc3RJbnB1
dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRlc3RJbnB1dCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2Vk
LW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUt
bXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90
aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmRmMmE3YmQ3MDM0MzEwZjVjZmQ1
ODliZjRjMzJjYmZmZDQ1MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1j
aGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0
ZXN0IGNoZWNrcyB2YWx1ZSBjaGFuZ2VkIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9uLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhI
ZWxwOiBIb3Vycz1BWFZhbHVlRGVzY3JpcHRpb246IDEyCitGb2N1c2VkVUlFbGVtZW50Q2hhbmdl
ZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0aW9uOiAzNAorVmFsdWVDaGFuZ2VkIEFY
SGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246IDA1CitWYWx1ZUNoYW5nZWQgQVhIZWxw
OiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMDUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFs
dWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGlt
ZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1u
b3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2UzMzcwZTI1ZmI5NWQ1MDU0NDkyOGUzYTdk
ZTdlMzg0ZjcwYmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2Vk
LW5vdGlmaWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBpZD10ZXN0IHR5
cGU9InRpbWUiIHZhbHVlPSIxMjozNDo1Ni43ODkiPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
aGlzIHRlc3QgY2hlY2tzIHZhbHVlIGNoYW5nZWQgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb24u
Jyk7CisKK2Z1bmN0aW9uIGVuYWJsZUFjY2Vzc2liaWxpdHkoKQoreworICAgIGlmICghd2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGRlYnVnKCJQbGVhc2UgcnVuIGlu
c2lkZSBEdW1wUmVuZGVyVHJlZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGZ1bmN0aW9uIChl
bGVtZW50LCBub3RpZmljYXRpb24pIHsKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAnRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQnIHx8IG5vdGlmaWNhdGlvbiA9PSAnVmFsdWVDaGFuZ2VkJykg
eworICAgICAgICAgICAgZGVidWcobm90aWZpY2F0aW9uICsgJyAnICsgZWxlbWVudC5oZWxwVGV4
dCArICc9JyArIGVsZW1lbnQudmFsdWVEZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICB9KTsK
K30KKworZnVuY3Rpb24ga2V5RG93bihrZXksIG1vZGlmaWVycykKK3sKKyAgICBpZiAoIXdpbmRv
dy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50U2VuZGVyLmtleURvd24o
a2V5LCBtb2RpZmllcnMpOworfQorCit2YXIgdGVzdElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QiKTsKKworZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwordGVzdElucHV0LmZvY3Vz
KCk7CitrZXlEb3duKCdcdCcpOwora2V5RG93bignNCcpOwora2V5RG93bigndXBBcnJvdycpOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICBkZWJ1ZygnJyk7CisgICAgdGVzdElucHV0LnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQodGVzdElucHV0KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIDEpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163759</attachid>
            <date>2012-09-12 19:16:04 -0700</date>
            <delta_ts>2012-09-12 22:47:08 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-96032-20120913111536.patch</filename>
            <type>text/plain</type>
            <size>20008</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhMDA1YjZhMmJlZDRm
NWM4NzVlMzBiY2MyNDYzOGViODA2MTg3Ni4uMGRmMWNkZDg5MzZjYzEwMGRkODRhM2Y0ZWEyODQx
OWFkM2M0YjFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTExICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5w
dXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGludG8g
bXVsdGlwbGUgZmllbGRzIHRpbWUgaW5wdXQKKyAgICAgICAgVUkgYnkgc2V0dGluZyAicm9sZSIg
SFRNTCBhdHRyaWJ1dGUgb2YgRGF0ZVRpbWVGaWVsZEVsZW1lbnQgdG8gInNwaW5idXR0b24iCisg
ICAgICAgIGFuZCBjaGFuZ2luZyBBUklBIGF0dHJpYnV0ZXMgdG8gcG9zdCB2YWx1ZSBjaGFuZ2Ug
bm90aWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWZmZWN0cyBwb3J0cyB3aGljaCBl
bmFibGUgYm90aCBFTkFCTEVfSU5QVVRfVFlQRV9USU1FIGFuZAorICAgICAgICBFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jt
cy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJp
YnV0ZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxk
cy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1s
CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQp
OiBDaGFuZ2VkIHRvIHNldAorICAgICAgICAicm9sZSIgSFRNTCBhdHRyaWJ1dGUgdG8gInNwaW5i
dXR0b24iLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxp
emUpOiBDaGFuZ2VkIHRvIHNldCBuZXcKKyAgICAgICAgcGFyYW1ldGVyIGF4SGVscFRleHQgdG8g
YXJpYS1oZWxwIGF0dHJpYnV0ZSBhbmQgc2V0IGFyaWEtdmFsdWVtYXggYW5kCisgICAgICAgIGFy
aWEtdmFsdWVtaW4gYXR0cmlidXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRF
bGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUpOiBDaGFuZ2VkIHRvIHNldAorICAgICAgICBhcmlh
LXZhbHVldGV4dCBhbmQgYXJpYS12YWx1ZW5vdyBhdHRyaWJ1dGVzLgorICAgICAgICAqIGh0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50Lmg6CisgICAgICAgIChEYXRlVGltZUZpZWxkRWxl
bWVudCk6IENoYW5nZWQgdG8gYWRkIG5ldyBwYXJhbWV0ZXIgYXhIZWxwVGV4dCB0byBpbml0aWFs
aXplKCkuCisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lQU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKTogQ2hh
bmdlZCB0byBhZGQgbmV3IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3Vy
RmllbGRFbGVtZW50OjpjcmVhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Om1heGltdW0pOiBBZGRl
ZCBmb3IgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxpemUoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSk6IGRpdHRvLgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oOgorICAgICAgICAo
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KTogQWRkZWQgbWF4aW11bSgpIGFuZCBtaW5pbXVt
KCkgZGVjbGFyYXRpb25zLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudDo6bWF4aW11bSk6IEFkZGVkIGZvciBEYXRlVGltZUZpZWxkRWxlbWVudDo6aW5pdGlh
bGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6
bWluaW11bSk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuaDoKKyAgICAgICAgKERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQpOiBB
ZGRlZCBtYXhpbXVtKCkgYW5kIG1pbmltdW0oKSBkZWNsYXJhdGlvbnMuCisKIDIwMTItMDktMTIg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJvZHVjZSBW
YWxpZGF0aW9uTWVzc2FnZUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCmluZGV4IGI2MjQ2N2Q0YjlhNzBjNjVmOTEzY2Qx
YTRjNTA5OTcwYjM2NDk3MmEuLjc0ODE3NTcwYWM1NzEwMjQ2MTljZjk1M2RhMDg2MjQ2ODk4OTJk
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxk
RWxlbWVudC5jcHAKQEAgLTMwLDggKzMwLDEwIEBACiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw2ICs0Nyw4IEBAIERhdGVUaW1lRmllbGRFbGVtZW50
OjpEYXRlVGltZUZpZWxkRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEZpZWxkT3duZXImIGZp
ZWxkCiAgICAgOiBIVE1MRWxlbWVudChzcGFuVGFnLCBkb2N1bWVudCkKICAgICAsIG1fZmllbGRP
d25lcigmZmllbGRPd25lcikKIHsKKyAgICAvLyBPbiBhY2Nlc3NpYmlsaXR5LCBEYXRlVGltZUZp
ZWxkRWxlbWVudCBhY3RzIGxpa2Ugc3BpbiBidXR0b24uCisgICAgc2V0QXR0cmlidXRlKHJvbGVB
dHRyLCAic3BpbmJ1dHRvbiIpOwogfQogCiB2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKQEAgLTEyOSw4ICsxMzMsMTEgQEAgdm9pZCBE
YXRlVGltZUZpZWxkRWxlbWVudDo6Zm9jdXNPbk5leHRGaWVsZCgpCiAgICAgbV9maWVsZE93bmVy
LT5mb2N1c09uTmV4dEZpZWxkKCp0aGlzKTsKIH0KIAotdm9pZCBEYXRlVGltZUZpZWxkRWxlbWVu
dDo6aW5pdGlhbGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKQordm9pZCBE
YXRlVGltZUZpZWxkRWxlbWVudDo6aW5pdGlhbGl6ZShjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRv
d1BzZXVkb0lkLCBjb25zdCBTdHJpbmcmIGF4SGVscFRleHQpCiB7CisgICAgc2V0QXR0cmlidXRl
KGFyaWFfaGVscEF0dHIsIGF4SGVscFRleHQpOworICAgIHNldEF0dHJpYnV0ZShhcmlhX3ZhbHVl
bWluQXR0ciwgU3RyaW5nOjpudW1iZXIobWluaW11bSgpKSk7CisgICAgc2V0QXR0cmlidXRlKGFy
aWFfdmFsdWVtYXhBdHRyLCBTdHJpbmc6Om51bWJlcihtYXhpbXVtKCkpKTsKICAgICBzZXRTaGFk
b3dQc2V1ZG9JZChzaGFkb3dQc2V1ZG9JZCk7CiAgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRl
KGRvY3VtZW50KCksIHZpc2libGVWYWx1ZSgpKSk7CiB9CkBAIC0xNzIsNiArMTc5LDggQEAgdm9p
ZCBEYXRlVGltZUZpZWxkRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVoYXZpb3Ig
ZXZlbnRCZWhhdmlvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgdGV4dE5vZGUtPnJlcGxhY2VX
aG9sZVRleHQobmV3VmlzaWJsZVZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBzZXRB
dHRyaWJ1dGUoYXJpYV92YWx1ZXRleHRBdHRyLCBoYXNWYWx1ZSgpID8gbmV3VmlzaWJsZVZhbHVl
IDogQVhEYXRlVGltZUZpZWxkRW1wdHlWYWx1ZVRleHQoKSk7CisgICAgc2V0QXR0cmlidXRlKGFy
aWFfdmFsdWVub3dBdHRyLCBuZXdWaXNpYmxlVmFsdWUpOwogCiAgICAgaWYgKGV2ZW50QmVoYXZp
b3IgPT0gRGlzcGF0Y2hFdmVudCAmJiBtX2ZpZWxkT3duZXIpCiAgICAgICAgIG1fZmllbGRPd25l
ci0+ZmllbGRWYWx1ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EYXRlVGltZUZpZWxkRWxlbWVudC5oCmluZGV4IDBhOWJlZTAxMDYxZDEwMzNkNDUxYzdhYzIw
NDhiMTIxOTZmM2ZmNjMuLmVkMjk3Y2NhMjMyNmI3MDdhZDkyODQwN2ZkNWJhNDNhMzI4MDU3NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1l
bnQuaApAQCAtNzcsNyArNzcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZv
Y3VzKCk7CiAgICAgdm9pZCBmb2N1c09uTmV4dEZpZWxkKCk7CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopID0gMDsKLSAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQsIGNvbnN0IFN0cmluZyYgYXhIZWxwVGV4dCk7CisgICAg
dmlydHVhbCBpbnQgbWF4aW11bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVt
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIHVuaXRJbk1pbGxpc2Vjb25kKCkgY29u
c3QgPSAwOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZVZhbHVlKEV2ZW50QmVoYXZpb3IpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRz
LmNwcAppbmRleCBkOGJjODQ5ZmQwOTdmMDkzMzFmMTcxOTgyNDNmMmZlNThiNmM2ZjFjLi5hZDRj
YjA2MGYyOGViZjg2MGU2ZDAwM2VjZGQ0N2E2YjM5YTU0NThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJEYXRlVGltZUZpZWxkRWxlbWVudHMuaCIKIAogI2luY2x1ZGUg
IkRhdGVDb21wb25lbnRzLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3
IEBAIFBhc3NSZWZQdHI8RGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50PiBEYXRlVGltZUFNUE1GaWVs
ZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCoKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgYW1wbVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1hbXBtLWZp
ZWxkIikpOwogICAgIFJlZlB0cjxEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQ+IGZpZWxkID0gYWRv
cHRSZWYobmV3IERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwg
YW1wbUxhYmVscykpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKGFtcG1Qc3VlZG9JZCk7CisgICAg
ZmllbGQtPmluaXRpYWxpemUoYW1wbVBzdWVkb0lkLCBBWEFNUE1GaWVsZFRleHQoKSk7CiAgICAg
cmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtNjgsNyArNjksNyBAQCBQYXNzUmVmUHRy
PERhdGVUaW1lSG91ckZpZWxkRWxlbWVudD4gRGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGhv
dXJQc3VlZG9JZCwgKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCIpKTsKICAgICBS
ZWZQdHI8RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50PiBmaWVsZCA9IGFkb3B0UmVmKG5ldyBEYXRl
VGltZUhvdXJGaWVsZEVsZW1lbnQoZG9jdW1lbnQsIGZpZWxkT3duZXIsIG1pbmltdW0sIG1heGlt
dW0pKTsKLSAgICBmaWVsZC0+aW5pdGlhbGl6ZShob3VyUHN1ZWRvSWQpOworICAgIGZpZWxkLT5p
bml0aWFsaXplKGhvdXJQc3VlZG9JZCwgQVhIb3VyRmllbGRUZXh0KCkpOwogICAgIHJldHVybiBm
aWVsZC5yZWxlYXNlKCk7CiB9CiAKQEAgLTEwNCw3ICsxMDUsNyBAQCBQYXNzUmVmUHRyPERhdGVU
aW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lTWlsbGlzZWNvbmRGaWVsZEVsZW1l
bnQ6OmNyZQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtaWxsaXNl
Y29uZFBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCIp
KTsKICAgICBSZWZQdHI8RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudD4gZmllbGQgPSBh
ZG9wdFJlZihuZXcgRGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVudCwgZmll
bGRPd25lcikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1ZWRvSWQpOwor
ICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbGxpc2Vjb25kUHN1ZWRvSWQsIEFYTWlsbGlzZWNvbmRG
aWVsZFRleHQoKSk7CiAgICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTI5LDcg
KzEzMCw3IEBAIFBhc3NSZWZQdHI8RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ+IERhdGVUaW1l
TWludXRlRmllbGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG1pbnV0ZVBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRp
dC1taW51dGUtZmllbGQiKSk7CiAgICAgUmVmUHRyPERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50
PiBmaWVsZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudChkb2N1bWVu
dCwgZmllbGRPd25lcikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbnV0ZVBzdWVkb0lkKTsK
KyAgICBmaWVsZC0+aW5pdGlhbGl6ZShtaW51dGVQc3VlZG9JZCwgQVhNaW51dGVGaWVsZFRleHQo
KSk7CiAgICAgcmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTU0LDcgKzE1NSw3IEBA
IFBhc3NSZWZQdHI8RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ+IERhdGVUaW1lU2Vjb25kRmll
bGRFbGVtZW50OjpjcmVhdGUoRG9jdW1lCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIHNlY29uZFBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQt
ZmllbGQiKSk7CiAgICAgUmVmUHRyPERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50PiBmaWVsZCA9
IGFkb3B0UmVmKG5ldyBEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRP
d25lcikpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKHNlY29uZFBzdWVkb0lkKTsKKyAgICBmaWVs
ZC0+aW5pdGlhbGl6ZShzZWNvbmRQc3VlZG9JZCwgQVhTZWNvbmRGaWVsZFRleHQoKSk7CiAgICAg
cmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggYmY4
MGFmOTQyM2Y0YmE2MTg3YjQ1NTM2ZWUzNzVjZTU5YzVjODJhZC4uY2Y4YTRhMzM4NDQ3YjIzZDkx
YTk1YjYzM2I3NmZiODcwYzkxN2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCkBAIC0xMTEsNiAr
MTExLDE2IEBAIGJvb2wgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjpoYXNWYWx1ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faGFzVmFsdWU7CiB9CiAKK2ludCBEYXRlVGltZU51bWVyaWNGaWVs
ZEVsZW1lbnQ6Om1heGltdW0oKSBjb25zdAoreworICAgIHJldHVybiBtX3JhbmdlLm1heGltdW07
Cit9CisKK2ludCBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAor
eworICAgIHJldHVybiBtX3JhbmdlLm1pbmltdW07Cit9CisKIHZvaWQgRGF0ZVRpbWVOdW1lcmlj
RmllbGRFbGVtZW50OjpzZXRFbXB0eVZhbHVlKGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlRm9y
UmVhZE9ubHlGaWVsZCwgRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yKQogewogICAgIG1fbGFz
dERpZ2l0Q2hhclRpbWUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuaAppbmRleCAyODNlNjA2NzIzZmFmZWM3
ZjViNTk3ZDZkNDc3OWQwNTdhM2Y5NmRmLi43YzczZjFiODYwNjQ0ZjU4YTgyYjU3NzNlMWNkZGNl
YmZkNTcyZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
YXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuaApAQCAtNjUsNiArNjUsOCBAQCBwcml2YXRlOgog
ICAgIC8vIERhdGVUaW1lRmllbGRFbGVtZW50IGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmx1cigpIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIGludCBt
YXhpbXVtKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCBpbnQgbWluaW11bSgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFbXB0eVZhbHVlKGNv
bnN0IERhdGVDb21wb25lbnRzJiBkYXRlRm9yUmVhZE9ubHlGaWVsZCwgRXZlbnRCZWhhdmlvcikg
T1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBEb3duKCkgT1ZFUlJJREUgRklO
QUw7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBVcCgpIE9WRVJSSURFIEZJTkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRF
bGVtZW50LmNwcAppbmRleCBiZWFkY2E5NzQzYzExNmMxNGQzMTg1MmU3OTUzY2FiN2UyYWQzMjEz
Li42Y2I0ZWMxZTI2YzY5MDVjYzE4MGRkODc0ODEyM2Y1YjBhNjkwMTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRF
bGVtZW50LmNwcApAQCAtOTUsNiArOTUsMTYgQEAgYm9vbCBEYXRlVGltZVN5bWJvbGljRmllbGRF
bGVtZW50OjpoYXNWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VsZWN0ZWRJbmRleCA+PSAw
OwogfQogCitpbnQgRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6bWF4aW11bSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9zeW1ib2xzLnNpemUoKSk7Cit9CisK
K2ludCBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50OjptaW5pbXVtKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gMTsKK30KKwogdm9pZCBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50OjpzZXRF
bXB0eVZhbHVlKGNvbnN0IERhdGVDb21wb25lbnRzJiwgRXZlbnRCZWhhdmlvciBldmVudEJlaGF2
aW9yKQogewogICAgIG1fc2VsZWN0ZWRJbmRleCA9IGludmFsaWRJbmRleDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1l
bnQuaAppbmRleCBiMjFhOGU0ZjNlZjRlN2MxNTljNDA3ZGEzNjdjNzFmNWNkOWQwNzZlLi43YzVm
NjdiODljY2YwYWY1Y2QzMDBiYjcxNTQ5ZGM5NjQ2NzU0ODMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5o
CkBAIC00OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGaWVsZEVsZW1lbnQg
ZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQqKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25z
dCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3QgT1ZFUlJJ
REUgRklOQUw7CisgICAgdmlydHVhbCBpbnQgbWluaW11bSgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRFbXB0eVZhbHVlKGNvbnN0IERhdGVDb21wb25lbnRzJiBk
YXRlRm9yUmVhZE9ubHlGaWVsZCwgRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCkgT1ZF
UlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBEb3duKCkgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBVcCgpIE9WRVJSSURFIEZJTkFMOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjNTMx
ZTIwMzBmODA0NTU0MGMyZjQzOWQyNGZmNmMzNTkyYjA1YmUuLjY2OTJmNzJjYTdjMDFjNDMyODYy
MzIwMTgwZWE1Y2Q4OTM0YWQ3ODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0xMSAg
WW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE5ldyB0aW1l
IGlucHV0IG5lZWRzIGFjY2Vzc2liaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2MDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byB0ZXN0cyBmb3IgY2hlY2tpbmcg
YWNjZXNzaWJpbGl0eSBmdW5jdGlvbmFsaXRpZXMKKyAgICAgICAgaW4gbXVsdGlwbGUgZmllbGRz
IHRpbWUgaW5wdXQgVUkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZmZlY3RzIHBvcnRzIHdoaWNo
IGVuYWJsZSBib3RoIEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgYW5kCisgICAgICAgIEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUVfTVVMVElQTEVfRklFTERTLgorCisgICAgICAgICogZmFzdC9mb3Jtcy90
aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RpbWUtbXVsdGlw
bGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy5odG1sOiBB
ZGRlZCB0byBjaGVjayBBUklBIGF0dHJpYnV0ZXMgdXNlZCBpbiBtdWx0aXBsZSBmaWVsZHMgdGlt
ZSBpbnB1dCBVSS4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3Rp
bWUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90
aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sOiBB
ZGRlZCB0byBjaGVjayBhY2Nlc3NpYmlsaXR5IG5vdGlmaWNhdGlvbiBzdXBwb3J0cyBpbiBtdWx0
aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSS4KKwogMjAxMi0wOS0xMiAgS3l1bmdUYWUgS2ltICA8
a3RmLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBTdXBwb3J0IGRvd25sb2FkIGF0
dHJpYnV0ZSBmZWF0dXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUt
bXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRz
L3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmNlYzA0YjRkZGRhNjYwNjgxNzczNmNkNmJiNWYzNWQ5Yjk3ZTQ5NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMv
dGltZS1tdWx0aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIyIEBACitUaGlzIHRlc3QgY2hlY2tzIGFyaWEtaGVscCBhdHRyaWJ1dGUgb2YgZmll
bGRzIGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0IFVJLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworTm9uLWVtcHR5IHZhbHVlCitQQVNTIGhlbHBUZXh0T2ZGb2N1c0ZpZWxk
KCkgaXMgIkFYSGVscDogSG91cnMsIEFYVmFsdWVEZXNjcmlwdGlvbjogMTIsIDEsIDEyIgorUEFT
UyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6IE1pbnV0ZXMsIEFYVmFsdWVEZXNj
cmlwdGlvbjogMzQsIDAsIDU5IgorUEFTUyBoZWxwVGV4dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhl
bHA6IFNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogNTYsIDAsIDU5IgorUEFTUyBoZWxwVGV4
dE9mRm9jdXNGaWVsZCgpIGlzICJBWEhlbHA6IE1pbGxpc2Vjb25kcywgQVhWYWx1ZURlc2NyaXB0
aW9uOiA3ODksIDAsIDk5OSIKK1BBU1MgaGVscFRleHRPZkZvY3VzRmllbGQoKSBpcyAiQVhIZWxw
OiBBTS9QTSwgQVhWYWx1ZURlc2NyaXB0aW9uOiBQTSwgMSwgMiIKK0VtcHR5IHZhbHVlCitQQVNT
IGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogQU0vUE0sIEFYVmFsdWVEZXNjcmlw
dGlvbjogYmxhbmssIDEsIDIiCitQQVNTIGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVs
cDogTWlsbGlzZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAwLCA5OTkiCitQQVNT
IGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogU2Vjb25kcywgQVhWYWx1ZURlc2Ny
aXB0aW9uOiBibGFuaywgMCwgNTkiCitQQVNTIGhlbHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFY
SGVscDogTWludXRlcywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywgMCwgNTkiCitQQVNTIGhl
bHBUZXh0T2ZGb2N1c0ZpZWxkKCkgaXMgIkFYSGVscDogSG91cnMsIEFYVmFsdWVEZXNjcmlwdGlv
bjogYmxhbmssIDEsIDEyIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11
bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0
aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM3ZTdmMmE4
ZmIzM2M0YWJjZWJkNGNjZTEwNzMyZGFmMjk4YjAxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVs
ZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlk
PXRlc3QgdHlwZT0idGltZSIgdmFsdWU9IjEyOjM0OjU2Ljc4OSI+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ1RoaXMgdGVzdCBjaGVja3MgYXJpYS1oZWxwIGF0dHJpYnV0ZSBvZiBmaWVsZHMgaW4g
bXVsdGlwbGUgZmllbGRzIHRpbWUgaW5wdXQgVUkuJyk7CisKK2Z1bmN0aW9uIGVuYWJsZUFjY2Vz
c2liaWxpdHkoKQoreworICAgIGlmICghd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisgICAgICAgIGRlYnVnKCJQbGVhc2UgcnVuIGluc2lkZSBEdW1wUmVuZGVyVHJlZS4iKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rpb24gaGVscFRleHRPZkZvY3VzRmllbGQo
KQoreworICAgIGlmICghd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisgICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudAorICAgIHJldHVybiBlbGVtZW50LmhlbHBUZXh0ICsgIiwgIiArICBlbGVtZW50LnZh
bHVlRGVzY3JpcHRpb24gKyAiLCAiICsgZWxlbWVudC5taW5WYWx1ZSArICIsICIgKyBlbGVtZW50
Lm1heFZhbHVlOworfQorCitmdW5jdGlvbiBrZXlEb3duKGtleSwgbW9kaWZpZXJzKQoreworICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisgICAgZXZlbnRTZW5k
ZXIua2V5RG93bihrZXksIG1vZGlmaWVycyk7Cit9CisKK3ZhciB0ZXN0SW5wdXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworCitlbmFibGVBY2Nlc3NpYmlsaXR5KCk7Cit0ZXN0
SW5wdXQuZm9jdXMoKTsKKworZGVidWcoJ05vbi1lbXB0eSB2YWx1ZScpOwordGVzdElucHV0LmZv
Y3VzKCk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCknLCAn
QVhIZWxwOiBIb3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiAxMiwgMSwgMTInKTsKK2tleURvd24o
J1x0Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1c0ZpZWxkKCknLCAn
QVhIZWxwOiBNaW51dGVzLCBBWFZhbHVlRGVzY3JpcHRpb246IDM0LCAwLCA1OScpOwora2V5RG93
bignXHQnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScs
ICdBWEhlbHA6IFNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogNTYsIDAsIDU5Jyk7CitrZXlE
b3duKCdcdCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgp
JywgJ0FYSGVscDogTWlsbGlzZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IDc4OSwgMCwgOTk5
Jyk7CitrZXlEb3duKCdcdCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9j
dXNGaWVsZCgpJywgJ0FYSGVscDogQU0vUE0sIEFYVmFsdWVEZXNjcmlwdGlvbjogUE0sIDEsIDIn
KTsKKworZGVidWcoJ0VtcHR5IHZhbHVlJyk7CitrZXlEb3duKCdcYicpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogQU0vUE0sIEFYVmFs
dWVEZXNjcmlwdGlvbjogYmxhbmssIDEsIDInKTsKK2tleURvd24oJ1x0JywgWydzaGlmdEtleSdd
KTsKK2tleURvd24oJ1xiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1
c0ZpZWxkKCknLCAnQVhIZWxwOiBNaWxsaXNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxh
bmssIDAsIDk5OScpOwora2V5RG93bignXHQnLCBbJ3NoaWZ0S2V5J10pOwora2V5RG93bignXGIn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnaGVscFRleHRPZkZvY3VzRmllbGQoKScsICdBWEhl
bHA6IFNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDU5Jyk7CitrZXlEb3du
KCdcdCcsIFsnc2hpZnRLZXknXSk7CitrZXlEb3duKCdcYicpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdoZWxwVGV4dE9mRm9jdXNGaWVsZCgpJywgJ0FYSGVscDogTWludXRlcywgQVhWYWx1ZURl
c2NyaXB0aW9uOiBibGFuaywgMCwgNTknKTsKK2tleURvd24oJ1x0JywgWydzaGlmdEtleSddKTsK
K2tleURvd24oJ1xiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2hlbHBUZXh0T2ZGb2N1c0Zp
ZWxkKCknLCAnQVhIZWxwOiBIb3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywgMSwgMTIn
KTsKKworZGVidWcoJycpOwordGVzdElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGVzdElu
cHV0KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlw
bGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1m
aWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjllNmU2ZDI3MzE0NTQ5Y2ZiODMzZGU2MGUzZTg1YmUzMTA0ZDI3NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUt
bXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3QgY2hlY2tzIHZhbHVlIGNoYW5nZWQgYWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Rm9jdXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBIb3Vycz1BWFZhbHVlRGVzY3JpcHRpb246
IDEyCitGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2Ny
aXB0aW9uOiAzNAorVmFsdWVDaGFuZ2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRp
b246IDA1CitWYWx1ZUNoYW5nZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjog
MDUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMv
dGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBs
ZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NTkwZmEzZTIzYTJkYTQzOWExZWE0ZWNhZWI1NDUyMzgzMWNmZWMyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRp
cGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sCkBAIC0wLDAgKzEs
NTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxpbnB1dCBpZD10ZXN0IHR5cGU9InRpbWUiIHZhbHVlPSIxMjozNDo1Ni43ODki
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3QgY2hlY2tzIHZhbHVlIGNoYW5nZWQg
YWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLicpOworCitmdW5jdGlvbiBlbmFibGVBY2Nlc3Np
YmlsaXR5KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgICAgICBkZWJ1ZygiUGxlYXNlIHJ1biBpbnNpZGUgRHVtcFJlbmRlclRyZWUuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hZGROb3Rp
ZmljYXRpb25MaXN0ZW5lcihmdW5jdGlvbiAoZWxlbWVudCwgbm90aWZpY2F0aW9uKSB7CisgICAg
ICAgIGlmIChub3RpZmljYXRpb24gPT0gJ0ZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkJyB8fCBub3Rp
ZmljYXRpb24gPT0gJ1ZhbHVlQ2hhbmdlZCcpIHsKKyAgICAgICAgICAgIGRlYnVnKG5vdGlmaWNh
dGlvbiArICcgJyArIGVsZW1lbnQuaGVscFRleHQgKyAnPScgKyBlbGVtZW50LnZhbHVlRGVzY3Jp
cHRpb24pOworICAgICAgICB9CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGtleURvd24oa2V5LCBt
b2RpZmllcnMpCit7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KKwordmFyIHRl
c3RJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisKK2VuYWJsZUFjY2Vz
c2liaWxpdHkoKTsKK3Rlc3RJbnB1dC5mb2N1cygpOwora2V5RG93bignXHQnKTsKK2tleURvd24o
JzQnKTsKK2tleURvd24oJ3VwQXJyb3cnKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCit3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgZGVidWcoJycpOworICAg
IHRlc3RJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRlc3RJbnB1dCk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9LCAxKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163779</attachid>
            <date>2012-09-12 22:47:13 -0700</date>
            <delta_ts>2012-09-12 22:49:41 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-96032-20120913144645.patch</filename>
            <type>text/plain</type>
            <size>20176</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZkNjc4Yzk3NzRmYjNk
ZDIyYWM0OTNiNWExNDc0NWU2OTlmZDI2Ny4uZmUyYmExNWUyODc4ZjlhOGIwMjMzODI3NGFkOWFm
MDE0ZGQ4OTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTExICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IHRpbWUgaW5w
dXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFj
aC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGludG8g
bXVsdGlwbGUgZmllbGRzIHRpbWUgaW5wdXQKKyAgICAgICAgVUkgYnkgc2V0dGluZyAicm9sZSIg
SFRNTCBhdHRyaWJ1dGUgb2YgRGF0ZVRpbWVGaWVsZEVsZW1lbnQgdG8gInNwaW5idXR0b24iCisg
ICAgICAgIGFuZCBjaGFuZ2luZyBBUklBIGF0dHJpYnV0ZXMgdG8gcG9zdCB2YWx1ZSBjaGFuZ2Ug
bm90aWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWZmZWN0cyBwb3J0cyB3aGljaCBl
bmFibGUgYm90aCBFTkFCTEVfSU5QVVRfVFlQRV9USU1FIGFuZAorICAgICAgICBFTkFCTEVfSU5Q
VVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUy4KKworICAgICAgICBUZXN0czogZmFzdC9mb3Jt
cy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJp
YnV0ZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxk
cy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1s
CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZUZpZWxkRWxlbWVudDo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQp
OiBDaGFuZ2VkIHRvIHNldAorICAgICAgICAicm9sZSIgSFRNTCBhdHRyaWJ1dGUgdG8gInNwaW5i
dXR0b24iLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxp
emUpOiBDaGFuZ2VkIHRvIHNldCBuZXcKKyAgICAgICAgcGFyYW1ldGVyIGF4SGVscFRleHQgdG8g
YXJpYS1oZWxwIGF0dHJpYnV0ZSBhbmQgc2V0IGFyaWEtdmFsdWVtYXggYW5kCisgICAgICAgIGFy
aWEtdmFsdWVtaW4gYXR0cmlidXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRmllbGRF
bGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUpOiBDaGFuZ2VkIHRvIHNldAorICAgICAgICBhcmlh
LXZhbHVldGV4dCBhbmQgYXJpYS12YWx1ZW5vdyBhdHRyaWJ1dGVzLgorICAgICAgICAqIGh0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50Lmg6CisgICAgICAgIChEYXRlVGltZUZpZWxkRWxl
bWVudCk6IENoYW5nZWQgdG8gYWRkIG5ldyBwYXJhbWV0ZXIgYXhIZWxwVGV4dCB0byBpbml0aWFs
aXplKCkuCisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lQU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKTogQ2hh
bmdlZCB0byBhZGQgbmV3IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVIb3Vy
RmllbGRFbGVtZW50OjpjcmVhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1l
TWlsbGlzZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZSk6IGRpdHRvLgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Om1heGltdW0pOiBBZGRl
ZCBmb3IgRGF0ZVRpbWVGaWVsZEVsZW1lbnQ6OmluaXRpYWxpemUoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSk6IGRpdHRvLgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oOgorICAgICAgICAo
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50KTogQWRkZWQgbWF4aW11bSgpIGFuZCBtaW5pbXVt
KCkgZGVjbGFyYXRpb25zLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudDo6bWF4aW11bSk6IEFkZGVkIGZvciBEYXRlVGltZUZpZWxkRWxlbWVudDo6aW5pdGlh
bGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6RGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudDo6
bWluaW11bSk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNG
aWVsZEVsZW1lbnQuaDoKKyAgICAgICAgKERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQpOiBB
ZGRlZCBtYXhpbXVtKCkgYW5kIG1pbmltdW0oKSBkZWNsYXJhdGlvbnMuCisKIDIwMTItMDktMTIg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc4NzYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKaW5kZXggYjYyNDY3ZDRiOWE3MGM2
NWY5MTNjZDFhNGM1MDk5NzBiMzY0OTcyYS4uNzQ4MTc1NzBhYzU3MTAyNDYxOWNmOTUzZGEwODYy
NDY4OTg5MmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVU
aW1lRmllbGRFbGVtZW50LmNwcApAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDYgKzQ3LDggQEAgRGF0ZVRpbWVGaWVs
ZEVsZW1lbnQ6OkRhdGVUaW1lRmllbGRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRmllbGRP
d25lciYgZmllbGQKICAgICA6IEhUTUxFbGVtZW50KHNwYW5UYWcsIGRvY3VtZW50KQogICAgICwg
bV9maWVsZE93bmVyKCZmaWVsZE93bmVyKQogeworICAgIC8vIE9uIGFjY2Vzc2liaWxpdHksIERh
dGVUaW1lRmllbGRFbGVtZW50IGFjdHMgbGlrZSBzcGluIGJ1dHRvbi4KKyAgICBzZXRBdHRyaWJ1
dGUocm9sZUF0dHIsICJzcGluYnV0dG9uIik7CiB9CiAKIHZvaWQgRGF0ZVRpbWVGaWVsZEVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQpAQCAtMTI5LDggKzEzMywxMSBA
QCB2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50Ojpmb2N1c09uTmV4dEZpZWxkKCkKICAgICBtX2Zp
ZWxkT3duZXItPmZvY3VzT25OZXh0RmllbGQoKnRoaXMpOwogfQogCi12b2lkIERhdGVUaW1lRmll
bGRFbGVtZW50Ojppbml0aWFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQp
Cit2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50Ojppbml0aWFsaXplKGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQsIGNvbnN0IFN0cmluZyYgYXhIZWxwVGV4dCkKIHsKKyAgICBzZXRB
dHRyaWJ1dGUoYXJpYV9oZWxwQXR0ciwgYXhIZWxwVGV4dCk7CisgICAgc2V0QXR0cmlidXRlKGFy
aWFfdmFsdWVtaW5BdHRyLCBTdHJpbmc6Om51bWJlcihtaW5pbXVtKCkpKTsKKyAgICBzZXRBdHRy
aWJ1dGUoYXJpYV92YWx1ZW1heEF0dHIsIFN0cmluZzo6bnVtYmVyKG1heGltdW0oKSkpOwogICAg
IHNldFNoYWRvd1BzZXVkb0lkKHNoYWRvd1BzZXVkb0lkKTsKICAgICBhcHBlbmRDaGlsZChUZXh0
OjpjcmVhdGUoZG9jdW1lbnQoKSwgdmlzaWJsZVZhbHVlKCkpKTsKIH0KQEAgLTE3Miw2ICsxNzks
OCBAQCB2b2lkIERhdGVUaW1lRmllbGRFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsdWUoRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yKQogICAgICAgICByZXR1cm47CiAKICAgICB0ZXh0Tm9kZS0+
cmVwbGFjZVdob2xlVGV4dChuZXdWaXNpYmxlVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgIHNldEF0dHJpYnV0ZShhcmlhX3ZhbHVldGV4dEF0dHIsIGhhc1ZhbHVlKCkgPyBuZXdWaXNp
YmxlVmFsdWUgOiBBWERhdGVUaW1lRmllbGRFbXB0eVZhbHVlVGV4dCgpKTsKKyAgICBzZXRBdHRy
aWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIsIG5ld1Zpc2libGVWYWx1ZSk7CiAKICAgICBpZiAoZXZl
bnRCZWhhdmlvciA9PSBEaXNwYXRjaEV2ZW50ICYmIG1fZmllbGRPd25lcikKICAgICAgICAgbV9m
aWVsZE93bmVyLT5maWVsZFZhbHVlQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmgKaW5kZXggMGE5YmVlMDEwNjFkMTAzM2Q0
NTFjN2FjMjA0OGIxMjE5NmYzZmY2My4uZWQyOTdjY2EyMzI2YjcwN2FkOTI4NDA3ZmQ1YmE0M2Ez
MjgwNTc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZp
ZWxkRWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRm9jdXMoKTsKICAgICB2b2lkIGZvY3VzT25OZXh0RmllbGQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KikgPSAwOwotICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCwgY29uc3QgU3RyaW5nJiBheEhlbHBUZXh0
KTsKKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IG1pbmltdW0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgdW5pdEluTWlsbGlzZWNv
bmQoKSBjb25zdCA9IDA7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmxlVmFsdWUoRXZlbnRCZWhhdmlv
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmll
bGRFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxk
RWxlbWVudHMuY3BwCmluZGV4IGQ4YmM4NDlmZDA5N2YwOTMzMWYxNzE5ODI0M2YyZmU1OGI2YzZm
MWMuLmFkNGNiMDYwZjI4ZWJmODYwZTZkMDAzZWNkZDQ3YTZiMzlhNTQ1OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnRzLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRhdGVUaW1lRmllbGRFbGVtZW50cy5oIgogCiAj
aW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQx
LDcgKzQyLDcgQEAgUGFzc1JlZlB0cjxEYXRlVGltZUFNUE1GaWVsZEVsZW1lbnQ+IERhdGVUaW1l
QU1QTUZpZWxkRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KgogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBhbXBtUHN1ZWRvSWQsICgiLXdlYmtpdC1kYXRldGltZS1lZGl0
LWFtcG0tZmllbGQiKSk7CiAgICAgUmVmUHRyPERhdGVUaW1lQU1QTUZpZWxkRWxlbWVudD4gZmll
bGQgPSBhZG9wdFJlZihuZXcgRGF0ZVRpbWVBTVBNRmllbGRFbGVtZW50KGRvY3VtZW50LCBmaWVs
ZE93bmVyLCBhbXBtTGFiZWxzKSk7Ci0gICAgZmllbGQtPmluaXRpYWxpemUoYW1wbVBzdWVkb0lk
KTsKKyAgICBmaWVsZC0+aW5pdGlhbGl6ZShhbXBtUHN1ZWRvSWQsIEFYQU1QTUZpZWxkVGV4dCgp
KTsKICAgICByZXR1cm4gZmllbGQucmVsZWFzZSgpOwogfQogCkBAIC02OCw3ICs2OSw3IEBAIFBh
c3NSZWZQdHI8RGF0ZVRpbWVIb3VyRmllbGRFbGVtZW50PiBEYXRlVGltZUhvdXJGaWVsZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCoKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaG91clBzdWVkb0lkLCAoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxkIikp
OwogICAgIFJlZlB0cjxEYXRlVGltZUhvdXJGaWVsZEVsZW1lbnQ+IGZpZWxkID0gYWRvcHRSZWYo
bmV3IERhdGVUaW1lSG91ckZpZWxkRWxlbWVudChkb2N1bWVudCwgZmllbGRPd25lciwgbWluaW11
bSwgbWF4aW11bSkpOwotICAgIGZpZWxkLT5pbml0aWFsaXplKGhvdXJQc3VlZG9JZCk7CisgICAg
ZmllbGQtPmluaXRpYWxpemUoaG91clBzdWVkb0lkLCBBWEhvdXJGaWVsZFRleHQoKSk7CiAgICAg
cmV0dXJuIGZpZWxkLnJlbGVhc2UoKTsKIH0KIApAQCAtMTA0LDcgKzEwNSw3IEBAIFBhc3NSZWZQ
dHI8RGF0ZVRpbWVNaWxsaXNlY29uZEZpZWxkRWxlbWVudD4gRGF0ZVRpbWVNaWxsaXNlY29uZEZp
ZWxkRWxlbWVudDo6Y3JlCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG1pbGxpc2Vjb25kUHN1ZWRvSWQsICgiLXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbGxpc2Vjb25k
LWZpZWxkIikpOwogICAgIFJlZlB0cjxEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50PiBm
aWVsZCA9IGFkb3B0UmVmKG5ldyBEYXRlVGltZU1pbGxpc2Vjb25kRmllbGRFbGVtZW50KGRvY3Vt
ZW50LCBmaWVsZE93bmVyKSk7Ci0gICAgZmllbGQtPmluaXRpYWxpemUobWlsbGlzZWNvbmRQc3Vl
ZG9JZCk7CisgICAgZmllbGQtPmluaXRpYWxpemUobWlsbGlzZWNvbmRQc3VlZG9JZCwgQVhNaWxs
aXNlY29uZEZpZWxkVGV4dCgpKTsKICAgICByZXR1cm4gZmllbGQucmVsZWFzZSgpOwogfQogCkBA
IC0xMjksNyArMTMwLDcgQEAgUGFzc1JlZlB0cjxEYXRlVGltZU1pbnV0ZUZpZWxkRWxlbWVudD4g
RGF0ZVRpbWVNaW51dGVGaWVsZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWUKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbWludXRlUHN1ZWRvSWQsICgiLXdlYmtpdC1kYXRl
dGltZS1lZGl0LW1pbnV0ZS1maWVsZCIpKTsKICAgICBSZWZQdHI8RGF0ZVRpbWVNaW51dGVGaWVs
ZEVsZW1lbnQ+IGZpZWxkID0gYWRvcHRSZWYobmV3IERhdGVUaW1lTWludXRlRmllbGRFbGVtZW50
KGRvY3VtZW50LCBmaWVsZE93bmVyKSk7Ci0gICAgZmllbGQtPmluaXRpYWxpemUobWludXRlUHN1
ZWRvSWQpOworICAgIGZpZWxkLT5pbml0aWFsaXplKG1pbnV0ZVBzdWVkb0lkLCBBWE1pbnV0ZUZp
ZWxkVGV4dCgpKTsKICAgICByZXR1cm4gZmllbGQucmVsZWFzZSgpOwogfQogCkBAIC0xNTQsNyAr
MTU1LDcgQEAgUGFzc1JlZlB0cjxEYXRlVGltZVNlY29uZEZpZWxkRWxlbWVudD4gRGF0ZVRpbWVT
ZWNvbmRGaWVsZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWUKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgc2Vjb25kUHN1ZWRvSWQsICgiLXdlYmtpdC1kYXRldGltZS1lZGl0
LXNlY29uZC1maWVsZCIpKTsKICAgICBSZWZQdHI8RGF0ZVRpbWVTZWNvbmRGaWVsZEVsZW1lbnQ+
IGZpZWxkID0gYWRvcHRSZWYobmV3IERhdGVUaW1lU2Vjb25kRmllbGRFbGVtZW50KGRvY3VtZW50
LCBmaWVsZE93bmVyKSk7Ci0gICAgZmllbGQtPmluaXRpYWxpemUoc2Vjb25kUHN1ZWRvSWQpOwor
ICAgIGZpZWxkLT5pbml0aWFsaXplKHNlY29uZFBzdWVkb0lkLCBBWFNlY29uZEZpZWxkVGV4dCgp
KTsKICAgICByZXR1cm4gZmllbGQucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApp
bmRleCBiZjgwYWY5NDIzZjRiYTYxODdiNDU1MzZlZTM3NWNlNTljNWM4MmFkLi5jZjhhNGEzMzg0
NDdiMjNkOTFhOTViNjMzYjc2ZmI4NzBjOTE3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKQEAg
LTExMSw2ICsxMTEsMTYgQEAgYm9vbCBEYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQ6Omhhc1Zh
bHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9oYXNWYWx1ZTsKIH0KIAoraW50IERhdGVUaW1lTnVt
ZXJpY0ZpZWxkRWxlbWVudDo6bWF4aW11bSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2Uu
bWF4aW11bTsKK30KKworaW50IERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6bWluaW11bSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2UubWluaW11bTsKK30KKwogdm9pZCBEYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQ6OnNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMm
IGRhdGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCiB7CiAg
ICAgbV9sYXN0RGlnaXRDaGFyVGltZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oCmluZGV4IDI4M2U2MDY3
MjNmYWZlYzdmNWI1OTdkNmQ0Nzc5ZDA1N2EzZjk2ZGYuLjdjNzNmMWI4NjA2NDRmNThhODJiNTc3
M2UxY2RkY2ViZmQ1NzJlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gRGF0ZVRpbWVGaWVsZEVsZW1lbnQgZnVuY3Rpb25zLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRCbHVyKCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1
YWwgaW50IG1heGltdW0oKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIGludCBt
aW5pbXVtKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNldEVtcHR5
VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJl
aGF2aW9yKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcERvd24oKSBPVkVS
UklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwKCkgT1ZFUlJJREUgRklOQUw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmll
bGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9s
aWNGaWVsZEVsZW1lbnQuY3BwCmluZGV4IGJlYWRjYTk3NDNjMTE2YzE0ZDMxODUyZTc5NTNjYWI3
ZTJhZDMyMTMuLjZjYjRlYzFlMjZjNjkwNWNjMTgwZGQ4NzQ4MTIzZjViMGE2OTAxN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9s
aWNGaWVsZEVsZW1lbnQuY3BwCkBAIC05NSw2ICs5NSwxNiBAQCBib29sIERhdGVUaW1lU3ltYm9s
aWNGaWVsZEVsZW1lbnQ6Omhhc1ZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWxlY3RlZElu
ZGV4ID49IDA7CiB9CiAKK2ludCBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50OjptYXhpbXVt
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX3N5bWJvbHMuc2l6ZSgp
KTsKK30KKworaW50IERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQ6Om1pbmltdW0oKSBjb25z
dAoreworICAgIHJldHVybiAxOworfQorCiB2b2lkIERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1l
bnQ6OnNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmLCBFdmVudEJlaGF2aW9yIGV2
ZW50QmVoYXZpb3IpCiB7CiAgICAgbV9zZWxlY3RlZEluZGV4ID0gaW52YWxpZEluZGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxk
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0Zp
ZWxkRWxlbWVudC5oCmluZGV4IGIyMWE4ZTRmM2VmNGU3YzE1OWM0MDdkYTM2N2M3MWY1Y2Q5ZDA3
NmUuLjdjNWY2N2I4OWNjZjBhZjVjZDMwMGJiNzE1NDlkYzk2NDY3NTQ4MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZVN5bWJvbGljRmllbGRF
bGVtZW50LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICAvLyBEYXRlVGltZUZpZWxk
RWxlbWVudCBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCopIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1
ZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25z
dCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtKCkgY29uc3QgT1ZFUlJJ
REUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNldEVtcHR5VmFsdWUoY29uc3QgRGF0ZUNvbXBv
bmVudHMmIGRhdGVGb3JSZWFkT25seUZpZWxkLCBFdmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2
ZW50KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcERvd24oKSBPVkVSUklE
RSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwKCkgT1ZFUlJJREUgRklOQUw7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggY2E2ZjkwZGNkNzgzY2U2ZDE4MTRiYmE2OGNjMWQ1ZTUwZjdkM2IzOC4uYmM0YjUxN2QyOTVk
MmUwOTQ2MzE0M2E4OTY3MjA2OWFkNWNkNDMzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEy
LTA5LTExICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TmV3IHRpbWUgaW5wdXQgbmVlZHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzIKKworICAgICAgICBSZXZpZXdlZCBieSBD
aHJpcyBGbGVpemFjaC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdHdvIHRlc3RzIGZvciBj
aGVja2luZyBhY2Nlc3NpYmlsaXR5IGZ1bmN0aW9uYWxpdGllcworICAgICAgICBpbiBtdWx0aXBs
ZSBmaWVsZHMgdGltZSBpbnB1dCBVSS4KKworICAgICAgICBUaGlzIHBhdGNoIGFmZmVjdHMgcG9y
dHMgd2hpY2ggZW5hYmxlIGJvdGggRU5BQkxFX0lOUFVUX1RZUEVfVElNRSBhbmQKKyAgICAgICAg
RU5BQkxFX0lOUFVUX1RZUEVfVElNRV9NVUxUSVBMRV9GSUVMRFMuCisKKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGlt
ZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVz
Lmh0bWw6IEFkZGVkIHRvIGNoZWNrIEFSSUEgYXR0cmlidXRlcyB1c2VkIGluIG11bHRpcGxlIGZp
ZWxkcyB0aW1lIGlucHV0IFVJLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1m
aWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUt
ZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9u
Lmh0bWw6IEFkZGVkIHRvIGNoZWNrIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9uIHN1cHBvcnRz
IGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0IFVJLgorCiAyMDEyLTA5LTEyICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFRlc3QgZXhw
ZWN0YXRpb24gdXBkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUt
bXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRz
L3RpbWUtbXVsdGlwbGUtZmllbGRzLWF4LWFyaWEtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTU3YzBiNWJhNGE5NDY0MzA0NjllMDQwYWU0YTZlOWE5NDBmYmYwNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMv
dGltZS1tdWx0aXBsZS1maWVsZHMtYXgtYXJpYS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIyIEBACitUaGlzIHRlc3QgY2hlY2tzIGFyaWEtaGVscCBhdHRyaWJ1dGUgb2YgZmll
bGRzIGluIG11bHRpcGxlIGZpZWxkcyB0aW1lIGlucHV0IFVJLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworTm9uLWVtcHR5IHZhbHVlCitQQVNTIGZvY3VzZWRGaWVsZFZhbHVlRGVz
Y3JpcHRpb24oKSBpcyAiQVhIZWxwOiBIb3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiAxMiwgMSwg
MTIiCitQQVNTIGZvY3VzZWRGaWVsZFZhbHVlRGVzY3JpcHRpb24oKSBpcyAiQVhIZWxwOiBNaW51
dGVzLCBBWFZhbHVlRGVzY3JpcHRpb246IDM0LCAwLCA1OSIKK1BBU1MgZm9jdXNlZEZpZWxkVmFs
dWVEZXNjcmlwdGlvbigpIGlzICJBWEhlbHA6IFNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjog
NTYsIDAsIDU5IgorUEFTUyBmb2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9uKCkgaXMgIkFYSGVs
cDogTWlsbGlzZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IDc4OSwgMCwgOTk5IgorUEFTUyBm
b2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9uKCkgaXMgIkFYSGVscDogQU0vUE0sIEFYVmFsdWVE
ZXNjcmlwdGlvbjogUE0sIDEsIDIiCitFbXB0eSB2YWx1ZQorUEFTUyBmb2N1c2VkRmllbGRWYWx1
ZURlc2NyaXB0aW9uKCkgaXMgIkFYSGVscDogQU0vUE0sIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxh
bmssIDEsIDIiCitQQVNTIGZvY3VzZWRGaWVsZFZhbHVlRGVzY3JpcHRpb24oKSBpcyAiQVhIZWxw
OiBNaWxsaXNlY29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDk5OSIKK1BBU1Mg
Zm9jdXNlZEZpZWxkVmFsdWVEZXNjcmlwdGlvbigpIGlzICJBWEhlbHA6IFNlY29uZHMsIEFYVmFs
dWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDU5IgorUEFTUyBmb2N1c2VkRmllbGRWYWx1ZURlc2Ny
aXB0aW9uKCkgaXMgIkFYSGVscDogTWludXRlcywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywg
MCwgNTkiCitQQVNTIGZvY3VzZWRGaWVsZFZhbHVlRGVzY3JpcHRpb24oKSBpcyAiQVhIZWxwOiBI
b3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywgMSwgMTIiCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUtZmllbGRz
LWF4LWFyaWEtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11
bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMDY2Njg5MTEyODRiMmQ1YTlhNDI0MWU3NDhjMDM0MzZjYmUxODM2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZp
ZWxkcy90aW1lLW11bHRpcGxlLWZpZWxkcy1heC1hcmlhLWF0dHJpYnV0ZXMuaHRtbApAQCAtMCww
ICsxLDcyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9dGVzdCB0eXBlPSJ0aW1lIiB2YWx1ZT0iMTI6MzQ6NTYu
Nzg5Ij4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0IGNoZWNrcyBhcmlhLWhlbHAg
YXR0cmlidXRlIG9mIGZpZWxkcyBpbiBtdWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSS4nKTsK
KworZnVuY3Rpb24gZW5hYmxlQWNjZXNzaWJpbGl0eSgpCit7CisgICAgaWYgKCF3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZGVidWcoIlBsZWFzZSBydW4gaW5zaWRl
IER1bXBSZW5kZXJUcmVlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitmdW5jdGlv
biBmb2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBlbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQKKyAgICByZXR1cm4gZWxlbWVu
dC5oZWxwVGV4dCArICIsICIgKyAgZWxlbWVudC52YWx1ZURlc2NyaXB0aW9uICsgIiwgIiArIGVs
ZW1lbnQubWluVmFsdWUgKyAiLCAiICsgZWxlbWVudC5tYXhWYWx1ZTsKK30KKworZnVuY3Rpb24g
a2V5RG93bihrZXksIG1vZGlmaWVycykKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikK
KyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5LCBtb2RpZmllcnMp
OworfQorCit2YXIgdGVzdElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsK
KworZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwordGVzdElucHV0LmZvY3VzKCk7CisKK2RlYnVnKCdO
b24tZW1wdHkgdmFsdWUnKTsKK3Rlc3RJbnB1dC5mb2N1cygpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdmb2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9uKCknLCAnQVhIZWxwOiBIb3VycywgQVhW
YWx1ZURlc2NyaXB0aW9uOiAxMiwgMSwgMTInKTsKK2tleURvd24oJ1x0Jyk7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2ZvY3VzZWRGaWVsZFZhbHVlRGVzY3JpcHRpb24oKScsICdBWEhlbHA6IE1p
bnV0ZXMsIEFYVmFsdWVEZXNjcmlwdGlvbjogMzQsIDAsIDU5Jyk7CitrZXlEb3duKCdcdCcpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdmb2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9uKCknLCAn
QVhIZWxwOiBTZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IDU2LCAwLCA1OScpOwora2V5RG93
bignXHQnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZm9jdXNlZEZpZWxkVmFsdWVEZXNjcmlw
dGlvbigpJywgJ0FYSGVscDogTWlsbGlzZWNvbmRzLCBBWFZhbHVlRGVzY3JpcHRpb246IDc4OSwg
MCwgOTk5Jyk7CitrZXlEb3duKCdcdCcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdmb2N1c2Vk
RmllbGRWYWx1ZURlc2NyaXB0aW9uKCknLCAnQVhIZWxwOiBBTS9QTSwgQVhWYWx1ZURlc2NyaXB0
aW9uOiBQTSwgMSwgMicpOworCitkZWJ1ZygnRW1wdHkgdmFsdWUnKTsKK2tleURvd24oJ1xiJyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ZvY3VzZWRGaWVsZFZhbHVlRGVzY3JpcHRpb24oKScs
ICdBWEhlbHA6IEFNL1BNLCBBWFZhbHVlRGVzY3JpcHRpb246IGJsYW5rLCAxLCAyJyk7CitrZXlE
b3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CitrZXlEb3duKCdcYicpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdmb2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9uKCknLCAnQVhIZWxwOiBNaWxsaXNl
Y29uZHMsIEFYVmFsdWVEZXNjcmlwdGlvbjogYmxhbmssIDAsIDk5OScpOwora2V5RG93bignXHQn
LCBbJ3NoaWZ0S2V5J10pOwora2V5RG93bignXGInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
Zm9jdXNlZEZpZWxkVmFsdWVEZXNjcmlwdGlvbigpJywgJ0FYSGVscDogU2Vjb25kcywgQVhWYWx1
ZURlc2NyaXB0aW9uOiBibGFuaywgMCwgNTknKTsKK2tleURvd24oJ1x0JywgWydzaGlmdEtleSdd
KTsKK2tleURvd24oJ1xiJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ZvY3VzZWRGaWVsZFZh
bHVlRGVzY3JpcHRpb24oKScsICdBWEhlbHA6IE1pbnV0ZXMsIEFYVmFsdWVEZXNjcmlwdGlvbjog
YmxhbmssIDAsIDU5Jyk7CitrZXlEb3duKCdcdCcsIFsnc2hpZnRLZXknXSk7CitrZXlEb3duKCdc
YicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdmb2N1c2VkRmllbGRWYWx1ZURlc2NyaXB0aW9u
KCknLCAnQVhIZWxwOiBIb3VycywgQVhWYWx1ZURlc2NyaXB0aW9uOiBibGFuaywgMSwgMTInKTsK
KworZGVidWcoJycpOwordGVzdElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGVzdElucHV0
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVsdGlwbGUt
ZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVs
ZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjllNmU2ZDI3MzE0NTQ5Y2ZiODMzZGU2MGUzZTg1YmUzMTA0ZDI3NWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUtbXVsdGlwbGUtZmllbGRzL3RpbWUtbXVs
dGlwbGUtZmllbGRzLWF4LXZhbHVlLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3QgY2hlY2tzIHZhbHVlIGNoYW5nZWQgYWNjZXNzaWJp
bGl0eSBub3RpZmljYXRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQgQVhIZWxwOiBIb3Vycz1BWFZhbHVlRGVzY3JpcHRpb246IDEy
CitGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCBBWEhlbHA6IE1pbnV0ZXM9QVhWYWx1ZURlc2NyaXB0
aW9uOiAzNAorVmFsdWVDaGFuZ2VkIEFYSGVscDogTWludXRlcz1BWFZhbHVlRGVzY3JpcHRpb246
IDA1CitWYWx1ZUNoYW5nZWQgQVhIZWxwOiBNaW51dGVzPUFYVmFsdWVEZXNjcmlwdGlvbjogMDUK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGlt
ZS1tdWx0aXBsZS1maWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS1tdWx0aXBsZS1maWVsZHMvdGltZS1tdWx0aXBsZS1m
aWVsZHMtYXgtdmFsdWUtY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTkw
ZmEzZTIzYTJkYTQzOWExZWE0ZWNhZWI1NDUyMzgzMWNmZWMyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lLW11bHRpcGxlLWZpZWxkcy90aW1lLW11bHRpcGxl
LWZpZWxkcy1heC12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sCkBAIC0wLDAgKzEsNTAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxpbnB1dCBpZD10ZXN0IHR5cGU9InRpbWUiIHZhbHVlPSIxMjozNDo1Ni43ODkiPgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3QgY2hlY2tzIHZhbHVlIGNoYW5nZWQgYWNj
ZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLicpOworCitmdW5jdGlvbiBlbmFibGVBY2Nlc3NpYmls
aXR5KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICBkZWJ1ZygiUGxlYXNlIHJ1biBpbnNpZGUgRHVtcFJlbmRlclRyZWUuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hZGROb3RpZmlj
YXRpb25MaXN0ZW5lcihmdW5jdGlvbiAoZWxlbWVudCwgbm90aWZpY2F0aW9uKSB7CisgICAgICAg
IGlmIChub3RpZmljYXRpb24gPT0gJ0ZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkJyB8fCBub3RpZmlj
YXRpb24gPT0gJ1ZhbHVlQ2hhbmdlZCcpIHsKKyAgICAgICAgICAgIGRlYnVnKG5vdGlmaWNhdGlv
biArICcgJyArIGVsZW1lbnQuaGVscFRleHQgKyAnPScgKyBlbGVtZW50LnZhbHVlRGVzY3JpcHRp
b24pOworICAgICAgICB9CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGtleURvd24oa2V5LCBtb2Rp
ZmllcnMpCit7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKK30KKwordmFyIHRlc3RJ
bnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisKK2VuYWJsZUFjY2Vzc2li
aWxpdHkoKTsKK3Rlc3RJbnB1dC5mb2N1cygpOwora2V5RG93bignXHQnKTsKK2tleURvd24oJzQn
KTsKK2tleURvd24oJ3VwQXJyb3cnKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
Cit3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgZGVidWcoJycpOworICAgIHRl
c3RJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRlc3RJbnB1dCk7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9LCAxKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>