<?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>91694</bug_id>
          
          <creation_ts>2012-07-18 16:27:06 -0700</creation_ts>
          <short_desc>[chromium] Add droppedFrameCount to renderingStats.</short_desc>
          <delta_ts>2012-07-23 21:18:13 -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>New Bugs</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dave Tu">dtu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672942</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-18 16:27:06 -0700</bug_when>
    <thetext>[chromium] Add timeSpentPainting to renderingStats and rename other fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672948</commentid>
    <comment_count>1</comment_count>
      <attachid>153136</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-18 16:29:52 -0700</bug_when>
    <thetext>Created attachment 153136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672958</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 16:33:54 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672973</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-18 16:48:29 -0700</bug_when>
    <thetext>Question: the name changes here are incompatible with the Chromium side. How do you reconcile patches like this that require a simultaneous WebKit/Chromium change?

Also fun bit of history; dropped frame count was discussed months ago here: https://bugs.webkit.org/show_bug.cgi?id=73454</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673293</commentid>
    <comment_count>4</comment_count>
      <attachid>153136</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-19 01:25:48 -0700</bug_when>
    <thetext>Comment on attachment 153136
Patch

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

&gt; Source/Platform/chromium/public/WebRenderingStats.h:33
&gt; +    int screenFrameCount;

As you note, by renaming these, you&apos;re going to break chrome when this lands. So, I suggest you put a comment saying // FIXME: when we land crbug.com/137790, rename this to animationFrameCount. Your focus here is on adding the droppedFrameCount in a hurry &apos;cause we really really desperately need it. We çan fix up naming and the complexities of renaming as that mentioned bug #

&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:37
&gt; +const double CCFrameRateCounter::kDroppedFrameTime = 1.0 / 50.0;

So, whats the rationale behind 20ms? Is this what tonyg uses in the perf.py test?

You should file a followup bug that determines this based on the monitor refresh rate. I&apos;m okay with it being fixed for v0. We&apos;re adding this value to CCThreadProxy very very soon. If FPSCounter was constructed with a &quot;displayRefreshRate&quot; value and had a mutation method setDisplayRefreshRate, the proxy could set it. But again, dont do it now, do it later. :)

http://code.google.com/p/chromium/issues/detail?id=129674

&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:45
&gt; +inline double CCFrameRateCounter::frameInterval(int frameNumber) const

This is elegant. Nicely done.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:-46
&gt; -    return safeMod(frame, kTimeStampHistorySize);

what if frameNumber == 0?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:70
&gt; +    if (!isBadFrameInterval(delta) &amp;&amp; delta &gt; kDroppedFrameTime)

Why are we checking isBadFrameInteravl()? Those are defined as really short frames, iirw? That wouldnt&apos; count as a dropped frame anyways...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673950</commentid>
    <comment_count>5</comment_count>
      <attachid>153356</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-19 15:02:05 -0700</bug_when>
    <thetext>Created attachment 153356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673953</commentid>
    <comment_count>6</comment_count>
      <attachid>153136</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-19 15:03:04 -0700</bug_when>
    <thetext>Comment on attachment 153136
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebRenderingStats.h:33
&gt;&gt; +    int screenFrameCount;
&gt; 
&gt; As you note, by renaming these, you&apos;re going to break chrome when this lands. So, I suggest you put a comment saying // FIXME: when we land crbug.com/137790, rename this to animationFrameCount. Your focus here is on adding the droppedFrameCount in a hurry &apos;cause we really really desperately need it. We çan fix up naming and the complexities of renaming as that mentioned bug #

Okay.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:37
&gt;&gt; +const double CCFrameRateCounter::kDroppedFrameTime = 1.0 / 50.0;
&gt; 
&gt; So, whats the rationale behind 20ms? Is this what tonyg uses in the perf.py test?
&gt; 
&gt; You should file a followup bug that determines this based on the monitor refresh rate. I&apos;m okay with it being fixed for v0. We&apos;re adding this value to CCThreadProxy very very soon. If FPSCounter was constructed with a &quot;displayRefreshRate&quot; value and had a mutation method setDisplayRefreshRate, the proxy could set it. But again, dont do it now, do it later. :)
&gt; 
&gt; http://code.google.com/p/chromium/issues/detail?id=129674

There&apos;s some noise in the frame times, so it should be slightly higher than 16.67 (which is what is in perf.py). The actual number is arbitrary, though. 1/55? 1/59?

Okay, sounds good; I&apos;ll add a FIXME here as well.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:45
&gt;&gt; +inline double CCFrameRateCounter::frameInterval(int frameNumber) const
&gt; 
&gt; This is elegant. Nicely done.

Thanks!

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:-46
&gt;&gt; -    return safeMod(frame, kTimeStampHistorySize);
&gt; 
&gt; what if frameNumber == 0?

safeMod works on -1, see comment in line 39.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.cpp:70
&gt;&gt; +    if (!isBadFrameInterval(delta) &amp;&amp; delta &gt; kDroppedFrameTime)
&gt; 
&gt; Why are we checking isBadFrameInteravl()? Those are defined as really short frames, iirw? That wouldnt&apos; count as a dropped frame anyways...

Both really short frames and really long frames, as in when rendering goes idle. Those idle frames should be ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674117</commentid>
    <comment_count>7</comment_count>
      <attachid>153356</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-19 21:10:20 -0700</bug_when>
    <thetext>Comment on attachment 153356
Patch

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

I like this. @enne for review plus nits.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.h:76
&gt; +    // FIXME: After crbug.com/129674 lands, determine this threshold based on monitor refresh rate.

Did you file a bug? Reference the bug rather than the blocking bug.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderingStats.h:31
&gt; +    // FIXME: After landing crbug.com/137790, rename these to animationFrameCount and screenFrameCount.

File a bug and reference the bug, rather than reference the blocking bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674689</commentid>
    <comment_count>8</comment_count>
      <attachid>153356</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-20 10:24:03 -0700</bug_when>
    <thetext>Comment on attachment 153356
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:32
&gt; +#include &quot;cc/CCFrameRateCounter.h&quot;

It&apos;s kind of weird to me that CCSingleThreadProxy has to directly know about the fps counter.  Can you just wrap sourceAnimationFrameNumber and droppedFrameCount in CCLTHI member functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674699</commentid>
    <comment_count>9</comment_count>
      <attachid>153356</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-20 10:30:25 -0700</bug_when>
    <thetext>Comment on attachment 153356
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:32
&gt;&gt; +#include &quot;cc/CCFrameRateCounter.h&quot;
&gt; 
&gt; It&apos;s kind of weird to me that CCSingleThreadProxy has to directly know about the fps counter.  Can you just wrap sourceAnimationFrameNumber and droppedFrameCount in CCLTHI member functions?

Good poitn. David, lets add a method on m_layerTreeHostImpl-&gt;renderingStats(CCRenderingStats&amp;) and have the proxies just call through to that. Then we can have one place where we fill in the impl-side stats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676258</commentid>
    <comment_count>10</comment_count>
      <attachid>153925</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-23 18:00:53 -0700</bug_when>
    <thetext>Created attachment 153925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676262</commentid>
    <comment_count>11</comment_count>
      <attachid>153356</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-07-23 18:01:49 -0700</bug_when>
    <thetext>Comment on attachment 153356
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCFrameRateCounter.h:76
&gt;&gt; +    // FIXME: After crbug.com/129674 lands, determine this threshold based on monitor refresh rate.
&gt; 
&gt; Did you file a bug? Reference the bug rather than the blocking bug.

Done.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderingStats.h:31
&gt;&gt; +    // FIXME: After landing crbug.com/137790, rename these to animationFrameCount and screenFrameCount.
&gt; 
&gt; File a bug and reference the bug, rather than reference the blocking bug.

Done.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:32
&gt;&gt;&gt; +#include &quot;cc/CCFrameRateCounter.h&quot;
&gt;&gt; 
&gt;&gt; It&apos;s kind of weird to me that CCSingleThreadProxy has to directly know about the fps counter.  Can you just wrap sourceAnimationFrameNumber and droppedFrameCount in CCLTHI member functions?
&gt; 
&gt; Good poitn. David, lets add a method on m_layerTreeHostImpl-&gt;renderingStats(CCRenderingStats&amp;) and have the proxies just call through to that. Then we can have one place where we fill in the impl-side stats.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676274</commentid>
    <comment_count>12</comment_count>
      <attachid>153925</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-23 18:15:14 -0700</bug_when>
    <thetext>Comment on attachment 153925
Patch

R=me.  Looks great, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676369</commentid>
    <comment_count>13</comment_count>
      <attachid>153925</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 21:18:08 -0700</bug_when>
    <thetext>Comment on attachment 153925
Patch

Clearing flags on attachment: 153925

Committed r123421: &lt;http://trac.webkit.org/changeset/123421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676370</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 21:18:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153136</attachid>
            <date>2012-07-18 16:29:52 -0700</date>
            <delta_ts>2012-07-19 15:03:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91694-20120718162952.patch</filename>
            <type>text/plain</type>
            <size>17486</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxZmU5OWIxM2Q2ODkx
