<?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>32870</bug_id>
          
          <creation_ts>2009-12-22 07:45:11 -0800</creation_ts>
          <short_desc>Add WebAnimationController to Chromium WebKit API</short_desc>
          <delta_ts>2010-01-04 17:21:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Yaar Schnitman">yaar</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174266</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-12-22 07:45:11 -0800</bug_when>
    <thetext>Adding WebAnimationController to the WebKit API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174267</commentid>
    <comment_count>1</comment_count>
      <attachid>45385</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-12-22 07:47:47 -0800</bug_when>
    <thetext>Created attachment 45385
Add WebAnimationController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174268</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-22 07:49:18 -0800</bug_when>
    <thetext>Attachment 45385 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebAnimationControllerImpl.h:60:  #endif line should be &quot;#endif // WebAnimationControllerImpl_h&quot;  [build/header_guard] [5]
WebKit/chromium/public/WebAnimationController.h:60:  #endif line should be &quot;#endif // WebAnimationController_h&quot;  [build/header_guard] [5]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174284</commentid>
    <comment_count>3</comment_count>
      <attachid>45385</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-22 09:36:41 -0800</bug_when>
    <thetext>Comment on attachment 45385
Add WebAnimationController

&gt; +++ b/WebKit/chromium/ChangeLog
&gt; +++ b/WebKit/chromium/public/WebAnimationController.h
...
&gt; +class WebAnimationController {
&gt; +public:
&gt; +    virtual bool pauseAnimationAtTime(WebElement&amp; node,

The WebElement parameter can be &quot;const WebElement&amp;&quot; right?  

nit: no need for the &quot;node&quot; parameter name since it is clear
that a WebElement is a node.


&gt; +++ b/WebKit/chromium/src/WebAnimationControllerImpl.h
...
&gt; +class WebAnimationControllerImpl : public WebAnimationController {
&gt; +public:
&gt; +    explicit WebAnimationControllerImpl(WebCore::AnimationController*);
&gt; +    virtual ~WebAnimationControllerImpl() { }
&gt; +
&gt; +    WEBKIT_API virtual bool pauseAnimationAtTime(WebElement&amp; node,

please drop the WEBKIT_API prefix.  it is only needed in WebAnimationController.h


&gt; +                                                 const WebString&amp; animationName,
&gt; +                                                 double time);
&gt; +    WEBKIT_API virtual bool pauseTransitionAtTime(WebElement&amp; node,
&gt; +                                                  const WebString&amp; propertyName,
&gt; +                                                  double time);
&gt; +    WEBKIT_API virtual int numberOfActiveAnimations();

can numberOfActiveAnimations be a const method?


&gt; +++ b/WebKit/chromium/src/WebFrameImpl.cpp
...
&gt; +WebAnimationController* WebFrameImpl::animationController()
&gt; +{
&gt; +    if (!m_animationController.get()) {
&gt; +        if (!m_frame)
&gt; +            return 0;

It seems strange to have a reference to a WebFrame that has no m_frame.  If that
can happen, then it means that the WebAnimationController can reference an
AnimationController that is bogus.  So, I think the WebAnimationController should
instead hold a back pointer to the WebFrameImpl (just like FrameLoaderClientImpl).
Then, for each method call, the WebAnimationController should get frame() and
frame()-&gt;animation(), null checking each.


&gt; +        WebCore::AnimationController* controller = m_frame-&gt;animation();

nit: no need for WebCore:: in this .cpp file since we have &quot;using namespace WebCore&quot;


&gt; +        if (!controller)
&gt; +            return 0;
&gt; +    
&gt; +        m_animationController.set(new WebAnimationControllerImpl(controller));
&gt; +        ASSERT(m_animationController.get());

no need to assert that new succeeded.  a developer will almost never see that
fail unless their system is badly thrashing the VM, and at that point, the
developer really won&apos;t care.


&gt; @@ -1495,6 +1512,7 @@ WebFrameImpl::WebFrameImpl(WebFrameClient* client)
&gt;      , m_framesScopingCount(-1)
&gt;      , m_scopingComplete(false)
&gt;      , m_nextInvalidateAfter(0)
&gt; +    , m_animationController(0)

^^^ no need to initialize an OwnPtr&lt;T&gt;.  just leave out this line, and
let the default constructor do its thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174577</commentid>
    <comment_count>4</comment_count>
      <attachid>45433</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-12-23 06:08:43 -0800</bug_when>
    <thetext>Created attachment 45433
Fixed according to comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174578</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-23 06:12:04 -0800</bug_when>
    <thetext>Attachment 45433 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebAnimationControllerImpl.h:62:  #endif line should be &quot;#endif // WebAnimationControllerImpl_h&quot;  [build/header_guard] [5]
WebKit/chromium/src/WebAnimationControllerImpl.h:52:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.h:57:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/public/WebAnimationController.h:60:  #endif line should be &quot;#endif // WebAnimationController_h&quot;  [build/header_guard] [5]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:53:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:54:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:55:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:62:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:63:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:64:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:74:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:75:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:76:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:84:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:85:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/WebAnimationControllerImpl.cpp:86:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 16</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174581</commentid>
    <comment_count>6</comment_count>
      <attachid>45435</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-12-23 06:38:57 -0800</bug_when>
    <thetext>Created attachment 45435
Same as previous, minus tabs that got in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174582</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-23 06:42:56 -0800</bug_when>
    <thetext>Attachment 45435 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebAnimationControllerImpl.h:62:  #endif line should be &quot;#endif // WebAnimationControllerImpl_h&quot;  [build/header_guard] [5]
WebKit/chromium/public/WebAnimationController.h:60:  #endif line should be &quot;#endif // WebAnimationController_h&quot;  [build/header_guard] [5]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174620</commentid>
    <comment_count>8</comment_count>
      <attachid>45435</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-23 11:45:05 -0800</bug_when>
    <thetext>Comment on attachment 45435
Same as previous, minus tabs that got in

&gt; +++ b/WebKit/chromium/src/WebFrameImpl.cpp
...
&gt; +WebAnimationController* WebFrameImpl::animationController()
&gt; +{
&gt; +    if (!m_animationController.get())
&gt; +        m_animationController.set(new WebAnimationControllerImpl(this));
&gt; +    return m_animationController.get();
&gt; +}
...
&gt; @@ -1495,6 +1503,7 @@ WebFrameImpl::WebFrameImpl(WebFrameClient* client)
&gt;      , m_framesScopingCount(-1)
&gt;      , m_scopingComplete(false)
&gt;      , m_nextInvalidateAfter(0)
&gt; +    , m_animationController(0)

As previously mentioned, there&apos;s no need to initialize an OwnPtr explicitly.
You can just delete this line.  R- because of this.

But, come to think of it, why is m_animationController heap allocated?  Why
not just make it be allocated as an instance variable of WebFrameImpl?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175574</commentid>
    <comment_count>9</comment_count>
      <attachid>45606</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-12-29 08:52:29 -0800</bug_when>
    <thetext>Created attachment 45606
Another try

Please cq+ if ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175576</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 08:53:22 -0800</bug_when>
    <thetext>Attachment 45606 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebAnimationControllerImpl.h:62:  #endif line should be &quot;#endif // WebAnimationControllerImpl_h&quot;  [build/header_guard] [5]
WebKit/chromium/src/WebFrameImpl.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/public/WebAnimationController.h:60:  #endif line should be &quot;#endif // WebAnimationController_h&quot;  [build/header_guard] [5]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175859</commentid>
    <comment_count>11</comment_count>
      <attachid>45649</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-12-30 02:41:02 -0800</bug_when>
    <thetext>Created attachment 45649
Oops. Last patch missing changes.

Please cq+ if ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175860</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-30 02:43:43 -0800</bug_when>
    <thetext>Attachment 45649 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebAnimationControllerImpl.h:62:  #endif line should be &quot;#endif // WebAnimationControllerImpl_h&quot;  [build/header_guard] [5]
WebKit/chromium/src/WebFrameImpl.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/public/WebAnimationController.h:60:  #endif line should be &quot;#endif // WebAnimationController_h&quot;  [build/header_guard] [5]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176957</commentid>
    <comment_count>13</comment_count>
      <attachid>45649</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-04 17:21:17 -0800</bug_when>
    <thetext>Comment on attachment 45649
Oops. Last patch missing changes.

Clearing flags on attachment: 45649

Committed r52775: &lt;http://trac.webkit.org/changeset/52775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176959</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-04 17:21:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45385</attachid>
            <date>2009-12-22 07:47:47 -0800</date>
            <delta_ts>2009-12-23 06:08:43 -0800</delta_ts>
            <desc>Add WebAnimationController</desc>
            <filename>bug-32870-20091222174743.patch</filename>
            <type>text/plain</type>
            <size>14351</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhhMzhmMDcuLjg5NDNkYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDMwIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
QWRkaW5nIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIgdG8gY2hyb21pdW0ncyBXZWJLaXQgQVBJLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg3MAor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQW5pbWF0aW9uQ29udHJvbGxl
cjo6fldlYkFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAqIHNyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6
CisgICAgICAgICogc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fldlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjphbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuaDoKKworMjAwOS0xMi0yMiAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBhdXRv
Q29tcGxldGUgYW5kIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZm9yIFdlYktpdCBBUEkKIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4NjYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggNDRjNDBiOS4uM2M4NGNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTg2LDYgKzg2
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQmluZGluZ3MuaCcsCkBAIC0yNDgsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJCaW5kaW5ncy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ2FjaGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkNvbG9yLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQW5p
bWF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNk
OWEyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBbmltYXRpb25Db250
cm9sbGVyX2gKKyNkZWZpbmUgV2ViQW5pbWF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVsZW1lbnQ7Citj
bGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKKy8vIFdlYkFuaW1hdGlvbkNvbnRyb2xs
ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBhbmltYXRpb25zIGluIGEgZnJhbWUuIEl0IGlzCisv
LyBvd25lZCBieSBhIFdlYkZyYW1lIGFuZCBpdHMgbGlmZSBzcGFuIGlzIGJvdW5kIHRvIHRoYXQg
V2ViRnJhbWUuCitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWUoV2ViRWxlbWVudCYgbm9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBhbmltYXRp
b25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVu
dCYgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlIHRpbWUpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorICAgIHZpcnR1YWwgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpID0gMDsK
K3Byb3RlY3RlZDoKKyAgICB+V2ViQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmlu
ZGV4IGRiNmNmYWYuLmRjYmViODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWUuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ1
LDYgKzQ1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorY2xhc3MgV2ViQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYkRhdGE7
CiBjbGFzcyBXZWJEYXRhU291cmNlOwogY2xhc3MgV2ViRG9jdW1lbnQ7CkBAIC0xNzYsNiArMTc3
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3Jt
RWxlbWVudD4mKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xs
ZXIqIGFuaW1hdGlvbkNvbnRyb2xsZXIoKSA9IDA7CisKICAgICAvLyBTY3JpcHRpbmcgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAg
ICAgLy8gUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDgyOTQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1w
bC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJB
bmltYXRpb25Db250cm9sbGVySW1wbC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwoQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKKyAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQoreworICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOworfQor
Citib29sIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwYXVzZUFuaW1hdGlvbkF0VGltZShX
ZWJFbGVtZW50JiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBhbmltYXRpb25OYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHRp
bWUpCit7CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+cGF1c2VBbmltYXRpb25BdFRpbWUoUGFz
c1JlZlB0cjxFbGVtZW50PihlbGVtZW50KS0+cmVuZGVyZXIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25OYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUpOworfQorCitib29sIFdlYkFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYg
ZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSkKK3sKKyAg
ICByZXR1cm4gbV9jb250cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoUGFzc1JlZlB0cjxF
bGVtZW50PihlbGVtZW50KS0+cmVuZGVyZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lKTsKK30KKworaW50IFdlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKQoreworICAgIHJldHVybiBt
X2NvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQW5pbWF0aW9uQ29udHJv
bGxlckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDMyYjdmCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9s
bGVySW1wbC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsX2gKKyNkZWZpbmUgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGxfaAorCisjaW5jbHVkZSAi
V2ViQW5pbWF0aW9uQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBB
bmltYXRpb25Db250cm9sbGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
QW5pbWF0aW9uQ29udHJvbGxlckltcGwgOiBwdWJsaWMgV2ViQW5pbWF0aW9uQ29udHJvbGxlciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwoV2ViQ29y
ZTo6QW5pbWF0aW9uQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgfldlYkFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsKCkgeyB9CisKKyAgICBXRUJLSVRfQVBJIHZpcnR1YWwgYm9vbCBwYXVzZUFuaW1h
dGlvbkF0VGltZShXZWJFbGVtZW50JiBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgYW5pbWF0aW9uTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGlt
ZSk7CisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFdl
YkVsZW1lbnQmIG5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSk7CisgICAgV0VC
S0lUX0FQSSB2aXJ0dWFsIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKK3ByaXZhdGU6
CisgICAgV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCmluZGV4IGY2Y2NjMjQuLjM5MTQ5OGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAKQEAgLTEyMCw2ICsxMjAsNyBAQAogI2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgi
CiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaCIKICNpbmNsdWRlICJXZWJDb25z
b2xlTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAi
V2ViRG9jdW1lbnQuaCIKQEAgLTU1Miw2ICs1NTMsMjIgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmZv
cm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxlbWVudD4mIHJlc3VsdHMpIGNvbnN0CiAgICAgcmVzdWx0
cy5zd2FwKHRlbXApOwogfQogCitXZWJBbmltYXRpb25Db250cm9sbGVyKiBXZWJGcmFtZUltcGw6
OmFuaW1hdGlvbkNvbnRyb2xsZXIoKQoreworICAgIGlmICghbV9hbmltYXRpb25Db250cm9sbGVy
LmdldCgpKSB7CisgICAgICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
CisgICAgICAgIFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2Zy
YW1lLT5hbmltYXRpb24oKTsKKyAgICAgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgICAgIG1fYW5pbWF0aW9uQ29udHJvbGxlci5zZXQobmV3IFdl
YkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKGNvbnRyb2xsZXIpKTsKKyAgICAgICAgQVNTRVJUKG1f
YW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX2FuaW1hdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIFdlYlNlY3VyaXR5T3JpZ2luIFdlYkZyYW1lSW1wbDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+
ZG9jdW1lbnQoKSkKQEAgLTE0OTUsNiArMTUxMiw3IEBAIFdlYkZyYW1lSW1wbDo6V2ViRnJhbWVJ
bXBsKFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2ZyYW1lc1Njb3BpbmdDb3VudCgt
MSkKICAgICAsIG1fc2NvcGluZ0NvbXBsZXRlKGZhbHNlKQogICAgICwgbV9uZXh0SW52YWxpZGF0
ZUFmdGVyKDApCisgICAgLCBtX2FuaW1hdGlvbkNvbnRyb2xsZXIoMCkKIHsKICAgICBDaHJvbWl1
bUJyaWRnZTo6aW5jcmVtZW50U3RhdHNDb3VudGVyKHdlYkZyYW1lQWN0aXZlQ291bnQpOwogICAg
IG1fbGl2ZU9iamVjdENvdW50Kys7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAppbmRleCA2
MTIzZmE1Li5lNzdmNjY1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTUwLDYg
KzUwLDcgQEAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIENocm9tZVByaW50Q29udGV4dDsKK2NsYXNzIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
OwogY2xhc3MgV2ViRGF0YVNvdXJjZUltcGw7CiBjbGFzcyBXZWJJbnB1dEVsZW1lbnQ7CiBjbGFz
cyBXZWJGcmFtZUNsaWVudDsKQEAgLTg1LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
V2ViRnJhbWUqIGZpbmRDaGlsZEJ5RXhwcmVzc2lvbihjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFdlYkRvY3VtZW50IGRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxlbWVudD4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1hdGlvbkNvbnRyb2xsZXIoKTsgCiAgICAgdmly
dHVhbCBXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBncmFudFVuaXZlcnNhbEFjY2VzcygpOwogICAgIHZpcnR1YWwgTlBPYmplY3QqIHdp
bmRvd09iamVjdCgpIGNvbnN0OwpAQCAtMzUwLDYgKzM1Miw5IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50PiwKICAgICAgICAg
ICAgICAgICAgICAgV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lcio+IFBhc3N3b3JkTGlz
dGVuZXJNYXA7CiAgICAgUGFzc3dvcmRMaXN0ZW5lck1hcCBtX3Bhc3N3b3JkTGlzdGVuZXJzOwor
CisgICAgLy8gS2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGZyYW1lJ3MgV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci4KKyAgICBPd25QdHI8V2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw+IG1fYW5pbWF0
aW9uQ29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="27414"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45433</attachid>
            <date>2009-12-23 06:08:43 -0800</date>
            <delta_ts>2009-12-23 06:38:57 -0800</delta_ts>
            <desc>Fixed according to comments.</desc>
            <filename>32870b.diff</filename>
            <type>text/plain</type>
            <size>14556</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhhMzhmMDcuLjg5NDNkYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDMwIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
QWRkaW5nIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIgdG8gY2hyb21pdW0ncyBXZWJLaXQgQVBJLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg3MAor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQW5pbWF0aW9uQ29udHJvbGxl
cjo6fldlYkFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAqIHNyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6
CisgICAgICAgICogc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fldlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjphbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuaDoKKworMjAwOS0xMi0yMiAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBhdXRv
Q29tcGxldGUgYW5kIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZm9yIFdlYktpdCBBUEkKIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4NjYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggNDRjNDBiOS4uM2M4NGNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTg2LDYgKzg2
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQmluZGluZ3MuaCcsCkBAIC0yNDgsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJCaW5kaW5ncy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ2FjaGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkNvbG9yLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQW5p
bWF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3
MjdkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBbmltYXRpb25Db250
cm9sbGVyX2gKKyNkZWZpbmUgV2ViQW5pbWF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVsZW1lbnQ7Citj
bGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKKy8vIFdlYkFuaW1hdGlvbkNvbnRyb2xs
ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBhbmltYXRpb25zIGluIGEgZnJhbWUuIEl0IGlzCisv
LyBvd25lZCBieSBhIFdlYkZyYW1lIGFuZCBpdHMgbGlmZSBzcGFuIGlzIGJvdW5kIHRvIHRoYXQg
V2ViRnJhbWUuCitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBX
RUJLSVRfQVBJIHZpcnR1YWwgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShXZWJFbGVtZW50JiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIHRpbWUpID0gMDsKKyAgICBXRUJLSVRfQVBJIHZpcnR1
YWwgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcHJv
cGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgdGltZSkgPSAwOworCisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHVuc2lnbmVk
IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0ID0gMDsKK3Byb3RlY3RlZDoKKyAgICB+
V2ViQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IGRiNmNmYWYuLmRjYmVi
ODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJEYXRhU291
cmNlOwogY2xhc3MgV2ViRG9jdW1lbnQ7CkBAIC0xNzYsNiArMTc3LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxlbWVudD4mKSBjb25zdCA9
IDA7CiAKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1hdGlvbkNvbnRy
b2xsZXIoKSA9IDA7CisKICAgICAvLyBTY3JpcHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gUmV0dXJucyB0aGUg
c2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGRiZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKQEAgLTAsMCArMSw5
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKworI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2Vi
QW5pbWF0aW9uQ29udHJvbGxlckltcGwoV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwpCisgICAgOiBt
X2ZyYW1lSW1wbChmcmFtZUltcGwpCit7CisgICAgQVNTRVJUKG1fZnJhbWVJbXBsKTsKK30KKwor
QW5pbWF0aW9uQ29udHJvbGxlciogV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmFuaW1hdGlv
bkNvbnRyb2xsZXIoKSBjb25zdAoreworCWlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkpCisJCXJl
dHVybiAwOworCXJldHVybiBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+YW5pbWF0aW9uKCk7Cit9CisK
K2Jvb2wgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKFdl
YkVsZW1lbnQmIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlvbk5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGlt
ZSkKK3sKKwlBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gYW5pbWF0aW9uQ29udHJv
bGxlcigpOworCWlmICghY29udHJvbGxlcikKKwkJcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvbnRy
b2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKFBhc3NSZWZQdHI8RWxlbWVudD4oZWxlbWVudCkt
PnJlbmRlcmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWUpOworfQorCitib29sIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpwYXVzZVRy
YW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYgZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHByb3Bl
cnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgdGltZSkKK3sKKwlBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVy
ID0gYW5pbWF0aW9uQ29udHJvbGxlcigpOworCWlmICghY29udHJvbGxlcikKKwkJcmV0dXJuIDA7
CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShQYXNzUmVmUHRy
PEVsZW1lbnQ+KGVsZW1lbnQpLT5yZW5kZXJlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZSk7Cit9CisKK3Vuc2lnbmVkIFdlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAoreworCUFu
aW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBhbmltYXRpb25Db250cm9sbGVyKCk7CisJ
aWYgKCFjb250cm9sbGVyKQorCQlyZXR1cm4gMDsKKyAgICByZXR1cm4gY29udHJvbGxlci0+bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYWU5NmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGxfaAorI2RlZmluZSBX
ZWJBbmltYXRpb25Db250cm9sbGVySW1wbF9oCisKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250
cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFuaW1hdGlvbkNvbnRyb2xs
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRnJhbWVJbXBsOworCitjbGFz
cyBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbCA6IHB1YmxpYyBXZWJBbmltYXRpb25Db250cm9s
bGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbChX
ZWJGcmFtZUltcGwqKTsKKyAgICB2aXJ0dWFsIH5XZWJBbmltYXRpb25Db250cm9sbGVySW1wbCgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFdlYkVsZW1lbnQm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSB0aW1lKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFdlYkVs
ZW1lbnQmLAorCQkJCQkJCQkJICAgY29uc3QgV2ViU3RyaW5nJiBwcm9wZXJ0eU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSk7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdDsKK3ByaXZhdGU6
CisgICAgV2ViRnJhbWVJbXBsKiBtX2ZyYW1lSW1wbDsKKwlXZWJDb3JlOjpBbmltYXRpb25Db250
cm9sbGVyKiBhbmltYXRpb25Db250cm9sbGVyKCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXgg
ZjZjY2MyNC4uZDU4M2NkYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAt
MTIwLDYgKzEyMCw3IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJU
ZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJXZWJB
bmltYXRpb25Db250cm9sbGVySW1wbC5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgi
CiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5o
IgpAQCAtNTUyLDYgKzU1MywxMyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6Zm9ybXMoV2ViVmVjdG9y
PFdlYkZvcm1FbGVtZW50PiYgcmVzdWx0cykgY29uc3QKICAgICByZXN1bHRzLnN3YXAodGVtcCk7
CiB9CiAKK1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIFdlYkZyYW1lSW1wbDo6YW5pbWF0aW9uQ29u
dHJvbGxlcigpCit7CisgICAgaWYgKCFtX2FuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCkpCisgICAg
ICAgIG1fYW5pbWF0aW9uQ29udHJvbGxlci5zZXQobmV3IFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsKHRoaXMpKTsKKyAgICByZXR1cm4gbV9hbmltYXRpb25Db250cm9sbGVyLmdldCgpOworfQor
CiBXZWJTZWN1cml0eU9yaWdpbiBXZWJGcmFtZUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCkpCkBAIC0xNDk1LDYg
KzE1MDMsNyBAQCBXZWJGcmFtZUltcGw6OldlYkZyYW1lSW1wbChXZWJGcmFtZUNsaWVudCogY2xp
ZW50KQogICAgICwgbV9mcmFtZXNTY29waW5nQ291bnQoLTEpCiAgICAgLCBtX3Njb3BpbmdDb21w
bGV0ZShmYWxzZSkKICAgICAsIG1fbmV4dEludmFsaWRhdGVBZnRlcigwKQorICAgICwgbV9hbmlt
YXRpb25Db250cm9sbGVyKDApCiB7CiAgICAgQ2hyb21pdW1CcmlkZ2U6OmluY3JlbWVudFN0YXRz
Q291bnRlcih3ZWJGcmFtZUFjdGl2ZUNvdW50KTsKICAgICBtX2xpdmVPYmplY3RDb3VudCsrOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggNjEyM2ZhNS4uZTc3ZjY2NSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBXaW5kb3dG
ZWF0dXJlczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDaHJvbWVQcmludENvbnRleHQ7
CitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDsKIGNsYXNzIFdlYkRhdGFTb3VyY2VJ
bXBsOwogY2xhc3MgV2ViSW5wdXRFbGVtZW50OwogY2xhc3MgV2ViRnJhbWVDbGllbnQ7CkBAIC04
NSw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkZyYW1lKiBmaW5kQ2hpbGRCeUV4
cHJlc3Npb24oY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJEb2N1bWVu
dCBkb2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBmb3JtcyhXZWJWZWN0b3I8V2Vi
Rm9ybUVsZW1lbnQ+JikgY29uc3Q7CisgICAgdmlydHVhbCBXZWJBbmltYXRpb25Db250cm9sbGVy
KiBhbmltYXRpb25Db250cm9sbGVyKCk7IAogICAgIHZpcnR1YWwgV2ViU2VjdXJpdHlPcmlnaW4g
c2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRVbml2ZXJzYWxB
Y2Nlc3MoKTsKICAgICB2aXJ0dWFsIE5QT2JqZWN0KiB3aW5kb3dPYmplY3QoKSBjb25zdDsKQEAg
LTM1MCw2ICszNTIsOSBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudD4sCiAgICAgICAgICAgICAgICAgICAgIFdlYlBhc3N3b3Jk
QXV0b2NvbXBsZXRlTGlzdGVuZXIqPiBQYXNzd29yZExpc3RlbmVyTWFwOwogICAgIFBhc3N3b3Jk
TGlzdGVuZXJNYXAgbV9wYXNzd29yZExpc3RlbmVyczsKKworICAgIC8vIEtlZXBzIGEgcmVmZXJl
bmNlIHRvIHRoZSBmcmFtZSdzIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIuCisgICAgT3duUHRyPFdl
YkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsPiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45435</attachid>
            <date>2009-12-23 06:38:57 -0800</date>
            <delta_ts>2009-12-29 08:52:29 -0800</delta_ts>
            <desc>Same as previous, minus tabs that got in</desc>
            <filename>32870c.diff</filename>
            <type>text/plain</type>
            <size>14634</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhhMzhmMDcuLjg5NDNkYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDMwIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
QWRkaW5nIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIgdG8gY2hyb21pdW0ncyBXZWJLaXQgQVBJLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg3MAor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQW5pbWF0aW9uQ29udHJvbGxl
cjo6fldlYkFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAqIHNyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6
CisgICAgICAgICogc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fldlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjphbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuaDoKKworMjAwOS0xMi0yMiAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBhdXRv
Q29tcGxldGUgYW5kIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZm9yIFdlYktpdCBBUEkKIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4NjYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggNDRjNDBiOS4uM2M4NGNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTg2LDYgKzg2
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQmluZGluZ3MuaCcsCkBAIC0yNDgsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJCaW5kaW5ncy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ2FjaGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkNvbG9yLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQW5p
bWF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3
MjdkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBbmltYXRpb25Db250
cm9sbGVyX2gKKyNkZWZpbmUgV2ViQW5pbWF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVsZW1lbnQ7Citj
bGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKKy8vIFdlYkFuaW1hdGlvbkNvbnRyb2xs
ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBhbmltYXRpb25zIGluIGEgZnJhbWUuIEl0IGlzCisv
LyBvd25lZCBieSBhIFdlYkZyYW1lIGFuZCBpdHMgbGlmZSBzcGFuIGlzIGJvdW5kIHRvIHRoYXQg
V2ViRnJhbWUuCitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBX
RUJLSVRfQVBJIHZpcnR1YWwgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShXZWJFbGVtZW50JiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIHRpbWUpID0gMDsKKyAgICBXRUJLSVRfQVBJIHZpcnR1
YWwgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcHJv
cGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgdGltZSkgPSAwOworCisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHVuc2lnbmVk
IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0ID0gMDsKK3Byb3RlY3RlZDoKKyAgICB+
V2ViQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IGRiNmNmYWYuLmRjYmVi
ODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJEYXRhU291
cmNlOwogY2xhc3MgV2ViRG9jdW1lbnQ7CkBAIC0xNzYsNiArMTc3LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxlbWVudD4mKSBjb25zdCA9
IDA7CiAKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1hdGlvbkNvbnRy
b2xsZXIoKSA9IDA7CisKICAgICAvLyBTY3JpcHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gUmV0dXJucyB0aGUg
c2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmE3YTYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKQEAgLTAsMCArMSw5
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKworI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2Vi
QW5pbWF0aW9uQ29udHJvbGxlckltcGwoV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwpCisgICAgOiBt
X2ZyYW1lSW1wbChmcmFtZUltcGwpCit7CisgICAgQVNTRVJUKG1fZnJhbWVJbXBsKTsKK30KKwor
QW5pbWF0aW9uQ29udHJvbGxlciogV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmFuaW1hdGlv
bkNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+YW5pbWF0
aW9uKCk7Cit9CisKK2Jvb2wgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnBhdXNlQW5pbWF0
aW9uQXRUaW1lKFdlYkVsZW1lbnQmIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgdGltZSkKK3sKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
YW5pbWF0aW9uQ29udHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKFBhc3NS
ZWZQdHI8RWxlbWVudD4oZWxlbWVudCktPnJlbmRlcmVyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUpOworfQorCitib29sIFdlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYgZWxlbWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSkKK3sKKyAgICBBbmlt
YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gYW5pbWF0aW9uQ29udHJvbGxlcigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShQYXNzUmVmUHRyPEVsZW1lbnQ+KGVsZW1lbnQpLT5y
ZW5kZXJlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZSk7Cit9CisKK3Vuc2lnbmVkIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBhbmltYXRpb25Db250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVy
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZGZlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGxfaAorI2RlZmluZSBXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbF9oCisKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFuaW1hdGlvbkNvbnRyb2xsZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRnJhbWVJbXBsOworCitjbGFzcyBXZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbCA6IHB1YmxpYyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbChXZWJGcmFtZUlt
cGwqKTsKKyAgICB2aXJ0dWFsIH5XZWJBbmltYXRpb25Db250cm9sbGVySW1wbCgpIHsgfQorCisg
ICAgdmlydHVhbCBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFdlYkVsZW1lbnQmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB0aW1l
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFdlYkVsZW1lbnQmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgdGltZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgV2ViRnJhbWVJbXBsKiBtX2ZyYW1lSW1wbDsKKyAgICBX
ZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyKiBhbmltYXRpb25Db250cm9sbGVyKCkgY29uc3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKaW5kZXggZjZjY2MyNC4uZDU4M2NkYyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcApAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0
ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIgogI2luY2x1ZGUg
IldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNp
bmNsdWRlICJXZWJEb2N1bWVudC5oIgpAQCAtNTUyLDYgKzU1MywxMyBAQCB2b2lkIFdlYkZyYW1l
SW1wbDo6Zm9ybXMoV2ViVmVjdG9yPFdlYkZvcm1FbGVtZW50PiYgcmVzdWx0cykgY29uc3QKICAg
ICByZXN1bHRzLnN3YXAodGVtcCk7CiB9CiAKK1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIFdlYkZy
YW1lSW1wbDo6YW5pbWF0aW9uQ29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX2FuaW1hdGlvbkNv
bnRyb2xsZXIuZ2V0KCkpCisgICAgICAgIG1fYW5pbWF0aW9uQ29udHJvbGxlci5zZXQobmV3IFdl
YkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKHRoaXMpKTsKKyAgICByZXR1cm4gbV9hbmltYXRpb25D
b250cm9sbGVyLmdldCgpOworfQorCiBXZWJTZWN1cml0eU9yaWdpbiBXZWJGcmFtZUltcGw6OnNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmRv
Y3VtZW50KCkpCkBAIC0xNDk1LDYgKzE1MDMsNyBAQCBXZWJGcmFtZUltcGw6OldlYkZyYW1lSW1w
bChXZWJGcmFtZUNsaWVudCogY2xpZW50KQogICAgICwgbV9mcmFtZXNTY29waW5nQ291bnQoLTEp
CiAgICAgLCBtX3Njb3BpbmdDb21wbGV0ZShmYWxzZSkKICAgICAsIG1fbmV4dEludmFsaWRhdGVB
ZnRlcigwKQorICAgICwgbV9hbmltYXRpb25Db250cm9sbGVyKDApCiB7CiAgICAgQ2hyb21pdW1C
cmlkZ2U6OmluY3JlbWVudFN0YXRzQ291bnRlcih3ZWJGcmFtZUFjdGl2ZUNvdW50KTsKICAgICBt
X2xpdmVPYmplY3RDb3VudCsrOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggNjEy
M2ZhNS4uZTc3ZjY2NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC01MCw2ICs1
MCw3IEBAIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBDaHJvbWVQcmludENvbnRleHQ7CitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDsK
IGNsYXNzIFdlYkRhdGFTb3VyY2VJbXBsOwogY2xhc3MgV2ViSW5wdXRFbGVtZW50OwogY2xhc3Mg
V2ViRnJhbWVDbGllbnQ7CkBAIC04NSw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdl
YkZyYW1lKiBmaW5kQ2hpbGRCeUV4cHJlc3Npb24oY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7CiAg
ICAgdmlydHVhbCBXZWJEb2N1bWVudCBkb2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JtcyhXZWJWZWN0b3I8V2ViRm9ybUVsZW1lbnQ+JikgY29uc3Q7CisgICAgdmlydHVhbCBX
ZWJBbmltYXRpb25Db250cm9sbGVyKiBhbmltYXRpb25Db250cm9sbGVyKCk7IAogICAgIHZpcnR1
YWwgV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgZ3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsKICAgICB2aXJ0dWFsIE5QT2JqZWN0KiB3aW5k
b3dPYmplY3QoKSBjb25zdDsKQEAgLTM1MCw2ICszNTIsOSBAQCBwcml2YXRlOgogICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudD4sCiAgICAgICAgICAg
ICAgICAgICAgIFdlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIqPiBQYXNzd29yZExpc3Rl
bmVyTWFwOwogICAgIFBhc3N3b3JkTGlzdGVuZXJNYXAgbV9wYXNzd29yZExpc3RlbmVyczsKKwor
ICAgIC8vIEtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBmcmFtZSdzIFdlYkFuaW1hdGlvbkNvbnRy
b2xsZXIuCisgICAgT3duUHRyPFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsPiBtX2FuaW1hdGlv
bkNvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="27480"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45606</attachid>
            <date>2009-12-29 08:52:29 -0800</date>
            <delta_ts>2009-12-30 02:41:02 -0800</delta_ts>
            <desc>Another try</desc>
            <filename>animation.diff</filename>
            <type>text/plain</type>
            <size>14484</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhhMzhmMDcuLjg5NDNkYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDMwIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
QWRkaW5nIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIgdG8gY2hyb21pdW0ncyBXZWJLaXQgQVBJLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg3MAor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQW5pbWF0aW9uQ29udHJvbGxl
cjo6fldlYkFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAqIHNyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6
CisgICAgICAgICogc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fldlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjphbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuaDoKKworMjAwOS0xMi0yMiAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBhdXRv
Q29tcGxldGUgYW5kIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZm9yIFdlYktpdCBBUEkKIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4NjYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggNDRjNDBiOS4uM2M4NGNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTg2LDYgKzg2
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQmluZGluZ3MuaCcsCkBAIC0yNDgsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJCaW5kaW5ncy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ2FjaGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkNvbG9yLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQW5p
bWF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3
MjdkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBbmltYXRpb25Db250
cm9sbGVyX2gKKyNkZWZpbmUgV2ViQW5pbWF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVsZW1lbnQ7Citj
bGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKKy8vIFdlYkFuaW1hdGlvbkNvbnRyb2xs
ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBhbmltYXRpb25zIGluIGEgZnJhbWUuIEl0IGlzCisv
LyBvd25lZCBieSBhIFdlYkZyYW1lIGFuZCBpdHMgbGlmZSBzcGFuIGlzIGJvdW5kIHRvIHRoYXQg
V2ViRnJhbWUuCitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBX
RUJLSVRfQVBJIHZpcnR1YWwgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShXZWJFbGVtZW50JiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIHRpbWUpID0gMDsKKyAgICBXRUJLSVRfQVBJIHZpcnR1
YWwgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcHJv
cGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgdGltZSkgPSAwOworCisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHVuc2lnbmVk
IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0ID0gMDsKK3Byb3RlY3RlZDoKKyAgICB+
V2ViQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IGRiNmNmYWYuLmRjYmVi
ODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJEYXRhU291
cmNlOwogY2xhc3MgV2ViRG9jdW1lbnQ7CkBAIC0xNzYsNiArMTc3LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxlbWVudD4mKSBjb25zdCA9
IDA7CiAKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1hdGlvbkNvbnRy
b2xsZXIoKSA9IDA7CisKICAgICAvLyBTY3JpcHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gUmV0dXJucyB0aGUg
c2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmE3YTYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKQEAgLTAsMCArMSw5
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKworI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2Vi
QW5pbWF0aW9uQ29udHJvbGxlckltcGwoV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwpCisgICAgOiBt
X2ZyYW1lSW1wbChmcmFtZUltcGwpCit7CisgICAgQVNTRVJUKG1fZnJhbWVJbXBsKTsKK30KKwor
QW5pbWF0aW9uQ29udHJvbGxlciogV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmFuaW1hdGlv
bkNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+YW5pbWF0
aW9uKCk7Cit9CisKK2Jvb2wgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnBhdXNlQW5pbWF0
aW9uQXRUaW1lKFdlYkVsZW1lbnQmIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgdGltZSkKK3sKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
YW5pbWF0aW9uQ29udHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKFBhc3NS
ZWZQdHI8RWxlbWVudD4oZWxlbWVudCktPnJlbmRlcmVyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUpOworfQorCitib29sIFdlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYgZWxlbWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSkKK3sKKyAgICBBbmlt
YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gYW5pbWF0aW9uQ29udHJvbGxlcigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShQYXNzUmVmUHRyPEVsZW1lbnQ+KGVsZW1lbnQpLT5y
ZW5kZXJlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZSk7Cit9CisKK3Vuc2lnbmVkIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBhbmltYXRpb25Db250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVy
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZGZlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGxfaAorI2RlZmluZSBXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbF9oCisKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFuaW1hdGlvbkNvbnRyb2xsZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRnJhbWVJbXBsOworCitjbGFzcyBXZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbCA6IHB1YmxpYyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbChXZWJGcmFtZUlt
cGwqKTsKKyAgICB2aXJ0dWFsIH5XZWJBbmltYXRpb25Db250cm9sbGVySW1wbCgpIHsgfQorCisg
ICAgdmlydHVhbCBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFdlYkVsZW1lbnQmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB0aW1l
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFdlYkVsZW1lbnQmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgdGltZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgV2ViRnJhbWVJbXBsKiBtX2ZyYW1lSW1wbDsKKyAgICBX
ZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyKiBhbmltYXRpb25Db250cm9sbGVyKCkgY29uc3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKaW5kZXggZjZjY2MyNC4uNTI3MTg5OCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcApAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0
ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIgogI2luY2x1ZGUg
IldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNp
bmNsdWRlICJXZWJEb2N1bWVudC5oIgpAQCAtNTUyLDYgKzU1MywxMSBAQCB2b2lkIFdlYkZyYW1l
SW1wbDo6Zm9ybXMoV2ViVmVjdG9yPFdlYkZvcm1FbGVtZW50PiYgcmVzdWx0cykgY29uc3QKICAg
ICByZXN1bHRzLnN3YXAodGVtcCk7CiB9CiAKK1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIFdlYkZy
YW1lSW1wbDo6YW5pbWF0aW9uQ29udHJvbGxlcigpCit7CisgICAgcmV0dXJuICZtX2FuaW1hdGlv
bkNvbnRyb2xsZXI7Cit9CisKIFdlYlNlY3VyaXR5T3JpZ2luIFdlYkZyYW1lSW1wbDo6c2VjdXJp
dHlPcmlnaW4oKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZG9jdW1l
bnQoKSkKQEAgLTE0OTUsNiArMTUwMSw3IEBAIFdlYkZyYW1lSW1wbDo6V2ViRnJhbWVJbXBsKFdl
YkZyYW1lQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2ZyYW1lc1Njb3BpbmdDb3VudCgtMSkKICAg
ICAsIG1fc2NvcGluZ0NvbXBsZXRlKGZhbHNlKQogICAgICwgbV9uZXh0SW52YWxpZGF0ZUFmdGVy
KDApCisgICAgLCBtX2FuaW1hdGlvbkNvbnRyb2xsZXIodGhpcykKIHsKICAgICBDaHJvbWl1bUJy
aWRnZTo6aW5jcmVtZW50U3RhdHNDb3VudGVyKHdlYkZyYW1lQWN0aXZlQ291bnQpOwogICAgIG1f
bGl2ZU9iamVjdENvdW50Kys7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAppbmRleCA2MTIz
ZmE1Li45Y2NhMTExIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTM5LDYgKzM5
LDggQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAorI2luY2x1ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgS1VSTDsKQEAgLTg1LDYgKzg3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViRnJhbWUqIGZpbmRDaGlsZEJ5RXhwcmVzc2lv
bihjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRvY3VtZW50IGRvY3Vt
ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxl
bWVudD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1h
dGlvbkNvbnRyb2xsZXIoKTsgCiAgICAgdmlydHVhbCBXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBncmFudFVuaXZlcnNhbEFjY2Vzcygp
OwogICAgIHZpcnR1YWwgTlBPYmplY3QqIHdpbmRvd09iamVjdCgpIGNvbnN0OwpAQCAtMzUwLDYg
KzM1Myw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50PiwKICAgICAgICAgICAgICAgICAgICAgV2ViUGFzc3dvcmRBdXRvY29t
cGxldGVMaXN0ZW5lcio+IFBhc3N3b3JkTGlzdGVuZXJNYXA7CiAgICAgUGFzc3dvcmRMaXN0ZW5l
ck1hcCBtX3Bhc3N3b3JkTGlzdGVuZXJzOworCisgICAgLy8gS2VlcHMgYSByZWZlcmVuY2UgdG8g
dGhlIGZyYW1lJ3MgV2ViQW5pbWF0aW9uQ29udHJvbGxlci4KKyAgICBXZWJBbmltYXRpb25Db250
cm9sbGVySW1wbCBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45649</attachid>
            <date>2009-12-30 02:41:02 -0800</date>
            <delta_ts>2010-01-04 17:21:17 -0800</delta_ts>
            <desc>Oops. Last patch missing changes.</desc>
            <filename>32870d.diff</filename>
            <type>text/plain</type>
            <size>14484</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDhhMzhmMDcuLjg5NDNkYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDMwIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
QWRkaW5nIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIgdG8gY2hyb21pdW0ncyBXZWJLaXQgQVBJLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg3MAor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQW5pbWF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQW5pbWF0aW9uQ29udHJvbGxl
cjo6fldlYkFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5o
OgorICAgICAgICAqIHNyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbDo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbDo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6
CisgICAgICAgICogc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6fldlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjphbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuaDoKKworMjAwOS0xMi0yMiAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBhdXRv
Q29tcGxldGUgYW5kIGdldEVsZW1lbnRCeUlkIG1ldGhvZHMgZm9yIFdlYktpdCBBUEkKIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4NjYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggNDRjNDBiOS4uM2M4NGNiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTg2LDYgKzg2
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQmluZGluZ3MuaCcsCkBAIC0yNDgsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0
aW9uQ29udHJvbGxlckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJCaW5kaW5ncy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ2FjaGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkNvbG9yLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQW5p
bWF0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3
MjdkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFuaW1h
dGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBbmltYXRpb25Db250
cm9sbGVyX2gKKyNkZWZpbmUgV2ViQW5pbWF0aW9uQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVsZW1lbnQ7Citj
bGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CisKKy8vIFdlYkFuaW1hdGlvbkNvbnRyb2xs
ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBhbmltYXRpb25zIGluIGEgZnJhbWUuIEl0IGlzCisv
LyBvd25lZCBieSBhIFdlYkZyYW1lIGFuZCBpdHMgbGlmZSBzcGFuIGlzIGJvdW5kIHRvIHRoYXQg
V2ViRnJhbWUuCitjbGFzcyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1YmxpYzoKKyAgICBX
RUJLSVRfQVBJIHZpcnR1YWwgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShXZWJFbGVtZW50JiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIHRpbWUpID0gMDsKKyAgICBXRUJLSVRfQVBJIHZpcnR1
YWwgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcHJv
cGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgdGltZSkgPSAwOworCisgICAgV0VCS0lUX0FQSSB2aXJ0dWFsIHVuc2lnbmVk
IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0ID0gMDsKK3Byb3RlY3RlZDoKKyAgICB+
V2ViQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IGRiNmNmYWYuLmRjYmVi
ODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViQW5pbWF0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJEYXRhU291
cmNlOwogY2xhc3MgV2ViRG9jdW1lbnQ7CkBAIC0xNzYsNiArMTc3LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxlbWVudD4mKSBjb25zdCA9
IDA7CiAKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1hdGlvbkNvbnRy
b2xsZXIoKSA9IDA7CisKICAgICAvLyBTY3JpcHRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gUmV0dXJucyB0aGUg
c2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmE3YTYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAKQEAgLTAsMCArMSw5
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVy
SW1wbC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKworI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6V2Vi
QW5pbWF0aW9uQ29udHJvbGxlckltcGwoV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwpCisgICAgOiBt
X2ZyYW1lSW1wbChmcmFtZUltcGwpCit7CisgICAgQVNTRVJUKG1fZnJhbWVJbXBsKTsKK30KKwor
QW5pbWF0aW9uQ29udHJvbGxlciogV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OmFuaW1hdGlv
bkNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+YW5pbWF0
aW9uKCk7Cit9CisKK2Jvb2wgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnBhdXNlQW5pbWF0
aW9uQXRUaW1lKFdlYkVsZW1lbnQmIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgdGltZSkKK3sKKyAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
YW5pbWF0aW9uQ29udHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnBhdXNlQW5pbWF0aW9uQXRUaW1lKFBhc3NS
ZWZQdHI8RWxlbWVudD4oZWxlbWVudCktPnJlbmRlcmVyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUpOworfQorCitib29sIFdlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUoV2ViRWxlbWVudCYgZWxlbWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZSkKK3sKKyAgICBBbmlt
YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gYW5pbWF0aW9uQ29udHJvbGxlcigpOworICAg
IGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShQYXNzUmVmUHRyPEVsZW1lbnQ+KGVsZW1lbnQpLT5y
ZW5kZXJlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZSk7Cit9CisKK3Vuc2lnbmVkIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAoreworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBhbmltYXRpb25Db250cm9sbGVyKCk7CisgICAgaWYgKCFjb250cm9sbGVy
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZGZlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGxfaAorI2RlZmluZSBXZWJBbmltYXRp
b25Db250cm9sbGVySW1wbF9oCisKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFuaW1hdGlvbkNvbnRyb2xsZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRnJhbWVJbXBsOworCitjbGFzcyBXZWJBbmlt
YXRpb25Db250cm9sbGVySW1wbCA6IHB1YmxpYyBXZWJBbmltYXRpb25Db250cm9sbGVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbChXZWJGcmFtZUlt
cGwqKTsKKyAgICB2aXJ0dWFsIH5XZWJBbmltYXRpb25Db250cm9sbGVySW1wbCgpIHsgfQorCisg
ICAgdmlydHVhbCBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFdlYkVsZW1lbnQmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB0aW1l
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFdlYkVsZW1lbnQmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBw
cm9wZXJ0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgdGltZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgV2ViRnJhbWVJbXBsKiBtX2ZyYW1lSW1wbDsKKyAgICBX
ZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyKiBhbmltYXRpb25Db250cm9sbGVyKCkgY29uc3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKaW5kZXggZjZjY2MyNC4uNTI3MTg5OCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcApAQCAtMTIwLDYgKzEyMCw3IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0
ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oIgogI2luY2x1ZGUg
IldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNp
bmNsdWRlICJXZWJEb2N1bWVudC5oIgpAQCAtNTUyLDYgKzU1MywxMSBAQCB2b2lkIFdlYkZyYW1l
SW1wbDo6Zm9ybXMoV2ViVmVjdG9yPFdlYkZvcm1FbGVtZW50PiYgcmVzdWx0cykgY29uc3QKICAg
ICByZXN1bHRzLnN3YXAodGVtcCk7CiB9CiAKK1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIFdlYkZy
YW1lSW1wbDo6YW5pbWF0aW9uQ29udHJvbGxlcigpCit7CisgICAgcmV0dXJuICZtX2FuaW1hdGlv
bkNvbnRyb2xsZXI7Cit9CisKIFdlYlNlY3VyaXR5T3JpZ2luIFdlYkZyYW1lSW1wbDo6c2VjdXJp
dHlPcmlnaW4oKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZG9jdW1l
bnQoKSkKQEAgLTE0OTUsNiArMTUwMSw3IEBAIFdlYkZyYW1lSW1wbDo6V2ViRnJhbWVJbXBsKFdl
YkZyYW1lQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2ZyYW1lc1Njb3BpbmdDb3VudCgtMSkKICAg
ICAsIG1fc2NvcGluZ0NvbXBsZXRlKGZhbHNlKQogICAgICwgbV9uZXh0SW52YWxpZGF0ZUFmdGVy
KDApCisgICAgLCBtX2FuaW1hdGlvbkNvbnRyb2xsZXIodGhpcykKIHsKICAgICBDaHJvbWl1bUJy
aWRnZTo6aW5jcmVtZW50U3RhdHNDb3VudGVyKHdlYkZyYW1lQWN0aXZlQ291bnQpOwogICAgIG1f
bGl2ZU9iamVjdENvdW50Kys7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAppbmRleCA2MTIz
ZmE1Li45Y2NhMTExIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTM5LDYgKzM5
LDggQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAorI2luY2x1ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgS1VSTDsKQEAgLTg1LDYgKzg3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViRnJhbWUqIGZpbmRDaGlsZEJ5RXhwcmVzc2lv
bihjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRvY3VtZW50IGRvY3Vt
ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1zKFdlYlZlY3RvcjxXZWJGb3JtRWxl
bWVudD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1h
dGlvbkNvbnRyb2xsZXIoKTsgCiAgICAgdmlydHVhbCBXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBncmFudFVuaXZlcnNhbEFjY2Vzcygp
OwogICAgIHZpcnR1YWwgTlBPYmplY3QqIHdpbmRvd09iamVjdCgpIGNvbnN0OwpAQCAtMzUwLDYg
KzM1Myw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50PiwKICAgICAgICAgICAgICAgICAgICAgV2ViUGFzc3dvcmRBdXRvY29t
cGxldGVMaXN0ZW5lcio+IFBhc3N3b3JkTGlzdGVuZXJNYXA7CiAgICAgUGFzc3dvcmRMaXN0ZW5l
ck1hcCBtX3Bhc3N3b3JkTGlzdGVuZXJzOworCisgICAgLy8gS2VlcHMgYSByZWZlcmVuY2UgdG8g
dGhlIGZyYW1lJ3MgV2ViQW5pbWF0aW9uQ29udHJvbGxlci4KKyAgICBXZWJBbmltYXRpb25Db250
cm9sbGVySW1wbCBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>