<?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>49557</bug_id>
          
          <creation_ts>2010-11-15 12:25:15 -0800</creation_ts>
          <short_desc>Add loadPlatformAudioResource() and decodeAudioFileData() to ChromiumBridge</short_desc>
          <delta_ts>2010-11-23 10:32:19 -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>New Bugs</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>0</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>peter</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>309391</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-15 12:25:15 -0800</bug_when>
    <thetext>Add loadPlatformAudioResource() and decodeAudioFileData() to ChromiumBridge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309396</commentid>
    <comment_count>1</comment_count>
      <attachid>73923</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-15 12:48:25 -0800</bug_when>
    <thetext>Created attachment 73923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309406</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-15 13:11:33 -0800</bug_when>
    <thetext>Attachment 73923 did not build on chromium:
Build output: http://queues.webkit.org/results/5967089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309448</commentid>
    <comment_count>3</comment_count>
      <attachid>73930</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-15 14:25:28 -0800</bug_when>
    <thetext>Created attachment 73930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310453</commentid>
    <comment_count>4</comment_count>
      <attachid>73930</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 12:37:35 -0800</bug_when>
    <thetext>Comment on attachment 73930
Patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310693</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-17 20:57:37 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 73930:

animations/play-state-suspend.html
animations/suspend-resume-animation.html

Please file bugs against the tests.  These tests were authored by cmarrin@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310700</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-17 21:37:59 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 73930:

fast/blockflow/vertical-font-fallback.html
animations/combo-transform-translate+scale.html

Please file bugs against the tests.  These tests were authored by cmarrin@apple.com, darin@apple.com, hyatt@apple.com, ojan@chromium.org, and pol@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310721</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-17 23:11:29 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 73930:

compositing/iframes/overlapped-nested-iframes.html
animations/combo-transform-translate+scale.html

Please file bugs against the tests.  These tests were authored by cmarrin@apple.com, darin@apple.com, ojan@chromium.org, pol@apple.com, and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310726</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-17 23:29:41 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 73930:

compositing/iframes/overlapped-nested-iframes.html
fast/blockflow/vertical-font-fallback.html

Please file bugs against the tests.  These tests were authored by hyatt@apple.com and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310779</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 03:42:49 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 73930:

compositing/iframes/overlapped-nested-iframes.html

Please file bugs against the tests.  These tests were authored by simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310782</commentid>
    <comment_count>10</comment_count>
      <attachid>73930</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 03:55:40 -0800</bug_when>
    <thetext>Comment on attachment 73930
Patch

Clearing flags on attachment: 73930

Committed r72281: &lt;http://trac.webkit.org/changeset/72281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310783</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 03:55:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310795</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-18 04:47:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72281 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312882</commentid>
    <comment_count>13</comment_count>
      <attachid>73930</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-23 09:04:24 -0800</bug_when>
    <thetext>Comment on attachment 73930
Patch

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

&gt; WebKit/chromium/public/WebAudioBus.h:46
&gt; +    ~WebAudioBus();

so any public method of a WebKit API class that is not inline needs to be decorated with WEBKIT_API.
otherwise, it will break the Chromium multi-DLL build if Chromium code tries to call one of these
methods.

now, stepping back... i don&apos;t think you actually intend for Chromium to call the destructor or the
initialize method.  this suggests that they should be hidden from Chromium, so that Chromium cannot
possibly call them.

since your goal is to pass data to Chromium in the scope of a decodeAudioFileData call, I suspect
that you would be better served defining WebAudioBus as an interface, like WebVideoFrame.  then,
in chromium/src/, just define a WebAudioBusImpl class that implements the interface and provides
methods for initialization and releasing the contained AudioBus object.

&gt; WebKit/chromium/public/WebAudioBus.h:63
&gt; +    WebAudioBus(const WebAudioBus&amp; d) : m_private(0) { }