ZTg2MzBkOTU2MWI0YTQ0NThmMzUzMzI0NzYxLi4xYjI0OGE4NWMzNzhjZWIyZDI3MjMyNzEzZTJm
N2RmYTVlMjVmOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgZHJv
cHBlZEZyYW1lQ291bnQgdG8gcmVuZGVyaW5nU3RhdHMgYW5kIHJlbmFtZSBvdGhlciBmaWVsZHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlcmluZ1N0YXRzOjpXZWJSZW5kZXJpbmdTdGF0
cyk6CisKIDIwMTItMDctMTMgIFRvbnkgUGF5bmUgIDx0cGF5bmVAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBXaWRnZXQgZnJvbSBzY3JlZW5Db2xvclByb2ZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBlMWU5Yzk4ZDk4Y2RkYmIyMzkwMDAxOTY0YzI0NGVkMzc1YzUyNmRiLi5lZjI0NWUwY2UwOTA0
MjI1OWE4OWI1MTA1OWMxZDY2NmI0Zjk5MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTItMDctMTggIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIGRyb3BwZWRGcmFtZUNvdW50IHRvIHJlbmRlcmluZ1N0YXRzIGFuZCByZW5hbWUg
b3RoZXIgZmllbGRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE2OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDRnJhbWVSYXRlQ291bnRlcjo6ZnJhbWVJbnRlcnZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvdW50ZXI6OmZyYW1lSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NGcmFtZVJhdGVDb3VudGVyOjpDQ0ZyYW1lUmF0ZUNvdW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJhdGVDb3VudGVyOjptYXJrQmVnaW5uaW5nT2ZGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvdW50ZXI6OmlzQmFkRnJhbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJhdGVDb3VudGVyOjpkcm9wcGVkRnJhbWVDb3Vu
dCk6CisgICAgICAgIChDQ0ZyYW1lUmF0ZUNvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OnJlbmRlcmluZ1N0YXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oOgorICAgICAgICAoQ0NSZW5kZXJpbmdTdGF0
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmluZ1N0YXRzOjpDQ1JlbmRlcmluZ1N0YXRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmltcGxT
aWRlUmVuZGVyaW5nU3RhdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
aW1wbFNpZGVSZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZCk6CisKIDIwMTItMDctMTggIFNlcmdl
eSBSb2d1bGVua28gIDxyb2d1bGVua29AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGRpbmcgcGF1c2UgaWNvbiBmb3IgSmF2YVNjcmlwdCBkZWJ1Z2dpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMTY1NGNjNjc1YzkxMjYwZWFlM2VhNzQ5ODRkMzMyNzg2MGQ4
MjI1OS4uY2RkOGYyMGEzOTM4YWM2NWUzYzU5YzdhNmYxMmY1MWI2MGFhMTRhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xOCAgRGF2ZSBUdSAg
PGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgZHJvcHBlZEZyYW1l
Q291bnQgdG8gcmVuZGVyaW5nU3RhdHMgYW5kIHJlbmFtZSBvdGhlciBmaWVsZHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdT
dGF0cyk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxNdWx0aXBsZVJlZHJhdzo6ZHJhd0xheWVy
c09uQ0NUaHJlYWQpOgorCiAyMDEyLTA3LTE4ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgRGVjaW1hbDo6dG9TdHJpbmcgc2hvdWxkIG5vdCByb3VuZCBp
bnRlZ2VyIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSZW5kZXJpbmdTdGF0cy5oCmluZGV4IGYxNzY5ODU1YjAwMzI1OGVkMDUwYTVlMTAwOTE3YTQ0
ZTVjMjFiYzguLmZkMTg1ZjUzYzQ3ZGI2Y2VkZTMwNDc5OWE1ZjdhOGFkYTNkODYyNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRz
LmgKQEAgLTI5LDEyICsyOSwxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBXZWJS
ZW5kZXJpbmdTdGF0cyB7Ci0gICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKLSAgICBpbnQgbnVt
RnJhbWVzU2VudFRvU2NyZWVuOworICAgIGludCBhbmltYXRpb25GcmFtZUNvdW50OworICAgIGlu
dCBzY3JlZW5GcmFtZUNvdW50OworICAgIGludCBkcm9wcGVkRnJhbWVDb3VudDsKIAogICAgIFdl
YlJlbmRlcmluZ1N0YXRzKCkKLSAgICAgICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKLSAgICAg
ICAgLCBudW1GcmFtZXNTZW50VG9TY3JlZW4oMCkKKyAgICAgICAgOiBhbmltYXRpb25GcmFtZUNv
dW50KDApCisgICAgICAgICwgc2NyZWVuRnJhbWVDb3VudCgwKQorICAgICAgICAsIGRyb3BwZWRG
cmFtZUNvdW50KDApCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVD
b3VudGVyLmNwcAppbmRleCBkNmRmZjA2YWIwY2IxODUwNzQ0MjE3NDJhMTFlODQ2NTA2ZTIzZWU5
Li42Yjk2OTVhZjgwYjljN2ZiYzQ5OGY3YmI5MGVlYmY2YTUyMWY0MzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNv
dW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBkb3VibGUgQ0NGcmFtZVJhdGVDb3VudGVyOjprRnJhbWVUb29GYXN0
ID0gMS4wIC8gNzAuMDsgLy8gbWVhc3VyZWQgaW4gc2Vjb25kcwogY29uc3QgZG91YmxlIENDRnJh
bWVSYXRlQ291bnRlcjo6a0ZyYW1lVG9vU2xvdyA9IDEuMCAvIDEyLjA7Citjb25zdCBkb3VibGUg
Q0NGcmFtZVJhdGVDb3VudGVyOjprRHJvcHBlZEZyYW1lVGltZSA9IDEuMCAvIDUwLjA7CiAKIC8v
IHNhZmVNb2Qgd29ya3Mgb24gLTEsIHJldHVybmluZyBtLTEgaW4gdGhhdCBjYXNlLgogc3RhdGlj
IGlubGluZSBpbnQgc2FmZU1vZChpbnQgbnVtYmVyLCBpbnQgbW9kdWx1cykKQEAgLTQxLDEzICs0
MiwyMCBAQCBzdGF0aWMgaW5saW5lIGludCBzYWZlTW9kKGludCBudW1iZXIsIGludCBtb2R1bHVz
KQogICAgIHJldHVybiAobnVtYmVyICsgbW9kdWx1cykgJSBtb2R1bHVzOwogfQogCi1pbmxpbmUg
aW50IENDRnJhbWVSYXRlQ291bnRlcjo6ZnJhbWVJbmRleChpbnQgZnJhbWUpIGNvbnN0Citpbmxp
bmUgZG91YmxlIENDRnJhbWVSYXRlQ291bnRlcjo6ZnJhbWVJbnRlcnZhbChpbnQgZnJhbWVOdW1i
ZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNhZmVNb2QoZnJhbWUsIGtUaW1lU3RhbXBIaXN0b3J5
U2l6ZSk7CisgICAgcmV0dXJuIG1fdGltZVN0YW1wSGlzdG9yeVtmcmFtZUluZGV4KGZyYW1lTnVt
YmVyKV0gLQorICAgICAgICBtX3RpbWVTdGFtcEhpc3RvcnlbZnJhbWVJbmRleChmcmFtZU51bWJl
ciAtIDEpXTsKK30KKworaW5saW5lIGludCBDQ0ZyYW1lUmF0ZUNvdW50ZXI6OmZyYW1lSW5kZXgo
aW50IGZyYW1lTnVtYmVyKSBjb25zdAoreworICAgIHJldHVybiBzYWZlTW9kKGZyYW1lTnVtYmVy
LCBrVGltZVN0YW1wSGlzdG9yeVNpemUpOwogfQogCiBDQ0ZyYW1lUmF0ZUNvdW50ZXI6OkNDRnJh
bWVSYXRlQ291bnRlcigpCiAgICAgOiBtX2N1cnJlbnRGcmFtZU51bWJlcigxKQorICAgICwgbV9k
cm9wcGVkRnJhbWVDb3VudCgwKQogewogICAgIG1fdGltZVN0YW1wSGlzdG9yeVswXSA9IGN1cnJl
bnRUaW1lKCk7CiAgICAgbV90aW1lU3RhbXBIaXN0b3J5WzFdID0gbV90aW1lU3RhbXBIaXN0b3J5
WzBdOwpAQCAtNTgsNiArNjYsOSBAQCBDQ0ZyYW1lUmF0ZUNvdW50ZXI6OkNDRnJhbWVSYXRlQ291
bnRlcigpCiB2b2lkIENDRnJhbWVSYXRlQ291bnRlcjo6bWFya0JlZ2lubmluZ09mRnJhbWUoZG91
YmxlIHRpbWVzdGFtcCkKIHsKICAgICBtX3RpbWVTdGFtcEhpc3RvcnlbZnJhbWVJbmRleChtX2N1
cnJlbnRGcmFtZU51bWJlcildID0gdGltZXN0YW1wOworICAgIGRvdWJsZSBkZWx0YSA9IGZyYW1l
SW50ZXJ2YWwobV9jdXJyZW50RnJhbWVOdW1iZXIpOworICAgIGlmICghaXNCYWRGcmFtZUludGVy
dmFsKGRlbHRhKSAmJiBkZWx0YSA+IGtEcm9wcGVkRnJhbWVUaW1lKQorICAgICAgICArK21fZHJv
cHBlZEZyYW1lQ291bnQ7CiB9CiAKIHZvaWQgQ0NGcmFtZVJhdGVDb3VudGVyOjptYXJrRW5kT2ZG
cmFtZSgpCkBAIC03NSw5ICs4Niw3IEBAIGJvb2wgQ0NGcmFtZVJhdGVDb3VudGVyOjppc0JhZEZy
YW1lSW50ZXJ2YWwoZG91YmxlIGludGVydmFsQmV0d2VlbkNvbnNlY3V0aXZlRnJhCiAKIGJvb2wg
Q0NGcmFtZVJhdGVDb3VudGVyOjppc0JhZEZyYW1lKGludCBmcmFtZU51bWJlcikgY29uc3QKIHsK
LSAgICBkb3VibGUgZGVsdGEgPSBtX3RpbWVTdGFtcEhpc3RvcnlbZnJhbWVJbmRleChmcmFtZU51
bWJlcildIC0KLSAgICAgICAgICAgIG1fdGltZVN0YW1wSGlzdG9yeVtmcmFtZUluZGV4KGZyYW1l
TnVtYmVyIC0gMSldOwotICAgIHJldHVybiBpc0JhZEZyYW1lSW50ZXJ2YWwoZGVsdGEpOworICAg
IHJldHVybiBpc0JhZEZyYW1lSW50ZXJ2YWwoZnJhbWVJbnRlcnZhbChmcmFtZU51bWJlcikpOwog
fQogCiB2b2lkIENDRnJhbWVSYXRlQ291bnRlcjo6Z2V0QXZlcmFnZUZQU0FuZFN0YW5kYXJkRGV2
aWF0aW9uKGRvdWJsZSYgYXZlcmFnZUZQUywgZG91YmxlJiBzdGFuZGFyZERldmlhdGlvbikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRnJhbWVSYXRlQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgKaW5kZXggYzQ5ZjE3YzIzYTExNzc0
OTg2ZTRhMzg1NTVhZDZjMTI3ZWY1OThkMC4uMDY2YTgxYzgwMTllZDYwMGIyMTEwNDEzMjU1NDlk
M2VmMzk5N2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgKQEAgLTU2LDkg
KzU2LDEyIEBAIHB1YmxpYzoKICAgICAvLyB0cnVlIGlmIHRoZSBnaXZlbiBmcmFtZSBpbnRlcnZh
bCBpcyB0b28gZmFzdCBvciB0b28gc2xvdywgYmFzZWQgb24gY29uc3RhbnQgdGhyZXNob2xkcy4K
ICAgICBib29sIGlzQmFkRnJhbWVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxCZXR3ZWVuQ29uc2Vj
dXRpdmVGcmFtZXMpIGNvbnN0OwogCisgICAgaW50IGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kcm9wcGVkRnJhbWVDb3VudDsgfQorCiBwcml2YXRlOgogICAgIENDRnJhbWVS
YXRlQ291bnRlcigpOwogCisgICAgZG91YmxlIGZyYW1lSW50ZXJ2YWwoaW50IGZyYW1lTnVtYmVy
KSBjb25zdDsKICAgICBpbnQgZnJhbWVJbmRleChpbnQgZnJhbWVOdW1iZXIpIGNvbnN0OwogICAg
IGJvb2wgaXNCYWRGcmFtZShpbnQgZnJhbWVOdW1iZXIpIGNvbnN0OwogCkBAIC02OCwxMCArNzEs
MTYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGtGcmFtZVRvb0Zhc3Q7CiAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSBrRnJhbWVUb29TbG93OwogCisgICAgLy8gSWYgYSBmcmFt
ZSB0YWtlcyBsb25nZXIgdGhhbiB0aGlzIHRocmVzaG9sZCAobWVhc3VyZWQgaW4gc2Vjb25kcykg
dGhlbiB3ZQorICAgIC8vIChuYWl2ZWx5KSBhc3N1bWUgdGhhdCBpdCBtaXNzZWQgYSBzY3JlZW4g
cmVmcmVzaDsgdGhhdCBpcywgd2UgZHJvcHBlZCBhIGZyYW1lLgorICAgIHN0YXRpYyBjb25zdCBk
b3VibGUga0Ryb3BwZWRGcmFtZVRpbWU7CisKICAgICBzdGF0aWMgY29uc3QgaW50IGtUaW1lU3Rh
bXBIaXN0b3J5U2l6ZSA9IDEyMDsKIAogICAgIGludCBtX2N1cnJlbnRGcmFtZU51bWJlcjsKICAg
ICBkb3VibGUgbV90aW1lU3RhbXBIaXN0b3J5W2tUaW1lU3RhbXBIaXN0b3J5U2l6ZV07CisKKyAg
ICBpbnQgbV9kcm9wcGVkRnJhbWVDb3VudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDFmNTFmMTlkNDViMTEyNjgwYmM2
MWViMTdhZjQzNDljZmVmMjhmYWIuLmViODUzNzYyOGVlYWI1MmNlNGE2Zjg1NzA5NjY2OWJhMmFh
YzgyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzA0LDcgKzMwNCw3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hBbGxSZW5kZXJpbmcoKQogdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25z
dAogewogICAgIG1fcHJveHktPmltcGxTaWRlUmVuZGVyaW5nU3RhdHMoc3RhdHMpOwotICAgIHN0
YXRzLm51bUFuaW1hdGlvbkZyYW1lcyA9IGFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7CisgICAgc3Rh
dHMuYW5pbWF0aW9uRnJhbWVDb3VudCA9IGFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7CiB9CiAKIGNv
bnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDTGF5ZXJUcmVlSG9zdDo6bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCmluZGV4IDA0YmI3ODY3MTU5ZDc2ODgzMjA4Njk0OWM0YzkyODY3YmE0MThlOWIuLmM2
MWNlNDMxMmNlNDllMzBhOGVmYmY4YTZhMzMwMzc1N2E5NDVmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xMTUsNyArMTE1LDYgQEAgUGFzc093blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NM
YXllclRyZWVTZXQKIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVO
dW1iZXIoLTEpCi0gICAgLCBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKDApCiAgICAgLCBt
X3Jvb3RTY3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJ
bXBsKDApCiAgICAgLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlKC0xKQpAQCAt
NTcxLDggKzU3MCw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25z
dCBGcmFtZURhdGEmIGZyYW1lKQogCiAgICAgbV9sYXllclJlbmRlcmVyLT5maW5pc2hEcmF3aW5n
RnJhbWUoKTsKIAotICAgICsrbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsKLQogICAgIC8v
IFRoZSBuZXh0IGZyYW1lIHNob3VsZCBzdGFydCBieSBhc3N1bWluZyBub3RoaW5nIGhhcyBjaGFu
Z2VkLCBhbmQgY2hhbmdlcyBhcmUgbm90ZWQgYXMgdGhleSBvY2N1ci4KICAgICBtX3Jvb3RMYXll
ckltcGwtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNzUzYWEzODRhM2QwMDc2ZWExZjBhOThjMTc0
YTRiNTc1YTcwNzkwZS4uNjczOTI0YmFjOGFhZWE5ZjQ2NDc2N2NkMGVlNTUwZjY4Yzk4OWIzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTIxLDcgKzEyMSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPik7
CiAKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwotICAgIGludCBzb3VyY2VBbmltYXRp
b25GcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1i
ZXI7IH0KIAogICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc093blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAgICAgYm9vbCBpc0NvbnRl
eHRMb3N0KCk7CkBAIC0yMjUsNyArMjI0LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fc291cmNlRnJhbWVOdW1iZXI7
Ci0gICAgaW50IG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBzY3Jv
bGxJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaAppbmRleCBmNjljOGUwMjY4NGVj
MmU1MDAzZjMyMDQ3MGQwOWNjZTkwZWYxMTYyLi43MDZhZTcyMDFkMjUxYzlhM2RiYWZhNmVjY2U4
MDc4OGE5NTE1NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCkBAIC0yOCwxMiAr
MjgsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENDUmVuZGVyaW5nU3RhdHMg
ewotICAgIGludCBudW1BbmltYXRpb25GcmFtZXM7Ci0gICAgaW50IG51bUZyYW1lc1NlbnRUb1Nj
cmVlbjsKKyAgICBpbnQgYW5pbWF0aW9uRnJhbWVDb3VudDsKKyAgICBpbnQgc2NyZWVuRnJhbWVD
b3VudDsKKyAgICBpbnQgZHJvcHBlZEZyYW1lQ291bnQ7CiAKICAgICBDQ1JlbmRlcmluZ1N0YXRz
KCkKLSAgICAgICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKLSAgICAgICAgLCBudW1GcmFtZXNT
ZW50VG9TY3JlZW4oMCkKKyAgICAgICAgOiBhbmltYXRpb25GcmFtZUNvdW50KDApCisgICAgICAg
ICwgc2NyZWVuRnJhbWVDb3VudCgwKQorICAgICAgICAsIGRyb3BwZWRGcmFtZUNvdW50KDApCiAg
ICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmlu
ZGV4IDY3OGVmZGZmMGEzNThhMmQyOWZiMmE4N2E3ODJkNTdiZjdlMzY3YzguLmEzZmNkZjk4NzY1
OGIzZjcxYTVhOGM3NWJmZjk5ZjQzY2EyNDk4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5o
IgorI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgpAQCAtMTczLDcgKzE3NCw4IEBAIGJvb2wgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKIAogdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQogewot
ICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7CisgICAgc3RhdHMuc2NyZWVuRnJhbWVDb3VudCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZwc0NvdW50ZXIoKS0+Y3VycmVudEZyYW1lTnVtYmVyKCk7
CisgICAgc3RhdHMuZHJvcHBlZEZyYW1lQ291bnQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5mcHND
b3VudGVyKCktPmRyb3BwZWRGcmFtZUNvdW50KCk7CiB9CiAKIGNvbnN0IExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMmIENDU2luZ2xlVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA5OTczYTk3NGIxNTY3
YmI2NjgzMTI2MDM2ZWNkNDA0MzFmMDExZmNjLi40ZTEwZGFlMjQwZDZkNDA2NGQ4M2Y0NmUwYzkx
YjlkOTBmODY1NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxh
cy5oIgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oIgorI2luY2x1ZGUgImNj
L0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3QuaCIKQEAgLTg5Niw3ICs4OTcsOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRl
Q29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQwogdm9p
ZCBDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ1JlbmRlcmluZ1N0YXRzKiBzdGF0cykKIHsKICAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIHN0YXRzLT5udW1GcmFtZXNTZW50VG9TY3Jl
ZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOwor
ICAgIHN0YXRzLT5zY3JlZW5GcmFtZUNvdW50ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnBzQ291
bnRlcigpLT5jdXJyZW50RnJhbWVOdW1iZXIoKTsKKyAgICBzdGF0cy0+ZHJvcHBlZEZyYW1lQ291
bnQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5mcHNDb3VudGVyKCktPmRyb3BwZWRGcmFtZUNvdW50
KCk7CiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggMjA3YTgzNTBkZWMwMWFlNzAy
NDlmYjZhYTk3N2Y4NmUyMmQ4MDU4MS4uNGM2MTU2NmIyMzBlOTk3N2NlNzBjZjIwYTE0ZDFiMmUz
Y2Q0OGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHAKQEAgLTE4MCw4ICsxODAsOSBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnJlbmRl
cmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKICAgICBDQ1JlbmRlcmlu
Z1N0YXRzIGNjU3RhdHM7CiAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnJlbmRlcmlu
Z1N0YXRzKGNjU3RhdHMpOwogCi0gICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0
cy5udW1BbmltYXRpb25GcmFtZXM7Ci0gICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0g
Y2NTdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW47CisgICAgc3RhdHMuYW5pbWF0aW9uRnJhbWVD
b3VudCA9IGNjU3RhdHMuYW5pbWF0aW9uRnJhbWVDb3VudDsKKyAgICBzdGF0cy5zY3JlZW5GcmFt
ZUNvdW50ID0gY2NTdGF0cy5zY3JlZW5GcmFtZUNvdW50OworICAgIHN0YXRzLmRyb3BwZWRGcmFt
ZUNvdW50ID0gY2NTdGF0cy5kcm9wcGVkRnJhbWVDb3VudDsKIH0KIAogdm9pZCBXZWJMYXllclRy
ZWVWaWV3Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXgg
YjBlOWVlOGQ2YzhiY2E5MzM3MzhkZjRiZWIwZjZmMGY2ZGU0ZGU0NS4uYTJiZDRmNzliMWQyNmZk
NTcwYTc4OTRkYzY3ZWU5NjlmNWViMzFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ0NUaHJlYWRlZFRlc3QuaCIKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorI2luY2x1ZGUgImNj
L0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2V0
dGluZ3MuaCIKQEAgLTk1MSw3ICs5NTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJvb3QtPnNldFNj
cm9sbGFibGUodHJ1ZSk7CiAgICAgICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNp
emUoMTAwLCAxMDApKTsKIAotICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkg
JiYgaW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAxKSB7CisgICAgICAgIGlm
ICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcHNDb3VudGVyKCktPmN1cnJl
bnRGcmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAgIC8vIEZpcnN0IGRyYXcgYWZ0ZXIg
Zmlyc3QgY29tbWl0LgogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCks
IEludFNpemUoKSk7CiAgICAgICAgICAgICByb290LT5zY3JvbGxCeShtX3Njcm9sbEFtb3VudCk7
CkBAIC05NTksNyArOTYwLDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsKICAgICAgICAgICAgIHBvc3RT
ZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOwotICAgICAgICB9IGVsc2UgaWYgKCFpbXBsLT5z
b3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkg
PT0gMikgeworICAgICAgICB9IGVsc2UgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYm
IGltcGwtPmZwc0NvdW50ZXIoKS0+Y3VycmVudEZyYW1lTnVtYmVyKCkgPT0gMikgewogICAgICAg
ICAgICAgLy8gU2Vjb25kIGRyYXcgYWZ0ZXIgZmlyc3QgY29tbWl0LgogICAgICAgICAgICAgRVhQ
RUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIG1fc2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAg
IHJvb3QtPnNjcm9sbEJ5KG1fc2Nyb2xsQW1vdW50KTsKQEAgLTk2OSw3ICs5NzAsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICAg
ICAgfSBlbHNlIGlmIChpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAg
ICAgIC8vIFRoaXJkIG9yIGxhdGVyIGRyYXcgYWZ0ZXIgc2Vjb25kIGNvbW1pdC4KLSAgICAgICAg
ICAgIEVYUEVDVF9HRShpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpLCAzKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9HRShpbXBsLT5mcHNDb3VudGVyKCktPmN1cnJlbnRGcmFtZU51bWJl
cigpLCAzKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBJbnRT
aXplKCkpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1f
aW5pdGlhbFNjcm9sbCArIG1fc2Nyb2xsQW1vdW50ICsgbV9zY3JvbGxBbW91bnQpOwogICAgICAg
ICAgICAgZW5kVGVzdCgpOwpAQCAtMjIxNCwxMSArMjIxNSwxMSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1w
bCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFt
ZU51bWJlcigpID09IDEpIHsKKyAgICAgICAgaWYgKGltcGwtPmZwc0NvdW50ZXIoKS0+Y3VycmVu
dEZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgRVhQRUNUX0VRKGltcGwtPnNjcm9s
bEJlZ2luKEludFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgICAgICAgICBpbXBsLT5zY3Jv
bGxCeShtX3Njcm9sbEFtb3VudCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxFbmQoKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDIp
CisgICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+ZnBzQ291bnRlcigpLT5jdXJyZW50RnJhbWVOdW1i
ZXIoKSA9PSAyKQogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153356</attachid>
            <date>2012-07-19 15:02:05 -0700</date>
            <delta_ts>2012-07-23 18:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91694-20120719150205.patch</filename>
            <type>text/plain</type>
            <size>16368</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxZmU5OWIxM2Q2ODkx
