<?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>70895</bug_id>
          
          <creation_ts>2011-10-26 02:42:39 -0700</creation_ts>
          <short_desc>Add WebCore platform interface needed by updated MediaStream API design</short_desc>
          <delta_ts>2011-11-22 06:26:56 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>67946</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>grunell</cc>
    
    <cc>harald</cc>
    
    <cc>per-erik.brodin</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490701</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-10-26 02:42:39 -0700</bug_when>
    <thetext>Add the remaining platform files needed by MediaStream and LocalMediaStream to WebCore/platform/mediastream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504938</commentid>
    <comment_count>1</comment_count>
      <attachid>115608</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-11-17 09:55:08 -0800</bug_when>
    <thetext>Created attachment 115608
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504956</commentid>
    <comment_count>2</comment_count>
      <attachid>115608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 10:20:08 -0800</bug_when>
    <thetext>Comment on attachment 115608
Proposed patch

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

&gt; Source/WebCore/platform/mediastream/MediaStreamCenter.cpp:57
&gt; +void MediaStreamCenter::endLocalMediaStream(MediaStreamDescriptor* streamDescriptor)
&gt; +{
&gt; +    MediaStream* stream = streamDescriptor-&gt;owner();
&gt; +    if (stream)
&gt; +        stream-&gt;streamEnded();
&gt; +    else
&gt; +        streamDescriptor-&gt;setEnded();
&gt; +}

This function doesn&apos;t appear to have any callers.  Why wouldn&apos;t the callers just do this work directly?  What&apos;s the value in having a static MediaStreamCenter to help?