you also want to implement an assignment operator, and it is not necessary
to actually implement this copy constructor since you never intend for anyone
to call it.  you basically want the equivalent of DISALLOW_COPY_AND_ASSIGN
from base/basictypes.h in the Chromium code base.

&gt; WebKit/chromium/public/WebKitClient.h:226
&gt; +    virtual bool decodeAudioFileData(WebAudioBus* destinationBus, const char* audioFileData, size_t dataSize, double sampleRate) { return false; }

since audioFileData is intended to refer to an in-memory audio file, it would be more
consistent with API terminology to not call it a file.  instead, call it a resource.

then, i would suggest naming this method loadAudioResource, which matches up with
loadResource.  (i don&apos;t think it is helpful to include the name &quot;decode&quot; in the
function since there is no way to fetch the undecoded form.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312915</commentid>
    <comment_count>14</comment_count>
      <attachid>73930</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-23 10:32:19 -0800</bug_when>
    <thetext>Comment on attachment 73930
Patch

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

&gt;&gt; WebKit/chromium/public/WebAudioBus.h:46
&gt;&gt; +    ~WebAudioBus();
&gt; 
&gt; so any public method of a WebKit API class that is not inline needs to be decorated with WEBKIT_API.
&gt; otherwise, it will break the Chromium multi-DLL build if Chromium code tries to call one of these
&gt; methods.
&gt; 
&gt; now, stepping back... i don&apos;t think you actually intend for Chromium to call the destructor or the
&gt; initialize method.  this suggests that they should be hidden from Chromium, so that Chromium cannot
&gt; possibly call them.
&gt; 
&gt; since your goal is to pass data to Chromium in the scope of a decodeAudioFileData call, I suspect
&gt; that you would be better served defining WebAudioBus as an interface, like WebVideoFrame.  then,
&gt; in chromium/src/, just define a WebAudioBusImpl class that implements the interface and provides
&gt; methods for initialization and releasing the contained AudioBus object.

Actually, the initialize() method is called from within Chromium.  This is how Chromium passes the decoded PCM audio data back to WebKit.
But, the destructor is not called in Chromium.

If you believe that adding the WEBKIT_API prefix to the destructor and initialize() method is not a good solution, then I&apos;ll have a look at the WebAudioBusImpl as you suggest.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73923</attachid>
            <date>2010-11-15 12:48:25 -0800</date>
            <delta_ts>2010-11-15 14:25:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49557-20101115124824.patch</filename>
            <type>text/plain</type>
            <size>12505</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjAyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMTEtMTUgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbG9hZFBsYXRmb3JtQXVkaW9SZXNvdXJjZSgpIGFuZCBkZWNvZGVBdWRpb0ZpbGVEYXRhKCkg
dG8gQ2hyb21pdW1CcmlkZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5NTU3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQSSBp
cyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2hy
b21pdW1CcmlkZ2UuaDoKKwogMjAxMC0xMS0xNSAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxp
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAkocmV2aXNp
b24gNzE3NzApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAjaWZuZGVmIENocm9taXVtQnJpZGdl
X2gKICNkZWZpbmUgQ2hyb21pdW1CcmlkZ2VfaAogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2VuZGlmCisKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgpAQCAtMjExLDYg
KzIxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlc291cmNlcyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1JbWFnZVJlc291cmNl
KGNvbnN0IGNoYXIqIG5hbWUpOwogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGxvYWRQbGF0Zm9ybUF1ZGlvUmVzb3VyY2UoY29uc3Qg
Y2hhciogbmFtZSwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgICAgICBzdGF0aWMgUGFzc093blB0
cjxBdWRpb0J1cz4gZGVjb2RlQXVkaW9GaWxlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSwgZG91YmxlIHNhbXBsZVJhdGUpOworI2VuZGlmCisKICAgICAgICAgLy8gU2FuZGJveCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAgICAgICAgc3RhdGljIGJvb2wgc2FuZGJveEVuYWJsZWQoKTsKIApJbmRleDogV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MjAyMikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0xMS0xNSAgQ2hyaXMgUm9nZXJzICA8Y3Jv
Z2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBsb2FkUGxhdGZvcm1BdWRpb1Jlc291cmNlKCkgYW5kIGRlY29kZUF1ZGlv
RmlsZURhdGEoKSB0byBDaHJvbWl1bUJyaWRnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk1NTcKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogcHVibGljL1dlYkF1ZGlvQnVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJB
dWRpb0J1czo6V2ViQXVkaW9CdXMpOgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50OjpkZWNvZGVBdWRpb0ZpbGVEYXRhKToKKyAg
ICAgICAgKiBzcmMvQ2hyb21pdW1CcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21p
dW1CcmlkZ2U6OmxvYWRQbGF0Zm9ybUF1ZGlvUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6OmRlY29kZUF1ZGlvRmlsZURhdGEpOgorICAgICAgICAqIHNyYy9XZWJB
dWRpb0J1cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdWRpb0J1czo6fldlYkF1
ZGlvQnVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXVkaW9CdXM6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdWRpb0J1czo6bnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1ZGlvQnVzOjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdWRpb0J1
czo6c2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1ZGlvQnVzOjpjaGFubmVsRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1ZGlvQnVzOjpyZWxlYXNlKToKKwogMjAxMC0xMS0x
NSAgSWx5YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDcxNzcwKQor
KysgV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsx
MDksNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkF0dHJpYnV0ZS5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkF1ZGlvQnVzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQmluZGluZ3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJCbG9iRGF0YS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkJsb2JSZWdpc3RyeS5oJywKQEAgLTM5NCw2ICsz
OTUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViQXR0cmlidXRlLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJBdWRpb0J1cy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmluZGlu
Z3MuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkJsb2JEYXRhLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJDYWNoZS5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJBdWRpb0J1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QXVkaW9CdXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXVk
aW9CdXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViQXVkaW9CdXNfaAorI2RlZmluZSBXZWJBdWRpb0J1c19oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBBdWRpb0J1czsgfQorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBQYXNzT3duUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkF1ZGlvQnVzUHJpdmF0ZTsKKworLy8gQSBjb250YWluZXIgZm9yIG11bHRpLWNoYW5u
ZWwgbGluZWFyIFBDTSBhdWRpbyBkYXRhLgorLy8KKy8vIFdBUk5JTkc6IEl0IGlzIG5vdCBzYWZl
IHRvIHBhc3MgYSBXZWJBdWRpb0J1cyBhY3Jvc3MgdGhyZWFkcyEhIQorLy8KK2NsYXNzIFdlYkF1
ZGlvQnVzIHsKK3B1YmxpYzoKKyAgICBXZWJBdWRpb0J1cygpIDogbV9wcml2YXRlKDApIHsgfQor
ICAgIH5XZWJBdWRpb0J1cygpOworICAgIAorICAgIC8vIGluaXRpYWxpemUoKSBhbGxvY2F0ZXMg
bWVtb3J5IG9mIHRoZSBnaXZlbiBsZW5ndGggZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgY2hhbm5l
bHMuCisgICAgdm9pZCBpbml0aWFsaXplKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBsZW5ndGgsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKworICAgIFdFQktJVF9BUEkgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscygpIGNvbnN0OworICAgIFdFQktJVF9BUEkgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0OworICAgIFdFQktJVF9BUEkgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdDsKKyAgICAK
KyAgICBXRUJLSVRfQVBJIGZsb2F0KiBjaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgp
OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV1RGOjpQYXNzT3duUHRyPFdlYkNv
cmU6OkF1ZGlvQnVzPiByZWxlYXNlKCk7ICAgIAorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgLy8g
Tm9uY29weWFibGUKKyAgICBXZWJBdWRpb0J1cyhjb25zdCBXZWJBdWRpb0J1cyYgZCkgOiBtX3By
aXZhdGUoMCkgeyB9CisgICAgV2ViQXVkaW9CdXNQcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkF1ZGlvQnVzX2gKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAkocmV2aXNpb24gNzE3NzApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaWZuZGVmIFdlYktpdENsaWVudF9oCiAjZGVmaW5lIFdlYktpdENsaWVudF9o
CiAKKyNpbmNsdWRlICJXZWJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2lu
Y2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKQEAgLTIx
OSw2ICsyMjAsMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBibG9iIG9mIGRhdGEgY29y
cmVzcG9uZGluZyB0byB0aGUgbmFtZWQgcmVzb3VyY2UuCiAgICAgdmlydHVhbCBXZWJEYXRhIGxv
YWRSZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiBXZWJEYXRhKCk7IH0KIAorICAg
IC8vIERlY29kZXMgdGhlIGluLW1lbW9yeSBhdWRpbyBmaWxlIGRhdGEgYW5kIHJldHVybnMgdGhl
IGxpbmVhciBQQ00gYXVkaW8gZGF0YSBpbiB0aGUgZGVzdGluYXRpb25CdXMuCisgICAgLy8gQSBz
YW1wbGUtcmF0ZSBjb252ZXJzaW9uIHRvIHNhbXBsZVJhdGUgd2lsbCBvY2N1ciBpZiB0aGUgZmls
ZSBkYXRhIGlzIGF0IGEgZGlmZmVyZW50IHNhbXBsZS1yYXRlLgorICAgIC8vIFJldHVybnMgdHJ1
ZSBvbiBzdWNjZXNzLgorICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVBdWRpb0ZpbGVEYXRhKFdlYkF1
ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgY29uc3QgY2hhciogYXVkaW9GaWxlRGF0YSwgc2l6ZV90
IGRhdGFTaXplLCBkb3VibGUgc2FtcGxlUmF0ZSkgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8v
IFJldHVybnMgYSBsb2NhbGl6ZWQgc3RyaW5nIHJlc291cmNlICh3aXRoIGFuIG9wdGlvbmFsIG51
bWVyaWMKICAgICAvLyBwYXJhbWV0ZXIgdmFsdWUpLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHF1
ZXJ5TG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSkgeyByZXR1cm4gV2Vi
U3RyaW5nKCk7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCShy
ZXZpc2lvbiA3MTc3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdXMuaCIK
ICNpbmNsdWRlICJXZWJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJXZWJDb29raWUuaCIKICNpbmNs
dWRlICJXZWJDb29raWVKYXIuaCIKQEAgLTYxNSw2ICs2MTYsMjcgQEAgUGFzc1JlZlB0cjxJbWFn
ZT4gQ2hyb21pdW1CcmlkZ2U6OmxvYWRQbAogICAgIHJldHVybiBpbWFnZTsKIH0KIAorI2lmIEVO
QUJMRShXRUJfQVVESU8pCisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IENocm9taXVtQnJpZGdlOjps
b2FkUGxhdGZvcm1BdWRpb1Jlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSBzYW1wbGVS
YXRlKQoreworICAgIGNvbnN0IFdlYkRhdGEmIHJlc291cmNlID0gd2ViS2l0Q2xpZW50KCktPmxv
YWRSZXNvdXJjZShuYW1lKTsKKyAgICBpZiAocmVzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gZGVjb2RlQXVkaW9GaWxlRGF0YShyZXNvdXJjZS5k
YXRhKCksIHJlc291cmNlLnNpemUoKSwgc2FtcGxlUmF0ZSk7Cit9CisKK1Bhc3NPd25QdHI8QXVk
aW9CdXM+IENocm9taXVtQnJpZGdlOjpkZWNvZGVBdWRpb0ZpbGVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplLCBkb3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICBXZWJBdWRpb0J1cyB3
ZWJBdWRpb0J1czsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmRlY29kZUF1ZGlvRmlsZURhdGEo
JndlYkF1ZGlvQnVzLCBkYXRhLCBzaXplLCBzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIHdl
YkF1ZGlvQnVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCisKIC8vIFNhbmRib3ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogYm9vbCBDaHJvbWl1bUJy
aWRnZTo6c2FuZGJveEVuYWJsZWQoKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdWRp
b0J1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdWRpb0J1cy5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF1ZGlvQnVzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdXMuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8p
CisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNlbHNlCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBBdWRpb0J1cyB7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQXVk
aW9CdXNQcml2YXRlIDogcHVibGljIEF1ZGlvQnVzIHsKK307CisKK1dlYkF1ZGlvQnVzOjp+V2Vi
QXVkaW9CdXMoKQoreworI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgZGVsZXRlIG1fcHJpdmF0
ZTsKKyAgICBtX3ByaXZhdGUgPSAwOworI2VuZGlmCit9CisKK3ZvaWQgV2ViQXVkaW9CdXM6Omlu
aXRpYWxpemUodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgZG91Ymxl
IHNhbXBsZVJhdGUpCit7ICAgICAgICAKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIEF1ZGlv
QnVzKiBhdWRpb0J1cyA9IG5ldyBBdWRpb0J1cyhudW1iZXJPZkNoYW5uZWxzLCBsZW5ndGgpOwor
ICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpOworCisgICAgaWYgKG1fcHJp
dmF0ZSkKKyAgICAgICAgZGVsZXRlIG1fcHJpdmF0ZTsKKyAgICBtX3ByaXZhdGUgPSBzdGF0aWNf
Y2FzdDxXZWJBdWRpb0J1c1ByaXZhdGUqPihhdWRpb0J1cyk7CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3Vuc2lnbmVkIFdlYkF1ZGlvQnVzOjpudW1iZXJP
ZkNoYW5uZWxzKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIGlmICghbV9w
cml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5udW1iZXJP
ZkNoYW5uZWxzKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK3NpemVfdCBXZWJBdWRpb0J1czo6bGVuZ3RoKCkgY29uc3QKK3sK
KyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sZW5ndGgoKTsKKyNlbHNlCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworZG91YmxlIFdlYkF1
ZGlvQnVzOjpzYW1wbGVSYXRlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAg
IGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5zYW1wbGVSYXRlKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK2Zsb2F0KiBXZWJBdWRpb0J1czo6Y2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQoreworI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgaWYgKCFt
X3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChjaGFubmVsSW5kZXggPCBu
dW1iZXJPZkNoYW5uZWxzKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmNoYW5uZWwoY2hhbm5l
bEluZGV4KS0+ZGF0YSgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKKyNlbmRpZgorfQorCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBXZWJBdWRpb0J1czo6
cmVsZWFzZSgpCit7CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBPd25QdHI8QXVkaW9CdXM+
IGF1ZGlvQnVzKGFkb3B0UHRyKHN0YXRpY19jYXN0PEF1ZGlvQnVzKj4obV9wcml2YXRlKSkpOwor
ICAgIG1fcHJpdmF0ZSA9IDA7CisgICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKKyNlbHNl
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73930</attachid>
            <date>2010-11-15 14:25:28 -0800</date>
            <delta_ts>2010-11-23 10:32:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49557-20101115142527.patch</filename>
            <type>text/plain</type>
            <size>12561</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjAyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMTEtMTUgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbG9hZFBsYXRmb3JtQXVkaW9SZXNvdXJjZSgpIGFuZCBkZWNvZGVBdWRpb0ZpbGVEYXRhKCkg
dG8gQ2hyb21pdW1CcmlkZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5NTU3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQSSBp
cyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2hy
b21pdW1CcmlkZ2UuaDoKKwogMjAxMC0xMS0xNSAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxp
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAkocmV2aXNp
b24gNzE3NzApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAjaWZuZGVmIENocm9taXVtQnJpZGdl
X2gKICNkZWZpbmUgQ2hyb21pdW1CcmlkZ2VfaAogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2VuZGlmCisKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgpAQCAtMjExLDYg
KzIxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlc291cmNlcyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1JbWFnZVJlc291cmNl
KGNvbnN0IGNoYXIqIG5hbWUpOwogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGxvYWRQbGF0Zm9ybUF1ZGlvUmVzb3VyY2UoY29uc3Qg
Y2hhciogbmFtZSwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgICAgICBzdGF0aWMgUGFzc093blB0
cjxBdWRpb0J1cz4gZGVjb2RlQXVkaW9GaWxlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSwgZG91YmxlIHNhbXBsZVJhdGUpOworI2VuZGlmCisKICAgICAgICAgLy8gU2FuZGJveCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAgICAgICAgc3RhdGljIGJvb2wgc2FuZGJveEVuYWJsZWQoKTsKIApJbmRleDogV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MjAyMikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0xMS0xNSAgQ2hyaXMgUm9nZXJzICA8Y3Jv
Z2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBsb2FkUGxhdGZvcm1BdWRpb1Jlc291cmNlKCkgYW5kIGRlY29kZUF1ZGlv
RmlsZURhdGEoKSB0byBDaHJvbWl1bUJyaWRnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk1NTcKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogcHVibGljL1dlYkF1ZGlvQnVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJB
dWRpb0J1czo6V2ViQXVkaW9CdXMpOgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50OjpkZWNvZGVBdWRpb0ZpbGVEYXRhKToKKyAg
ICAgICAgKiBzcmMvQ2hyb21pdW1CcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21p
dW1CcmlkZ2U6OmxvYWRQbGF0Zm9ybUF1ZGlvUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21pdW1CcmlkZ2U6OmRlY29kZUF1ZGlvRmlsZURhdGEpOgorICAgICAgICAqIHNyYy9XZWJB
dWRpb0J1cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdWRpb0J1czo6fldlYkF1
ZGlvQnVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXVkaW9CdXM6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdWRpb0J1czo6bnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1ZGlvQnVzOjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdWRpb0J1
czo6c2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1ZGlvQnVzOjpjaGFubmVsRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1ZGlvQnVzOjpyZWxlYXNlKToKKwogMjAxMC0xMS0x
NSAgSWx5YSBTaGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDcxNzcwKQor
KysgV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsx
MDksNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkF0dHJpYnV0ZS5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkF1ZGlvQnVzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViQmluZGluZ3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJCbG9iRGF0YS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkJsb2JSZWdpc3RyeS5oJywKQEAgLTM5NCw2ICsz
OTUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViQXR0cmlidXRlLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJBdWRpb0J1cy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmluZGlu
Z3MuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkJsb2JEYXRhLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJDYWNoZS5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJBdWRpb0J1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QXVkaW9CdXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXVk
aW9CdXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViQXVkaW9CdXNfaAorI2RlZmluZSBXZWJBdWRpb0J1c19oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBBdWRpb0J1czsgfQorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBQYXNzT3duUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkF1ZGlvQnVzUHJpdmF0ZTsKKworLy8gQSBjb250YWluZXIgZm9yIG11bHRpLWNoYW5u
ZWwgbGluZWFyIFBDTSBhdWRpbyBkYXRhLgorLy8KKy8vIFdBUk5JTkc6IEl0IGlzIG5vdCBzYWZl
IHRvIHBhc3MgYSBXZWJBdWRpb0J1cyBhY3Jvc3MgdGhyZWFkcyEhIQorLy8KK2NsYXNzIFdlYkF1
ZGlvQnVzIHsKK3B1YmxpYzoKKyAgICBXZWJBdWRpb0J1cygpIDogbV9wcml2YXRlKDApIHsgfQor
ICAgIH5XZWJBdWRpb0J1cygpOworICAgIAorICAgIC8vIGluaXRpYWxpemUoKSBhbGxvY2F0ZXMg
bWVtb3J5IG9mIHRoZSBnaXZlbiBsZW5ndGggZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgY2hhbm5l
bHMuCisgICAgdm9pZCBpbml0aWFsaXplKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBsZW5ndGgsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKworICAgIFdFQktJVF9BUEkgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscygpIGNvbnN0OworICAgIFdFQktJVF9BUEkgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0OworICAgIFdFQktJVF9BUEkgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdDsKKyAgICAK
KyAgICBXRUJLSVRfQVBJIGZsb2F0KiBjaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgp
OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV1RGOjpQYXNzT3duUHRyPFdlYkNv
cmU6OkF1ZGlvQnVzPiByZWxlYXNlKCk7ICAgIAorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgLy8g
Tm9uY29weWFibGUKKyAgICBXZWJBdWRpb0J1cyhjb25zdCBXZWJBdWRpb0J1cyYgZCkgOiBtX3By
aXZhdGUoMCkgeyB9CisgICAgV2ViQXVkaW9CdXNQcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkF1ZGlvQnVzX2gKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAkocmV2aXNpb24gNzE3NzApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaWZuZGVmIFdlYktpdENsaWVudF9oCiAjZGVmaW5lIFdlYktpdENsaWVudF9o
CiAKKyNpbmNsdWRlICJXZWJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2lu
Y2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKQEAgLTIx
OSw2ICsyMjAsMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBibG9iIG9mIGRhdGEgY29y
cmVzcG9uZGluZyB0byB0aGUgbmFtZWQgcmVzb3VyY2UuCiAgICAgdmlydHVhbCBXZWJEYXRhIGxv
YWRSZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiBXZWJEYXRhKCk7IH0KIAorICAg
IC8vIERlY29kZXMgdGhlIGluLW1lbW9yeSBhdWRpbyBmaWxlIGRhdGEgYW5kIHJldHVybnMgdGhl
IGxpbmVhciBQQ00gYXVkaW8gZGF0YSBpbiB0aGUgZGVzdGluYXRpb25CdXMuCisgICAgLy8gQSBz
YW1wbGUtcmF0ZSBjb252ZXJzaW9uIHRvIHNhbXBsZVJhdGUgd2lsbCBvY2N1ciBpZiB0aGUgZmls
ZSBkYXRhIGlzIGF0IGEgZGlmZmVyZW50IHNhbXBsZS1yYXRlLgorICAgIC8vIFJldHVybnMgdHJ1
ZSBvbiBzdWNjZXNzLgorICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVBdWRpb0ZpbGVEYXRhKFdlYkF1
ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgY29uc3QgY2hhciogYXVkaW9GaWxlRGF0YSwgc2l6ZV90
IGRhdGFTaXplLCBkb3VibGUgc2FtcGxlUmF0ZSkgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8v
IFJldHVybnMgYSBsb2NhbGl6ZWQgc3RyaW5nIHJlc291cmNlICh3aXRoIGFuIG9wdGlvbmFsIG51
bWVyaWMKICAgICAvLyBwYXJhbWV0ZXIgdmFsdWUpLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHF1
ZXJ5TG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSkgeyByZXR1cm4gV2Vi
U3RyaW5nKCk7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCShy
ZXZpc2lvbiA3MTc3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdXMuaCIK
ICNpbmNsdWRlICJXZWJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJXZWJDb29raWUuaCIKICNpbmNs
dWRlICJXZWJDb29raWVKYXIuaCIKQEAgLTYxNSw2ICs2MTYsMjcgQEAgUGFzc1JlZlB0cjxJbWFn
ZT4gQ2hyb21pdW1CcmlkZ2U6OmxvYWRQbAogICAgIHJldHVybiBpbWFnZTsKIH0KIAorI2lmIEVO
QUJMRShXRUJfQVVESU8pCisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IENocm9taXVtQnJpZGdlOjps
b2FkUGxhdGZvcm1BdWRpb1Jlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSBzYW1wbGVS
YXRlKQoreworICAgIGNvbnN0IFdlYkRhdGEmIHJlc291cmNlID0gd2ViS2l0Q2xpZW50KCktPmxv
YWRSZXNvdXJjZShuYW1lKTsKKyAgICBpZiAocmVzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gZGVjb2RlQXVkaW9GaWxlRGF0YShyZXNvdXJjZS5k
YXRhKCksIHJlc291cmNlLnNpemUoKSwgc2FtcGxlUmF0ZSk7Cit9CisKK1Bhc3NPd25QdHI8QXVk
aW9CdXM+IENocm9taXVtQnJpZGdlOjpkZWNvZGVBdWRpb0ZpbGVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplLCBkb3VibGUgc2FtcGxlUmF0ZSkKK3sKKyAgICBXZWJBdWRpb0J1cyB3
ZWJBdWRpb0J1czsKKyAgICBpZiAod2ViS2l0Q2xpZW50KCktPmRlY29kZUF1ZGlvRmlsZURhdGEo
JndlYkF1ZGlvQnVzLCBkYXRhLCBzaXplLCBzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIHdl
YkF1ZGlvQnVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCisKIC8vIFNhbmRib3ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogYm9vbCBDaHJvbWl1bUJy
aWRnZTo6c2FuZGJveEVuYWJsZWQoKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdWRp
b0J1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdWRpb0J1cy5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF1ZGlvQnVzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdXMuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8p
CisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNlbHNlCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBBdWRpb0J1cyB7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCisKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJBdWRp
b0J1c1ByaXZhdGUgOiBwdWJsaWMgQXVkaW9CdXMgeworfTsKKworV2ViQXVkaW9CdXM6On5XZWJB
dWRpb0J1cygpCit7CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBkZWxldGUgbV9wcml2YXRl
OworICAgIG1fcHJpdmF0ZSA9IDA7CisjZW5kaWYKK30KKwordm9pZCBXZWJBdWRpb0J1czo6aW5p
dGlhbGl6ZSh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBkb3VibGUg
c2FtcGxlUmF0ZSkKK3sgICAgICAgIAorI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgQXVkaW9C
dXMqIGF1ZGlvQnVzID0gbmV3IEF1ZGlvQnVzKG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCk7Cisg
ICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSk7CisKKyAgICBpZiAobV9wcml2
YXRlKQorICAgICAgICBkZWxldGUgbV9wcml2YXRlOworICAgIG1fcHJpdmF0ZSA9IHN0YXRpY19j
YXN0PFdlYkF1ZGlvQnVzUHJpdmF0ZSo+KGF1ZGlvQnVzKTsKKyNlbHNlCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordW5zaWduZWQgV2ViQXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMoKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgaWYgKCFtX3By
aXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3ByaXZhdGUtPm51bWJlck9m
Q2hhbm5lbHMoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworc2l6ZV90IFdlYkF1ZGlvQnVzOjpsZW5ndGgoKSBjb25zdAorewor
I2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxlbmd0aCgpOworI2Vsc2UKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitkb3VibGUgV2ViQXVk
aW9CdXM6OnNhbXBsZVJhdGUoKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3ByaXZhdGUt
PnNhbXBsZVJhdGUoKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KKworZmxvYXQqIFdlYkF1ZGlvQnVzOjpjaGFubmVsRGF0YSh1bnNp
Z25lZCBjaGFubmVsSW5kZXgpCit7CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBpZiAoIW1f
cHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKGNoYW5uZWxJbmRleCA8IG51
bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2hhbm5lbChjaGFubmVs
SW5kZXgpLT5kYXRhKCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IFdlYkF1ZGlvQnVzOjpy
ZWxlYXNlKCkKK3sKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIE93blB0cjxBdWRpb0J1cz4g
YXVkaW9CdXMoYWRvcHRQdHIoc3RhdGljX2Nhc3Q8QXVkaW9CdXMqPihtX3ByaXZhdGUpKSk7Cisg
ICAgbV9wcml2YXRlID0gMDsKKyAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOworI2Vsc2UK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>