ZTg2MzBkOTU2MWI0YTQ0NThmMzUzMzI0NzYxLi5iNTBmMTljM2E0YjZlZDU5M2ZmOWJmNDcxNjMw
NDE1MTQ5YmI0ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgZHJv
cHBlZEZyYW1lQ291bnQgdG8gcmVuZGVyaW5nU3RhdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0
YXRzLmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlbmRlcmluZ1N0YXRzOjpXZWJSZW5kZXJpbmdTdGF0cyk6CisKIDIwMTItMDctMTMgIFRvbnkg
UGF5bmUgIDx0cGF5bmVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBXaWRnZXQgZnJv
bSBzY3JlZW5Db2xvclByb2ZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYWU1NjRiY2Q5MDdhYmNhYzgwNTFl
MjNkZjBmMTgzZmNjMGZhYmYxLi5kMzk3OTVkMjE4NmEyNGIzOGQ5MjZkNmY0N2EyOTljYjEyOTk5
ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDctMTggIERhdmUgVHUgIDxk
dHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIGRyb3BwZWRGcmFtZUNv
dW50IHRvIHJlbmRlcmluZ1N0YXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTE2OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRl
Q291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRnJh
bWVSYXRlQ291bnRlcjo6ZnJhbWVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1l
UmF0ZUNvdW50ZXI6OmZyYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJhdGVD
b3VudGVyOjpDQ0ZyYW1lUmF0ZUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJh
dGVDb3VudGVyOjptYXJrQmVnaW5uaW5nT2ZGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0Zy
YW1lUmF0ZUNvdW50ZXI6OmlzQmFkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NG
cmFtZVJhdGVDb3VudGVyOjpkcm9wcGVkRnJhbWVDb3VudCk6CisgICAgICAgIChDQ0ZyYW1lUmF0
ZUNvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJlbmRl
cmluZ1N0YXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdT
dGF0cy5oOgorICAgICAgICAoQ0NSZW5kZXJpbmdTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlcmluZ1N0YXRzOjpDQ1JlbmRlcmluZ1N0YXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0c09u
SW1wbFRocmVhZCk6CisKIDIwMTItMDctMTggIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBGaXggdXAgb2xkIG5hbWUgaW4gUnVsZVNldDo6YWRkUnVs
ZXNGcm9tU2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGZiNzZkOTQ3N2NiY2Uw
OTFhZmIzZGNjNDk3MjhiYTIyNzIzOTc5Ni4uMWY4YzhlNjk1N2Q3ZTQyZjU5ZTFiMDExNjY5MjA1
NTAzYzM5N2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNy0xOCAgRGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBBZGQgZHJvcHBlZEZyYW1lQ291bnQgdG8gcmVuZGVyaW5nU3RhdHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY5NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdTdGF0
cyk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxNdWx0aXBsZVJlZHJhdzo6ZHJhd0xheWVyc09u
Q0NUaHJlYWQpOgorCiAyMDEyLTA3LTE4ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2VkLCBtb3JlIGNvbXBpbGUgZml4ZXMgb24g
Q2hyb21pdW0gV2luLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSZW5kZXJpbmdTdGF0cy5oCmluZGV4IGYxNzY5ODU1YjAwMzI1OGVkMDUwYTVlMTAwOTE3YTQ0
ZTVjMjFiYzguLmUyNGFmMmI2OTE4MzZhMmFiYTUwNzViMjkzZmE0MGE0ODgwNDlkZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRz
LmgKQEAgLTMxLDEwICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBXZWJSZW5k
ZXJpbmdTdGF0cyB7CiAgICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKICAgICBpbnQgbnVtRnJh
bWVzU2VudFRvU2NyZWVuOworICAgIGludCBkcm9wcGVkRnJhbWVDb3VudDsKIAogICAgIFdlYlJl
bmRlcmluZ1N0YXRzKCkKICAgICAgICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKICAgICAgICAg
LCBudW1GcmFtZXNTZW50VG9TY3JlZW4oMCkKKyAgICAgICAgLCBkcm9wcGVkRnJhbWVDb3VudCgw
KQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAK
aW5kZXggZDZkZmYwNmFiMGNiMTg1MDc0NDIxNzQyYTExZTg0NjUwNmUyM2VlOS4uNmI5Njk1YWY4
MGI5YzdmYmM0OThmN2JiOTBlZWJmNmE1MjFmNDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1l
UmF0ZUNvdW50ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y29uc3QgZG91YmxlIENDRnJhbWVSYXRlQ291bnRlcjo6a0ZyYW1lVG9vRmFzdCA9IDEuMCAvIDcw
LjA7IC8vIG1lYXN1cmVkIGluIHNlY29uZHMKIGNvbnN0IGRvdWJsZSBDQ0ZyYW1lUmF0ZUNvdW50
ZXI6OmtGcmFtZVRvb1Nsb3cgPSAxLjAgLyAxMi4wOworY29uc3QgZG91YmxlIENDRnJhbWVSYXRl
Q291bnRlcjo6a0Ryb3BwZWRGcmFtZVRpbWUgPSAxLjAgLyA1MC4wOwogCiAvLyBzYWZlTW9kIHdv
cmtzIG9uIC0xLCByZXR1cm5pbmcgbS0xIGluIHRoYXQgY2FzZS4KIHN0YXRpYyBpbmxpbmUgaW50
IHNhZmVNb2QoaW50IG51bWJlciwgaW50IG1vZHVsdXMpCkBAIC00MSwxMyArNDIsMjAgQEAgc3Rh
dGljIGlubGluZSBpbnQgc2FmZU1vZChpbnQgbnVtYmVyLCBpbnQgbW9kdWx1cykKICAgICByZXR1
cm4gKG51bWJlciArIG1vZHVsdXMpICUgbW9kdWx1czsKIH0KIAotaW5saW5lIGludCBDQ0ZyYW1l
UmF0ZUNvdW50ZXI6OmZyYW1lSW5kZXgoaW50IGZyYW1lKSBjb25zdAoraW5saW5lIGRvdWJsZSBD
Q0ZyYW1lUmF0ZUNvdW50ZXI6OmZyYW1lSW50ZXJ2YWwoaW50IGZyYW1lTnVtYmVyKSBjb25zdAog
ewotICAgIHJldHVybiBzYWZlTW9kKGZyYW1lLCBrVGltZVN0YW1wSGlzdG9yeVNpemUpOworICAg
IHJldHVybiBtX3RpbWVTdGFtcEhpc3RvcnlbZnJhbWVJbmRleChmcmFtZU51bWJlcildIC0KKyAg
ICAgICAgbV90aW1lU3RhbXBIaXN0b3J5W2ZyYW1lSW5kZXgoZnJhbWVOdW1iZXIgLSAxKV07Cit9
CisKK2lubGluZSBpbnQgQ0NGcmFtZVJhdGVDb3VudGVyOjpmcmFtZUluZGV4KGludCBmcmFtZU51
bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gc2FmZU1vZChmcmFtZU51bWJlciwga1RpbWVTdGFt
cEhpc3RvcnlTaXplKTsKIH0KIAogQ0NGcmFtZVJhdGVDb3VudGVyOjpDQ0ZyYW1lUmF0ZUNvdW50
ZXIoKQogICAgIDogbV9jdXJyZW50RnJhbWVOdW1iZXIoMSkKKyAgICAsIG1fZHJvcHBlZEZyYW1l
Q291bnQoMCkKIHsKICAgICBtX3RpbWVTdGFtcEhpc3RvcnlbMF0gPSBjdXJyZW50VGltZSgpOwog
ICAgIG1fdGltZVN0YW1wSGlzdG9yeVsxXSA9IG1fdGltZVN0YW1wSGlzdG9yeVswXTsKQEAgLTU4
LDYgKzY2LDkgQEAgQ0NGcmFtZVJhdGVDb3VudGVyOjpDQ0ZyYW1lUmF0ZUNvdW50ZXIoKQogdm9p
ZCBDQ0ZyYW1lUmF0ZUNvdW50ZXI6Om1hcmtCZWdpbm5pbmdPZkZyYW1lKGRvdWJsZSB0aW1lc3Rh
bXApCiB7CiAgICAgbV90aW1lU3RhbXBIaXN0b3J5W2ZyYW1lSW5kZXgobV9jdXJyZW50RnJhbWVO
dW1iZXIpXSA9IHRpbWVzdGFtcDsKKyAgICBkb3VibGUgZGVsdGEgPSBmcmFtZUludGVydmFsKG1f
Y3VycmVudEZyYW1lTnVtYmVyKTsKKyAgICBpZiAoIWlzQmFkRnJhbWVJbnRlcnZhbChkZWx0YSkg
JiYgZGVsdGEgPiBrRHJvcHBlZEZyYW1lVGltZSkKKyAgICAgICAgKyttX2Ryb3BwZWRGcmFtZUNv
dW50OwogfQogCiB2b2lkIENDRnJhbWVSYXRlQ291bnRlcjo6bWFya0VuZE9mRnJhbWUoKQpAQCAt
NzUsOSArODYsNyBAQCBib29sIENDRnJhbWVSYXRlQ291bnRlcjo6aXNCYWRGcmFtZUludGVydmFs
KGRvdWJsZSBpbnRlcnZhbEJldHdlZW5Db25zZWN1dGl2ZUZyYQogCiBib29sIENDRnJhbWVSYXRl
Q291bnRlcjo6aXNCYWRGcmFtZShpbnQgZnJhbWVOdW1iZXIpIGNvbnN0CiB7Ci0gICAgZG91Ymxl
IGRlbHRhID0gbV90aW1lU3RhbXBIaXN0b3J5W2ZyYW1lSW5kZXgoZnJhbWVOdW1iZXIpXSAtCi0g
ICAgICAgICAgICBtX3RpbWVTdGFtcEhpc3RvcnlbZnJhbWVJbmRleChmcmFtZU51bWJlciAtIDEp
XTsKLSAgICByZXR1cm4gaXNCYWRGcmFtZUludGVydmFsKGRlbHRhKTsKKyAgICByZXR1cm4gaXNC
YWRGcmFtZUludGVydmFsKGZyYW1lSW50ZXJ2YWwoZnJhbWVOdW1iZXIpKTsKIH0KIAogdm9pZCBD
Q0ZyYW1lUmF0ZUNvdW50ZXI6OmdldEF2ZXJhZ2VGUFNBbmRTdGFuZGFyZERldmlhdGlvbihkb3Vi
bGUmIGF2ZXJhZ2VGUFMsIGRvdWJsZSYgc3RhbmRhcmREZXZpYXRpb24pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1l
UmF0ZUNvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRnJhbWVSYXRlQ291bnRlci5oCmluZGV4IGM0OWYxN2MyM2ExMTc3NDk4NmU0YTM4NTU1
YWQ2YzEyN2VmNTk4ZDAuLmUwNDE3OWM5MGU2YmVlYWZlNTU5ZDA2MDAxNzNkZmJiODQ5MjRkZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRnJhbWVSYXRlQ291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5oCkBAIC01Niw5ICs1NiwxMiBAQCBw
dWJsaWM6CiAgICAgLy8gdHJ1ZSBpZiB0aGUgZ2l2ZW4gZnJhbWUgaW50ZXJ2YWwgaXMgdG9vIGZh
c3Qgb3IgdG9vIHNsb3csIGJhc2VkIG9uIGNvbnN0YW50IHRocmVzaG9sZHMuCiAgICAgYm9vbCBp
c0JhZEZyYW1lSW50ZXJ2YWwoZG91YmxlIGludGVydmFsQmV0d2VlbkNvbnNlY3V0aXZlRnJhbWVz
KSBjb25zdDsKIAorICAgIGludCBkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZHJvcHBlZEZyYW1lQ291bnQ7IH0KKwogcHJpdmF0ZToKICAgICBDQ0ZyYW1lUmF0ZUNvdW50ZXIo
KTsKIAorICAgIGRvdWJsZSBmcmFtZUludGVydmFsKGludCBmcmFtZU51bWJlcikgY29uc3Q7CiAg
ICAgaW50IGZyYW1lSW5kZXgoaW50IGZyYW1lTnVtYmVyKSBjb25zdDsKICAgICBib29sIGlzQmFk
RnJhbWUoaW50IGZyYW1lTnVtYmVyKSBjb25zdDsKIApAQCAtNjgsMTAgKzcxLDE3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBrRnJhbWVUb29GYXN0OwogICAgIHN0YXRpYyBj
b25zdCBkb3VibGUga0ZyYW1lVG9vU2xvdzsKIAorICAgIC8vIElmIGEgZnJhbWUgdGFrZXMgbG9u
Z2VyIHRoYW4gdGhpcyB0aHJlc2hvbGQgKG1lYXN1cmVkIGluIHNlY29uZHMpIHRoZW4gd2UKKyAg
ICAvLyAobmFpdmVseSkgYXNzdW1lIHRoYXQgaXQgbWlzc2VkIGEgc2NyZWVuIHJlZnJlc2g7IHRo
YXQgaXMsIHdlIGRyb3BwZWQgYSBmcmFtZS4KKyAgICAvLyBGSVhNRTogQWZ0ZXIgY3JidWcuY29t
LzEyOTY3NCBsYW5kcywgZGV0ZXJtaW5lIHRoaXMgdGhyZXNob2xkIGJhc2VkIG9uIG1vbml0b3Ig
cmVmcmVzaCByYXRlLgorICAgIHN0YXRpYyBjb25zdCBkb3VibGUga0Ryb3BwZWRGcmFtZVRpbWU7
CisKICAgICBzdGF0aWMgY29uc3QgaW50IGtUaW1lU3RhbXBIaXN0b3J5U2l6ZSA9IDEyMDsKIAog
ICAgIGludCBtX2N1cnJlbnRGcmFtZU51bWJlcjsKICAgICBkb3VibGUgbV90aW1lU3RhbXBIaXN0
b3J5W2tUaW1lU3RhbXBIaXN0b3J5U2l6ZV07CisKKyAgICBpbnQgbV9kcm9wcGVkRnJhbWVDb3Vu
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggMDRiYjc4NjcxNTlkNzY4ODMyMDg2OTQ5YzRjOTI4NjdiYTQx
OGU5Yi4uYzYxY2U0MzEyY2U0OWUzMGE4ZWZiZjhhNmEzMzAzNzU3YTk0NWYzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTExNSw3ICsxMTUsNiBAQCBQYXNz
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShj
b25zdCBDQ0xheWVyVHJlZVNldAogQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0
SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zb3Vy
Y2VGcmFtZU51bWJlcigtMSkKLSAgICAsIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkK
ICAgICAsIG1fcm9vdFNjcm9sbExheWVySW1wbCgwKQogICAgICwgbV9jdXJyZW50bHlTY3JvbGxp
bmdMYXllckltcGwoMCkKICAgICAsIG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWUo
LTEpCkBAIC01NzEsOCArNTcwLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5
ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAKICAgICBtX2xheWVyUmVuZGVyZXItPmZpbmlz
aERyYXdpbmdGcmFtZSgpOwogCi0gICAgKyttX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwot
CiAgICAgLy8gVGhlIG5leHQgZnJhbWUgc2hvdWxkIHN0YXJ0IGJ5IGFzc3VtaW5nIG5vdGhpbmcg
aGFzIGNoYW5nZWQsIGFuZCBjaGFuZ2VzIGFyZSBub3RlZCBhcyB0aGV5IG9jY3VyLgogICAgIG1f
cm9vdExheWVySW1wbC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA3NTNhYTM4NGEzZDAwNzZlYTFm
MGE5OGMxNzRhNGI1NzVhNzA3OTBlLi42NzM5MjRiYWM4YWFlYTlmNDY0NzY3Y2QwZWU1NTBmNjhj
OTg5YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMjEsNyAr
MTIxLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250
QXRsYXM+KTsKIAogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci0gICAgaW50IHNvdXJj
ZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBbmltYXRpb25G
cmFtZU51bWJlcjsgfQogCiAgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3du
UHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29s
IGlzQ29udGV4dExvc3QoKTsKQEAgLTIyNSw3ICsyMjQsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3VyY2VGcmFt
ZU51bWJlcjsKLSAgICBpbnQgbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGNvbXB1dGVEb3VibGVUYXBab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVT
ZXQqIHNjcm9sbEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCmluZGV4IGY2OWM4
ZTAyNjg0ZWMyZTUwMDNmMzIwNDcwZDA5Y2NlOTBlZjExNjIuLjFjYzY3NzY5MzgyZTc2MmYxMjgy
OWUwOWJhNWYzN2VmMDU2ZmVkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKQEAg
LTI4LDEyICsyOCwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ0NSZW5kZXJp
bmdTdGF0cyB7CisgICAgLy8gRklYTUU6IEFmdGVyIGxhbmRpbmcgY3JidWcuY29tLzEzNzc5MCwg
cmVuYW1lIHRoZXNlIHRvIGFuaW1hdGlvbkZyYW1lQ291bnQgYW5kIHNjcmVlbkZyYW1lQ291bnQu
CiAgICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKICAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2Ny
ZWVuOworICAgIGludCBkcm9wcGVkRnJhbWVDb3VudDsKIAogICAgIENDUmVuZGVyaW5nU3RhdHMo
KQogICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1lcygwKQogICAgICAgICAsIG51bUZyYW1lc1Nl
bnRUb1NjcmVlbigwKQorICAgICAgICAsIGRyb3BwZWRGcmFtZUNvdW50KDApCiAgICAgewogICAg
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDY3OGVm
ZGZmMGEzNThhMmQyOWZiMmE4N2E3ODJkNTdiZjdlMzY3YzguLjE4ZGY3YzM5OWRjYjM0ZWRmNmNl
OWRiZTE4YTkzOWEwNDM2MTZkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1
ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgorI2luY2x1
ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJpbmdTdGF0cy5oIgpAQCAtMTczLDcgKzE3NCw4IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0KCkKIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjppbXBs
U2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQogewotICAgIHN0YXRz
Lm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNvdXJjZUFuaW1h
dGlvbkZyYW1lTnVtYmVyKCk7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+ZnBzQ291bnRlcigpLT5jdXJyZW50RnJhbWVOdW1iZXIoKTsKKyAg
ICBzdGF0cy5kcm9wcGVkRnJhbWVDb3VudCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZwc0NvdW50
ZXIoKS0+ZHJvcHBlZEZyYW1lQ291bnQoKTsKIH0KIAogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDk5NzNhOTc0YjE1NjdiYjY2
ODMxMjYwMzZlY2Q0MDQzMWYwMTFmY2MuLjg3MjczOTcxMTE3NzBiMmJjNWZjNDJlMzNjOTdlZjBj
OGRiODY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgi
CiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NG
cmFtZVJhdGVDb3VudGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dC5oIgpAQCAtODk2LDcgKzg5Nyw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250
ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDCiB2b2lkIEND
VGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24sIENDUmVuZGVyaW5nU3RhdHMqIHN0YXRzKQogewogICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgc3RhdHMtPm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7CisgICAg
c3RhdHMtPm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZwc0Nv
dW50ZXIoKS0+Y3VycmVudEZyYW1lTnVtYmVyKCk7CisgICAgc3RhdHMtPmRyb3BwZWRGcmFtZUNv
dW50ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnBzQ291bnRlcigpLT5kcm9wcGVkRnJhbWVDb3Vu
dCgpOwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IDIwN2E4MzUwZGVjMDFhZTcw
MjQ5ZmI2YWE5NzdmODZlMjJkODA1ODEuLjM0ZWI5NTJmZGJkZDc0ZjNmZWU5MTRhYzg1ZTkyNTk0
MGEwYzIyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwCkBAIC0xODIsNiArMTgyLDcgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3OjpyZW5k
ZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0CiAKICAgICBzdGF0cy5u
dW1BbmltYXRpb25GcmFtZXMgPSBjY1N0YXRzLm51bUFuaW1hdGlvbkZyYW1lczsKICAgICBzdGF0
cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBjY1N0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbjsK
KyAgICBzdGF0cy5kcm9wcGVkRnJhbWVDb3VudCA9IGNjU3RhdHMuZHJvcHBlZEZyYW1lQ291bnQ7
CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBu
dW1UaW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCmluZGV4IGIwZTllZThkNmM4YmNhOTMzNzM4ZGY0YmViMGY2ZjBmNmRl
NGRlNDUuLmEyYmQ0Zjc5YjFkMjZmZDU3MGE3ODk0ZGM2N2VlOTY5ZjVlYjMxZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNDVGhyZWFkZWRUZXN0LmgiCiAjaW5jbHVk
ZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaCIKKyNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCkBAIC05NTEsNyArOTUyLDcgQEAgcHVibGlj
OgogICAgICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAgICByb290LT5zZXRN
YXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAKLSAgICAgICAgaWYgKCFpbXBs
LT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVy
KCkgPT0gMSkgeworICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1w
bC0+ZnBzQ291bnRlcigpLT5jdXJyZW50RnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAg
ICAvLyBGaXJzdCBkcmF3IGFmdGVyIGZpcnN0IGNvbW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9F
UShyb290LT5zY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwogICAgICAgICAgICAgcm9vdC0+c2Ny
b2xsQnkobV9zY3JvbGxBbW91bnQpOwpAQCAtOTU5LDcgKzk2MCw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9s
bCk7CiAgICAgICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5zb3VyY2VB
bmltYXRpb25GcmFtZU51bWJlcigpID09IDIpIHsKKyAgICAgICAgfSBlbHNlIGlmICghaW1wbC0+
c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcHNDb3VudGVyKCktPmN1cnJlbnRGcmFtZU51
bWJlcigpID09IDIpIHsKICAgICAgICAgICAgIC8vIFNlY29uZCBkcmF3IGFmdGVyIGZpcnN0IGNv
bW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBtX3Njcm9s
bEFtb3VudCk7CiAgICAgICAgICAgICByb290LT5zY3JvbGxCeShtX3Njcm9sbEFtb3VudCk7CkBA
IC05NjksNyArOTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0
VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+c291cmNlRnJhbWVOdW1i
ZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBUaGlyZCBvciBsYXRlciBkcmF3IGFmdGVyIHNl
Y29uZCBjb21taXQuCi0gICAgICAgICAgICBFWFBFQ1RfR0UoaW1wbC0+c291cmNlQW5pbWF0aW9u
RnJhbWVOdW1iZXIoKSwgMyk7CisgICAgICAgICAgICBFWFBFQ1RfR0UoaW1wbC0+ZnBzQ291bnRl
cigpLT5jdXJyZW50RnJhbWVOdW1iZXIoKSwgMyk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290
LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3VudCArIG1f
c2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAgIGVuZFRlc3QoKTsKQEAgLTIyMTQsMTEgKzIyMTUs
MTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewotICAgICAgICBpZiAoaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAxKSB7CisgICAgICAgIGlmIChpbXBs
LT5mcHNDb3VudGVyKCktPmN1cnJlbnRGcmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAg
IEVYUEVDVF9FUShpbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwog
ICAgICAgICAgICAgaW1wbC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQpOwogICAgICAgICAgICAg
aW1wbC0+c2Nyb2xsRW5kKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+c291cmNlQW5pbWF0
aW9uRnJhbWVOdW1iZXIoKSA9PSAyKQorICAgICAgICB9IGVsc2UgaWYgKGltcGwtPmZwc0NvdW50
ZXIoKS0+Y3VycmVudEZyYW1lTnVtYmVyKCkgPT0gMikKICAgICAgICAgICAgIGVuZFRlc3QoKTsK
ICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153925</attachid>
            <date>2012-07-23 18:00:53 -0700</date>
            <delta_ts>2012-07-23 21:18:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91694-20120723180045.patch</filename>
            <type>text/plain</type>
            <size>15062</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjNDM0YmY1MzI4OTc4