&gt; Source/WebCore/platform/mediastream/MediaStreamCenter.h:44
&gt; +class MediaStreamCenter {

Can you help me understand what role the MediaStreamCenter plays?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505641</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-11-18 03:01:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 115608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115608&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamCenter.cpp:57
&gt; &gt; +void MediaStreamCenter::endLocalMediaStream(MediaStreamDescriptor* streamDescriptor)
&gt; &gt; +{
&gt; &gt; +    MediaStream* stream = streamDescriptor-&gt;owner();
&gt; &gt; +    if (stream)
&gt; &gt; +        stream-&gt;streamEnded();
&gt; &gt; +    else
&gt; &gt; +        streamDescriptor-&gt;setEnded();
&gt; &gt; +}
&gt; 
&gt; This function doesn&apos;t appear to have any callers.  Why wouldn&apos;t the callers just do this work directly?  What&apos;s the value in having a static MediaStreamCenter to help?

It works as a utility function, but its main purpose is layering so that the platform doesn&apos;t have to be aware of DOM objects (MediaStream).
 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamCenter.h:44
&gt; &gt; +class MediaStreamCenter {
&gt; 
&gt; Can you help me understand what role the MediaStreamCenter plays?

DOM objects:                              | Browser chrome:
                                          |
 +--------------+  +-------------------+  |  +-------------------+  +----------------+
 | MediaStream: |  | LocalMediaStream: |  |  | Mute Video Button |  | getUserMedia   |
 | stream1      |  | stream2           |  |  +-------------------+  | Selector UI    |
 +--------------+  +-------------------+  |                         | (user consent) |
                                          |                         +----------------+
                                          |

                                 | Requests from DOM objects and the WebKit API
                                 V
                              +-------------------+
==============================| MediaStreamCenter |====================================
                              +-------------------+
                                 ^
                                 | Requests from platform layer to higher layers
Platform:

 +=================+
 | Active streams: |
 +=================+
 | stream1         |
 +-----------------+
 | stream2         |
 +-----------------+

MediaStreamCenter responsibilities:
* Expose media stream source probing functionality to higher layers
* Notify the platform that:
 - A MediaStreamTrack has been enabled/disabled (from JavaScript)
 - A LocalMediaStream has been stopped (from JavaScript)
 - A local MediaStreamSource has been muted (via mute button in browser chrome)
* Notify a MediaStream that the corresponding stream in the platfom has ended (e.g. USB camera was unplugged)

Our platform specific implementation of MediaStreamCenter is responsible for all the plumbing of the media pipelines (e.g. from local media stream sources to player sinks and network transport sinks).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506302</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 19:27:41 -0800</bug_when>
    <thetext>Does MediaStreamCenter keep any state?  If not, perhaps it should be a collection of free functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506305</commentid>
    <comment_count>5</comment_count>
      <attachid>115608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 19:30:31 -0800</bug_when>
    <thetext>Comment on attachment 115608
Proposed patch

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

&gt; Source/WebCore/platform/mediastream/MediaStreamCenter.cpp:38
&gt; +#include &quot;MediaStream.h&quot;

Another issue is that MediaStream.h is outside the Platform directory and Platform isn&apos;t allowed to include headers from the rest of WebCore.

&gt; Source/WebCore/platform/mediastream/MediaStreamCenter.cpp:48
&gt; +MediaStreamCenter&amp; MediaStreamCenter::instance()
&gt; +{
&gt; +    ASSERT(isMainThread());
&gt; +    DEFINE_STATIC_LOCAL(MediaStreamCenter, center, ());
&gt; +    return center;
&gt; +}

The reason I ask these questions is that &quot;static&quot; is almost certainly the wrong scope for any state in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506306</commentid>
    <comment_count>6</comment_count>
      <attachid>115608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 19:30:46 -0800</bug_when>
    <thetext>Comment on attachment 115608
Proposed patch

Marking r- for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506967</commentid>
    <comment_count>7</comment_count>
      <attachid>116089</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-11-21 08:01:51 -0800</bug_when>
    <thetext>Created attachment 116089
Updated patch

(In reply to comment #4)
&gt; Does MediaStreamCenter keep any state?  If not, perhaps it should be a collection of free functions.

Yes, e.g., each media capture device is only represented by a single MediaStreamSource instance so the MediaStreamCenter must keep track of the MediaStreamSource instances it has created.

(In reply to comment #5)
&gt; (From update of attachment 115608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115608&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamCenter.cpp:38
&gt; &gt; +#include &quot;MediaStream.h&quot;
&gt; 
&gt; Another issue is that MediaStream.h is outside the Platform directory and Platform isn&apos;t allowed to include headers from the rest of WebCore.

Fixed (introduced MediaStreamDescriptorOwner on the platform level). Fixed similar issue with UserMediaRequest.

&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamCenter.cpp:48
&gt; &gt; +MediaStreamCenter&amp; MediaStreamCenter::instance()
&gt; &gt; +{
&gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; +    DEFINE_STATIC_LOCAL(MediaStreamCenter, center, ());
&gt; &gt; +    return center;
&gt; &gt; +}
&gt; 
&gt; The reason I ask these questions is that &quot;static&quot; is almost certainly the wrong scope for any state in WebKit.

One reason it&apos;s static is to allow MediaStreamSource instances (which correspond to specific media capture devices) to out-live everything else. A MediaStreamSource can be used by several unrelated pages and muting a source takes effect in all pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507085</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 11:04:27 -0800</bug_when>
    <thetext>I see, so there really is global static state in this API.  That&apos;s unfortunate, but it sounds unavoidable.  Thanks for answering my questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507502</commentid>
    <comment_count>9</comment_count>
      <attachid>116089</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-11-22 04:07:48 -0800</bug_when>
    <thetext>Comment on attachment 116089
Updated patch

Thank you for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507561</commentid>
    <comment_count>10</comment_count>
      <attachid>116089</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-22 06:26:47 -0800</bug_when>
    <thetext>Comment on attachment 116089
Updated patch

Clearing flags on attachment: 116089

Committed r100997: &lt;http://trac.webkit.org/changeset/100997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507562</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-22 06:26:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115608</attachid>
            <date>2011-11-17 09:55:08 -0800</date>
            <delta_ts>2011-11-21 08:01:51 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>mediastreamcenter_1.patch</filename>
            <type>text/plain</type>
            <size>11182</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ODdhY2RmLi4wZDE5MGUxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMTEtMTcgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIEFkZCBXZWJDb3JlIHBsYXRmb3JtIGludGVyZmFjZSBuZWVkZWQgYnkg
dXBkYXRlZCBNZWRpYVN0cmVhbSBBUEkgZGVzaWduCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgb25lIGluIGEgc2VyaWVzIG9mIHBhdGNoZXMg
dGhhdCB1cGRhdGUgdGhlIE1lZGlhU3RyZWFtIGZlYXR1cmUKKyAgICAgICAgdG8gdXNlIFdlYkNv
cmUgcGxhdGZvcm0gaW50ZXJmYWNlcy4KKworICAgICAgICBUZXN0cyB3aWxsIGJlIHByb3ZpZGVk
IGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvNTY1ODcKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL0xv
Y2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6
c3RvcFRpbWVyRmlyZWQpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2V0RW5hYmxlZCk6Cisg
ICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVh
bSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaDog
QWRkZWQuCisKIDIwMTEtMTEtMTcgIEtlbiBCdWNoYW5hbiAgPGtlbnJiQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDcmFzaCBmcm9tIG5lc3RlZCB0YWJsZXMgd2l0aCBnZW5lcmF0ZWQgY29udGVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNWI0NDE4NS4uNjhiMDkyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNzczLDYgKzI3NzMsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNv
dXJjZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmYTQzM2E5Li42NjA4OTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC04MTQsNiArODE0LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVZpZXcuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5j
cHAKaW5kZXggYmQ0N2UxNi4uMDE1YTA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2luY2x1
ZGUgIlVVSUQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsNyArNTcsNyBAQCB2b2lk
IExvY2FsTWVkaWFTdHJlYW06OnN0b3BUaW1lckZpcmVkKFRpbWVyPExvY2FsTWVkaWFTdHJlYW0+
KiB0aW1lcikKICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVOREVEKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBGSVhNRTogdGVsbCB0aGUgcGxhdGZvcm0gdGhhdCB0aGUgc3RyZWFtIHdhcyBz
dG9wcGVkCisgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkU3RvcExvY2FsTWVk
aWFTdHJlYW0oZGVzY3JpcHRvcigpKTsKIAogICAgIHN0cmVhbUVuZGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDQ1NThk
NjEuLmRiNDk3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgc2l6
ZV90IHRyYWNrSW5kZXgpCkBAIC03OCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKICAgICBtX3N0cmVhbURlc2NyaXB0b3ItPmNvbXBv
bmVudChtX3RyYWNrSW5kZXgpLT5zZXRFbmFibGVkKGVuYWJsZWQpOwogCi0gICAgLy8gRklYTUU6
IHRlbGwgdGhlIHBsYXRmb3JtIHRoYXQgdGhlIHRyYWNrIHdhcyBlbmFibGVkL2Rpc2FibGVkCisg
ICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQobV9zdHJlYW1EZXNjcmlwdG9yLmdldCgpLCBtX3RyYWNrSW5kZXgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCmluZGV4IGM0Y2Y4NzAuLjdkOWMyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiTG9jYWxNZWRpYVN0
cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVkZSAiU3BhY2VT
cGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogCkBAIC02OCw3ICs2
OSw3IEBAIFVzZXJNZWRpYVJlcXVlc3Q6On5Vc2VyTWVkaWFSZXF1ZXN0KCkKIAogdm9pZCBVc2Vy
TWVkaWFSZXF1ZXN0OjpzdGFydCgpCiB7Ci0gICAgLy8gRklYTUU6IHF1ZXJ5IHRoZSBwbGF0Zm9y
bSBmb3IgYXZhaWxhYmxlIG1lZGlhIHN0cmVhbSBzb3VyY2VzLCBzZWUgaHR0cDovL3dlYmtpdC5v
cmcvYi83MDg5NQorICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLnF1ZXJ5TWVkaWFT
dHJlYW1Tb3VyY2VzKHRoaXMpOwogfQogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6Om1lZGlhU3Ry
ZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBz
b3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjdlMjRmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKworI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhU3RyZWFtQ2VudGVyJiBNZWRpYVN0cmVhbUNl
bnRlcjo6aW5zdGFuY2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChNZWRpYVN0cmVhbUNlbnRlciwgY2VudGVyLCAoKSk7CisgICAgcmV0
dXJuIGNlbnRlcjsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgTWVk
aWFTdHJlYW0qIHN0cmVhbSA9IHN0cmVhbURlc2NyaXB0b3ItPm93bmVyKCk7CisgICAgaWYgKHN0
cmVhbSkKKyAgICAgICAgc3RyZWFtLT5zdHJlYW1FbmRlZCgpOworICAgIGVsc2UKKyAgICAgICAg
c3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKK30KKworLy8gRklYTUU6IHJlbW92ZSB3aGVu
IHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZSBhdmFpbGFibGUKKy8vIEVtcHR5IGltcGxlbWVudGF0
aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRl
ZmF1bHQuCitNZWRpYVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQorCitN
ZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKK3sKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoUGFzc1JlZlB0cjxVc2VyTWVk
aWFSZXF1ZXN0PikKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFT
dHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiwgdW5zaWduZWQpCit7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciopCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iOWRjNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaApAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisg
KiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DZW50ZXJfaAorI2RlZmluZSBNZWRpYVN0
cmVhbUNlbnRlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcjsKKworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtQ2VudGVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICB+TWVkaWFTdHJlYW1DZW50ZXIoKTsKKworICAgIHN0YXRpYyBN
ZWRpYVN0cmVhbUNlbnRlciYgaW5zdGFuY2UoKTsKKworICAgIHZvaWQgcXVlcnlNZWRpYVN0cmVh
bVNvdXJjZXMoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0Pik7CisKKyAgICAvLyBGSVhNRTog
YWRkIGEgd2F5IHRvIG11dGUgYSBNZWRpYVN0cmVhbVNvdXJjZSBmcm9tIHRoZSBXZWJLaXQgQVBJ
IGxheWVyCisKKyAgICAvLyBDYWxscyBmcm9tIHRoZSBET00gb2JqZWN0cyB0byBub3RpZnkgdGhl
IHBsYXRmb3JtCisgICAgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0
cmVhbURlc2NyaXB0b3IqLCB1bnNpZ25lZCBjb21wb25lbnRJbmRleCk7CisgICAgdm9pZCBkaWRT
dG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKworICAgIC8vIENh
bGxzIGZyb20gdGhlIHBsYXRmb3JtIHRvIHVwZGF0ZSB0aGUgRE9NIG9iamVjdHMKKyAgICB2b2lk
IGVuZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CisKK3ByaXZhdGU6
CisgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVh
bUNlbnRlcl9oCg==
</data>
<flag name="review"
          id="114558"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116089</attachid>
            <date>2011-11-21 08:01:51 -0800</date>
            <delta_ts>2011-11-22 06:26:47 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>mediastreamcenter_2.patch</filename>
            <type>text/plain</type>
            <size>15385</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZjczYzY2Li5iMDNkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTEtMTEtMjEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24u
Y29tPgorCisgICAgICAgIEFkZCBXZWJDb3JlIHBsYXRmb3JtIGludGVyZmFjZSBuZWVkZWQgYnkg
dXBkYXRlZCBNZWRpYVN0cmVhbSBBUEkgZGVzaWduCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgb25lIGluIGEgc2VyaWVzIG9mIHBhdGNoZXMg
dGhhdCB1cGRhdGUgdGhlIE1lZGlhU3RyZWFtIGZlYXR1cmUKKyAgICAgICAgdG8gdXNlIFdlYkNv
cmUgcGxhdGZvcm0gaW50ZXJmYWNlcy4KKworICAgICAgICBUZXN0cyB3aWxsIGJlIHByb3ZpZGVk
IGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvNTY1ODcKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL0xv
Y2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6
c3RvcFRpbWVyRmlyZWQpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6Cisg
ICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKiBtZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6
ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KToK
KyAgICAgICAgKiBtZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9j
YWxNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZXNR
dWVyeUNsaWVudDo6fk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvck93bmVyOjp+TWVkaWFTdHJlYW1EZXNjcmlwdG9y
T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpvd25lcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnNldE93bmVyKToKKwog
MjAxMS0xMS0xOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBQYW5lbDo6cmVzZXQgaW4gdGhlIGZyb250LWVu
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZiNTNlMTkuLmJlMTdkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjc3NCw2ICsyNzc0LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggM2Q0NTZmZC4uNTM0YTJlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtODE0LDYgKzgxNCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dlYkNv
cmVWaWV3LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlh
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0u
Y3BwCmluZGV4IGJkNDdlMTYuLjAxNWEwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNs
dWRlICJVVUlELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDcgKzU3LDcgQEAgdm9p
ZCBMb2NhbE1lZGlhU3RyZWFtOjpzdG9wVGltZXJGaXJlZChUaW1lcjxMb2NhbE1lZGlhU3RyZWFt
PiogdGltZXIpCiAgICAgaWYgKHJlYWR5U3RhdGUoKSA9PSBFTkRFRCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gRklYTUU6IHRlbGwgdGhlIHBsYXRmb3JtIHRoYXQgdGhlIHN0cmVhbSB3YXMg
c3RvcHBlZAorICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFN0b3BMb2NhbE1l
ZGlhU3RyZWFtKGRlc2NyaXB0b3IoKSk7CiAKICAgICBzdHJlYW1FbmRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggMWVlMzg5Yi4uYmM1MTFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAotY2xhc3MgTWVkaWFTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1
YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBNZWRpYVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU3RyZWFtPiwgcHVibGljIE1lZGlhU3RyZWFtRGVzY3JpcHRvck93bmVyLCBwdWJsaWMg
RXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIC8vIE11c3QgbWF0Y2ggdGhlIGNvbnN0YW50cyBp
biB0aGUgLmlkbCBmaWxlLgogICAgIGVudW0gUmVhZHlTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDQ1NThkNjEuLmRiNDk3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgc2l6ZV90IHRyYWNr
SW5kZXgpCkBAIC03OCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCiAKICAgICBtX3N0cmVhbURlc2NyaXB0b3ItPmNvbXBvbmVudChtX3Ry
YWNrSW5kZXgpLT5zZXRFbmFibGVkKGVuYWJsZWQpOwogCi0gICAgLy8gRklYTUU6IHRlbGwgdGhl
IHBsYXRmb3JtIHRoYXQgdGhlIHRyYWNrIHdhcyBlbmFibGVkL2Rpc2FibGVkCisgICAgTWVkaWFT
dHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQobV9z
dHJlYW1EZXNjcmlwdG9yLmdldCgpLCBtX3RyYWNrSW5kZXgpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggOGM4OWUyNS4uZmExYjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb246OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVh
bURlc2NyaXB0CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0
VGhyZWFkKCkpOwogICAgIEFTU0VSVChzdHJlYW1EZXNjcmlwdG9yLT5vd25lcigpKTsKIAotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gc3RyZWFtRGVzY3JpcHRvci0+b3duZXIoKTsK
KyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHN0YXRpY19jYXN0PE1lZGlhU3RyZWFt
Kj4oc3RyZWFtRGVzY3JpcHRvci0+b3duZXIoKSk7CiAgICAgc3RyZWFtLT5zdHJlYW1FbmRlZCgp
OwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGM0Y2Y4NzAuLmJhNmMzYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFVzZXJNZWRpYVJlcXVlc3Q6On5Vc2VyTWVkaWFSZXF1ZXN0KCkK
IAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdGFydCgpCiB7Ci0gICAgLy8gRklYTUU6IHF1ZXJ5
IHRoZSBwbGF0Zm9ybSBmb3IgYXZhaWxhYmxlIG1lZGlhIHN0cmVhbSBzb3VyY2VzLCBzZWUgaHR0
cDovL3dlYmtpdC5vcmcvYi83MDg5NQorICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgp
LnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKHRoaXMpOwogfQogCiB2b2lkIFVzZXJNZWRpYVJlcXVl
c3Q6Om1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q29tcGxldGVkKGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBzb3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCmluZGV4IDEwOWJkNDcuLjJlMjNiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKQEAgLTQ1LDcgKzQ2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBVc2VyTWVkaWFDbGllbnQ7CiAKLWNsYXNzIFVz
ZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFSZXF1ZXN0PiwgcHVi
bGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Qg
OiBwdWJsaWMgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQsIHB1YmxpYyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1l
ZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDbGll
bnQqLCBjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrPik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDg0YTJiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNs
dWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFTdHJlYW1DZW50ZXImIE1lZGlhU3RyZWFtQ2Vu
dGVyOjppbnN0YW5jZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKE1lZGlhU3RyZWFtQ2VudGVyLCBjZW50ZXIsICgpKTsKKyAgICByZXR1
cm4gY2VudGVyOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2NhbE1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBNZWRp
YVN0cmVhbURlc2NyaXB0b3JPd25lciogb3duZXIgPSBzdHJlYW1EZXNjcmlwdG9yLT5vd25lcigp
OworICAgIGlmIChvd25lcikKKyAgICAgICAgb3duZXItPnN0cmVhbUVuZGVkKCk7CisgICAgZWxz
ZQorICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgpOworfQorCisvLyBGSVhNRTog
cmVtb3ZlIHdoZW4gcmVhbCBpbXBsZW1lbnRhdGlvbnMgYXJlIGF2YWlsYWJsZQorLy8gRW1wdHkg
aW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0aGF0IGJ1aWxkIHdpdGggTUVESUFfU1RSRUFNIGVu
YWJsZWQgYnkgZGVmYXVsdC4KK01lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcigp
Cit7Cit9CisKK01lZGlhU3RyZWFtQ2VudGVyOjp+TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCit7CisgICAgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3Igc291cmNlczsKKyAgICBjbGllbnQtPm1lZGlhU3RyZWFtU291cmNl
c1F1ZXJ5Q29tcGxldGVkKHNvdXJjZXMpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ2VudGVyOjpk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbURlc2NyaXB0b3IqLCB1bnNp
Z25lZCkKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFT
dHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZmM4YjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5o
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVm
aW5lIE1lZGlhU3RyZWFtQ2VudGVyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CisKK2Ns
YXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGF1ZGlv
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aWRlbygpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNvbXBsZXRlZChjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYpID0gMDsKK307CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVN0cmVhbUNlbnRlcik7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgfk1lZGlhU3RyZWFtQ2VudGVyKCk7
CisKKyAgICBzdGF0aWMgTWVkaWFTdHJlYW1DZW50ZXImIGluc3RhbmNlKCk7CisKKyAgICB2b2lk
IHF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVl
cnlDbGllbnQ+KTsKKworICAgIC8vIEZJWE1FOiBhZGQgYSB3YXkgdG8gbXV0ZSBhIE1lZGlhU3Ry
ZWFtU291cmNlIGZyb20gdGhlIFdlYktpdCBBUEkgbGF5ZXIKKworICAgIC8vIENhbGxzIGZyb20g
dGhlIERPTSBvYmplY3RzIHRvIG5vdGlmeSB0aGUgcGxhdGZvcm0KKyAgICB2b2lkIGRpZFNldE1l
ZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciosIHVuc2lnbmVkIGNv
bXBvbmVudEluZGV4KTsKKyAgICB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopOworCisgICAgLy8gQ2FsbHMgZnJvbSB0aGUgcGxhdGZvcm0gdG8gdXBk
YXRlIHRoZSBET00gb2JqZWN0cworICAgIHZvaWQgZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0
cmVhbURlc2NyaXB0b3IqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYVN0cmVhbUNlbnRlcigpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2VudGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgKaW5kZXggNWQ3NTlmZi4uYTA0NmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTM5
LDcgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTdHJlYW07
CitjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3JPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+TWVkaWFTdHJlYW1EZXNjcmlwdG9yT3duZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1FbmRlZCgpID0gMDsKK307CiAKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gewogcHVibGljOgpAQCAtNDgs
OCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKGxhYmVsLCBzb3VyY2VzKSk7CiAgICAgfQogCi0gICAgTWVkaWFTdHJlYW0q
IG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQotICAgIHZvaWQgc2V0T3duZXIoTWVk
aWFTdHJlYW0qIG93bmVyKSB7IG1fb3duZXIgPSBvd25lcjsgfQorICAgIE1lZGlhU3RyZWFtRGVz
Y3JpcHRvck93bmVyKiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKyAgICB2b2lk
IHNldE93bmVyKE1lZGlhU3RyZWFtRGVzY3JpcHRvck93bmVyKiBvd25lcikgeyBtX293bmVyID0g
b3duZXI7IH0KIAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0K
IApAQCAtNjksNyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jb21wb25lbnRzLmFw
cGVuZChNZWRpYVN0cmVhbUNvbXBvbmVudDo6Y3JlYXRlKHNvdXJjZXNbaV0pKTsKICAgICB9CiAK
LSAgICBNZWRpYVN0cmVhbSogbV9vd25lcjsKKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3JPd25l
ciogbV9vd25lcjsKICAgICBTdHJpbmcgbV9sYWJlbDsKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlh
U3RyZWFtQ29tcG9uZW50PiA+IG1fY29tcG9uZW50czsKICAgICBib29sIG1fZW5kZWQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>