ZDM2Y2E4MDhlOTM0NTAxYWUwY2I1MjA4NGU3Li4wYTEyM2M3MTFmNjk5YWY5ODBhZDQ4MjdkZmRh
ZWNmMmQ2N2Q4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgZHJv
cHBlZEZyYW1lQ291bnQgdG8gcmVuZGVyaW5nU3RhdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0
YXRzLmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0cyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlbmRlcmluZ1N0YXRzOjpXZWJSZW5kZXJpbmdTdGF0cyk6CisKIDIwMTItMDctMjMgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IENsZWFuIHVwIHRoZSBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0IG9i
amVjdCBhdCBzaHV0ZG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZkMjAwZjk1OTFjNTRlZjViZTU3ZGZkN2M1
MTNhYzYxNmJjMDJmNGIuLmQ4YWQ3ZDlhODU3ZGFiNzNlMTJjY2UzNzk1MWQwZDNhODZkZTgyMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0wNy0xOCAgRGF2ZSBUdSAgPGR0dUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgZHJvcHBlZEZyYW1lQ291bnQg
dG8gcmVuZGVyaW5nU3RhdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MTY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NGcmFtZVJh
dGVDb3VudGVyOjpmcmFtZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRnJhbWVSYXRl
Q291bnRlcjo6ZnJhbWVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvdW50
ZXI6OkNDRnJhbWVSYXRlQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNv
dW50ZXI6Om1hcmtCZWdpbm5pbmdPZkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRnJhbWVS
YXRlQ291bnRlcjo6aXNCYWRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1l
UmF0ZUNvdW50ZXI6OmRyb3BwZWRGcmFtZUNvdW50KToKKyAgICAgICAgKENDRnJhbWVSYXRlQ291
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVuZGVyaW5n
U3RhdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRz
Lmg6CisgICAgICAgIChDQ1JlbmRlcmluZ1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVu
ZGVyaW5nU3RhdHM6OkNDUmVuZGVyaW5nU3RhdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzT25JbXBs
VGhyZWFkKToKKwogMjAxMi0wNy0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMzMzOS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGEwNThmZTViMmM2Y2VmOWRkMjU4MWIyODRiZjg0
MmQ0N2Y5NzkwMy4uYzQyMTljYTcyMmYyNGM5MmRkM2QwYWM1ZTc0ZGI0OWQ5YmRjOWVmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xOCAgRGF2
ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgZHJvcHBl
ZEZyYW1lQ291bnQgdG8gcmVuZGVyaW5nU3RhdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdTdGF0cyk6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RTY3JvbGxNdWx0aXBsZVJlZHJhdzo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorCiAy
MDEyLTA3LTIzICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIEJ1aWxkZml4IGZvciBmaXhpbmcgZ2NsaWVudCBvbiB0aGUgQ2hyb21pdW0g
V2luZG93cyBib3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UmVuZGVyaW5nU3RhdHMuaAppbmRleCBmMTc2OTg1NWIwMDMyNThlZDA1MGE1ZTEwMDkxN2E0NGU1
YzIxYmM4Li5lMjRhZjJiNjkxODM2YTJhYmE1MDc1YjI5M2ZhNDBhNDg4MDQ5ZGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5o
CkBAIC0zMSwxMCArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgV2ViUmVuZGVy
aW5nU3RhdHMgewogICAgIGludCBudW1BbmltYXRpb25GcmFtZXM7CiAgICAgaW50IG51bUZyYW1l
c1NlbnRUb1NjcmVlbjsKKyAgICBpbnQgZHJvcHBlZEZyYW1lQ291bnQ7CiAKICAgICBXZWJSZW5k
ZXJpbmdTdGF0cygpCiAgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCiAgICAgICAgICwg
bnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisgICAgICAgICwgZHJvcHBlZEZyYW1lQ291bnQoMCkK
ICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuY3BwCmlu
ZGV4IGQ1YTdkNDI5NTU4M2UwM2Q4MzIxNWYzMTMwNTMwNDFjZjAyZDM4MDguLmFjMjk1NmExMzBk
OTViY2IxNDBlZmNjYmVlMjU1MGI5NjRlM2FhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJh
dGVDb3VudGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNv
bnN0IGRvdWJsZSBDQ0ZyYW1lUmF0ZUNvdW50ZXI6OmtGcmFtZVRvb0Zhc3QgPSAxLjAgLyA3MC4w
OyAvLyBtZWFzdXJlZCBpbiBzZWNvbmRzCiBjb25zdCBkb3VibGUgQ0NGcmFtZVJhdGVDb3VudGVy
OjprRnJhbWVUb29TbG93ID0gMS4wIC8gMTIuMDsKK2NvbnN0IGRvdWJsZSBDQ0ZyYW1lUmF0ZUNv
dW50ZXI6OmtEcm9wcGVkRnJhbWVUaW1lID0gMS4wIC8gNTAuMDsKIAogLy8gc2FmZU1vZCB3b3Jr
cyBvbiAtMSwgcmV0dXJuaW5nIG0tMSBpbiB0aGF0IGNhc2UuCiBzdGF0aWMgaW5saW5lIGludCBz
YWZlTW9kKGludCBudW1iZXIsIGludCBtb2R1bHVzKQpAQCAtNDIsMTMgKzQzLDIwIEBAIHN0YXRp
YyBpbmxpbmUgaW50IHNhZmVNb2QoaW50IG51bWJlciwgaW50IG1vZHVsdXMpCiAgICAgcmV0dXJu
IChudW1iZXIgKyBtb2R1bHVzKSAlIG1vZHVsdXM7CiB9CiAKLWlubGluZSBpbnQgQ0NGcmFtZVJh
dGVDb3VudGVyOjpmcmFtZUluZGV4KGludCBmcmFtZSkgY29uc3QKK2lubGluZSBkb3VibGUgQ0NG
cmFtZVJhdGVDb3VudGVyOjpmcmFtZUludGVydmFsKGludCBmcmFtZU51bWJlcikgY29uc3QKIHsK
LSAgICByZXR1cm4gc2FmZU1vZChmcmFtZSwga1RpbWVTdGFtcEhpc3RvcnlTaXplKTsKKyAgICBy
ZXR1cm4gbV90aW1lU3RhbXBIaXN0b3J5W2ZyYW1lSW5kZXgoZnJhbWVOdW1iZXIpXSAtCisgICAg
ICAgIG1fdGltZVN0YW1wSGlzdG9yeVtmcmFtZUluZGV4KGZyYW1lTnVtYmVyIC0gMSldOworfQor
CitpbmxpbmUgaW50IENDRnJhbWVSYXRlQ291bnRlcjo6ZnJhbWVJbmRleChpbnQgZnJhbWVOdW1i
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNhZmVNb2QoZnJhbWVOdW1iZXIsIGtUaW1lU3RhbXBI
aXN0b3J5U2l6ZSk7CiB9CiAKIENDRnJhbWVSYXRlQ291bnRlcjo6Q0NGcmFtZVJhdGVDb3VudGVy
KCkKICAgICA6IG1fY3VycmVudEZyYW1lTnVtYmVyKDEpCisgICAgLCBtX2Ryb3BwZWRGcmFtZUNv
dW50KDApCiB7CiAgICAgbV90aW1lU3RhbXBIaXN0b3J5WzBdID0gY3VycmVudFRpbWUoKTsKICAg
ICBtX3RpbWVTdGFtcEhpc3RvcnlbMV0gPSBtX3RpbWVTdGFtcEhpc3RvcnlbMF07CkBAIC02Nyw2
ICs3NSw5IEBAIHZvaWQgQ0NGcmFtZVJhdGVDb3VudGVyOjptYXJrQmVnaW5uaW5nT2ZGcmFtZShk
b3VibGUgdGltZXN0YW1wKQogICAgIH0KIAogICAgIG1fdGltZVN0YW1wSGlzdG9yeVtmcmFtZUlu
ZGV4KG1fY3VycmVudEZyYW1lTnVtYmVyKV0gPSB0aW1lc3RhbXA7CisgICAgZG91YmxlIGRlbHRh
ID0gZnJhbWVJbnRlcnZhbChtX2N1cnJlbnRGcmFtZU51bWJlcik7CisgICAgaWYgKCFpc0JhZEZy
YW1lSW50ZXJ2YWwoZGVsdGEpICYmIGRlbHRhID4ga0Ryb3BwZWRGcmFtZVRpbWUpCisgICAgICAg
ICsrbV9kcm9wcGVkRnJhbWVDb3VudDsKIH0KIAogdm9pZCBDQ0ZyYW1lUmF0ZUNvdW50ZXI6Om1h
cmtFbmRPZkZyYW1lKCkKQEAgLTg0LDkgKzk1LDcgQEAgYm9vbCBDQ0ZyYW1lUmF0ZUNvdW50ZXI6
OmlzQmFkRnJhbWVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxCZXR3ZWVuQ29uc2VjdXRpdmVGcmEK
IAogYm9vbCBDQ0ZyYW1lUmF0ZUNvdW50ZXI6OmlzQmFkRnJhbWUoaW50IGZyYW1lTnVtYmVyKSBj
b25zdAogewotICAgIGRvdWJsZSBkZWx0YSA9IG1fdGltZVN0YW1wSGlzdG9yeVtmcmFtZUluZGV4
KGZyYW1lTnVtYmVyKV0gLQotICAgICAgICAgICAgbV90aW1lU3RhbXBIaXN0b3J5W2ZyYW1lSW5k
ZXgoZnJhbWVOdW1iZXIgLSAxKV07Ci0gICAgcmV0dXJuIGlzQmFkRnJhbWVJbnRlcnZhbChkZWx0
YSk7CisgICAgcmV0dXJuIGlzQmFkRnJhbWVJbnRlcnZhbChmcmFtZUludGVydmFsKGZyYW1lTnVt
YmVyKSk7CiB9CiAKIHZvaWQgQ0NGcmFtZVJhdGVDb3VudGVyOjpnZXRBdmVyYWdlRlBTQW5kU3Rh
bmRhcmREZXZpYXRpb24oZG91YmxlJiBhdmVyYWdlRlBTLCBkb3VibGUmIHN0YW5kYXJkRGV2aWF0
aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaAppbmRleCBjNDlmMTdj
MjNhMTE3NzQ5ODZlNGEzODU1NWFkNmMxMjdlZjU5OGQwLi5mYzIzZTI2ZTMzYzk4ZjBiZGRhODc2
NzNiYWVhNDUwYWNhMDk5YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaApA
QCAtNTYsOSArNTYsMTIgQEAgcHVibGljOgogICAgIC8vIHRydWUgaWYgdGhlIGdpdmVuIGZyYW1l
IGludGVydmFsIGlzIHRvbyBmYXN0IG9yIHRvbyBzbG93LCBiYXNlZCBvbiBjb25zdGFudCB0aHJl
c2hvbGRzLgogICAgIGJvb2wgaXNCYWRGcmFtZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbEJldHdl
ZW5Db25zZWN1dGl2ZUZyYW1lcykgY29uc3Q7CiAKKyAgICBpbnQgZHJvcHBlZEZyYW1lQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2Ryb3BwZWRGcmFtZUNvdW50OyB9CisKIHByaXZhdGU6CiAgICAg
Q0NGcmFtZVJhdGVDb3VudGVyKCk7CiAKKyAgICBkb3VibGUgZnJhbWVJbnRlcnZhbChpbnQgZnJh
bWVOdW1iZXIpIGNvbnN0OwogICAgIGludCBmcmFtZUluZGV4KGludCBmcmFtZU51bWJlcikgY29u
c3Q7CiAgICAgYm9vbCBpc0JhZEZyYW1lKGludCBmcmFtZU51bWJlcikgY29uc3Q7CiAKQEAgLTY4
LDEwICs3MSwxNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUga0ZyYW1lVG9v
RmFzdDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGtGcmFtZVRvb1Nsb3c7CiAKKyAgICAvLyBJ
ZiBhIGZyYW1lIHRha2VzIGxvbmdlciB0aGFuIHRoaXMgdGhyZXNob2xkIChtZWFzdXJlZCBpbiBz
ZWNvbmRzKSB0aGVuIHdlCisgICAgLy8gKG5haXZlbHkpIGFzc3VtZSB0aGF0IGl0IG1pc3NlZCBh
IHNjcmVlbiByZWZyZXNoOyB0aGF0IGlzLCB3ZSBkcm9wcGVkIGEgZnJhbWUuCisgICAgLy8gRklY
TUU6IERldGVybWluZSB0aGlzIHRocmVzaG9sZCBiYXNlZCBvbiBtb25pdG9yIHJlZnJlc2ggcmF0
ZSwgY3JidWcuY29tLzEzODY0Mi4KKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIGtEcm9wcGVkRnJh
bWVUaW1lOworCiAgICAgc3RhdGljIGNvbnN0IGludCBrVGltZVN0YW1wSGlzdG9yeVNpemUgPSAx
MjA7CiAKICAgICBpbnQgbV9jdXJyZW50RnJhbWVOdW1iZXI7CiAgICAgZG91YmxlIG1fdGltZVN0
YW1wSGlzdG9yeVtrVGltZVN0YW1wSGlzdG9yeVNpemVdOworCisgICAgaW50IG1fZHJvcHBlZEZy
YW1lQ291bnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDdmMTI0MDQzMmI5Nzg2MjNmMjNhNGIyMGIwMTE5
NWMwOGM1MjljYmYuLmE5ZTJiZWE0MDk1Y2YxNzEwZTA1MjI4OWY3YjEwM2I2OGM1MTY2YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJjYy9D
Q1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTE0LDcgKzExNSw2IEBAIFBhc3NPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNvbnN0IENDTGF5
ZXJUcmVlU2V0CiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJjZUZyYW1lTnVt
YmVyKC0xKQotICAgICwgbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigwKQogICAgICwgbV9y
b290U2Nyb2xsTGF5ZXJJbXBsKDApCiAgICAgLCBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1w
bCgwKQogICAgICwgbV9zY3JvbGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJlZSgtMSkKQEAgLTU2
NCw4ICs1NjQsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3Qg
RnJhbWVEYXRhJiBmcmFtZSkKICAgICBpZiAobV9kZWJ1Z1JlY3RIaXN0b3J5LT5lbmFibGVkKHNl
dHRpbmdzKCkpKQogICAgICAgICBtX2RlYnVnUmVjdEhpc3RvcnktPnNhdmVEZWJ1Z1JlY3RzRm9y
Q3VycmVudEZyYW1lKG1fcm9vdExheWVySW1wbC5nZXQoKSwgKmZyYW1lLnJlbmRlclN1cmZhY2VM
YXllckxpc3QsIGZyYW1lLm9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMsIHNldHRpbmdzKCkpOwog
Ci0gICAgKyttX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwotCiAgICAgLy8gVGhlIG5leHQg
ZnJhbWUgc2hvdWxkIHN0YXJ0IGJ5IGFzc3VtaW5nIG5vdGhpbmcgaGFzIGNoYW5nZWQsIGFuZCBj
aGFuZ2VzIGFyZSBub3RlZCBhcyB0aGV5IG9jY3VyLgogICAgIG1fcm9vdExheWVySW1wbC0+cmVz
ZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKIH0KQEAgLTExODksNCArMTE4NywxNSBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVHZXN0dXJlcyhkb3VibGUgbW9ub3Rv
bmljVGltZSkKICAgICAgICAgbV9hY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CiB9CiAK
K2ludCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZwc0NvdW50ZXIoKS0+Y3VycmVudEZyYW1lTnVtYmVyKCk7Cit9
CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdT
dGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0g
ZnBzQ291bnRlcigpLT5jdXJyZW50RnJhbWVOdW1iZXIoKTsKKyAgICBzdGF0cy5kcm9wcGVkRnJh
bWVDb3VudCA9IGZwc0NvdW50ZXIoKS0+ZHJvcHBlZEZyYW1lQ291bnQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4
IGY5MzZlMzRkZDJjM2M0MzI5MmYyM2IyOGYwMTk5MzE2NWU1M2I0NTIuLjU1ODdiMzQ2MjAxZjZi
ZGM2ZWQ0ODE0ZWI4NDg3ZWYwMDc2YTgyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ7CiBj
bGFzcyBDQ1Jlc291cmNlUHJvdmlkZXI7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBz
dHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRz
OwogCiAvLyBDQ0xheWVyVHJlZUhvc3QtPkNDUHJveHkgY2FsbGJhY2sgaW50ZXJmYWNlLgogY2xh
c3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CkBAIC0xMjEsNyArMTIyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKIAogICAg
IHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci0gICAgaW50IHNvdXJjZUFuaW1hdGlvbkZyYW1l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsgfQor
ICAgIGludCBzb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpIGNvbnN0OwogCiAgICAgYm9vbCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4
dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKQEAgLTE3NCw2
ICsxNzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKKyAgICB2
b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKKwogICAgIENDRnJh
bWVSYXRlQ291bnRlciogZnBzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnBzQ291bnRlci5n
ZXQoKTsgfQogICAgIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVidWdSZWN0SGlzdG9yeS5nZXQoKTsgfQogICAgIENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VQcm92aWRl
ci5nZXQoKTsgfQpAQCAtMjI1LDcgKzIyOCw2IEBAIHByb3RlY3RlZDoKIAogICAgIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX3NvdXJjZUZyYW1lTnVtYmVy
OwotICAgIGludCBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgogICAg
IHZvaWQgY29tcHV0ZURvdWJsZVRhcFpvb21EZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Ny
b2xsSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKaW5kZXggZjY5YzhlMDI2ODRl
YzJlNTAwM2YzMjA0NzBkMDljY2U5MGVmMTE2Mi4uZDgwNzVhYWMyZjcwY2E4OGQ1NGFhZmFhNmI1
Y2FkODk1ZmVjMjdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApAQCAtMjgsMTIg
KzI4LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDQ1JlbmRlcmluZ1N0YXRz
IHsKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRoZXNlIHRvIGFuaW1hdGlvbkZyYW1lQ291bnQgYW5k
IHNjcmVlbkZyYW1lQ291bnQsIGNyYnVnLmNvbS8xMzg2NDEuCiAgICAgaW50IG51bUFuaW1hdGlv
bkZyYW1lczsKICAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVuOworICAgIGludCBkcm9wcGVk
RnJhbWVDb3VudDsKIAogICAgIENDUmVuZGVyaW5nU3RhdHMoKQogICAgICAgICA6IG51bUFuaW1h
dGlvbkZyYW1lcygwKQogICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgICAg
ICAsIGRyb3BwZWRGcmFtZUNvdW50KDApCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDAwMmM3YTdiZmFlYTUwNWQ0ZDQ0ZTc1YzZl
MzdhZWY3MDFkNmRjNDIuLjM1NTAzNDZiYTA0YzQyZDgyYWFlNTE4OTNkMWFlZWVlMDc5NzQ5NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgImNj
L0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAt
MTczLDcgKzE3Miw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0
KCkKIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKEND
UmVuZGVyaW5nU3RhdHMmIHN0YXRzKQogewotICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVl
biA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7Cisg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVuZGVyaW5nU3RhdHMoc3RhdHMpOwogfQogCiBjb25z
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ1NpbmdsZVRocmVhZFByb3h5OjpsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5k
ZXggOWI2ZGZlM2FjZTM5MDFlYzFlNjM1ZWRkZTU3MzU0OTY5ZjljOTQ0Mi4uZTA5ZDk0YzYxN2M5
ZDYzNjdhMTUxMGI5ZTI3MDQ2ZmU3ZjE2YWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0ND
U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgogI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKQEAgLTg5NSw3ICs4OTQsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbiwgQwogdm9pZCBDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRz
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ1JlbmRlcmluZ1N0
YXRzKiBzdGF0cykKIHsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIHN0YXRzLT5u
dW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3VyY2VBbmltYXRp
b25GcmFtZU51bWJlcigpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlbmRlcmluZ1N0YXRz
KCpzdGF0cyk7CiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggMjA3YTgzNTBkZWMw
MWFlNzAyNDlmYjZhYTk3N2Y4NmUyMmQ4MDU4MS4uMzRlYjk1MmZkYmRkNzRmM2ZlZTkxNGFjODVl
OTI1OTQwYTBjMjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlldy5jcHAKQEAgLTE4Miw2ICsxODIsNyBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXc6
OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKIAogICAgIHN0
YXRzLm51bUFuaW1hdGlvbkZyYW1lcyA9IGNjU3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzOwogICAg
IHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IGNjU3RhdHMubnVtRnJhbWVzU2VudFRvU2Ny
ZWVuOworICAgIHN0YXRzLmRyb3BwZWRGcmFtZUNvdW50ID0gY2NTdGF0cy5kcm9wcGVkRnJhbWVD
b3VudDsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQo
aW50IG51bVRpbWVzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>