<?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>102525</bug_id>
          
          <creation_ts>2012-11-16 08:54:14 -0800</creation_ts>
          <short_desc>[Chromium] Remove the dependency of INPUT_TYPE_COLOR on PAGE_POPUP</short_desc>
          <delta_ts>2012-11-19 14:23:17 -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>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Garcia">miguelg</reporter>
          <assigned_to name="Miguel Garcia">miguelg</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>peter</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>769330</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-16 08:54:14 -0800</bug_when>
    <thetext>Remove the dependency of INPUT_TYPE_COLOR on PAGE_POPUP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769331</commentid>
    <comment_count>1</comment_count>
      <attachid>174702</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-16 08:57:25 -0800</bug_when>
    <thetext>Created attachment 174702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769447</commentid>
    <comment_count>2</comment_count>
      <attachid>174702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 10:52:41 -0800</bug_when>
    <thetext>Comment on attachment 174702
Patch

Attachment 174702 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14860341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770558</commentid>
    <comment_count>3</comment_count>
      <attachid>174938</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 03:31:49 -0800</bug_when>
    <thetext>Created attachment 174938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770560</commentid>
    <comment_count>4</comment_count>
      <attachid>174938</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 03:34:39 -0800</bug_when>
    <thetext>Comment on attachment 174938
Patch

Attachment 174938 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14911153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770561</commentid>
    <comment_count>5</comment_count>
      <attachid>174939</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 03:37:23 -0800</bug_when>
    <thetext>Created attachment 174939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770589</commentid>
    <comment_count>6</comment_count>
      <attachid>174946</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 04:17:47 -0800</bug_when>
    <thetext>Created attachment 174946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770592</commentid>
    <comment_count>7</comment_count>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 04:21:39 -0800</bug_when>
    <thetext>Adding a few folks from the discussion on 

https://bugs.webkit.org/show_bug.cgi?id=102404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770665</commentid>
    <comment_count>8</comment_count>
      <attachid>174946</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-19 06:23:01 -0800</bug_when>
    <thetext>Comment on attachment 174946
Patch

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:41
&gt; +#if ENABLE(PAGE_POPUP)
&gt; +#include &quot;ColorChooserPopupUIController.h&quot;

nit: I prefer NOT wrapping a header inclusion with #if-#endif.  Other reviewers might have a different preference.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:692
&gt; +    ColorChooserUIController* controller;
&gt; +#if ENABLE(PAGE_POPUP)
&gt; +    controller = new ColorChooserPopupUIController(this, chooserClient);
&gt; +#else
&gt; +    controller = new ColorChooserUIController(this, chooserClient);

Do not use a raw pointer here.

OwnPtr&lt;ColorChooserUIController&gt; controller;
controller = adoptPtr(new ...);
controller-&gt;openUI();
return controller.release();

&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp:30
&gt; +

nit: blank line is not needed.

&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp:40
&gt; +

ditto.

&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:29
&gt; +

ditto.

&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:32
&gt; +

ditto.

&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:41
&gt; +namespace WebKit {
&gt; +class ColorChooserPopupUIController : public ColorChooserUIController, public WebCore::PagePopupClient  {

nit: add a blank line before &quot;class&quot;

&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:63
&gt; +    void closePopup();
&gt; +    ChromeClientImpl* m_chromeClient;

nit: add a blank line between functions and data members.

&gt; Source/WebKit/chromium/src/ColorChooserUIController.h:63
&gt; +    OwnPtr&lt;WebColorChooser&gt; m_chooser;
&gt; +private:

nit: add a blank line before &quot;private:&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770751</commentid>
    <comment_count>9</comment_count>
      <attachid>174982</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 07:48:12 -0800</bug_when>
    <thetext>Created attachment 174982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770752</commentid>
    <comment_count>10</comment_count>
      <attachid>174983</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 07:50:50 -0800</bug_when>
    <thetext>Created attachment 174983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770757</commentid>
    <comment_count>11</comment_count>
      <attachid>174946</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 07:54:42 -0800</bug_when>
    <thetext>Comment on attachment 174946
Patch

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

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:41
&gt;&gt; +#include &quot;ColorChooserPopupUIController.h&quot;
&gt; 
&gt; nit: I prefer NOT wrapping a header inclusion with #if-#endif.  Other reviewers might have a different preference.

I&apos;d rather leave it as is if you are ok since this file already has #if - #endif for other headers.

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:692
&gt;&gt; +    controller = new ColorChooserUIController(this, chooserClient);
&gt; 
&gt; Do not use a raw pointer here.
&gt; 
&gt; OwnPtr&lt;ColorChooserUIController&gt; controller;
&gt; controller = adoptPtr(new ...);
&gt; controller-&gt;openUI();
&gt; return controller.release();

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp:30
&gt;&gt; +
&gt; 
&gt; nit: blank line is not needed.

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp:40
&gt;&gt; +
&gt; 
&gt; ditto.

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:29
&gt;&gt; +
&gt; 
&gt; ditto.

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:32
&gt;&gt; +
&gt; 
&gt; ditto.

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:41
&gt;&gt; +class ColorChooserPopupUIController : public ColorChooserUIController, public WebCore::PagePopupClient  {
&gt; 
&gt; nit: add a blank line before &quot;class&quot;

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserPopupUIController.h:63
&gt;&gt; +    ChromeClientImpl* m_chromeClient;
&gt; 
&gt; nit: add a blank line between functions and data members.

Done

&gt;&gt; Source/WebKit/chromium/src/ColorChooserUIController.h:63
&gt;&gt; +private:
&gt; 
&gt; nit: add a blank line before &quot;private:&quot;.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770759</commentid>
    <comment_count>12</comment_count>
      <attachid>174986</attachid>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 07:55:23 -0800</bug_when>
    <thetext>Created attachment 174986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770763</commentid>
    <comment_count>13</comment_count>
    <who name="Miguel Garcia">miguelg</who>
    <bug_when>2012-11-19 08:07:01 -0800</bug_when>
    <thetext>Thanks for the review Kent! I addressed your comments I think it&apos;s ready for another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771010</commentid>
    <comment_count>14</comment_count>
      <attachid>174986</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-11-19 14:04:41 -0800</bug_when>
    <thetext>Comment on attachment 174986
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771024</commentid>
    <comment_count>15</comment_count>
      <attachid>174986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 14:23:13 -0800</bug_when>
    <thetext>Comment on attachment 174986
Patch

Clearing flags on attachment: 174986

Committed r135197: &lt;http://trac.webkit.org/changeset/135197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771025</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 14:23:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174702</attachid>
            <date>2012-11-16 08:57:25 -0800</date>
            <delta_ts>2012-11-19 03:31:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121116165520.patch</filename>
            <type>text/plain</type>
            <size>20581</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmRlYzBkMDFlOWI1Njg4
NTgxYTBmNzU1OWQ5MTkwMzYyNGE4NDEwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTItMTEtMTYgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgSU5QVVRfVFlQRV9D
T0xPUiBvbiBQQUdFX1BPUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBIYXZpbmcgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyIGluaGVyaXQgZnJvbSBQ
YWdlUG9wdXBDbGllbnQgaW50cm9kdWNlcworICAgICAgICBhbiB1bndhbnRlZCBkZXBlbmRlbmN5
IG9uIHRoZSBQQUdFX1BPUFVQLiBTb21lIHBsYXRmb3JtcworICAgICAgICAoYW5kcm9pZCBmb3Ig
ZXhhbXBsZSkgd291bGQgbGlrZSB0byBpbXBsZW1lbnQgSU5QVVRfVFlQRV9DT0xPUgorICAgICAg
ICBidXQgbm90IFBBR0VfUE9QVVAgKGZvciBub3cgYXQgbGVhc3QpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBzaW5jZSB0aGlzIGlzIG5vdCBhZGRpbmcgYW55IGV4dHJhIGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9v
c2VyKToKKyAgICAgICAgKiBzcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRy
b2xsZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9v
c2VyUG9wdXBVSUNvbnRyb2xsZXI6OkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6On5Db2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclBvcHVw
VUlDb250cm9sbGVyOjpvcGVuVUkpOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6OmVuZENob29zZXIpOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJQb3B1
cFVJQ29udHJvbGxlcjo6Y29udGVudFNpemUpOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcjo6d3JpdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpsb2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpD
b2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKToKKyAg
ICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6OmRpZENsb3NlUG9w
dXApOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6b3Bl
blBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
OmNsb3NlUG9wdXApOgorICAgICAgICAqIHNyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxl
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJV
SUNvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29sb3JDaG9vc2Vy
UG9wdXBVSUNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9Db2xvckNob29zZXJVSUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OkNvbG9y
Q2hvb3NlclVJQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29u
dHJvbGxlcjo6b3BlblVJKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZW5kQ2hvb3Nlcik6CisgICAgICAgICogc3JjL0NvbG9y
Q2hvb3NlclVJQ29udHJvbGxlci5oOgorICAgICAgICAoQ29sb3JDaG9vc2VyVUlDb250cm9sbGVy
KToKKwogMjAxMi0xMS0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVXNlIGNvcnJlY3QgdW5zY2FsZWQgZG9jdW1lbnQgc2l6ZSB3aGVuIGNhbGN1bGF0
aW5nIHNjYWxlIGxpbWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDQ3NjBjN2Zl
NjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmM2OGUxY2FlNzM2NmRjMjQyMDg2YmI2
MjBmY2FhZTg5YzE5NjQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM2Miw2
ICszNjIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9Db2xv
ckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvQ29s
b3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Db2xv
ckNob29zZXJVSUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0NvbG9yQ2hv
b3NlclVJQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAnc3JjL0NvbXBvc2l0aW9uVW5k
ZXJsaW5lQnVpbGRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAKaW5kZXggMmIzYTVjMjg3NGVhZDU2NWVlMjM2MGIxNThkNDdkOTk2M2Jk
OGE2MC4uMzViYjAyMDVmZmE1YTFlNGI0ZjRhMGZkNmYyMDg2M2YzNDFlODY0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTM3LDgg
KzM3LDEyIEBACiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAjaW5jbHVkZSAiQ29sb3JD
aG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCisjaWYgRU5BQkxFKFBB
R0VfUE9QVVApCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCIKKyNl
bHNlCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgiCiAjZW5kaWYKKyNlbmRp
ZgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJE
YXRhYmFzZVRyYWNrZXIuaCIKQEAgLTY4MSw3ICs2ODUsMTQgQEAgdm9pZCBDaHJvbWVDbGllbnRJ
bXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwg
aW50NjQKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NPd25QdHI8Q29sb3JDaG9v
c2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xp
ZW50KiBjaG9vc2VyQ2xpZW50LCBjb25zdCBDb2xvciYpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3NlckNsaWVudCkpOworICAg
IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciogY29udHJvbGxlcjsKKyNpZiBFTkFCTEUoUEFHRV9Q
T1BVUCkKKyAgICBjb250cm9sbGVyID0gbmV3IENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVy
KHRoaXMsIGNob29zZXJDbGllbnQpOworIyBlbHNlCisgICAgY29udHJvbGxlciA9IG5ldyBDb2xv
ckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3NlckNsaWVudCk7CisjZW5kaWYKKyAgICBj
b250cm9sbGVyLT5vcGVuVUkoKTsKKyAgICByZXR1cm4gYWRvcHRQdHIoY29udHJvbGxlcik7CiB9
CiBQYXNzT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlV2Vi
Q29sb3JDaG9vc2VyKFdlYkNvbG9yQ2hvb3NlckNsaWVudCogY2hvb3NlckNsaWVudCwgY29uc3Qg
V2ViQ29sb3ImIGluaXRpYWxDb2xvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMmUxNWZhMTM2YjRhNzYyMmVmNTU4MjMxZWJkMWE0Mzg0MTc5N2ZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmgiCisKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCisKKyNpbmNsdWRlICJD
aHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCisjaW5j
bHVkZSAiQ29sb3JTdWdnZXN0aW9uUGlja2VyLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNs
dWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXIuaCIKKyNpbmNs
dWRlICJXZWJWaWV3SW1wbC5oIgorCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEtlZXAgaW4gc3luYyB3aXRoIEFjdGlv
bnMgaW4gY29sb3JTdWdnZXN0aW9uUGlja2VyLmpzLgorZW51bSBDb2xvclBpY2tlclBvcHVwQWN0
aW9uIHsKKyAgICBDb2xvclBpY2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvciA9IC0yLAor
ICAgIENvbG9yUGlja2VyUG9wdXBBY3Rpb25DYW5jZWwgPSAtMSwKKyAgICBDb2xvclBpY2tlclBv
cHVwQWN0aW9uU2V0VmFsdWUgPSAwCit9OworCitDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxl
cjo6Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21l
Q2xpZW50LCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IENvbG9yQ2hvb3NlclVJ
Q29udHJvbGxlcihjaHJvbWVDbGllbnQsIGNsaWVudCkKKyAgICAsIG1fY2hyb21lQ2xpZW50KGNo
cm9tZUNsaWVudCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcG9wdXAoMCkKKyAg
ICAsIG1fbG9jYWxlKExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpKQoreworfQorCitDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcjo6fkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKCkKK3sK
K30KKwordm9pZCBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6b3BlblVJKCkKK3sKKyAg
ICBpZiAobV9jbGllbnQtPnNob3VsZFNob3dTdWdnZXN0aW9ucygpKQorICAgICAgICBvcGVuUG9w
dXAoKTsKKyAgICBlbHNlCisgICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKK30KKwordm9pZCBD
b2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2Nob29z
ZXIpCisgICAgICAgIG1fY2hvb3Nlci0+ZW5kQ2hvb3NlcigpOworICAgIGlmIChtX3BvcHVwKQor
ICAgICAgICBjbG9zZVBvcHVwKCk7Cit9CisKK0ludFNpemUgQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXI6OmNvbnRlbnRTaXplKCkKK3sKKyAgICByZXR1cm4gSW50U2l6ZSgwLCAwKTsKK30K
Kwordm9pZCBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6d3JpdGVEb2N1bWVudChEb2N1
bWVudFdyaXRlciYgd3JpdGVyKQoreworICAgIFZlY3RvcjxDb2xvcj4gc3VnZ2VzdGlvbnMgPSBt
X2NsaWVudC0+c3VnZ2VzdGlvbnMoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFs
dWVzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7IGkr
KykKKyAgICAgICAgc3VnZ2VzdGlvblZhbHVlcy5hcHBlbmQoc3VnZ2VzdGlvbnNbaV0uc2VyaWFs
aXplZCgpKTsKKyAgICBJbnRSZWN0IGFuY2hvclJlY3RJblNjcmVlbiA9IG1fY2hyb21lQ2xpZW50
LT5yb290Vmlld1RvU2NyZWVuKG1fY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmll
dygpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KG1f
Y2hyb21lQ2xpZW50LT53ZWJWaWV3KCkpLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Cisg
ICAgSW50UmVjdCByb290Vmlld1Zpc2libGVDb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250
ZW50UmVjdCh0cnVlIC8qIGluY2x1ZGUgc2Nyb2xsYmFycyAqLyk7CisgICAgSW50UmVjdCByb290
Vmlld1JlY3RJblNjcmVlbiA9IG1fY2hyb21lQ2xpZW50LT5yb290Vmlld1RvU2NyZWVuKHJvb3RW
aWV3VmlzaWJsZUNvbnRlbnRSZWN0KTsKKworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5n
KCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwg
d3JpdGVyKTsKKyAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVvZihwaWNr
ZXJDb21tb25Dc3MpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShjb2xvclN1Z2dlc3Rpb25QaWNrZXJD
c3MsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJDc3MpKTsKKyAgICBQYWdlUG9wdXBDbGll
bnQ6OmFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcu
Li48L2Rpdj48c2NyaXB0PlxuIgorICAgICAgICAid2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9IHtc
biIsIHdyaXRlcik7CisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgidmFsdWVzIiwg
c3VnZ2VzdGlvblZhbHVlcywgd3JpdGVyKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3Bl
cnR5KCJvdGhlckNvbG9yTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXpl
ZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6Ok90aGVyQ29sb3JMYWJlbCksIHdyaXRlcik7Cisg
ICAgYWRkUHJvcGVydHkoImFuY2hvclJlY3RJblNjcmVlbiIsIGFuY2hvclJlY3RJblNjcmVlbiwg
d3JpdGVyKTsKKyAgICBhZGRQcm9wZXJ0eSgicm9vdFZpZXdSZWN0SW5TY3JlZW4iLCByb290Vmll
d1JlY3RJblNjcmVlbiwgd3JpdGVyKTsKKyNpZiBPUyhNQUNfT1NfWCkKKyAgICBhZGRQcm9wZXJ0
eSgiY29uZmluZVRvUm9vdFZpZXciLCB0cnVlLCB3cml0ZXIpOworI2Vsc2UKKyAgICBhZGRQcm9w
ZXJ0eSgiY29uZmluZVRvUm9vdFZpZXciLCBmYWxzZSwgd3JpdGVyKTsKKyNlbmRpZgorICAgIFBh
Z2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCJ9O1xuIiwgd3JpdGVyKTsKKyAgICB3cml0ZXIuYWRk
RGF0YShwaWNrZXJDb21tb25Kcywgc2l6ZW9mKHBpY2tlckNvbW1vbkpzKSk7CisgICAgd3JpdGVy
LmFkZERhdGEoY29sb3JTdWdnZXN0aW9uUGlja2VySnMsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25Q
aWNrZXJKcykpOworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2Jv
ZHk+XG4iLCB3cml0ZXIpOworfQorCitMb2NhbGUmIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9s
bGVyOjpsb2NhbGUoKQoreworICAgIHJldHVybiAqbV9sb2NhbGU7Cit9CisKK3ZvaWQgQ29sb3JD
aG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFs
dWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCit7CisgICAgQVNTRVJUKG1fcG9wdXApOwor
ICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgaWYgKG51bVZhbHVlID09IENvbG9yUGlja2VyUG9w
dXBBY3Rpb25TZXRWYWx1ZSkKKyAgICAgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKENvbG9y
KHN0cmluZ1ZhbHVlKSk7CisgICAgaWYgKG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rp
b25DaG9vc2VPdGhlckNvbG9yKQorICAgICAgICBvcGVuQ29sb3JDaG9vc2VyKCk7CisgICAgY2xv
c2VQb3B1cCgpOworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpkaWRD
bG9zZVBvcHVwKCkKK3sKKyAgICBtX3BvcHVwID0gMDsKKworICAgIGlmICghbV9jaG9vc2VyKQor
ICAgICAgICBkaWRFbmRDaG9vc2VyKCk7Cit9CisKKwordm9pZCBDb2xvckNob29zZXJQb3B1cFVJ
Q29udHJvbGxlcjo6b3BlblBvcHVwKCkKK3sKKyAgICBBU1NFUlQoIW1fcG9wdXApOworICAgIG1f
cG9wdXAgPSBtX2Nocm9tZUNsaWVudC0+b3BlblBhZ2VQb3B1cCh0aGlzLCBtX2NsaWVudC0+ZWxl
bWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9w
dXBVSUNvbnRyb2xsZXI6OmNsb3NlUG9wdXAoKQoreworICAgIGlmICghbV9wb3B1cCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fY2hyb21lQ2xpZW50LT5jbG9zZVBhZ2VQb3B1cChtX3BvcHVwKTsK
K30KKworfQorI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoUEFH
RV9QT1BVUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hv
b3NlclBvcHVwVUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xv
ckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMTQ1MGE5NmIzZjE1YjRh
YmNhMmQ0Y2E2NjJkYTNhYjNhZTQ1NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworI2lmbmRlZiBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9oCisjZGVm
aW5lIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKKworI2luY2x1ZGUgIkNvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorCisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvckNob29z
ZXJDbGllbnQ7CitjbGFzcyBQYWdlUG9wdXA7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIgOiBwdWJsaWMgQ29sb3JDaG9vc2VyVUlD
b250cm9sbGVyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50ICB7CisKK3B1YmxpYzoK
KyAgICBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiwgV2Vi
Q29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyUG9w
dXBVSUNvbnRyb2xsZXIoKTsKKworICAgIC8vIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciBmdW5j
dGlvbnM6CisgICAgdmlydHVhbCB2b2lkIG9wZW5VSSgpIE9WRVJSSURFOworCisgICAgLy8gQ29s
b3JDaG9vc2VyIGZ1bmN0aW9ucworICAgIHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURFOworCisg
ICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1
bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG9w
ZW5Qb3B1cCgpOworICAgIHZvaWQgY2xvc2VQb3B1cCgpOworICAgIENocm9tZUNsaWVudEltcGwq
IG1fY2hyb21lQ2xpZW50OworICAgIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogbV9jbGll
bnQ7CisgICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOworICAgIE93blB0cjxXZWJDb3Jl
OjpMb2NhbGU+IG1fbG9jYWxlOworfTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKKworI2VuZGlmIC8vIENvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCmluZGV4IDU3ODk2OTFlOGQ3NTFiYWEwOGZh
ZTI4NWMwYWViMTE1OGQ0YTgzMTcuLmUyOTYxNDA3ZTJlNWM1NjhkN2QwNzFkMDM4N2Q5ZTc1OWVi
NDAwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JD
aG9vc2VyVUlDb250cm9sbGVyLmNwcApAQCAtMzEsNDQgKzMxLDI5IEBACiAjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9v
c2VyQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ29sb3JTdWdnZXN0aW9uUGlja2VyLmgiCi0jaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKICNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXIuaCIKLSNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgotI2luY2x1ZGUgPHB1YmxpYy9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb2xvci5oPgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJMb2NhbGl6ZWRTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi0vLyBLZWVwIGluIHN5bmMgd2l0aCBBY3Rpb25zIGluIGNvbG9y
U3VnZ2VzdGlvblBpY2tlci5qcy4KLWVudW0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbiB7Ci0gICAg
Q29sb3JQaWNrZXJQb3B1cEFjdGlvbkNob29zZU90aGVyQ29sb3IgPSAtMiwKLSAgICBDb2xvclBp
Y2tlclBvcHVwQWN0aW9uQ2FuY2VsID0gLTEsCi0gICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvblNl
dFZhbHVlID0gMAotfTsKIAogQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpDb2xvckNob29zZXJV
SUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50LCBDb2xvckNob29zZXJD
bGllbnQqIGNsaWVudCkKICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcG9wdXAoMCkKLSAgICAsIG1fbG9jYWxlKExvY2Fs
ZTo6Y3JlYXRlRGVmYXVsdCgpKQogewotICAgIGlmIChtX2NsaWVudC0+c2hvdWxkU2hvd1N1Z2dl
c3Rpb25zKCkpCi0gICAgICAgIG9wZW5Qb3B1cCgpOwotICAgIGVsc2UKLSAgICAgICAgb3BlbkNv
bG9yQ2hvb3NlcigpOwogfQogCiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6On5Db2xvckNob29z
ZXJVSUNvbnRyb2xsZXIoKQogewogfQogCit2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6
b3BlblVJKCkKK3sKKyAgICBvcGVuQ29sb3JDaG9vc2VyKCk7Cit9CisKIHZvaWQgQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
ICAgICBBU1NFUlQobV9jaG9vc2VyKTsKQEAgLTc5LDggKzY0LDYgQEAgdm9pZCBDb2xvckNob29z
ZXJVSUNvbnRyb2xsZXI6OmVuZENob29zZXIoKQogewogICAgIGlmIChtX2Nob29zZXIpCiAgICAg
ICAgIG1fY2hvb3Nlci0+ZW5kQ2hvb3NlcigpOwotICAgIGlmIChtX3BvcHVwKQotICAgICAgICBj
bG9zZVBvcHVwKCk7CiB9CiAKIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpkaWRDaG9v
c2VDb2xvcihjb25zdCBXZWJDb2xvciYgY29sb3IpCkBAIC05Niw3OSArNzksNiBAQCB2b2lkIENv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZGlkRW5kQ2hvb3NlcigpCiAgICAgbV9jbGllbnQtPmRp
ZEVuZENob29zZXIoKTsKIH0KIAotSW50U2l6ZSBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmNv
bnRlbnRTaXplKCkKLXsKLSAgICByZXR1cm4gSW50U2l6ZSgwLCAwKTsKLX0KLQotdm9pZCBDb2xv
ckNob29zZXJVSUNvbnRyb2xsZXI6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRl
cikKLXsKLSAgICBWZWN0b3I8Q29sb3I+IHN1Z2dlc3Rpb25zID0gbV9jbGllbnQtPnN1Z2dlc3Rp
b25zKCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvblZhbHVlczsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyBpKyspCi0gICAgICAgIHN1Z2dl
c3Rpb25WYWx1ZXMuYXBwZW5kKHN1Z2dlc3Rpb25zW2ldLnNlcmlhbGl6ZWQoKSk7Ci0gICAgSW50
UmVjdCBhbmNob3JSZWN0SW5TY3JlZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVl
bihtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7Ci0gICAgRnJhbWVW
aWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihtX2Nocm9tZUNsaWVudC0+d2Vi
VmlldygpKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAgIEludFJlY3Qgcm9vdFZp
ZXdWaXNpYmxlQ29udGVudFJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBp
bmNsdWRlIHNjcm9sbGJhcnMgKi8pOwotICAgIEludFJlY3Qgcm9vdFZpZXdSZWN0SW5TY3JlZW4g
PSBtX2Nocm9tZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVlbihyb290Vmlld1Zpc2libGVDb250ZW50
UmVjdCk7Ci0gICAgCi0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwhRE9DVFlQRSBo
dG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0ZXIpOwotICAg
IHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKHBpY2tlckNvbW1vbkNzcykp
OwotICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcywgc2l6ZW9mKGNv
bG9yU3VnZ2VzdGlvblBpY2tlckNzcykpOwotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5n
KCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+TG9hZGluZy4uLjwvZGl2PjxzY3Jp
cHQ+XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aW5kb3cuZGlh
bG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKLSAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFBy
b3BlcnR5KCJ2YWx1ZXMiLCBzdWdnZXN0aW9uVmFsdWVzLCB3cml0ZXIpOyAgICAgICAKLSAgICBQ
YWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJvdGhlckNvbG9yTGFiZWwiLCBQbGF0Zm9ybTo6
Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6Ok90aGVy
Q29sb3JMYWJlbCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImFuY2hvclJlY3RJblNjcmVl
biIsIGFuY2hvclJlY3RJblNjcmVlbiwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgicm9vdFZp
ZXdSZWN0SW5TY3JlZW4iLCByb290Vmlld1JlY3RJblNjcmVlbiwgd3JpdGVyKTsKLSNpZiBPUyhN
QUNfT1NfWCkKLSAgICBhZGRQcm9wZXJ0eSgiY29uZmluZVRvUm9vdFZpZXciLCB0cnVlLCB3cml0
ZXIpOwotI2Vsc2UKLSAgICBhZGRQcm9wZXJ0eSgiY29uZmluZVRvUm9vdFZpZXciLCBmYWxzZSwg
d3JpdGVyKTsKLSNlbmRpZgotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCJ9O1xuIiwg
d3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Kcywgc2l6ZW9mKHBpY2tl
ckNvbW1vbkpzKSk7Ci0gICAgd3JpdGVyLmFkZERhdGEoY29sb3JTdWdnZXN0aW9uUGlja2VySnMs
IHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcykpOwotICAgIFBhZ2VQb3B1cENsaWVudDo6
YWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQotCi1Mb2NhbGUmIENv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6bG9jYWxlKCkKLXsKLSAgICByZXR1cm4gKm1fbG9jYWxl
OwotfQotCi12b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6c2V0VmFsdWVBbmRDbG9zZVBv
cHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKLXsKLSAgICBBU1NF
UlQobV9wb3B1cCk7Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBpZiAobnVtVmFsdWUgPT0g
Q29sb3JQaWNrZXJQb3B1cEFjdGlvblNldFZhbHVlKQotICAgICAgICBtX2NsaWVudC0+ZGlkQ2hv
b3NlQ29sb3IoQ29sb3Ioc3RyaW5nVmFsdWUpKTsKLSAgICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQ
aWNrZXJQb3B1cEFjdGlvbkNob29zZU90aGVyQ29sb3IpCi0gICAgICAgIG9wZW5Db2xvckNob29z
ZXIoKTsKLSAgICBjbG9zZVBvcHVwKCk7Ci19Ci0KLXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9s
bGVyOjpkaWRDbG9zZVBvcHVwKCkKLXsKLSAgICBtX3BvcHVwID0gMDsKLQotICAgIGlmICghbV9j
aG9vc2VyKQotICAgICAgICBkaWRFbmRDaG9vc2VyKCk7Ci19Ci0KLXZvaWQgQ29sb3JDaG9vc2Vy
VUlDb250cm9sbGVyOjpvcGVuUG9wdXAoKQotewotICAgIEFTU0VSVCghbV9wb3B1cCk7Ci0gICAg
bV9wb3B1cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVuUGFnZVBvcHVwKHRoaXMsIG1fY2xpZW50LT5l
bGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJV
SUNvbnRyb2xsZXI6OmNsb3NlUG9wdXAoKQotewotICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fY2hyb21lQ2xpZW50LT5jbG9zZVBhZ2VQb3B1cChtX3BvcHVwKTsKLX0K
LQogdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6Om9wZW5Db2xvckNob29zZXIoKQogewog
ICAgIEFTU0VSVCghbV9jaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgKaW5kZXggNjBjZWNmZTE4ZjI5NzE2YjU5
N2FlMDI1Mzk3NzE1ODgyMTM3OTgxZS4uNzgzZTA3ZGUwNzM0M2UwYTNkM2Y4OWQwZjRmMTQxNTRi
YjkwZDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JD
aG9vc2VyVUlDb250cm9sbGVyLmgKQEAgLTI5LDE1ICsyOSwxMiBAQAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCi0jaW5jbHVkZSAiUGFn
ZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJX
ZWJDb2xvckNob29zZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3JD
aG9vc2VyQ2xpZW50OwotY2xhc3MgUGFnZVBvcHVwOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTQ1LDExICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIENocm9tZUNsaWVu
dEltcGw7CiBjbGFzcyBXZWJDb2xvckNob29zZXI7CiAKLWNsYXNzIENvbG9yQ2hvb3NlclVJQ29u
dHJvbGxlciA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpD
b2xvckNob29zZXIsIHB1YmxpYyBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQgeworY2xhc3MgQ29s
b3JDaG9vc2VyVUlDb250cm9sbGVyIDogcHVibGljIFdlYkNvbG9yQ2hvb3NlckNsaWVudCwgcHVi
bGljIFdlYkNvcmU6OkNvbG9yQ2hvb3NlciB7CiBwdWJsaWM6CiAgICAgQ29sb3JDaG9vc2VyVUlD
b250cm9sbGVyKENocm9tZUNsaWVudEltcGwqLCBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQq
KTsKICAgICB2aXJ0dWFsIH5Db2xvckNob29zZXJVSUNvbnRyb2xsZXIoKTsKIAorICAgIHZpcnR1
YWwgdm9pZCBvcGVuVUkoKTsKKwogICAgIC8vIENvbG9yQ2hvb3NlciBmdW5jdGlvbnM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURFOwpAQCAtNTgsMjMg
KzU3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
V2ViQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kQ2hvb3NlcigpIE9W
RVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIG9wZW5Qb3B1cCgpOwotICAgIHZvaWQgY2xvc2VQb3B1cCgpOworcHJvdGVjdGVk
OgogICAgIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcigpOworICAgIE93blB0cjxXZWJDb2xvckNob29z
ZXI+IG1fY2hvb3NlcjsKK3ByaXZhdGU6CiAKICAgICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9t
ZUNsaWVudDsKICAgICBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqIG1fY2xpZW50OwotICAg
IE93blB0cjxXZWJDb2xvckNob29zZXI+IG1fY2hvb3NlcjsKLSAgICBXZWJDb3JlOjpQYWdlUG9w
dXAqIG1fcG9wdXA7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkxvY2FsZT4gbV9sb2NhbGU7CiB9Owog
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174938</attachid>
            <date>2012-11-19 03:31:49 -0800</date>
            <delta_ts>2012-11-19 03:37:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121119112940.patch</filename>
            <type>text/plain</type>
            <size>10402</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmJmYWZjNDc2ZTRkZjdl
OGZjZGUzNmVjMGFlZGQyNTFlOTI2NDZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTkgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgSU5QVVRfVFlQRV9D
T0xPUiBvbiBQQUdFX1BPUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJTlBVVF9UWVBFX0NPTE9SIHNob3VsZCBub3QgZGVwZW5kIG9uIFBBR0VfUE9Q
VVAsIHdpdGggdGhpcyBjaGFuZ2Ugd2UgYWxsb3cgcGxhdGZvcm1zIGxpa2UgYW5kcm9pZCB0byBp
bXBsZW1lbnQgdGhlIGZvcm1lciB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgbGF0dGVyLgorCisg
ICAgICAgIFRlc3RlZCBieSBjb21waWxpbmcgY2hyb21pdW0gd2l0aCBhbmQgd2l0aG91dCBFTkFC
TEVfUEFHRV9QT1BVUCBhbmQgbWFkZSBzdXJlIHRoYXQgZm9ybXMgd2l0aCBpbnB1dCB0eXBlIGNv
bG9yIHdvdWxkIGxvYWQgaW4gYm90aCBjYXNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6Cisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAqIHNyYy9Db2xvckNo
b29zZXJVSUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblVJKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZW5kQ2hvb3Nlcik6CisgICAg
ICAgICogc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oOgorICAgICAgICAoQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyKToKKwogMjAxMi0xMS0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGNvcnJlY3QgdW5zY2FsZWQgZG9jdW1lbnQgc2l6
ZSB3aGVuIGNhbGN1bGF0aW5nIHNjYWxlIGxpbWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmM2OGUxY2Fl
NzM2NmRjMjQyMDg2YmI2MjBmY2FhZTg5YzE5NjQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTM2Miw2ICszNjIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGF0ZVRpbWVD
aG9vc2VySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbXBvc2l0aW9uVW5kZXJsaW5lQnVpbGRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMmIzYTVjMjg3NGVhZDU2NWVlMjM2
MGIxNThkNDdkOTk2M2JkOGE2MC4uMzViYjAyMDVmZmE1YTFlNGI0ZjRhMGZkNmYyMDg2M2YzNDFl
ODY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKQEAgLTM3LDggKzM3LDEyIEBACiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAj
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50Lmgi
CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIuaCIKKyNlbHNlCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgi
CiAjZW5kaWYKKyNlbmRpZgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTY4MSw3ICs2ODUsMTQgQEAgdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjQKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NP
d25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2VyQ2xpZW50LCBjb25zdCBDb2xvciYpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3Nl
ckNsaWVudCkpOworICAgIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciogY29udHJvbGxlcjsKKyNp
ZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBjb250cm9sbGVyID0gbmV3IENvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyKHRoaXMsIGNob29zZXJDbGllbnQpOworIyBlbHNlCisgICAgY29udHJv
bGxlciA9IG5ldyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3NlckNsaWVudCk7
CisjZW5kaWYKKyAgICBjb250cm9sbGVyLT5vcGVuVUkoKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
Y29udHJvbGxlcik7CiB9CiBQYXNzT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50
SW1wbDo6Y3JlYXRlV2ViQ29sb3JDaG9vc2VyKFdlYkNvbG9yQ2hvb3NlckNsaWVudCogY2hvb3Nl
ckNsaWVudCwgY29uc3QgV2ViQ29sb3ImIGluaXRpYWxDb2xvcikKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDU3ODk2OTFlOGQ3NTFiYWEwOGZhZTI4NWMwYWViMTE1OGQ0YTgzMTcuLmUyOTYxNDA3ZTJl
NWM1NjhkN2QwNzFkMDM4N2Q5ZTc1OWViNDAwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmNwcApAQCAtMzEsNDQg
KzMxLDI5IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ29sb3JTdWdn
ZXN0aW9uUGlja2VyLmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSW50UmVj
dC5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJQaWNrZXJDb21t
b24uaCIKICNpbmNsdWRlICJXZWJDb2xvckNob29zZXIuaCIKLSNpbmNsdWRlICJXZWJWaWV3SW1w
bC5oIgotI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b2xvci5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBLZWVwIGluIHN5
bmMgd2l0aCBBY3Rpb25zIGluIGNvbG9yU3VnZ2VzdGlvblBpY2tlci5qcy4KLWVudW0gQ29sb3JQ
aWNrZXJQb3B1cEFjdGlvbiB7Ci0gICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNob29zZU90aGVy
Q29sb3IgPSAtMiwKLSAgICBDb2xvclBpY2tlclBvcHVwQWN0aW9uQ2FuY2VsID0gLTEsCi0gICAg
Q29sb3JQaWNrZXJQb3B1cEFjdGlvblNldFZhbHVlID0gMAotfTsKIAogQ29sb3JDaG9vc2VyVUlD
b250cm9sbGVyOjpDb2xvckNob29zZXJVSUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCogY2hy
b21lQ2xpZW50LCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2hyb21lQ2xp
ZW50KGNocm9tZUNsaWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcG9wdXAo
MCkKLSAgICAsIG1fbG9jYWxlKExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpKQogewotICAgIGlmICht
X2NsaWVudC0+c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkpCi0gICAgICAgIG9wZW5Qb3B1cCgpOwot
ICAgIGVsc2UKLSAgICAgICAgb3BlbkNvbG9yQ2hvb3NlcigpOwogfQogCiBDb2xvckNob29zZXJV
SUNvbnRyb2xsZXI6On5Db2xvckNob29zZXJVSUNvbnRyb2xsZXIoKQogewogfQogCit2b2lkIENv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblVJKCkKK3sKKyAgICBvcGVuQ29sb3JDaG9vc2Vy
KCk7Cit9CisKIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpzZXRTZWxlY3RlZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBBU1NFUlQobV9jaG9vc2VyKTsKQEAgLTc5LDgg
KzY0LDYgQEAgdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmVuZENob29zZXIoKQogewog
ICAgIGlmIChtX2Nob29zZXIpCiAgICAgICAgIG1fY2hvb3Nlci0+ZW5kQ2hvb3NlcigpOwotICAg
IGlmIChtX3BvcHVwKQotICAgICAgICBjbG9zZVBvcHVwKCk7CiB9CiAKIHZvaWQgQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb2xvciYgY29sb3IpCkBA
IC05Niw3OSArNzksNiBAQCB2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZGlkRW5kQ2hv
b3NlcigpCiAgICAgbV9jbGllbnQtPmRpZEVuZENob29zZXIoKTsKIH0KIAotSW50U2l6ZSBDb2xv
ckNob29zZXJVSUNvbnRyb2xsZXI6OmNvbnRlbnRTaXplKCkKLXsKLSAgICByZXR1cm4gSW50U2l6
ZSgwLCAwKTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OndyaXRlRG9jdW1l
bnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKLXsKLSAgICBWZWN0b3I8Q29sb3I+IHN1Z2dlc3Rp
b25zID0gbV9jbGllbnQtPnN1Z2dlc3Rpb25zKCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2Vz
dGlvblZhbHVlczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6
ZSgpOyBpKyspCi0gICAgICAgIHN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHN1Z2dlc3Rpb25zW2ld
LnNlcmlhbGl6ZWQoKSk7Ci0gICAgSW50UmVjdCBhbmNob3JSZWN0SW5TY3JlZW4gPSBtX2Nocm9t
ZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVlbihtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRv
Um9vdFZpZXcoKSk7Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0lt
cGwqPihtX2Nocm9tZUNsaWVudC0+d2ViVmlldygpKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmll
dygpOwotICAgIEludFJlY3Qgcm9vdFZpZXdWaXNpYmxlQ29udGVudFJlY3QgPSB2aWV3LT52aXNp
YmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJhcnMgKi8pOwotICAgIEludFJl
Y3Qgcm9vdFZpZXdSZWN0SW5TY3JlZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVl
bihyb290Vmlld1Zpc2libGVDb250ZW50UmVjdCk7Ci0gICAgCi0gICAgUGFnZVBvcHVwQ2xpZW50
OjphZGRTdHJpbmcoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48
c3R5bGU+XG4iLCB3cml0ZXIpOwotICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkNzcywg
c2l6ZW9mKHBpY2tlckNvbW1vbkNzcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2Vz
dGlvblBpY2tlckNzcywgc2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcykpOwotICAgIFBh
Z2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1h
aW4+TG9hZGluZy4uLjwvZGl2PjxzY3JpcHQ+XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKLSAg
ICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJ2YWx1ZXMiLCBzdWdnZXN0aW9uVmFsdWVz
LCB3cml0ZXIpOyAgICAgICAKLSAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJvdGhl
ckNvbG9yTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhX
ZWJMb2NhbGl6ZWRTdHJpbmc6Ok90aGVyQ29sb3JMYWJlbCksIHdyaXRlcik7Ci0gICAgYWRkUHJv
cGVydHkoImFuY2hvclJlY3RJblNjcmVlbiIsIGFuY2hvclJlY3RJblNjcmVlbiwgd3JpdGVyKTsK
LSAgICBhZGRQcm9wZXJ0eSgicm9vdFZpZXdSZWN0SW5TY3JlZW4iLCByb290Vmlld1JlY3RJblNj
cmVlbiwgd3JpdGVyKTsKLSNpZiBPUyhNQUNfT1NfWCkKLSAgICBhZGRQcm9wZXJ0eSgiY29uZmlu
ZVRvUm9vdFZpZXciLCB0cnVlLCB3cml0ZXIpOwotI2Vsc2UKLSAgICBhZGRQcm9wZXJ0eSgiY29u
ZmluZVRvUm9vdFZpZXciLCBmYWxzZSwgd3JpdGVyKTsKLSNlbmRpZgotICAgIFBhZ2VQb3B1cENs
aWVudDo6YWRkU3RyaW5nKCJ9O1xuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNr
ZXJDb21tb25Kcywgc2l6ZW9mKHBpY2tlckNvbW1vbkpzKSk7Ci0gICAgd3JpdGVyLmFkZERhdGEo
Y29sb3JTdWdnZXN0aW9uUGlja2VySnMsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcykp
OwotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3
cml0ZXIpOwotfQotCi1Mb2NhbGUmIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6bG9jYWxlKCkK
LXsKLSAgICByZXR1cm4gKm1fbG9jYWxlOwotfQotCi12b2lkIENvbG9yQ2hvb3NlclVJQ29udHJv
bGxlcjo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBz
dHJpbmdWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvblNldFZhbHVlKQot
ICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoQ29sb3Ioc3RyaW5nVmFsdWUpKTsKLSAg
ICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNob29zZU90aGVyQ29sb3Ip
Ci0gICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKLSAgICBjbG9zZVBvcHVwKCk7Ci19Ci0KLXZv
aWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpkaWRDbG9zZVBvcHVwKCkKLXsKLSAgICBtX3Bv
cHVwID0gMDsKLQotICAgIGlmICghbV9jaG9vc2VyKQotICAgICAgICBkaWRFbmRDaG9vc2VyKCk7
Ci19Ci0KLXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVuUG9wdXAoKQotewotICAg
IEFTU0VSVCghbV9wb3B1cCk7Ci0gICAgbV9wb3B1cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVuUGFn
ZVBvcHVwKHRoaXMsIG1fY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsK
LX0KLQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmNsb3NlUG9wdXAoKQotewotICAg
IGlmICghbV9wb3B1cCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2hyb21lQ2xpZW50LT5jbG9z
ZVBhZ2VQb3B1cChtX3BvcHVwKTsKLX0KLQogdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6
Om9wZW5Db2xvckNob29zZXIoKQogewogICAgIEFTU0VSVCghbV9jaG9vc2VyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgK
aW5kZXggNjBjZWNmZTE4ZjI5NzE2YjU5N2FlMDI1Mzk3NzE1ODgyMTM3OTgxZS4uNzgzZTA3ZGUw
NzM0M2UwYTNkM2Y4OWQwZjRmMTQxNTRiYjkwZDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgKQEAgLTI5LDE1ICsy
OSwxMiBAQAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCiAjaW5jbHVkZSAiQ29sb3JD
aG9vc2VyLmgiCi0jaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Mb2NhbGUuaCIKICNpbmNsdWRlICJXZWJDb2xvckNob29zZXJDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OwotY2xhc3MgUGFnZVBvcHVwOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1LDExICs0MiwxMyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIENocm9tZUNsaWVudEltcGw7CiBjbGFzcyBXZWJDb2xvckNob29zZXI7CiAK
LWNsYXNzIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJD
bGllbnQsIHB1YmxpYyBXZWJDb3JlOjpDb2xvckNob29zZXIsIHB1YmxpYyBXZWJDb3JlOjpQYWdl
UG9wdXBDbGllbnQgeworY2xhc3MgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyIDogcHVibGljIFdl
YkNvbG9yQ2hvb3NlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OkNvbG9yQ2hvb3NlciB7CiBwdWJs
aWM6CiAgICAgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyKENocm9tZUNsaWVudEltcGwqLCBXZWJD
b3JlOjpDb2xvckNob29zZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db2xvckNob29zZXJVSUNv
bnRyb2xsZXIoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBvcGVuVUkoKTsKKwogICAgIC8vIENvbG9y
Q2hvb3NlciBmdW5jdGlvbnM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29u
c3QgV2ViQ29yZTo6Q29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3Nl
cigpIE9WRVJSSURFOwpAQCAtNTgsMjMgKzU3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRW5kQ2hvb3NlcigpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50
IGZ1bmN0aW9uczoKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudFNpemUoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVu
dFdyaXRlciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxlJiBsb2NhbGUo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlUG9wdXAo
KSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIG9wZW5Qb3B1cCgpOwotICAgIHZvaWQg
Y2xvc2VQb3B1cCgpOworcHJvdGVjdGVkOgogICAgIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcigpOwor
ICAgIE93blB0cjxXZWJDb2xvckNob29zZXI+IG1fY2hvb3NlcjsKK3ByaXZhdGU6CiAKICAgICBD
aHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKICAgICBXZWJDb3JlOjpDb2xvckNob29z
ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIE93blB0cjxXZWJDb2xvckNob29zZXI+IG1fY2hvb3Nl
cjsKLSAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG1fcG9wdXA7Ci0gICAgT3duUHRyPFdlYkNvcmU6
OkxvY2FsZT4gbV9sb2NhbGU7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174939</attachid>
            <date>2012-11-19 03:37:23 -0800</date>
            <delta_ts>2012-11-19 04:17:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121119113513.patch</filename>
            <type>text/plain</type>
            <size>19517</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmJmYWZjNDc2ZTRkZjdl
OGZjZGUzNmVjMGFlZGQyNTFlOTI2NDZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTkgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgSU5QVVRfVFlQRV9D
T0xPUiBvbiBQQUdFX1BPUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJTlBVVF9UWVBFX0NPTE9SIHNob3VsZCBub3QgZGVwZW5kIG9uIFBBR0VfUE9Q
VVAsIHdpdGggdGhpcyBjaGFuZ2Ugd2UgYWxsb3cgcGxhdGZvcm1zIGxpa2UgYW5kcm9pZCB0byBp
bXBsZW1lbnQgdGhlIGZvcm1lciB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgbGF0dGVyLgorCisg
ICAgICAgIFRlc3RlZCBieSBjb21waWxpbmcgY2hyb21pdW0gd2l0aCBhbmQgd2l0aG91dCBFTkFC
TEVfUEFHRV9QT1BVUCBhbmQgbWFkZSBzdXJlIHRoYXQgZm9ybXMgd2l0aCBpbnB1dCB0eXBlIGNv
bG9yIHdvdWxkIGxvYWQgaW4gYm90aCBjYXNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6Cisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAqIHNyYy9Db2xvckNo
b29zZXJVSUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblVJKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZW5kQ2hvb3Nlcik6CisgICAg
ICAgICogc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oOgorICAgICAgICAoQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyKToKKwogMjAxMi0xMS0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGNvcnJlY3QgdW5zY2FsZWQgZG9jdW1lbnQgc2l6
ZSB3aGVuIGNhbGN1bGF0aW5nIHNjYWxlIGxpbWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmM2OGUxY2Fl
NzM2NmRjMjQyMDg2YmI2MjBmY2FhZTg5YzE5NjQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTM2Miw2ICszNjIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGF0ZVRpbWVD
aG9vc2VySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbXBvc2l0aW9uVW5kZXJsaW5lQnVpbGRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMmIzYTVjMjg3NGVhZDU2NWVlMjM2
MGIxNThkNDdkOTk2M2JkOGE2MC4uYmE4ZGFiMzI0N2NkMDg4OWMxNDAyMjU5MDcxZmM5MDMwNWVi
ZmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKQEAgLTM3LDggKzM3LDEyIEBACiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAj
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50Lmgi
CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIuaCIKKyNlbHNlCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgi
CiAjZW5kaWYKKyNlbmRpZgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTY4MSw3ICs2ODUsMTQgQEAgdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjQKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NP
d25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2VyQ2xpZW50LCBjb25zdCBDb2xvciYpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3Nl
ckNsaWVudCkpOworICAgIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciogY29udHJvbGxlcjsKKyNp
ZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBjb250cm9sbGVyID0gbmV3IENvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyKHRoaXMsIGNob29zZXJDbGllbnQpOworI2Vsc2UKKyAgICBjb250cm9s
bGVyID0gbmV3IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcih0aGlzLCBjaG9vc2VyQ2xpZW50KTsK
KyNlbmRpZgorICAgIGNvbnRyb2xsZXItPm9wZW5VSSgpOworICAgIHJldHVybiBhZG9wdFB0cihj
b250cm9sbGVyKTsKIH0KIFBhc3NPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJ
bXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2Vy
Q2xpZW50LCBjb25zdCBXZWJDb2xvciYgaW5pdGlhbENvbG9yKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xs
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJjNWI1ZWE0MzJhYTAzMzFlYWY2MGRmNzY3Nzc2MzEwNTBiZGNk
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNo
b29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIu
aCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkK
KworI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJDb2xvckNob29zZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJDb2xvclN1Z2dlc3Rpb25QaWNrZXIuaCIKKyNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgorI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hv
b3Nlci5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gS2VlcCBpbiBz
eW5jIHdpdGggQWN0aW9ucyBpbiBjb2xvclN1Z2dlc3Rpb25QaWNrZXIuanMuCitlbnVtIENvbG9y
UGlja2VyUG9wdXBBY3Rpb24geworICAgIENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhl
ckNvbG9yID0gLTIsCisgICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNhbmNlbCA9IC0xLAorICAg
IENvbG9yUGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSA9IDAKK307CisKK0NvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyOjpDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcihDaHJvbWVDbGll
bnRJbXBsKiBjaHJvbWVDbGllbnQsIENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50KQorICAgIDog
Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKGNocm9tZUNsaWVudCwgY2xpZW50KQorICAgICwgbV9j
aHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwg
bV9wb3B1cCgwKQorICAgICwgbV9sb2NhbGUoTG9jYWxlOjpjcmVhdGVEZWZhdWx0KCkpCit7Cit9
CisKK0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjp+Q29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIoKQoreworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpv
cGVuVUkoKQoreworICAgIGlmIChtX2NsaWVudC0+c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkpCisg
ICAgICAgIG9wZW5Qb3B1cCgpOworICAgIGVsc2UKKyAgICAgICAgb3BlbkNvbG9yQ2hvb3Nlcigp
OworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjplbmRDaG9vc2VyKCkK
K3sKKyAgICBpZiAobV9jaG9vc2VyKQorICAgICAgICBtX2Nob29zZXItPmVuZENob29zZXIoKTsK
KyAgICBpZiAobV9wb3B1cCkKKyAgICAgICAgY2xvc2VQb3B1cCgpOworfQorCitJbnRTaXplIENv
bG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpjb250ZW50U2l6ZSgpCit7CisgICAgcmV0dXJu
IEludFNpemUoMCwgMCk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICBWZWN0b3I8Q29s
b3I+IHN1Z2dlc3Rpb25zID0gbV9jbGllbnQtPnN1Z2dlc3Rpb25zKCk7CisgICAgVmVjdG9yPFN0
cmluZz4gc3VnZ2VzdGlvblZhbHVlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3Vn
Z2VzdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAgIHN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHN1
Z2dlc3Rpb25zW2ldLnNlcmlhbGl6ZWQoKSk7CisgICAgSW50UmVjdCBhbmNob3JSZWN0SW5TY3Jl
ZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVlbihtX2NsaWVudC0+ZWxlbWVudFJl
Y3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nh
c3Q8V2ViVmlld0ltcGwqPihtX2Nocm9tZUNsaWVudC0+d2ViVmlldygpKS0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+dmlldygpOworICAgIEludFJlY3Qgcm9vdFZpZXdWaXNpYmxlQ29udGVudFJlY3Qg
PSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJhcnMgKi8p
OworICAgIEludFJlY3Qgcm9vdFZpZXdSZWN0SW5TY3JlZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9v
dFZpZXdUb1NjcmVlbihyb290Vmlld1Zpc2libGVDb250ZW50UmVjdCk7CisKKyAgICBQYWdlUG9w
dXBDbGllbnQ6OmFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0n
VVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7CisgICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29t
bW9uQ3NzLCBzaXplb2YocGlja2VyQ29tbW9uQ3NzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoY29s
b3JTdWdnZXN0aW9uUGlja2VyQ3NzLCBzaXplb2YoY29sb3JTdWdnZXN0aW9uUGlja2VyQ3NzKSk7
CisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFkPjxib2R5Pjxk
aXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIKKyAgICAgICAgIndpbmRvdy5k
aWFsb2dBcmd1bWVudHMgPSB7XG4iLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRk
UHJvcGVydHkoInZhbHVlcyIsIHN1Z2dlc3Rpb25WYWx1ZXMsIHdyaXRlcik7CisgICAgUGFnZVBv
cHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgib3RoZXJDb2xvckxhYmVsIiwgUGxhdGZvcm06OmN1cnJl
bnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpPdGhlckNvbG9y
TGFiZWwpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJhbmNob3JSZWN0SW5TY3JlZW4iLCBh
bmNob3JSZWN0SW5TY3JlZW4sIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoInJvb3RWaWV3UmVj
dEluU2NyZWVuIiwgcm9vdFZpZXdSZWN0SW5TY3JlZW4sIHdyaXRlcik7CisjaWYgT1MoTUFDX09T
X1gpCisgICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jvb3RWaWV3IiwgdHJ1ZSwgd3JpdGVyKTsK
KyNlbHNlCisgICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jvb3RWaWV3IiwgZmFsc2UsIHdyaXRl
cik7CisjZW5kaWYKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmluZygifTtcbiIsIHdyaXRl
cik7CisgICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9uSnMsIHNpemVvZihwaWNrZXJDb21t
b25KcykpOworICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlvblBpY2tlckpzLCBzaXpl
b2YoY29sb3JTdWdnZXN0aW9uUGlja2VySnMpKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0
cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVyKTsKK30KKworTG9jYWxlJiBDb2xvckNo
b29zZXJQb3B1cFVJQ29udHJvbGxlcjo6bG9jYWxlKCkKK3sKKyAgICByZXR1cm4gKm1fbG9jYWxl
OworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpzZXRWYWx1ZUFuZENs
b3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQoreworICAg
IEFTU0VSVChtX3BvcHVwKTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGlmIChudW1WYWx1
ZSA9PSBDb2xvclBpY2tlclBvcHVwQWN0aW9uU2V0VmFsdWUpCisgICAgICAgIG1fY2xpZW50LT5k
aWRDaG9vc2VDb2xvcihDb2xvcihzdHJpbmdWYWx1ZSkpOworICAgIGlmIChudW1WYWx1ZSA9PSBD
b2xvclBpY2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvcikKKyAgICAgICAgb3BlbkNvbG9y
Q2hvb3NlcigpOworICAgIGNsb3NlUG9wdXAoKTsKK30KKwordm9pZCBDb2xvckNob29zZXJQb3B1
cFVJQ29udHJvbGxlcjo6ZGlkQ2xvc2VQb3B1cCgpCit7CisgICAgbV9wb3B1cCA9IDA7CisKKyAg
ICBpZiAoIW1fY2hvb3NlcikKKyAgICAgICAgZGlkRW5kQ2hvb3NlcigpOworfQorCisKK3ZvaWQg
Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6Om9wZW5Qb3B1cCgpCit7CisgICAgQVNTRVJU
KCFtX3BvcHVwKTsKKyAgICBtX3BvcHVwID0gbV9jaHJvbWVDbGllbnQtPm9wZW5QYWdlUG9wdXAo
dGhpcywgbV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkpOworfQorCit2
b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpjbG9zZVBvcHVwKCkKK3sKKyAgICBp
ZiAoIW1fcG9wdXApCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQ
YWdlUG9wdXAobV9wb3B1cCk7Cit9CisKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZjE0NTBhOTZiM2YxNWI0YWJjYTJkNGNhNjYyZGEzYWIzYWU0NTYzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRy
b2xsZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgQ29sb3JDaG9vc2VyUG9wdXBV
SUNvbnRyb2xsZXJfaAorI2RlZmluZSBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9oCisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCisKKyNp
bmNsdWRlICJDb2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBD
bGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OworY2xhc3MgUGFnZVBvcHVwOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyIDogcHVi
bGljIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciwgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cENs
aWVudCAgeworCitwdWJsaWM6CisgICAgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIoQ2hy
b21lQ2xpZW50SW1wbCosIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCopOworICAgIHZpcnR1
YWwgfkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKCk7CisKKyAgICAvLyBDb2xvckNob29z
ZXJVSUNvbnRyb2xsZXIgZnVuY3Rpb25zOgorICAgIHZpcnR1YWwgdm9pZCBvcGVuVUkoKSBPVkVS
UklERTsKKworICAgIC8vIENvbG9yQ2hvb3NlciBmdW5jdGlvbnMKKyAgICB2b2lkIGVuZENob29z
ZXIoKSBPVkVSUklERTsKKworICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5jdGlvbnM6CisgICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsZSYgbG9jYWxlKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisKK3By
aXZhdGU6CisgICAgdm9pZCBvcGVuUG9wdXAoKTsKKyAgICB2b2lkIGNsb3NlUG9wdXAoKTsKKyAg
ICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKKyAgICBXZWJDb3JlOjpDb2xvckNo
b29zZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cCogbV9wb3B1cDsK
KyAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKK307Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCisKKyNlbmRp
ZiAvLyBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmNwcAppbmRleCA1
Nzg5NjkxZThkNzUxYmFhMDhmYWUyODVjMGFlYjExNThkNGE4MzE3Li5lMjk2MTQwN2UyZTVjNTY4
ZDdkMDcxZDAzODdkOWU3NTllYjQwMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAKQEAgLTMxLDQ0ICszMSwy
OSBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgotI2luY2x1ZGUgIkNvbG9yU3VnZ2VzdGlv
blBpY2tlci5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIK
LSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgi
CiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyLmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIK
LSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29sb3Iu
aD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gS2VlcCBpbiBzeW5jIHdp
dGggQWN0aW9ucyBpbiBjb2xvclN1Z2dlc3Rpb25QaWNrZXIuanMuCi1lbnVtIENvbG9yUGlja2Vy
UG9wdXBBY3Rpb24gewotICAgIENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNvbG9y
ID0gLTIsCi0gICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNhbmNlbCA9IC0xLAotICAgIENvbG9y
UGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSA9IDAKLX07CiAKIENvbG9yQ2hvb3NlclVJQ29udHJv
bGxlcjo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKENocm9tZUNsaWVudEltcGwqIGNocm9tZUNs
aWVudCwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2Nocm9tZUNsaWVudChj
aHJvbWVDbGllbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvcHVwKDApCi0g
ICAgLCBtX2xvY2FsZShMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKSkKIHsKLSAgICBpZiAobV9jbGll
bnQtPnNob3VsZFNob3dTdWdnZXN0aW9ucygpKQotICAgICAgICBvcGVuUG9wdXAoKTsKLSAgICBl
bHNlCi0gICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKIH0KIAogQ29sb3JDaG9vc2VyVUlDb250
cm9sbGVyOjp+Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKCkKIHsKIH0KIAordm9pZCBDb2xvckNo
b29zZXJVSUNvbnRyb2xsZXI6Om9wZW5VSSgpCit7CisgICAgb3BlbkNvbG9yQ2hvb3NlcigpOwor
fQorCiB2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgQVNTRVJUKG1fY2hvb3Nlcik7CkBAIC03OSw4ICs2NCw2
IEBAIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjplbmRDaG9vc2VyKCkKIHsKICAgICBp
ZiAobV9jaG9vc2VyKQogICAgICAgICBtX2Nob29zZXItPmVuZENob29zZXIoKTsKLSAgICBpZiAo
bV9wb3B1cCkKLSAgICAgICAgY2xvc2VQb3B1cCgpOwogfQogCiB2b2lkIENvbG9yQ2hvb3NlclVJ
Q29udHJvbGxlcjo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQpAQCAtOTYs
NzkgKzc5LDYgQEAgdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmRpZEVuZENob29zZXIo
KQogICAgIG1fY2xpZW50LT5kaWRFbmRDaG9vc2VyKCk7CiB9CiAKLUludFNpemUgQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyOjpjb250ZW50U2l6ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUoMCwg
MCk7Ci19Ci0KLXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjp3cml0ZURvY3VtZW50KERv
Y3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAgVmVjdG9yPENvbG9yPiBzdWdnZXN0aW9ucyA9
IG1fY2xpZW50LT5zdWdnZXN0aW9ucygpOwotICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25W
YWx1ZXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsg
aSsrKQotICAgICAgICBzdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzdWdnZXN0aW9uc1tpXS5zZXJp
YWxpemVkKCkpOwotICAgIEludFJlY3QgYW5jaG9yUmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGll
bnQtPnJvb3RWaWV3VG9TY3JlZW4obV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RW
aWV3KCkpOwotICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4o
bV9jaHJvbWVDbGllbnQtPndlYlZpZXcoKSktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsK
LSAgICBJbnRSZWN0IHJvb3RWaWV3VmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKLSAgICBJbnRSZWN0IHJv
b3RWaWV3UmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJvb3RWaWV3VG9TY3JlZW4ocm9v
dFZpZXdWaXNpYmxlQ29udGVudFJlY3QpOwotICAgIAotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRk
U3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxl
PlxuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVv
ZihwaWNrZXJDb21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjb2xvclN1Z2dlc3Rpb25Q
aWNrZXJDc3MsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJDc3MpKTsKLSAgICBQYWdlUG9w
dXBDbGllbnQ6OmFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxv
YWRpbmcuLi48L2Rpdj48c2NyaXB0PlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7Ci0gICAgUGFn
ZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgidmFsdWVzIiwgc3VnZ2VzdGlvblZhbHVlcywgd3Jp
dGVyKTsgICAgICAgCi0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgib3RoZXJDb2xv
ckxhYmVsIiwgUGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9j
YWxpemVkU3RyaW5nOjpPdGhlckNvbG9yTGFiZWwpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5
KCJhbmNob3JSZWN0SW5TY3JlZW4iLCBhbmNob3JSZWN0SW5TY3JlZW4sIHdyaXRlcik7Ci0gICAg
YWRkUHJvcGVydHkoInJvb3RWaWV3UmVjdEluU2NyZWVuIiwgcm9vdFZpZXdSZWN0SW5TY3JlZW4s
IHdyaXRlcik7Ci0jaWYgT1MoTUFDX09TX1gpCi0gICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jv
b3RWaWV3IiwgdHJ1ZSwgd3JpdGVyKTsKLSNlbHNlCi0gICAgYWRkUHJvcGVydHkoImNvbmZpbmVU
b1Jvb3RWaWV3IiwgZmFsc2UsIHdyaXRlcik7Ci0jZW5kaWYKLSAgICBQYWdlUG9wdXBDbGllbnQ6
OmFkZFN0cmluZygifTtcbiIsIHdyaXRlcik7Ci0gICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29t
bW9uSnMsIHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNvbG9y
U3VnZ2VzdGlvblBpY2tlckpzLCBzaXplb2YoY29sb3JTdWdnZXN0aW9uUGlja2VySnMpKTsKLSAg
ICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVy
KTsKLX0KLQotTG9jYWxlJiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmxvY2FsZSgpCi17Ci0g
ICAgcmV0dXJuICptX2xvY2FsZTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6
OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5n
VmFsdWUpCi17Ci0gICAgQVNTRVJUKG1fcG9wdXApOwotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0g
ICAgaWYgKG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSkKLSAgICAg
ICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKENvbG9yKHN0cmluZ1ZhbHVlKSk7Ci0gICAgaWYg
KG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNvbG9yKQotICAg
ICAgICBvcGVuQ29sb3JDaG9vc2VyKCk7Ci0gICAgY2xvc2VQb3B1cCgpOwotfQotCi12b2lkIENv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9
IDA7Ci0KLSAgICBpZiAoIW1fY2hvb3NlcikKLSAgICAgICAgZGlkRW5kQ2hvb3NlcigpOwotfQot
Ci12b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblBvcHVwKCkKLXsKLSAgICBBU1NF
UlQoIW1fcG9wdXApOwotICAgIG1fcG9wdXAgPSBtX2Nocm9tZUNsaWVudC0+b3BlblBhZ2VQb3B1
cCh0aGlzLCBtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7Ci19Ci0K
LXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpjbG9zZVBvcHVwKCkKLXsKLSAgICBpZiAo
IW1fcG9wdXApCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQYWdl
UG9wdXAobV9wb3B1cCk7Ci19Ci0KIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVu
Q29sb3JDaG9vc2VyKCkKIHsKICAgICBBU1NFUlQoIW1fY2hvb3Nlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCmluZGV4
IDYwY2VjZmUxOGYyOTcxNmI1OTdhZTAyNTM5NzcxNTg4MjEzNzk4MWUuLjc4M2UwN2RlMDczNDNl
MGEzZDNmODlkMGY0ZjE0MTU0YmI5MGQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCkBAIC0yOSwxNSArMjksMTIg
QEAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIAogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nl
ci5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9j
YWxlLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKLWNsYXNzIFBhZ2VQb3B1cDsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NSwxMSArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBDaHJvbWVDbGllbnRJbXBsOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyOwogCi1jbGFz
cyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyQ2xpZW50
LCBwdWJsaWMgV2ViQ29yZTo6Q29sb3JDaG9vc2VyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVw
Q2xpZW50IHsKK2NsYXNzIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciA6IHB1YmxpYyBXZWJDb2xv
ckNob29zZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpDb2xvckNob29zZXIgewogcHVibGljOgog
ICAgIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6
Q29sb3JDaG9vc2VyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyVUlDb250cm9s
bGVyKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlblVJKCk7CisKICAgICAvLyBDb2xvckNob29z
ZXIgZnVuY3Rpb25zOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSBP
VkVSUklERTsKQEAgLTU4LDIzICs1NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENob29zZUNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEVuZENob29zZXIoKSBPVkVSUklERTsKIAotICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5j
dGlvbnM6Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0
ZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsZSYgbG9jYWxlKCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZF
UlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBvcGVuUG9wdXAoKTsKLSAgICB2b2lkIGNsb3Nl
UG9wdXAoKTsKK3Byb3RlY3RlZDoKICAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoKTsKKyAgICBP
d25QdHI8V2ViQ29sb3JDaG9vc2VyPiBtX2Nob29zZXI7Citwcml2YXRlOgogCiAgICAgQ2hyb21l
Q2xpZW50SW1wbCogbV9jaHJvbWVDbGllbnQ7CiAgICAgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xp
ZW50KiBtX2NsaWVudDsKLSAgICBPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBtX2Nob29zZXI7Ci0g
ICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOwotICAgIE93blB0cjxXZWJDb3JlOjpMb2Nh
bGU+IG1fbG9jYWxlOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174946</attachid>
            <date>2012-11-19 04:17:47 -0800</date>
            <delta_ts>2012-11-19 07:54:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121119121537.patch</filename>
            <type>text/plain</type>
            <size>19517</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmJmYWZjNDc2ZTRkZjdl
OGZjZGUzNmVjMGFlZGQyNTFlOTI2NDZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTkgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgSU5QVVRfVFlQRV9D
T0xPUiBvbiBQQUdFX1BPUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJTlBVVF9UWVBFX0NPTE9SIHNob3VsZCBub3QgZGVwZW5kIG9uIFBBR0VfUE9Q
VVAsIHdpdGggdGhpcyBjaGFuZ2Ugd2UgYWxsb3cgcGxhdGZvcm1zIGxpa2UgYW5kcm9pZCB0byBp
bXBsZW1lbnQgdGhlIGZvcm1lciB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgbGF0dGVyLgorCisg
ICAgICAgIFRlc3RlZCBieSBjb21waWxpbmcgY2hyb21pdW0gd2l0aCBhbmQgd2l0aG91dCBFTkFC
TEVfUEFHRV9QT1BVUCBhbmQgbWFkZSBzdXJlIHRoYXQgZm9ybXMgd2l0aCBpbnB1dCB0eXBlIGNv
bG9yIHdvdWxkIGxvYWQgaW4gYm90aCBjYXNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6Cisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAqIHNyYy9Db2xvckNo
b29zZXJVSUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblVJKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZW5kQ2hvb3Nlcik6CisgICAg
ICAgICogc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oOgorICAgICAgICAoQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyKToKKwogMjAxMi0xMS0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGNvcnJlY3QgdW5zY2FsZWQgZG9jdW1lbnQgc2l6
ZSB3aGVuIGNhbGN1bGF0aW5nIHNjYWxlIGxpbWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmM2OGUxY2Fl
NzM2NmRjMjQyMDg2YmI2MjBmY2FhZTg5YzE5NjQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTM2Miw2ICszNjIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGF0ZVRpbWVD
aG9vc2VySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbXBvc2l0aW9uVW5kZXJsaW5lQnVpbGRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMmIzYTVjMjg3NGVhZDU2NWVlMjM2
MGIxNThkNDdkOTk2M2JkOGE2MC4uYmE4ZGFiMzI0N2NkMDg4OWMxNDAyMjU5MDcxZmM5MDMwNWVi
ZmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKQEAgLTM3LDggKzM3LDEyIEBACiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAj
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50Lmgi
CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIuaCIKKyNlbHNlCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgi
CiAjZW5kaWYKKyNlbmRpZgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTY4MSw3ICs2ODUsMTQgQEAgdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjQKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NP
d25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2VyQ2xpZW50LCBjb25zdCBDb2xvciYpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3Nl
ckNsaWVudCkpOworICAgIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciogY29udHJvbGxlcjsKKyNp
ZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBjb250cm9sbGVyID0gbmV3IENvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyKHRoaXMsIGNob29zZXJDbGllbnQpOworI2Vsc2UKKyAgICBjb250cm9s
bGVyID0gbmV3IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcih0aGlzLCBjaG9vc2VyQ2xpZW50KTsK
KyNlbmRpZgorICAgIGNvbnRyb2xsZXItPm9wZW5VSSgpOworICAgIHJldHVybiBhZG9wdFB0cihj
b250cm9sbGVyKTsKIH0KIFBhc3NPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJ
bXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2ViQ29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2Vy
Q2xpZW50LCBjb25zdCBXZWJDb2xvciYgaW5pdGlhbENvbG9yKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xs
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJjNWI1ZWE0MzJhYTAzMzFlYWY2MGRmNzY3Nzc2MzEwNTBiZGNk
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNo
b29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIu
aCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkK
KworI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJDb2xvckNob29zZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJDb2xvclN1Z2dlc3Rpb25QaWNrZXIuaCIKKyNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgorI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hv
b3Nlci5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gS2VlcCBpbiBz
eW5jIHdpdGggQWN0aW9ucyBpbiBjb2xvclN1Z2dlc3Rpb25QaWNrZXIuanMuCitlbnVtIENvbG9y
UGlja2VyUG9wdXBBY3Rpb24geworICAgIENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhl
ckNvbG9yID0gLTIsCisgICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNhbmNlbCA9IC0xLAorICAg
IENvbG9yUGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSA9IDAKK307CisKK0NvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyOjpDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcihDaHJvbWVDbGll
bnRJbXBsKiBjaHJvbWVDbGllbnQsIENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50KQorICAgIDog
Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKGNocm9tZUNsaWVudCwgY2xpZW50KQorICAgICwgbV9j
aHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwg
bV9wb3B1cCgwKQorICAgICwgbV9sb2NhbGUoTG9jYWxlOjpjcmVhdGVEZWZhdWx0KCkpCit7Cit9
CisKK0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjp+Q29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIoKQoreworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpv
cGVuVUkoKQoreworICAgIGlmIChtX2NsaWVudC0+c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkpCisg
ICAgICAgIG9wZW5Qb3B1cCgpOworICAgIGVsc2UKKyAgICAgICAgb3BlbkNvbG9yQ2hvb3Nlcigp
OworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjplbmRDaG9vc2VyKCkK
K3sKKyAgICBpZiAobV9jaG9vc2VyKQorICAgICAgICBtX2Nob29zZXItPmVuZENob29zZXIoKTsK
KyAgICBpZiAobV9wb3B1cCkKKyAgICAgICAgY2xvc2VQb3B1cCgpOworfQorCitJbnRTaXplIENv
bG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpjb250ZW50U2l6ZSgpCit7CisgICAgcmV0dXJu
IEludFNpemUoMCwgMCk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRXcml0ZXImIHdyaXRlcikKK3sKKyAgICBWZWN0b3I8Q29s
b3I+IHN1Z2dlc3Rpb25zID0gbV9jbGllbnQtPnN1Z2dlc3Rpb25zKCk7CisgICAgVmVjdG9yPFN0
cmluZz4gc3VnZ2VzdGlvblZhbHVlczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3Vn
Z2VzdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAgIHN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHN1
Z2dlc3Rpb25zW2ldLnNlcmlhbGl6ZWQoKSk7CisgICAgSW50UmVjdCBhbmNob3JSZWN0SW5TY3Jl
ZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVlbihtX2NsaWVudC0+ZWxlbWVudFJl
Y3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nh
c3Q8V2ViVmlld0ltcGwqPihtX2Nocm9tZUNsaWVudC0+d2ViVmlldygpKS0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+dmlldygpOworICAgIEludFJlY3Qgcm9vdFZpZXdWaXNpYmxlQ29udGVudFJlY3Qg
PSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJhcnMgKi8p
OworICAgIEludFJlY3Qgcm9vdFZpZXdSZWN0SW5TY3JlZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9v
dFZpZXdUb1NjcmVlbihyb290Vmlld1Zpc2libGVDb250ZW50UmVjdCk7CisKKyAgICBQYWdlUG9w
dXBDbGllbnQ6OmFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0n
VVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7CisgICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29t
bW9uQ3NzLCBzaXplb2YocGlja2VyQ29tbW9uQ3NzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoY29s
b3JTdWdnZXN0aW9uUGlja2VyQ3NzLCBzaXplb2YoY29sb3JTdWdnZXN0aW9uUGlja2VyQ3NzKSk7
CisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwvc3R5bGU+PC9oZWFkPjxib2R5Pjxk
aXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlwdD5cbiIKKyAgICAgICAgIndpbmRvdy5k
aWFsb2dBcmd1bWVudHMgPSB7XG4iLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRk
UHJvcGVydHkoInZhbHVlcyIsIHN1Z2dlc3Rpb25WYWx1ZXMsIHdyaXRlcik7CisgICAgUGFnZVBv
cHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgib3RoZXJDb2xvckxhYmVsIiwgUGxhdGZvcm06OmN1cnJl
bnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpPdGhlckNvbG9y
TGFiZWwpLCB3cml0ZXIpOworICAgIGFkZFByb3BlcnR5KCJhbmNob3JSZWN0SW5TY3JlZW4iLCBh
bmNob3JSZWN0SW5TY3JlZW4sIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHkoInJvb3RWaWV3UmVj
dEluU2NyZWVuIiwgcm9vdFZpZXdSZWN0SW5TY3JlZW4sIHdyaXRlcik7CisjaWYgT1MoTUFDX09T
X1gpCisgICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jvb3RWaWV3IiwgdHJ1ZSwgd3JpdGVyKTsK
KyNlbHNlCisgICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jvb3RWaWV3IiwgZmFsc2UsIHdyaXRl
cik7CisjZW5kaWYKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmluZygifTtcbiIsIHdyaXRl
cik7CisgICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9uSnMsIHNpemVvZihwaWNrZXJDb21t
b25KcykpOworICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlvblBpY2tlckpzLCBzaXpl
b2YoY29sb3JTdWdnZXN0aW9uUGlja2VySnMpKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0
cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVyKTsKK30KKworTG9jYWxlJiBDb2xvckNo
b29zZXJQb3B1cFVJQ29udHJvbGxlcjo6bG9jYWxlKCkKK3sKKyAgICByZXR1cm4gKm1fbG9jYWxl
OworfQorCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpzZXRWYWx1ZUFuZENs
b3NlUG9wdXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQoreworICAg
IEFTU0VSVChtX3BvcHVwKTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGlmIChudW1WYWx1
ZSA9PSBDb2xvclBpY2tlclBvcHVwQWN0aW9uU2V0VmFsdWUpCisgICAgICAgIG1fY2xpZW50LT5k
aWRDaG9vc2VDb2xvcihDb2xvcihzdHJpbmdWYWx1ZSkpOworICAgIGlmIChudW1WYWx1ZSA9PSBD
b2xvclBpY2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvcikKKyAgICAgICAgb3BlbkNvbG9y
Q2hvb3NlcigpOworICAgIGNsb3NlUG9wdXAoKTsKK30KKwordm9pZCBDb2xvckNob29zZXJQb3B1
cFVJQ29udHJvbGxlcjo6ZGlkQ2xvc2VQb3B1cCgpCit7CisgICAgbV9wb3B1cCA9IDA7CisKKyAg
ICBpZiAoIW1fY2hvb3NlcikKKyAgICAgICAgZGlkRW5kQ2hvb3NlcigpOworfQorCisKK3ZvaWQg
Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6Om9wZW5Qb3B1cCgpCit7CisgICAgQVNTRVJU
KCFtX3BvcHVwKTsKKyAgICBtX3BvcHVwID0gbV9jaHJvbWVDbGllbnQtPm9wZW5QYWdlUG9wdXAo
dGhpcywgbV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkpOworfQorCit2
b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpjbG9zZVBvcHVwKCkKK3sKKyAgICBp
ZiAoIW1fcG9wdXApCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQ
YWdlUG9wdXAobV9wb3B1cCk7Cit9CisKK30KKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZjE0NTBhOTZiM2YxNWI0YWJjYTJkNGNhNjYyZGEzYWIzYWU0NTYzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRy
b2xsZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgQ29sb3JDaG9vc2VyUG9wdXBV
SUNvbnRyb2xsZXJfaAorI2RlZmluZSBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9oCisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCisKKyNp
bmNsdWRlICJDb2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBD
bGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OworY2xhc3MgUGFnZVBvcHVwOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyIDogcHVi
bGljIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciwgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cENs
aWVudCAgeworCitwdWJsaWM6CisgICAgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIoQ2hy
b21lQ2xpZW50SW1wbCosIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCopOworICAgIHZpcnR1
YWwgfkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKCk7CisKKyAgICAvLyBDb2xvckNob29z
ZXJVSUNvbnRyb2xsZXIgZnVuY3Rpb25zOgorICAgIHZpcnR1YWwgdm9pZCBvcGVuVUkoKSBPVkVS
UklERTsKKworICAgIC8vIENvbG9yQ2hvb3NlciBmdW5jdGlvbnMKKyAgICB2b2lkIGVuZENob29z
ZXIoKSBPVkVSUklERTsKKworICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5jdGlvbnM6CisgICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsZSYgbG9jYWxlKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7CisKK3By
aXZhdGU6CisgICAgdm9pZCBvcGVuUG9wdXAoKTsKKyAgICB2b2lkIGNsb3NlUG9wdXAoKTsKKyAg
ICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKKyAgICBXZWJDb3JlOjpDb2xvckNo
b29zZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6OlBhZ2VQb3B1cCogbV9wb3B1cDsK
KyAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKK307Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxFKFBBR0VfUE9QVVApCisKKyNlbmRp
ZiAvLyBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmNwcAppbmRleCA1
Nzg5NjkxZThkNzUxYmFhMDhmYWUyODVjMGFlYjExNThkNGE4MzE3Li5lMjk2MTQwN2UyZTVjNTY4
ZDdkMDcxZDAzODdkOWU3NTllYjQwMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAKQEAgLTMxLDQ0ICszMSwy
OSBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgotI2luY2x1ZGUgIkNvbG9yU3VnZ2VzdGlv
blBpY2tlci5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIK
LSNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgi
CiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyLmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIK
LSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29sb3Iu
aD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gS2VlcCBpbiBzeW5jIHdp
dGggQWN0aW9ucyBpbiBjb2xvclN1Z2dlc3Rpb25QaWNrZXIuanMuCi1lbnVtIENvbG9yUGlja2Vy
UG9wdXBBY3Rpb24gewotICAgIENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNvbG9y
ID0gLTIsCi0gICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNhbmNlbCA9IC0xLAotICAgIENvbG9y
UGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSA9IDAKLX07CiAKIENvbG9yQ2hvb3NlclVJQ29udHJv
bGxlcjo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKENocm9tZUNsaWVudEltcGwqIGNocm9tZUNs
aWVudCwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2Nocm9tZUNsaWVudChj
aHJvbWVDbGllbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvcHVwKDApCi0g
ICAgLCBtX2xvY2FsZShMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKSkKIHsKLSAgICBpZiAobV9jbGll
bnQtPnNob3VsZFNob3dTdWdnZXN0aW9ucygpKQotICAgICAgICBvcGVuUG9wdXAoKTsKLSAgICBl
bHNlCi0gICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKIH0KIAogQ29sb3JDaG9vc2VyVUlDb250
cm9sbGVyOjp+Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKCkKIHsKIH0KIAordm9pZCBDb2xvckNo
b29zZXJVSUNvbnRyb2xsZXI6Om9wZW5VSSgpCit7CisgICAgb3BlbkNvbG9yQ2hvb3NlcigpOwor
fQorCiB2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgQVNTRVJUKG1fY2hvb3Nlcik7CkBAIC03OSw4ICs2NCw2
IEBAIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjplbmRDaG9vc2VyKCkKIHsKICAgICBp
ZiAobV9jaG9vc2VyKQogICAgICAgICBtX2Nob29zZXItPmVuZENob29zZXIoKTsKLSAgICBpZiAo
bV9wb3B1cCkKLSAgICAgICAgY2xvc2VQb3B1cCgpOwogfQogCiB2b2lkIENvbG9yQ2hvb3NlclVJ
Q29udHJvbGxlcjo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQpAQCAtOTYs
NzkgKzc5LDYgQEAgdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmRpZEVuZENob29zZXIo
KQogICAgIG1fY2xpZW50LT5kaWRFbmRDaG9vc2VyKCk7CiB9CiAKLUludFNpemUgQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyOjpjb250ZW50U2l6ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUoMCwg
MCk7Ci19Ci0KLXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjp3cml0ZURvY3VtZW50KERv
Y3VtZW50V3JpdGVyJiB3cml0ZXIpCi17Ci0gICAgVmVjdG9yPENvbG9yPiBzdWdnZXN0aW9ucyA9
IG1fY2xpZW50LT5zdWdnZXN0aW9ucygpOwotICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25W
YWx1ZXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsg
aSsrKQotICAgICAgICBzdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzdWdnZXN0aW9uc1tpXS5zZXJp
YWxpemVkKCkpOwotICAgIEludFJlY3QgYW5jaG9yUmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGll
bnQtPnJvb3RWaWV3VG9TY3JlZW4obV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RW
aWV3KCkpOwotICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4o
bV9jaHJvbWVDbGllbnQtPndlYlZpZXcoKSktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsK
LSAgICBJbnRSZWN0IHJvb3RWaWV3VmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKLSAgICBJbnRSZWN0IHJv
b3RWaWV3UmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJvb3RWaWV3VG9TY3JlZW4ocm9v
dFZpZXdWaXNpYmxlQ29udGVudFJlY3QpOwotICAgIAotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRk
U3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxl
PlxuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVv
ZihwaWNrZXJDb21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjb2xvclN1Z2dlc3Rpb25Q
aWNrZXJDc3MsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJDc3MpKTsKLSAgICBQYWdlUG9w
dXBDbGllbnQ6OmFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxv
YWRpbmcuLi48L2Rpdj48c2NyaXB0PlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7Ci0gICAgUGFn
ZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgidmFsdWVzIiwgc3VnZ2VzdGlvblZhbHVlcywgd3Jp
dGVyKTsgICAgICAgCi0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgib3RoZXJDb2xv
ckxhYmVsIiwgUGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9j
YWxpemVkU3RyaW5nOjpPdGhlckNvbG9yTGFiZWwpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5
KCJhbmNob3JSZWN0SW5TY3JlZW4iLCBhbmNob3JSZWN0SW5TY3JlZW4sIHdyaXRlcik7Ci0gICAg
YWRkUHJvcGVydHkoInJvb3RWaWV3UmVjdEluU2NyZWVuIiwgcm9vdFZpZXdSZWN0SW5TY3JlZW4s
IHdyaXRlcik7Ci0jaWYgT1MoTUFDX09TX1gpCi0gICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jv
b3RWaWV3IiwgdHJ1ZSwgd3JpdGVyKTsKLSNlbHNlCi0gICAgYWRkUHJvcGVydHkoImNvbmZpbmVU
b1Jvb3RWaWV3IiwgZmFsc2UsIHdyaXRlcik7Ci0jZW5kaWYKLSAgICBQYWdlUG9wdXBDbGllbnQ6
OmFkZFN0cmluZygifTtcbiIsIHdyaXRlcik7Ci0gICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29t
bW9uSnMsIHNpemVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNvbG9y
U3VnZ2VzdGlvblBpY2tlckpzLCBzaXplb2YoY29sb3JTdWdnZXN0aW9uUGlja2VySnMpKTsKLSAg
ICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVy
KTsKLX0KLQotTG9jYWxlJiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmxvY2FsZSgpCi17Ci0g
ICAgcmV0dXJuICptX2xvY2FsZTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6
OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5n
VmFsdWUpCi17Ci0gICAgQVNTRVJUKG1fcG9wdXApOwotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0g
ICAgaWYgKG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSkKLSAgICAg
ICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKENvbG9yKHN0cmluZ1ZhbHVlKSk7Ci0gICAgaWYg
KG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNvbG9yKQotICAg
ICAgICBvcGVuQ29sb3JDaG9vc2VyKCk7Ci0gICAgY2xvc2VQb3B1cCgpOwotfQotCi12b2lkIENv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9
IDA7Ci0KLSAgICBpZiAoIW1fY2hvb3NlcikKLSAgICAgICAgZGlkRW5kQ2hvb3NlcigpOwotfQot
Ci12b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblBvcHVwKCkKLXsKLSAgICBBU1NF
UlQoIW1fcG9wdXApOwotICAgIG1fcG9wdXAgPSBtX2Nocm9tZUNsaWVudC0+b3BlblBhZ2VQb3B1
cCh0aGlzLCBtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7Ci19Ci0K
LXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpjbG9zZVBvcHVwKCkKLXsKLSAgICBpZiAo
IW1fcG9wdXApCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQYWdl
UG9wdXAobV9wb3B1cCk7Ci19Ci0KIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVu
Q29sb3JDaG9vc2VyKCkKIHsKICAgICBBU1NFUlQoIW1fY2hvb3Nlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCmluZGV4
IDYwY2VjZmUxOGYyOTcxNmI1OTdhZTAyNTM5NzcxNTg4MjEzNzk4MWUuLjc4M2UwN2RlMDczNDNl
MGEzZDNmODlkMGY0ZjE0MTU0YmI5MGQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCkBAIC0yOSwxNSArMjksMTIg
QEAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIAogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nl
ci5oIgotI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9j
YWxlLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKLWNsYXNzIFBhZ2VQb3B1cDsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NSwxMSArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBDaHJvbWVDbGllbnRJbXBsOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyOwogCi1jbGFz
cyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyQ2xpZW50
LCBwdWJsaWMgV2ViQ29yZTo6Q29sb3JDaG9vc2VyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVw
Q2xpZW50IHsKK2NsYXNzIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciA6IHB1YmxpYyBXZWJDb2xv
ckNob29zZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpDb2xvckNob29zZXIgewogcHVibGljOgog
ICAgIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6
Q29sb3JDaG9vc2VyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyVUlDb250cm9s
bGVyKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlblVJKCk7CisKICAgICAvLyBDb2xvckNob29z
ZXIgZnVuY3Rpb25zOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSBP
VkVSUklERTsKQEAgLTU4LDIzICs1NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENob29zZUNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEVuZENob29zZXIoKSBPVkVSUklERTsKIAotICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5j
dGlvbnM6Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0
ZXImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsZSYgbG9jYWxlKCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZF
UlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBvcGVuUG9wdXAoKTsKLSAgICB2b2lkIGNsb3Nl
UG9wdXAoKTsKK3Byb3RlY3RlZDoKICAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoKTsKKyAgICBP
d25QdHI8V2ViQ29sb3JDaG9vc2VyPiBtX2Nob29zZXI7Citwcml2YXRlOgogCiAgICAgQ2hyb21l
Q2xpZW50SW1wbCogbV9jaHJvbWVDbGllbnQ7CiAgICAgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xp
ZW50KiBtX2NsaWVudDsKLSAgICBPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBtX2Nob29zZXI7Ci0g
ICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOwotICAgIE93blB0cjxXZWJDb3JlOjpMb2Nh
bGU+IG1fbG9jYWxlOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174982</attachid>
            <date>2012-11-19 07:48:12 -0800</date>
            <delta_ts>2012-11-19 07:50:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121119154602.patch</filename>
            <type>text/plain</type>
            <size>19631</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmJmYWZjNDc2ZTRkZjdl
OGZjZGUzNmVjMGFlZGQyNTFlOTI2NDZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTkgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgSU5QVVRfVFlQRV9D
T0xPUiBvbiBQQUdFX1BPUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJTlBVVF9UWVBFX0NPTE9SIHNob3VsZCBub3QgZGVwZW5kIG9uIFBBR0VfUE9Q
VVAsIHdpdGggdGhpcyBjaGFuZ2Ugd2UgYWxsb3cgcGxhdGZvcm1zIGxpa2UgYW5kcm9pZCB0byBp
bXBsZW1lbnQgdGhlIGZvcm1lciB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgbGF0dGVyLgorCisg
ICAgICAgIFRlc3RlZCBieSBjb21waWxpbmcgY2hyb21pdW0gd2l0aCBhbmQgd2l0aG91dCBFTkFC
TEVfUEFHRV9QT1BVUCBhbmQgbWFkZSBzdXJlIHRoYXQgZm9ybXMgd2l0aCBpbnB1dCB0eXBlIGNv
bG9yIHdvdWxkIGxvYWQgaW4gYm90aCBjYXNlcy4KKworICAgICAgICAqIFdlYktpdC5neXA6Cisg
ICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAqIHNyYy9Db2xvckNo
b29zZXJVSUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OkNv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblVJKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZW5kQ2hvb3Nlcik6CisgICAg
ICAgICogc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oOgorICAgICAgICAoQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyKToKKwogMjAxMi0xMS0xNSAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGNvcnJlY3QgdW5zY2FsZWQgZG9jdW1lbnQgc2l6
ZSB3aGVuIGNhbGN1bGF0aW5nIHNjYWxlIGxpbWl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDQ3NjBjN2ZlNjEyZmViNjMzNDA1Y2I1NGVkMTgyMWIzNWRhOWY2MDUuLmM2OGUxY2Fl
NzM2NmRjMjQyMDg2YmI2MjBmY2FhZTg5YzE5NjQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTM2Miw2ICszNjIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGF0ZVRpbWVD
aG9vc2VySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0NvbXBvc2l0aW9uVW5kZXJsaW5lQnVpbGRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMmIzYTVjMjg3NGVhZDU2NWVlMjM2
MGIxNThkNDdkOTk2M2JkOGE2MC4uZGZmN2RiZmI4YzlhNDc1ZWQ0ZTUwY2JkM2RlYjRlODhiZjM3
ZjgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKQEAgLTM3LDggKzM3LDEyIEBACiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAj
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50Lmgi
CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIuaCIKKyNlbHNlCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgi
CiAjZW5kaWYKKyNlbmRpZgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTY4MSw3ICs2ODUsMTQgQEAgdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjQKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIFBhc3NP
d25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2VyQ2xpZW50LCBjb25zdCBDb2xvciYpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3Nl
ckNsaWVudCkpOworICAgIE93blB0cjxDb2xvckNob29zZXJVSUNvbnRyb2xsZXI+IGNvbnRyb2xs
ZXI7CisjaWYgRU5BQkxFKFBBR0VfUE9QVVApCisgICAgY29udHJvbGxlciA9IGFkb3B0UHRyKG5l
dyBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcih0aGlzLCBjaG9vc2VyQ2xpZW50KSk7Cisj
ZWxzZQorICAgIGNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQ29sb3JDaG9vc2VyVUlDb250cm9s
bGVyKHRoaXMsIGNob29zZXJDbGllbnQpKTsKKyNlbmRpZgorICAgIGNvbnRyb2xsZXItPm9wZW5V
SSgpOworICAgIHJldHVybiBjb250cm9sbGVyLnJlbGVhc2UoKTsKIH0KIFBhc3NPd25QdHI8V2Vi
Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVXZWJDb2xvckNob29zZXIoV2Vi
Q29sb3JDaG9vc2VyQ2xpZW50KiBjaG9vc2VyQ2xpZW50LCBjb25zdCBXZWJDb2xvciYgaW5pdGlh
bENvbG9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JD
aG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZjk4ZjA4NzJk
MTIzMjJlZGJmMjQ1NTIzOGZlMzBiYmU5NjJkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAKQEAg
LTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29s
b3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKKyNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgi
CisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29sb3JTdWdnZXN0
aW9uUGlja2VyLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJQaWNrZXJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXIuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5o
IgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMb2Nh
bGl6ZWRTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisvLyBLZWVwIGluIHN5bmMgd2l0aCBBY3Rpb25zIGluIGNvbG9yU3VnZ2VzdGlv
blBpY2tlci5qcy4KK2VudW0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbiB7CisgICAgQ29sb3JQaWNr
ZXJQb3B1cEFjdGlvbkNob29zZU90aGVyQ29sb3IgPSAtMiwKKyAgICBDb2xvclBpY2tlclBvcHVw
QWN0aW9uQ2FuY2VsID0gLTEsCisgICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvblNldFZhbHVlID0g
MAorfTsKKworQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6OkNvbG9yQ2hvb3NlclBvcHVw
VUlDb250cm9sbGVyKENocm9tZUNsaWVudEltcGwqIGNocm9tZUNsaWVudCwgQ29sb3JDaG9vc2Vy
Q2xpZW50KiBjbGllbnQpCisgICAgOiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIoY2hyb21lQ2xp
ZW50LCBjbGllbnQpCisgICAgLCBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCisgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX3BvcHVwKDApCisgICAgLCBtX2xvY2FsZShMb2NhbGU6
OmNyZWF0ZURlZmF1bHQoKSkKK3sKK30KKworQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
On5Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgQ29sb3JDaG9v
c2VyUG9wdXBVSUNvbnRyb2xsZXI6Om9wZW5VSSgpCit7CisgICAgaWYgKG1fY2xpZW50LT5zaG91
bGRTaG93U3VnZ2VzdGlvbnMoKSkKKyAgICAgICAgb3BlblBvcHVwKCk7CisgICAgZWxzZQorICAg
ICAgICBvcGVuQ29sb3JDaG9vc2VyKCk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXI6OmVuZENob29zZXIoKQoreworICAgIGlmIChtX2Nob29zZXIpCisgICAgICAgIG1f
Y2hvb3Nlci0+ZW5kQ2hvb3NlcigpOworICAgIGlmIChtX3BvcHVwKQorICAgICAgICBjbG9zZVBv
cHVwKCk7Cit9CisKK0ludFNpemUgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6OmNvbnRl
bnRTaXplKCkKK3sKKyAgICByZXR1cm4gSW50U2l6ZSgwLCAwKTsKK30KKwordm9pZCBDb2xvckNo
b29zZXJQb3B1cFVJQ29udHJvbGxlcjo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYgd3Jp
dGVyKQoreworICAgIFZlY3RvcjxDb2xvcj4gc3VnZ2VzdGlvbnMgPSBtX2NsaWVudC0+c3VnZ2Vz
dGlvbnMoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7IGkrKykKKyAgICAgICAgc3Vn
Z2VzdGlvblZhbHVlcy5hcHBlbmQoc3VnZ2VzdGlvbnNbaV0uc2VyaWFsaXplZCgpKTsKKyAgICBJ
bnRSZWN0IGFuY2hvclJlY3RJblNjcmVlbiA9IG1fY2hyb21lQ2xpZW50LT5yb290Vmlld1RvU2Ny
ZWVuKG1fY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KG1fY2hyb21lQ2xpZW50LT53
ZWJWaWV3KCkpLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgSW50UmVjdCByb290
Vmlld1Zpc2libGVDb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlIC8q
IGluY2x1ZGUgc2Nyb2xsYmFycyAqLyk7CisgICAgSW50UmVjdCByb290Vmlld1JlY3RJblNjcmVl
biA9IG1fY2hyb21lQ2xpZW50LT5yb290Vmlld1RvU2NyZWVuKHJvb3RWaWV3VmlzaWJsZUNvbnRl
bnRSZWN0KTsKKworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8IURPQ1RZUEUgaHRt
bD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3JpdGVyKTsKKyAgICB3
cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVvZihwaWNrZXJDb21tb25Dc3MpKTsK
KyAgICB3cml0ZXIuYWRkRGF0YShjb2xvclN1Z2dlc3Rpb25QaWNrZXJDc3MsIHNpemVvZihjb2xv
clN1Z2dlc3Rpb25QaWNrZXJDc3MpKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmluZygi
PC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48L2Rpdj48c2NyaXB0
PlxuIgorICAgICAgICAid2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7Cisg
ICAgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgidmFsdWVzIiwgc3VnZ2VzdGlvblZhbHVl
cywgd3JpdGVyKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJvdGhlckNvbG9y
TGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2Nh
bGl6ZWRTdHJpbmc6Ok90aGVyQ29sb3JMYWJlbCksIHdyaXRlcik7CisgICAgYWRkUHJvcGVydHko
ImFuY2hvclJlY3RJblNjcmVlbiIsIGFuY2hvclJlY3RJblNjcmVlbiwgd3JpdGVyKTsKKyAgICBh
ZGRQcm9wZXJ0eSgicm9vdFZpZXdSZWN0SW5TY3JlZW4iLCByb290Vmlld1JlY3RJblNjcmVlbiwg
d3JpdGVyKTsKKyNpZiBPUyhNQUNfT1NfWCkKKyAgICBhZGRQcm9wZXJ0eSgiY29uZmluZVRvUm9v
dFZpZXciLCB0cnVlLCB3cml0ZXIpOworI2Vsc2UKKyAgICBhZGRQcm9wZXJ0eSgiY29uZmluZVRv
Um9vdFZpZXciLCBmYWxzZSwgd3JpdGVyKTsKKyNlbmRpZgorICAgIFBhZ2VQb3B1cENsaWVudDo6
YWRkU3RyaW5nKCJ9O1xuIiwgd3JpdGVyKTsKKyAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21t
b25Kcywgc2l6ZW9mKHBpY2tlckNvbW1vbkpzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoY29sb3JT
dWdnZXN0aW9uUGlja2VySnMsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcykpOworICAg
IFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIp
OworfQorCitMb2NhbGUmIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpsb2NhbGUoKQor
eworICAgIHJldHVybiAqbV9sb2NhbGU7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXI6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nVmFsdWUpCit7CisgICAgQVNTRVJUKG1fcG9wdXApOworICAgIEFTU0VSVChtX2Ns
aWVudCk7CisgICAgaWYgKG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1
ZSkKKyAgICAgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKENvbG9yKHN0cmluZ1ZhbHVlKSk7
CisgICAgaWYgKG51bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNv
bG9yKQorICAgICAgICBvcGVuQ29sb3JDaG9vc2VyKCk7CisgICAgY2xvc2VQb3B1cCgpOworfQor
Cit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjpkaWRDbG9zZVBvcHVwKCkKK3sK
KyAgICBtX3BvcHVwID0gMDsKKworICAgIGlmICghbV9jaG9vc2VyKQorICAgICAgICBkaWRFbmRD
aG9vc2VyKCk7Cit9CisKKwordm9pZCBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6b3Bl
blBvcHVwKCkKK3sKKyAgICBBU1NFUlQoIW1fcG9wdXApOworICAgIG1fcG9wdXAgPSBtX2Nocm9t
ZUNsaWVudC0+b3BlblBhZ2VQb3B1cCh0aGlzLCBtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2
ZVRvUm9vdFZpZXcoKSk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
OmNsb3NlUG9wdXAoKQoreworICAgIGlmICghbV9wb3B1cCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fY2hyb21lQ2xpZW50LT5jbG9zZVBhZ2VQb3B1cChtX3BvcHVwKTsKK30KKworfQorI2VuZGlm
IC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJ
Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNGIxYTdjZjIyNjE1MTlmZmU1Njk2MmE0NDdmMDdk
OWRjYzc0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lm
bmRlZiBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9oCisjZGVmaW5lIENvbG9yQ2hvb3Nl
clBvcHVwVUlDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKSAmJiBF
TkFCTEUoUEFHRV9QT1BVUCkKKyNpbmNsdWRlICJDb2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKK2NsYXNzIFBh
Z2VQb3B1cDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvbG9yQ2hvb3NlclBv
cHVwVUlDb250cm9sbGVyIDogcHVibGljIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciwgcHVibGlj
IFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCAgeworCitwdWJsaWM6CisgICAgQ29sb3JDaG9vc2Vy
UG9wdXBVSUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCosIFdlYkNvcmU6OkNvbG9yQ2hvb3Nl
ckNsaWVudCopOworICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKCk7
CisKKyAgICAvLyBDb2xvckNob29zZXJVSUNvbnRyb2xsZXIgZnVuY3Rpb25zOgorICAgIHZpcnR1
YWwgdm9pZCBvcGVuVUkoKSBPVkVSUklERTsKKworICAgIC8vIENvbG9yQ2hvb3NlciBmdW5jdGlv
bnMKKyAgICB2b2lkIGVuZENob29zZXIoKSBPVkVSUklERTsKKworICAgIC8vIFBhZ2VQb3B1cENs
aWVudCBmdW5jdGlvbnM6CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXpl
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9j
dW1lbnRXcml0ZXImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsZSYgbG9j
YWxlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChp
bnQsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBv
cHVwKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgdm9pZCBvcGVuUG9wdXAoKTsKKyAgICB2
b2lkIGNsb3NlUG9wdXAoKTsKKyAgICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsK
KyAgICBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYkNvcmU6
OlBhZ2VQb3B1cCogbV9wb3B1cDsKKyAgICBPd25QdHI8V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2Fs
ZTsKK307Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikgJiYgRU5BQkxF
KFBBR0VfUE9QVVApCisKKyNlbmRpZiAvLyBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlD
b250cm9sbGVyLmNwcAppbmRleCA1Nzg5NjkxZThkNzUxYmFhMDhmYWUyODVjMGFlYjExNThkNGE4
MzE3Li43YWIzYzM0ZDRmMjYzNTFhZWYxMjFlZjU3MDIxNjJjMDMwMzA2YmM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxl
ci5jcHAKQEAgLTI3LDQ4ICsyNywzMiBAQAogI2luY2x1ZGUgIkNvbG9yQ2hvb3NlclVJQ29udHJv
bGxlci5oIgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0KICNpbmNsdWRlICJDaHJv
bWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvckNob29z
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJDb2xvclN1Z2dlc3Rpb25QaWNrZXIuaCIKLSNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgotI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkNvbG9y
Q2hvb3Nlci5oIgotI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbG9yLmg+Ci0jaW5jbHVkZSA8cHVibGlj
L1dlYkxvY2FsaXplZFN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLS8vIEtlZXAgaW4gc3luYyB3aXRoIEFjdGlvbnMgaW4gY29sb3JT
dWdnZXN0aW9uUGlja2VyLmpzLgotZW51bSBDb2xvclBpY2tlclBvcHVwQWN0aW9uIHsKLSAgICBD
b2xvclBpY2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvciA9IC0yLAotICAgIENvbG9yUGlj
a2VyUG9wdXBBY3Rpb25DYW5jZWwgPSAtMSwKLSAgICBDb2xvclBpY2tlclBvcHVwQWN0aW9uU2V0
VmFsdWUgPSAwCi19OwogCiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OkNvbG9yQ2hvb3NlclVJ
Q29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiBjaHJvbWVDbGllbnQsIENvbG9yQ2hvb3NlckNs
aWVudCogY2xpZW50KQogICAgIDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQogICAgICwg
bV9jbGllbnQoY2xpZW50KQotICAgICwgbV9wb3B1cCgwKQotICAgICwgbV9sb2NhbGUoTG9jYWxl
OjpjcmVhdGVEZWZhdWx0KCkpCiB7Ci0gICAgaWYgKG1fY2xpZW50LT5zaG91bGRTaG93U3VnZ2Vz
dGlvbnMoKSkKLSAgICAgICAgb3BlblBvcHVwKCk7Ci0gICAgZWxzZQotICAgICAgICBvcGVuQ29s
b3JDaG9vc2VyKCk7CiB9CiAKIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6fkNvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlcigpCiB7CiB9CiAKK3ZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpv
cGVuVUkoKQoreworICAgIG9wZW5Db2xvckNob29zZXIoKTsKK30KKwogdm9pZCBDb2xvckNob29z
ZXJVSUNvbnRyb2xsZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewog
ICAgIEFTU0VSVChtX2Nob29zZXIpOwpAQCAtNzksOCArNjMsNiBAQCB2b2lkIENvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlcjo6ZW5kQ2hvb3NlcigpCiB7CiAgICAgaWYgKG1fY2hvb3NlcikKICAgICAg
ICAgbV9jaG9vc2VyLT5lbmRDaG9vc2VyKCk7Ci0gICAgaWYgKG1fcG9wdXApCi0gICAgICAgIGNs
b3NlUG9wdXAoKTsKIH0KIAogdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmRpZENob29z
ZUNvbG9yKGNvbnN0IFdlYkNvbG9yJiBjb2xvcikKQEAgLTk2LDc5ICs3OCw2IEBAIHZvaWQgQ29s
b3JDaG9vc2VyVUlDb250cm9sbGVyOjpkaWRFbmRDaG9vc2VyKCkKICAgICBtX2NsaWVudC0+ZGlk
RW5kQ2hvb3NlcigpOwogfQogCi1JbnRTaXplIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6Y29u
dGVudFNpemUoKQotewotICAgIHJldHVybiBJbnRTaXplKDAsIDApOwotfQotCi12b2lkIENvbG9y
Q2hvb3NlclVJQ29udHJvbGxlcjo6d3JpdGVEb2N1bWVudChEb2N1bWVudFdyaXRlciYgd3JpdGVy
KQotewotICAgIFZlY3RvcjxDb2xvcj4gc3VnZ2VzdGlvbnMgPSBtX2NsaWVudC0+c3VnZ2VzdGlv
bnMoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uVmFsdWVzOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7IGkrKykKLSAgICAgICAgc3VnZ2Vz
dGlvblZhbHVlcy5hcHBlbmQoc3VnZ2VzdGlvbnNbaV0uc2VyaWFsaXplZCgpKTsKLSAgICBJbnRS
ZWN0IGFuY2hvclJlY3RJblNjcmVlbiA9IG1fY2hyb21lQ2xpZW50LT5yb290Vmlld1RvU2NyZWVu
KG1fY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsKLSAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KG1fY2hyb21lQ2xpZW50LT53ZWJW
aWV3KCkpLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0gICAgSW50UmVjdCByb290Vmll
d1Zpc2libGVDb250ZW50UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlIC8qIGlu
Y2x1ZGUgc2Nyb2xsYmFycyAqLyk7Ci0gICAgSW50UmVjdCByb290Vmlld1JlY3RJblNjcmVlbiA9
IG1fY2hyb21lQ2xpZW50LT5yb290Vmlld1RvU2NyZWVuKHJvb3RWaWV3VmlzaWJsZUNvbnRlbnRS
ZWN0KTsKLSAgICAKLSAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmluZygiPCFET0NUWVBFIGh0
bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7Ci0gICAg
d3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9uQ3NzLCBzaXplb2YocGlja2VyQ29tbW9uQ3NzKSk7
Ci0gICAgd3JpdGVyLmFkZERhdGEoY29sb3JTdWdnZXN0aW9uUGlja2VyQ3NzLCBzaXplb2YoY29s
b3JTdWdnZXN0aW9uUGlja2VyQ3NzKSk7Ci0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmco
Ijwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9bWFpbj5Mb2FkaW5nLi4uPC9kaXY+PHNjcmlw
dD5cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpbmRvdy5kaWFs
b2dBcmd1bWVudHMgPSB7XG4iLCB3cml0ZXIpOwotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkUHJv
cGVydHkoInZhbHVlcyIsIHN1Z2dlc3Rpb25WYWx1ZXMsIHdyaXRlcik7ICAgICAgIAotICAgIFBh
Z2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHkoIm90aGVyQ29sb3JMYWJlbCIsIFBsYXRmb3JtOjpj
dXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6T3RoZXJD
b2xvckxhYmVsKSwgd3JpdGVyKTsKLSAgICBhZGRQcm9wZXJ0eSgiYW5jaG9yUmVjdEluU2NyZWVu
IiwgYW5jaG9yUmVjdEluU2NyZWVuLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJyb290Vmll
d1JlY3RJblNjcmVlbiIsIHJvb3RWaWV3UmVjdEluU2NyZWVuLCB3cml0ZXIpOwotI2lmIE9TKE1B
Q19PU19YKQotICAgIGFkZFByb3BlcnR5KCJjb25maW5lVG9Sb290VmlldyIsIHRydWUsIHdyaXRl
cik7Ci0jZWxzZQotICAgIGFkZFByb3BlcnR5KCJjb25maW5lVG9Sb290VmlldyIsIGZhbHNlLCB3
cml0ZXIpOwotI2VuZGlmCi0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIn07XG4iLCB3
cml0ZXIpOwotICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkpzLCBzaXplb2YocGlja2Vy
Q29tbW9uSnMpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcywg
c2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tlckpzKSk7Ci0gICAgUGFnZVBvcHVwQ2xpZW50Ojph
ZGRTdHJpbmcoIjwvc2NyaXB0PjwvYm9keT5cbiIsIHdyaXRlcik7Ci19Ci0KLUxvY2FsZSYgQ29s
b3JDaG9vc2VyVUlDb250cm9sbGVyOjpsb2NhbGUoKQotewotICAgIHJldHVybiAqbV9sb2NhbGU7
Ci19Ci0KLXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpzZXRWYWx1ZUFuZENsb3NlUG9w
dXAoaW50IG51bVZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQotewotICAgIEFTU0VS
VChtX3BvcHVwKTsKLSAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIGlmIChudW1WYWx1ZSA9PSBD
b2xvclBpY2tlclBvcHVwQWN0aW9uU2V0VmFsdWUpCi0gICAgICAgIG1fY2xpZW50LT5kaWRDaG9v
c2VDb2xvcihDb2xvcihzdHJpbmdWYWx1ZSkpOwotICAgIGlmIChudW1WYWx1ZSA9PSBDb2xvclBp
Y2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvcikKLSAgICAgICAgb3BlbkNvbG9yQ2hvb3Nl
cigpOwotICAgIGNsb3NlUG9wdXAoKTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xs
ZXI6OmRpZENsb3NlUG9wdXAoKQotewotICAgIG1fcG9wdXAgPSAwOwotCi0gICAgaWYgKCFtX2No
b29zZXIpCi0gICAgICAgIGRpZEVuZENob29zZXIoKTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJV
SUNvbnRyb2xsZXI6Om9wZW5Qb3B1cCgpCi17Ci0gICAgQVNTRVJUKCFtX3BvcHVwKTsKLSAgICBt
X3BvcHVwID0gbV9jaHJvbWVDbGllbnQtPm9wZW5QYWdlUG9wdXAodGhpcywgbV9jbGllbnQtPmVs
ZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkpOwotfQotCi12b2lkIENvbG9yQ2hvb3NlclVJ
Q29udHJvbGxlcjo6Y2xvc2VQb3B1cCgpCi17Ci0gICAgaWYgKCFtX3BvcHVwKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jaHJvbWVDbGllbnQtPmNsb3NlUGFnZVBvcHVwKG1fcG9wdXApOwotfQot
CiB2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlbkNvbG9yQ2hvb3NlcigpCiB7CiAg
ICAgQVNTRVJUKCFtX2Nob29zZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaAppbmRleCA2MGNlY2ZlMThmMjk3MTZiNTk3
YWUwMjUzOTc3MTU4ODIxMzc5ODFlLi40ZjMyZDdlMGE5NGI0ZDNlYjg2YTdiNGE0NjMzMTAwZmEw
ZjA3ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29z
ZXJVSUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNo
b29zZXJVSUNvbnRyb2xsZXIuaApAQCAtMjksMTUgKzI5LDEyIEBACiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKLSNpbmNsdWRlICJQYWdl
UG9wdXBDbGllbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIldl
YkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvckNo
b29zZXJDbGllbnQ7Ci1jbGFzcyBQYWdlUG9wdXA7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDUsMTEgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ2hyb21lQ2xpZW50
SW1wbDsKIGNsYXNzIFdlYkNvbG9yQ2hvb3NlcjsKIAotY2xhc3MgQ29sb3JDaG9vc2VyVUlDb250
cm9sbGVyIDogcHVibGljIFdlYkNvbG9yQ2hvb3NlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OkNv
bG9yQ2hvb3NlciwgcHVibGljIFdlYkNvcmU6OlBhZ2VQb3B1cENsaWVudCB7CitjbGFzcyBDb2xv
ckNob29zZXJVSUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyQ2xpZW50LCBwdWJs
aWMgV2ViQ29yZTo6Q29sb3JDaG9vc2VyIHsKIHB1YmxpYzoKICAgICBDb2xvckNob29zZXJVSUNv
bnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCosIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCop
OwogICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlclVJQ29udHJvbGxlcigpOwogCisgICAgdmlydHVh
bCB2b2lkIG9wZW5VSSgpOworCiAgICAgLy8gQ29sb3JDaG9vc2VyIGZ1bmN0aW9uczoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCkgT1ZFUlJJREU7CkBAIC01OCwyMyAr
NTcsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBX
ZWJDb2xvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDaG9vc2VyKCkgT1ZF
UlJJREU7CiAKLSAgICAvLyBQYWdlUG9wdXBDbGllbnQgZnVuY3Rpb25zOgotICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50U2l6ZSBjb250ZW50U2l6ZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBXZWJDb3JlOjpMb2NhbGUmIGxvY2FsZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWYWx1ZUFuZENsb3NlUG9wdXAoaW50LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VQb3B1cCgpIE9WRVJSSURFOworcHJvdGVjdGVkOgor
ICAgIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcigpOworICAgIE93blB0cjxXZWJDb2xvckNob29zZXI+
IG1fY2hvb3NlcjsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG9wZW5Qb3B1cCgpOwotICAgIHZvaWQg
Y2xvc2VQb3B1cCgpOwotICAgIHZvaWQgb3BlbkNvbG9yQ2hvb3NlcigpOwogCiAgICAgQ2hyb21l
Q2xpZW50SW1wbCogbV9jaHJvbWVDbGllbnQ7CiAgICAgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xp
ZW50KiBtX2NsaWVudDsKLSAgICBPd25QdHI8V2ViQ29sb3JDaG9vc2VyPiBtX2Nob29zZXI7Ci0g
ICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOwotICAgIE93blB0cjxXZWJDb3JlOjpMb2Nh
bGU+IG1fbG9jYWxlOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174983</attachid>
            <date>2012-11-19 07:50:50 -0800</date>
            <delta_ts>2012-11-19 07:55:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121119154840.patch</filename>
            <type>text/plain</type>
            <size>19642</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmE2NWY4ZjYwMThmN2Fi
ZDFkMGM2ZWE1ZjczNjQyY2Q5Yzk2YjhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTkgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvZiBJ
TlBVVF9UWVBFX0NPTE9SIG9uIFBBR0VfUE9QVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElOUFVUX1RZUEVfQ09MT1Igc2hvdWxkIG5vdCBkZXBlbmQg
b24gUEFHRV9QT1BVUCwgd2l0aCB0aGlzIGNoYW5nZSB3ZSBhbGxvdyBwbGF0Zm9ybXMgbGlrZSBh
bmRyb2lkIHRvIGltcGxlbWVudCB0aGUgZm9ybWVyIHdpdGhvdXQgZGVwZW5kaW5nIG9uIHRoZSBs
YXR0ZXIuCisKKyAgICAgICAgVGVzdGVkIGJ5IGNvbXBpbGluZyBjaHJvbWl1bSB3aXRoIGFuZCB3
aXRob3V0IEVOQUJMRV9QQUdFX1BPUFVQIGFuZCBtYWRlIHN1cmUgdGhhdCBmb3JtcyB3aXRoIGlu
cHV0IHR5cGUgY29sb3Igd291bGQgbG9hZCBpbiBib3RoIGNhc2VzLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgICog
c3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbG9y
Q2hvb3NlclVJQ29udHJvbGxlcjo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVuVUkpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjplbmRDaG9v
c2VyKToKKyAgICAgICAgKiBzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmg6CisgICAgICAg
IChDb2xvckNob29zZXJVSUNvbnRyb2xsZXIpOgorCiAyMDEyLTExLTE1ICBUaWVuLVJlbiBDaGVu
ICA8dHJjaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgY29ycmVjdCB1bnNjYWxlZCBk
b2N1bWVudCBzaXplIHdoZW4gY2FsY3VsYXRpbmcgc2NhbGUgbGltaXRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggNDc2MGM3ZmU2MTJmZWI2MzM0MDVjYjU0ZWQxODIxYjM1ZGE5ZjYw
NS4uYzY4ZTFjYWU3MzY2ZGMyNDIwODZiYjYyMGZjYWFlODljMTk2NDFhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cApAQCAtMzYyLDYgKzM2Miw4IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21lQ2xpZW50SW1wbC5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvQ29tcG9zaXRpb25VbmRlcmxpbmVCdWlsZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyYjNhNWMyODc0
ZWFkNTY1ZWUyMzYwYjE1OGQ0N2Q5OTYzYmQ4YTYwLi5kZmY3ZGJmYjhjOWE0NzVlZDRlNTBjYmQz
ZGViNGU4OGJmMzdmODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcApAQCAtMzcsOCArMzcsMTIgQEAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRlICJDb2xvckNob29z
ZXJDbGllbnQuaCIKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyNpbmNsdWRlICJDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlci5oIgorI2Vsc2UKICNpbmNsdWRlICJDb2xvckNob29zZXJVSUNv
bnRyb2xsZXIuaCIKICNlbmRpZgorI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1
ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtNjgxLDcgKzY4
NSwxNCBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogUGFzc093blB0cjxDb2xvckNob29zZXI+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNob29zZXJDbGllbnQsIGNvbnN0IENvbG9y
JikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcih0
aGlzLCBjaG9vc2VyQ2xpZW50KSk7CisgICAgT3duUHRyPENvbG9yQ2hvb3NlclVJQ29udHJvbGxl
cj4gY29udHJvbGxlcjsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBjb250cm9sbGVyID0g
YWRvcHRQdHIobmV3IENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKHRoaXMsIGNob29zZXJD
bGllbnQpKTsKKyNlbHNlCisgICAgY29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBDb2xvckNob29z
ZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3NlckNsaWVudCkpOworI2VuZGlmCisgICAgY29udHJv
bGxlci0+b3BlblVJKCk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVsZWFzZSgpOwogfQogUGFz
c093blB0cjxXZWJDb2xvckNob29zZXI+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdlYkNvbG9y
Q2hvb3NlcihXZWJDb2xvckNob29zZXJDbGllbnQqIGNob29zZXJDbGllbnQsIGNvbnN0IFdlYkNv
bG9yJiBpbml0aWFsQ29sb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWFmOThmMDg3MmQxMjMyMmVkYmYyNDU1MjM4ZmUzMGJiZTk2MmQxYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9s
bGVyLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpICYmIEVOQUJMRShQQUdFX1BPUFVQKQorI2luY2x1ZGUgIkNocm9tZUNs
aWVudEltcGwuaCIKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKKyNpbmNsdWRlICJD
b2xvclN1Z2dlc3Rpb25QaWNrZXIuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIlBp
Y2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgorI2luY2x1ZGUgIldl
YlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkxvY2FsaXplZFN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEtlZXAgaW4gc3luYyB3aXRoIEFjdGlvbnMgaW4gY29s
b3JTdWdnZXN0aW9uUGlja2VyLmpzLgorZW51bSBDb2xvclBpY2tlclBvcHVwQWN0aW9uIHsKKyAg
ICBDb2xvclBpY2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvciA9IC0yLAorICAgIENvbG9y
UGlja2VyUG9wdXBBY3Rpb25DYW5jZWwgPSAtMSwKKyAgICBDb2xvclBpY2tlclBvcHVwQWN0aW9u
U2V0VmFsdWUgPSAwCit9OworCitDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6Q29sb3JD
aG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50LCBD
b2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IENvbG9yQ2hvb3NlclVJQ29udHJvbGxl
cihjaHJvbWVDbGllbnQsIGNsaWVudCkKKyAgICAsIG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVu
dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcG9wdXAoMCkKKyAgICAsIG1fbG9j
YWxlKExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpKQoreworfQorCitDb2xvckNob29zZXJQb3B1cFVJ
Q29udHJvbGxlcjo6fkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKCkKK3sKK30KKwordm9p
ZCBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6b3BlblVJKCkKK3sKKyAgICBpZiAobV9j
bGllbnQtPnNob3VsZFNob3dTdWdnZXN0aW9ucygpKQorICAgICAgICBvcGVuUG9wdXAoKTsKKyAg
ICBlbHNlCisgICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKK30KKwordm9pZCBDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcjo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKG1fY2hvb3NlcikK
KyAgICAgICAgbV9jaG9vc2VyLT5lbmRDaG9vc2VyKCk7CisgICAgaWYgKG1fcG9wdXApCisgICAg
ICAgIGNsb3NlUG9wdXAoKTsKK30KKworSW50U2l6ZSBDb2xvckNob29zZXJQb3B1cFVJQ29udHJv
bGxlcjo6Y29udGVudFNpemUoKQoreworICAgIHJldHVybiBJbnRTaXplKDAsIDApOworfQorCit2
b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjp3cml0ZURvY3VtZW50KERvY3VtZW50
V3JpdGVyJiB3cml0ZXIpCit7CisgICAgVmVjdG9yPENvbG9yPiBzdWdnZXN0aW9ucyA9IG1fY2xp
ZW50LT5zdWdnZXN0aW9ucygpOworICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25WYWx1ZXM7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsgaSsrKQor
ICAgICAgICBzdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzdWdnZXN0aW9uc1tpXS5zZXJpYWxpemVk
KCkpOworICAgIEludFJlY3QgYW5jaG9yUmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJv
b3RWaWV3VG9TY3JlZW4obV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkp
OworICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4obV9jaHJv
bWVDbGllbnQtPndlYlZpZXcoKSktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBJ
bnRSZWN0IHJvb3RWaWV3VmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRS
ZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKKyAgICBJbnRSZWN0IHJvb3RWaWV3
UmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJvb3RWaWV3VG9TY3JlZW4ocm9vdFZpZXdW
aXNpYmxlQ29udGVudFJlY3QpOworCisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwh
RE9DVFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0
ZXIpOworICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKHBpY2tlckNv
bW1vbkNzcykpOworICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcywg
c2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcykpOworICAgIFBhZ2VQb3B1cENsaWVudDo6
YWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+TG9hZGluZy4uLjwv
ZGl2PjxzY3JpcHQ+XG4iCisgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwg
d3JpdGVyKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJ2YWx1ZXMiLCBzdWdn
ZXN0aW9uVmFsdWVzLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHko
Im90aGVyQ29sb3JMYWJlbCIsIFBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3Ry
aW5nKFdlYkxvY2FsaXplZFN0cmluZzo6T3RoZXJDb2xvckxhYmVsKSwgd3JpdGVyKTsKKyAgICBh
ZGRQcm9wZXJ0eSgiYW5jaG9yUmVjdEluU2NyZWVuIiwgYW5jaG9yUmVjdEluU2NyZWVuLCB3cml0
ZXIpOworICAgIGFkZFByb3BlcnR5KCJyb290Vmlld1JlY3RJblNjcmVlbiIsIHJvb3RWaWV3UmVj
dEluU2NyZWVuLCB3cml0ZXIpOworI2lmIE9TKE1BQ19PU19YKQorICAgIGFkZFByb3BlcnR5KCJj
b25maW5lVG9Sb290VmlldyIsIHRydWUsIHdyaXRlcik7CisjZWxzZQorICAgIGFkZFByb3BlcnR5
KCJjb25maW5lVG9Sb290VmlldyIsIGZhbHNlLCB3cml0ZXIpOworI2VuZGlmCisgICAgUGFnZVBv
cHVwQ2xpZW50OjphZGRTdHJpbmcoIn07XG4iLCB3cml0ZXIpOworICAgIHdyaXRlci5hZGREYXRh
KHBpY2tlckNvbW1vbkpzLCBzaXplb2YocGlja2VyQ29tbW9uSnMpKTsKKyAgICB3cml0ZXIuYWRk
RGF0YShjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcywgc2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tl
ckpzKSk7CisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwvc2NyaXB0PjwvYm9keT5c
biIsIHdyaXRlcik7Cit9CisKK0xvY2FsZSYgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
OmxvY2FsZSgpCit7CisgICAgcmV0dXJuICptX2xvY2FsZTsKK30KKwordm9pZCBDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcjo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBBU1NFUlQobV9wb3B1cCk7CisgICAg
QVNTRVJUKG1fY2xpZW50KTsKKyAgICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFj
dGlvblNldFZhbHVlKQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoQ29sb3Ioc3Ry
aW5nVmFsdWUpKTsKKyAgICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNo
b29zZU90aGVyQ29sb3IpCisgICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKKyAgICBjbG9zZVBv
cHVwKCk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6OmRpZENsb3Nl
UG9wdXAoKQoreworICAgIG1fcG9wdXAgPSAwOworCisgICAgaWYgKCFtX2Nob29zZXIpCisgICAg
ICAgIGRpZEVuZENob29zZXIoKTsKK30KKworCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250
cm9sbGVyOjpvcGVuUG9wdXAoKQoreworICAgIEFTU0VSVCghbV9wb3B1cCk7CisgICAgbV9wb3B1
cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVuUGFnZVBvcHVwKHRoaXMsIG1fY2xpZW50LT5lbGVtZW50
UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsKK30KKwordm9pZCBDb2xvckNob29zZXJQb3B1cFVJ
Q29udHJvbGxlcjo6Y2xvc2VQb3B1cCgpCit7CisgICAgaWYgKCFtX3BvcHVwKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9jaHJvbWVDbGllbnQtPmNsb3NlUGFnZVBvcHVwKG1fcG9wdXApOworfQor
Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIEVOQUJMRShQQUdFX1BP
UFVQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2Vy
UG9wdXBVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hv
b3NlclBvcHVwVUlDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0YjFhN2NmMjI2MTUxOWZmZTU2
OTYyYTQ0N2YwN2Q5ZGNjNzQwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisjaWZuZGVmIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyX2gKKyNkZWZpbmUg
Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpICYmIEVOQUJMRShQQUdFX1BPUFVQKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlclVJQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50
OworY2xhc3MgUGFnZVBvcHVwOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29s
b3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIgOiBwdWJsaWMgQ29sb3JDaG9vc2VyVUlDb250cm9s
bGVyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50ICB7CisKK3B1YmxpYzoKKyAgICBD
b2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6
Q29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIoKTsKKworICAgIC8vIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciBmdW5jdGlvbnM6
CisgICAgdmlydHVhbCB2b2lkIG9wZW5VSSgpIE9WRVJSSURFOworCisgICAgLy8gQ29sb3JDaG9v
c2VyIGZ1bmN0aW9ucworICAgIHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURFOworCisgICAgLy8g
UGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUg
Y29udGVudFNpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChX
ZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRD
bG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG9wZW5Qb3B1
cCgpOworICAgIHZvaWQgY2xvc2VQb3B1cCgpOworICAgIENocm9tZUNsaWVudEltcGwqIG1fY2hy
b21lQ2xpZW50OworICAgIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7Cisg
ICAgV2ViQ29yZTo6UGFnZVBvcHVwKiBtX3BvcHVwOworICAgIE93blB0cjxXZWJDb3JlOjpMb2Nh
bGU+IG1fbG9jYWxlOworfTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KSAmJiBFTkFCTEUoUEFHRV9QT1BVUCkKKworI2VuZGlmIC8vIENvbG9yQ2hvb3NlclBvcHVwVUlD
b250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9y
Q2hvb3NlclVJQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xv
ckNob29zZXJVSUNvbnRyb2xsZXIuY3BwCmluZGV4IDU3ODk2OTFlOGQ3NTFiYWEwOGZhZTI4NWMw
YWViMTE1OGQ0YTgzMTcuLjdhYjNjMzRkNGYyNjM1MWFlZjEyMWVmNTcwMjE2MmMwMzAzMDZiYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2Vy
VUlDb250cm9sbGVyLmNwcApAQCAtMjcsNDggKzI3LDMyIEBACiAjaW5jbHVkZSAiQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLQogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUg
IkNvbG9yQ2hvb3NlckNsaWVudC5oIgotI2luY2x1ZGUgIkNvbG9yU3VnZ2VzdGlvblBpY2tlci5o
IgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiUGlja2VyQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiV2ViQ29sb3JDaG9vc2VyLmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKLSNpbmNsdWRl
IDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29sb3IuaD4KLSNpbmNs
dWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gS2VlcCBpbiBzeW5jIHdpdGggQWN0aW9u
cyBpbiBjb2xvclN1Z2dlc3Rpb25QaWNrZXIuanMuCi1lbnVtIENvbG9yUGlja2VyUG9wdXBBY3Rp
b24gewotICAgIENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNvbG9yID0gLTIsCi0g
ICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNhbmNlbCA9IC0xLAotICAgIENvbG9yUGlja2VyUG9w
dXBBY3Rpb25TZXRWYWx1ZSA9IDAKLX07CiAKIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6Q29s
b3JDaG9vc2VyVUlDb250cm9sbGVyKENocm9tZUNsaWVudEltcGwqIGNocm9tZUNsaWVudCwgQ29s
b3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGll
bnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvcHVwKDApCi0gICAgLCBtX2xv
Y2FsZShMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKSkKIHsKLSAgICBpZiAobV9jbGllbnQtPnNob3Vs
ZFNob3dTdWdnZXN0aW9ucygpKQotICAgICAgICBvcGVuUG9wdXAoKTsKLSAgICBlbHNlCi0gICAg
ICAgIG9wZW5Db2xvckNob29zZXIoKTsKIH0KIAogQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjp+
Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKCkKIHsKIH0KIAordm9pZCBDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6Om9wZW5VSSgpCit7CisgICAgb3BlbkNvbG9yQ2hvb3NlcigpOworfQorCiB2b2lk
IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgQVNTRVJUKG1fY2hvb3Nlcik7CkBAIC03OSw4ICs2Myw2IEBAIHZvaWQg
Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjplbmRDaG9vc2VyKCkKIHsKICAgICBpZiAobV9jaG9v
c2VyKQogICAgICAgICBtX2Nob29zZXItPmVuZENob29zZXIoKTsKLSAgICBpZiAobV9wb3B1cCkK
LSAgICAgICAgY2xvc2VQb3B1cCgpOwogfQogCiB2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxl
cjo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQpAQCAtOTYsNzkgKzc4LDYg
QEAgdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmRpZEVuZENob29zZXIoKQogICAgIG1f
Y2xpZW50LT5kaWRFbmRDaG9vc2VyKCk7CiB9CiAKLUludFNpemUgQ29sb3JDaG9vc2VyVUlDb250
cm9sbGVyOjpjb250ZW50U2l6ZSgpCi17Ci0gICAgcmV0dXJuIEludFNpemUoMCwgMCk7Ci19Ci0K
LXZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjp3cml0ZURvY3VtZW50KERvY3VtZW50V3Jp
dGVyJiB3cml0ZXIpCi17Ci0gICAgVmVjdG9yPENvbG9yPiBzdWdnZXN0aW9ucyA9IG1fY2xpZW50
LT5zdWdnZXN0aW9ucygpOwotICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25WYWx1ZXM7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsgaSsrKQotICAg
ICAgICBzdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzdWdnZXN0aW9uc1tpXS5zZXJpYWxpemVkKCkp
OwotICAgIEludFJlY3QgYW5jaG9yUmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJvb3RW
aWV3VG9TY3JlZW4obV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkpOwot
ICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4obV9jaHJvbWVD
bGllbnQtPndlYlZpZXcoKSktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKLSAgICBJbnRS
ZWN0IHJvb3RWaWV3VmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKLSAgICBJbnRSZWN0IHJvb3RWaWV3UmVj
dEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJvb3RWaWV3VG9TY3JlZW4ocm9vdFZpZXdWaXNp
YmxlQ29udGVudFJlY3QpOwotICAgIAotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3RyaW5nKCI8
IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3Jp
dGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Dc3MsIHNpemVvZihwaWNrZXJD
b21tb25Dc3MpKTsKLSAgICB3cml0ZXIuYWRkRGF0YShjb2xvclN1Z2dlc3Rpb25QaWNrZXJDc3Ms
IHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJDc3MpKTsKLSAgICBQYWdlUG9wdXBDbGllbnQ6
OmFkZFN0cmluZygiPC9zdHlsZT48L2hlYWQ+PGJvZHk+PGRpdiBpZD1tYWluPkxvYWRpbmcuLi48
L2Rpdj48c2NyaXB0PlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
d2luZG93LmRpYWxvZ0FyZ3VtZW50cyA9IHtcbiIsIHdyaXRlcik7Ci0gICAgUGFnZVBvcHVwQ2xp
ZW50OjphZGRQcm9wZXJ0eSgidmFsdWVzIiwgc3VnZ2VzdGlvblZhbHVlcywgd3JpdGVyKTsgICAg
ICAgCi0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRQcm9wZXJ0eSgib3RoZXJDb2xvckxhYmVsIiwg
UGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3Ry
aW5nOjpPdGhlckNvbG9yTGFiZWwpLCB3cml0ZXIpOwotICAgIGFkZFByb3BlcnR5KCJhbmNob3JS
ZWN0SW5TY3JlZW4iLCBhbmNob3JSZWN0SW5TY3JlZW4sIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVy
dHkoInJvb3RWaWV3UmVjdEluU2NyZWVuIiwgcm9vdFZpZXdSZWN0SW5TY3JlZW4sIHdyaXRlcik7
Ci0jaWYgT1MoTUFDX09TX1gpCi0gICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jvb3RWaWV3Iiwg
dHJ1ZSwgd3JpdGVyKTsKLSNlbHNlCi0gICAgYWRkUHJvcGVydHkoImNvbmZpbmVUb1Jvb3RWaWV3
IiwgZmFsc2UsIHdyaXRlcik7Ci0jZW5kaWYKLSAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFN0cmlu
ZygifTtcbiIsIHdyaXRlcik7Ci0gICAgd3JpdGVyLmFkZERhdGEocGlja2VyQ29tbW9uSnMsIHNp
emVvZihwaWNrZXJDb21tb25KcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlv
blBpY2tlckpzLCBzaXplb2YoY29sb3JTdWdnZXN0aW9uUGlja2VySnMpKTsKLSAgICBQYWdlUG9w
dXBDbGllbnQ6OmFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3JpdGVyKTsKLX0KLQot
TG9jYWxlJiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmxvY2FsZSgpCi17Ci0gICAgcmV0dXJu
ICptX2xvY2FsZTsKLX0KLQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OnNldFZhbHVl
QW5kQ2xvc2VQb3B1cChpbnQgbnVtVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpCi17
Ci0gICAgQVNTRVJUKG1fcG9wdXApOwotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgaWYgKG51
bVZhbHVlID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25TZXRWYWx1ZSkKLSAgICAgICAgbV9jbGll
bnQtPmRpZENob29zZUNvbG9yKENvbG9yKHN0cmluZ1ZhbHVlKSk7Ci0gICAgaWYgKG51bVZhbHVl
ID09IENvbG9yUGlja2VyUG9wdXBBY3Rpb25DaG9vc2VPdGhlckNvbG9yKQotICAgICAgICBvcGVu
Q29sb3JDaG9vc2VyKCk7Ci0gICAgY2xvc2VQb3B1cCgpOwotfQotCi12b2lkIENvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlcjo6ZGlkQ2xvc2VQb3B1cCgpCi17Ci0gICAgbV9wb3B1cCA9IDA7Ci0KLSAg
ICBpZiAoIW1fY2hvb3NlcikKLSAgICAgICAgZGlkRW5kQ2hvb3NlcigpOwotfQotCi12b2lkIENv
bG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6b3BlblBvcHVwKCkKLXsKLSAgICBBU1NFUlQoIW1fcG9w
dXApOwotICAgIG1fcG9wdXAgPSBtX2Nocm9tZUNsaWVudC0+b3BlblBhZ2VQb3B1cCh0aGlzLCBt
X2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7Ci19Ci0KLXZvaWQgQ29s
b3JDaG9vc2VyVUlDb250cm9sbGVyOjpjbG9zZVBvcHVwKCkKLXsKLSAgICBpZiAoIW1fcG9wdXAp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX2Nocm9tZUNsaWVudC0+Y2xvc2VQYWdlUG9wdXAobV9w
b3B1cCk7Ci19Ci0KIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVuQ29sb3JDaG9v
c2VyKCkKIHsKICAgICBBU1NFUlQoIW1fY2hvb3Nlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCmluZGV4IDYwY2VjZmUx
OGYyOTcxNmI1OTdhZTAyNTM5NzcxNTg4MjEzNzk4MWUuLjRmMzJkN2UwYTk0YjRkM2ViODZhN2I0
YTQ2MzMxMDBmYTBmMDdlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCkBAIC0yOSwxNSArMjksMTIgQEAKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIAogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgotI2lu
Y2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAj
aW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENvbG9yQ2hvb3NlckNsaWVudDsKLWNsYXNzIFBhZ2VQb3B1cDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00NSwxMSArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBD
aHJvbWVDbGllbnRJbXBsOwogY2xhc3MgV2ViQ29sb3JDaG9vc2VyOwogCi1jbGFzcyBDb2xvckNo
b29zZXJVSUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyQ2xpZW50LCBwdWJsaWMg
V2ViQ29yZTo6Q29sb3JDaG9vc2VyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50IHsK
K2NsYXNzIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJD
bGllbnQsIHB1YmxpYyBXZWJDb3JlOjpDb2xvckNob29zZXIgewogcHVibGljOgogICAgIENvbG9y
Q2hvb3NlclVJQ29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6Q29sb3JDaG9v
c2VyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKCk7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgb3BlblVJKCk7CisKICAgICAvLyBDb2xvckNob29zZXIgZnVuY3Rp
b25zOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSBPVkVSUklERTsK
QEAgLTU4LDIzICs1NywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNv
bG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENo
b29zZXIoKSBPVkVSUklERTsKIAotICAgIC8vIFBhZ2VQb3B1cENsaWVudCBmdW5jdGlvbnM6Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRTaXplKCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHdyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsZSYgbG9jYWxlKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQW5kQ2xvc2VQb3B1cChpbnQsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVBvcHVwKCkgT1ZFUlJJREU7Citw
cm90ZWN0ZWQ6CisgICAgdm9pZCBvcGVuQ29sb3JDaG9vc2VyKCk7CisgICAgT3duUHRyPFdlYkNv
bG9yQ2hvb3Nlcj4gbV9jaG9vc2VyOwogCiBwcml2YXRlOgotICAgIHZvaWQgb3BlblBvcHVwKCk7
Ci0gICAgdm9pZCBjbG9zZVBvcHVwKCk7Ci0gICAgdm9pZCBvcGVuQ29sb3JDaG9vc2VyKCk7CiAK
ICAgICBDaHJvbWVDbGllbnRJbXBsKiBtX2Nocm9tZUNsaWVudDsKICAgICBXZWJDb3JlOjpDb2xv
ckNob29zZXJDbGllbnQqIG1fY2xpZW50OwotICAgIE93blB0cjxXZWJDb2xvckNob29zZXI+IG1f
Y2hvb3NlcjsKLSAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG1fcG9wdXA7Ci0gICAgT3duUHRyPFdl
YkNvcmU6OkxvY2FsZT4gbV9sb2NhbGU7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174986</attachid>
            <date>2012-11-19 07:55:23 -0800</date>
            <delta_ts>2012-11-19 14:23:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102525-20121119155313.patch</filename>
            <type>text/plain</type>
            <size>19644</size>
            <attacher name="Miguel Garcia">miguelg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGVmYWYzYjQ4ZDgwODk3YjhiMjVmOTBjZjMxZGI2ZjUyNzZiODZmZGIuLmE2NWY4ZjYwMThmN2Fi
ZDFkMGM2ZWE1ZjczNjQyY2Q5Yzk2YjhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTkgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvZiBJ
TlBVVF9UWVBFX0NPTE9SIG9uIFBBR0VfUE9QVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElOUFVUX1RZUEVfQ09MT1Igc2hvdWxkIG5vdCBkZXBlbmQg
b24gUEFHRV9QT1BVUCwgd2l0aCB0aGlzIGNoYW5nZSB3ZSBhbGxvdyBwbGF0Zm9ybXMgbGlrZSBh
bmRyb2lkIHRvIGltcGxlbWVudCB0aGUgZm9ybWVyIHdpdGhvdXQgZGVwZW5kaW5nIG9uIHRoZSBs
YXR0ZXIuCisKKyAgICAgICAgVGVzdGVkIGJ5IGNvbXBpbGluZyBjaHJvbWl1bSB3aXRoIGFuZCB3
aXRob3V0IEVOQUJMRV9QQUdFX1BPUFVQIGFuZCBtYWRlIHN1cmUgdGhhdCBmb3JtcyB3aXRoIGlu
cHV0IHR5cGUgY29sb3Igd291bGQgbG9hZCBpbiBib3RoIGNhc2VzLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgICog
c3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbG9y
Q2hvb3NlclVJQ29udHJvbGxlcjo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVuVUkpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjplbmRDaG9v
c2VyKToKKyAgICAgICAgKiBzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmg6CisgICAgICAg
IChDb2xvckNob29zZXJVSUNvbnRyb2xsZXIpOgorCiAyMDEyLTExLTE1ICBUaWVuLVJlbiBDaGVu
ICA8dHJjaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgY29ycmVjdCB1bnNjYWxlZCBk
b2N1bWVudCBzaXplIHdoZW4gY2FsY3VsYXRpbmcgc2NhbGUgbGltaXRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggNDc2MGM3ZmU2MTJmZWI2MzM0MDVjYjU0ZWQxODIxYjM1ZGE5ZjYw
NS4uYzY4ZTFjYWU3MzY2ZGMyNDIwODZiYjYyMGZjYWFlODljMTk2NDFhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cApAQCAtMzYyLDYgKzM2Miw4IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21lQ2xpZW50SW1wbC5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvQ29tcG9zaXRpb25VbmRlcmxpbmVCdWlsZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyYjNhNWMyODc0
ZWFkNTY1ZWUyMzYwYjE1OGQ0N2Q5OTYzYmQ4YTYwLi5kZmY3ZGJmYjhjOWE0NzVlZDRlNTBjYmQz
ZGViNGU4OGJmMzdmODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcApAQCAtMzcsOCArMzcsMTIgQEAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRlICJDb2xvckNob29z
ZXJDbGllbnQuaCIKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyNpbmNsdWRlICJDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlci5oIgorI2Vsc2UKICNpbmNsdWRlICJDb2xvckNob29zZXJVSUNv
bnRyb2xsZXIuaCIKICNlbmRpZgorI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1
ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtNjgxLDcgKzY4
NSwxNCBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogUGFzc093blB0cjxDb2xvckNob29zZXI+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNob29zZXJDbGllbnQsIGNvbnN0IENvbG9y
JikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcih0
aGlzLCBjaG9vc2VyQ2xpZW50KSk7CisgICAgT3duUHRyPENvbG9yQ2hvb3NlclVJQ29udHJvbGxl
cj4gY29udHJvbGxlcjsKKyNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKKyAgICBjb250cm9sbGVyID0g
YWRvcHRQdHIobmV3IENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKHRoaXMsIGNob29zZXJD
bGllbnQpKTsKKyNlbHNlCisgICAgY29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBDb2xvckNob29z
ZXJVSUNvbnRyb2xsZXIodGhpcywgY2hvb3NlckNsaWVudCkpOworI2VuZGlmCisgICAgY29udHJv
bGxlci0+b3BlblVJKCk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIucmVsZWFzZSgpOwogfQogUGFz
c093blB0cjxXZWJDb2xvckNob29zZXI+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVdlYkNvbG9y
Q2hvb3NlcihXZWJDb2xvckNob29zZXJDbGllbnQqIGNob29zZXJDbGllbnQsIGNvbnN0IFdlYkNv
bG9yJiBpbml0aWFsQ29sb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Db2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWFmOThmMDg3MmQxMjMyMmVkYmYyNDU1MjM4ZmUzMGJiZTk2MmQxYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9s
bGVyLmNwcApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpICYmIEVOQUJMRShQQUdFX1BPUFVQKQorI2luY2x1ZGUgIkNocm9tZUNs
aWVudEltcGwuaCIKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKKyNpbmNsdWRlICJD
b2xvclN1Z2dlc3Rpb25QaWNrZXIuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIlBp
Y2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgorI2luY2x1ZGUgIldl
YlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkxvY2FsaXplZFN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEtlZXAgaW4gc3luYyB3aXRoIEFjdGlvbnMgaW4gY29s
b3JTdWdnZXN0aW9uUGlja2VyLmpzLgorZW51bSBDb2xvclBpY2tlclBvcHVwQWN0aW9uIHsKKyAg
ICBDb2xvclBpY2tlclBvcHVwQWN0aW9uQ2hvb3NlT3RoZXJDb2xvciA9IC0yLAorICAgIENvbG9y
UGlja2VyUG9wdXBBY3Rpb25DYW5jZWwgPSAtMSwKKyAgICBDb2xvclBpY2tlclBvcHVwQWN0aW9u
U2V0VmFsdWUgPSAwCit9OworCitDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6Q29sb3JD
aG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50LCBD
b2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IENvbG9yQ2hvb3NlclVJQ29udHJvbGxl
cihjaHJvbWVDbGllbnQsIGNsaWVudCkKKyAgICAsIG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVu
dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fcG9wdXAoMCkKKyAgICAsIG1fbG9j
YWxlKExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpKQoreworfQorCitDb2xvckNob29zZXJQb3B1cFVJ
Q29udHJvbGxlcjo6fkNvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyKCkKK3sKK30KKwordm9p
ZCBDb2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcjo6b3BlblVJKCkKK3sKKyAgICBpZiAobV9j
bGllbnQtPnNob3VsZFNob3dTdWdnZXN0aW9ucygpKQorICAgICAgICBvcGVuUG9wdXAoKTsKKyAg
ICBlbHNlCisgICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKK30KKwordm9pZCBDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcjo6ZW5kQ2hvb3NlcigpCit7CisgICAgaWYgKG1fY2hvb3NlcikK
KyAgICAgICAgbV9jaG9vc2VyLT5lbmRDaG9vc2VyKCk7CisgICAgaWYgKG1fcG9wdXApCisgICAg
ICAgIGNsb3NlUG9wdXAoKTsKK30KKworSW50U2l6ZSBDb2xvckNob29zZXJQb3B1cFVJQ29udHJv
bGxlcjo6Y29udGVudFNpemUoKQoreworICAgIHJldHVybiBJbnRTaXplKDAsIDApOworfQorCit2
b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyOjp3cml0ZURvY3VtZW50KERvY3VtZW50
V3JpdGVyJiB3cml0ZXIpCit7CisgICAgVmVjdG9yPENvbG9yPiBzdWdnZXN0aW9ucyA9IG1fY2xp
ZW50LT5zdWdnZXN0aW9ucygpOworICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25WYWx1ZXM7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsgaSsrKQor
ICAgICAgICBzdWdnZXN0aW9uVmFsdWVzLmFwcGVuZChzdWdnZXN0aW9uc1tpXS5zZXJpYWxpemVk
KCkpOworICAgIEludFJlY3QgYW5jaG9yUmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJv
b3RWaWV3VG9TY3JlZW4obV9jbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkp
OworICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4obV9jaHJv
bWVDbGllbnQtPndlYlZpZXcoKSktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBJ
bnRSZWN0IHJvb3RWaWV3VmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRS
ZWN0KHRydWUgLyogaW5jbHVkZSBzY3JvbGxiYXJzICovKTsKKyAgICBJbnRSZWN0IHJvb3RWaWV3
UmVjdEluU2NyZWVuID0gbV9jaHJvbWVDbGllbnQtPnJvb3RWaWV3VG9TY3JlZW4ocm9vdFZpZXdW
aXNpYmxlQ29udGVudFJlY3QpOworCisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwh
RE9DVFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3cml0
ZXIpOworICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKHBpY2tlckNv
bW1vbkNzcykpOworICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcywg
c2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcykpOworICAgIFBhZ2VQb3B1cENsaWVudDo6
YWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+TG9hZGluZy4uLjwv
ZGl2PjxzY3JpcHQ+XG4iCisgICAgICAgICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwg
d3JpdGVyKTsKKyAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJ2YWx1ZXMiLCBzdWdn
ZXN0aW9uVmFsdWVzLCB3cml0ZXIpOworICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkUHJvcGVydHko
Im90aGVyQ29sb3JMYWJlbCIsIFBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3Ry
aW5nKFdlYkxvY2FsaXplZFN0cmluZzo6T3RoZXJDb2xvckxhYmVsKSwgd3JpdGVyKTsKKyAgICBh
ZGRQcm9wZXJ0eSgiYW5jaG9yUmVjdEluU2NyZWVuIiwgYW5jaG9yUmVjdEluU2NyZWVuLCB3cml0
ZXIpOworICAgIGFkZFByb3BlcnR5KCJyb290Vmlld1JlY3RJblNjcmVlbiIsIHJvb3RWaWV3UmVj
dEluU2NyZWVuLCB3cml0ZXIpOworI2lmIE9TKE1BQ19PU19YKQorICAgIGFkZFByb3BlcnR5KCJj
b25maW5lVG9Sb290VmlldyIsIHRydWUsIHdyaXRlcik7CisjZWxzZQorICAgIGFkZFByb3BlcnR5
KCJjb25maW5lVG9Sb290VmlldyIsIGZhbHNlLCB3cml0ZXIpOworI2VuZGlmCisgICAgUGFnZVBv
cHVwQ2xpZW50OjphZGRTdHJpbmcoIn07XG4iLCB3cml0ZXIpOworICAgIHdyaXRlci5hZGREYXRh
KHBpY2tlckNvbW1vbkpzLCBzaXplb2YocGlja2VyQ29tbW9uSnMpKTsKKyAgICB3cml0ZXIuYWRk
RGF0YShjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcywgc2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tl
ckpzKSk7CisgICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmcoIjwvc2NyaXB0PjwvYm9keT5c
biIsIHdyaXRlcik7Cit9CisKK0xvY2FsZSYgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6
OmxvY2FsZSgpCit7CisgICAgcmV0dXJuICptX2xvY2FsZTsKK30KKwordm9pZCBDb2xvckNob29z
ZXJQb3B1cFVJQ29udHJvbGxlcjo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBBU1NFUlQobV9wb3B1cCk7CisgICAg
QVNTRVJUKG1fY2xpZW50KTsKKyAgICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFj
dGlvblNldFZhbHVlKQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3IoQ29sb3Ioc3Ry
aW5nVmFsdWUpKTsKKyAgICBpZiAobnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNo
b29zZU90aGVyQ29sb3IpCisgICAgICAgIG9wZW5Db2xvckNob29zZXIoKTsKKyAgICBjbG9zZVBv
cHVwKCk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXI6OmRpZENsb3Nl
UG9wdXAoKQoreworICAgIG1fcG9wdXAgPSAwOworCisgICAgaWYgKCFtX2Nob29zZXIpCisgICAg
ICAgIGRpZEVuZENob29zZXIoKTsKK30KKworCit2b2lkIENvbG9yQ2hvb3NlclBvcHVwVUlDb250
cm9sbGVyOjpvcGVuUG9wdXAoKQoreworICAgIEFTU0VSVCghbV9wb3B1cCk7CisgICAgbV9wb3B1
cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVuUGFnZVBvcHVwKHRoaXMsIG1fY2xpZW50LT5lbGVtZW50
UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsKK30KKwordm9pZCBDb2xvckNob29zZXJQb3B1cFVJ
Q29udHJvbGxlcjo6Y2xvc2VQb3B1cCgpCit7CisgICAgaWYgKCFtX3BvcHVwKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9jaHJvbWVDbGllbnQtPmNsb3NlUGFnZVBvcHVwKG1fcG9wdXApOworfQor
Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpICYmIEVOQUJMRShQQUdFX1BP
UFVQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2Vy
UG9wdXBVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hv
b3NlclBvcHVwVUlDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRkNTg0OGM0YjkxMDhjZWVhMjJl
N2I3YjgxYzczNzg5MDljYTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisjaWZuZGVmIENvbG9yQ2hvb3NlclBvcHVwVUlDb250cm9sbGVyX2gKKyNkZWZpbmUg
Q29sb3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpICYmIEVOQUJMRShQQUdFX1BPUFVQKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlclVJQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50
OworY2xhc3MgUGFnZVBvcHVwOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29s
b3JDaG9vc2VyUG9wdXBVSUNvbnRyb2xsZXIgOiBwdWJsaWMgQ29sb3JDaG9vc2VyVUlDb250cm9s
bGVyLCBwdWJsaWMgV2ViQ29yZTo6UGFnZVBvcHVwQ2xpZW50ICB7CisKK3B1YmxpYzoKKyAgICBD
b2xvckNob29zZXJQb3B1cFVJQ29udHJvbGxlcihDaHJvbWVDbGllbnRJbXBsKiwgV2ViQ29yZTo6
Q29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+Q29sb3JDaG9vc2VyUG9wdXBVSUNv
bnRyb2xsZXIoKTsKKworICAgIC8vIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlciBmdW5jdGlvbnM6
CisgICAgdmlydHVhbCB2b2lkIG9wZW5VSSgpIE9WRVJSSURFOworCisgICAgLy8gQ29sb3JDaG9v
c2VyIGZ1bmN0aW9ucworICAgIHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURFOworCisgICAgLy8g
UGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUg
Y29udGVudFNpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChX
ZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRD
bG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG9wZW5Qb3B1
cCgpOworICAgIHZvaWQgY2xvc2VQb3B1cCgpOworCisgICAgQ2hyb21lQ2xpZW50SW1wbCogbV9j
aHJvbWVDbGllbnQ7CisgICAgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWJDb3JlOjpQYWdlUG9wdXAqIG1fcG9wdXA7CisgICAgT3duUHRyPFdlYkNvcmU6Okxv
Y2FsZT4gbV9sb2NhbGU7Cit9OworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpICYmIEVOQUJMRShQQUdFX1BPUFVQKQorCisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyUG9wdXBV
SUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29s
b3JDaG9vc2VyVUlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bG9yQ2hvb3NlclVJQ29udHJvbGxlci5jcHAKaW5kZXggNTc4OTY5MWU4ZDc1MWJhYTA4ZmFlMjg1
YzBhZWIxMTU4ZDRhODMxNy4uN2FiM2MzNGQ0ZjI2MzUxYWVmMTIxZWY1NzAyMTYyYzAzMDMwNmJj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29z
ZXJVSUNvbnRyb2xsZXIuY3BwCkBAIC0yNyw0OCArMjcsMzIgQEAKICNpbmNsdWRlICJDb2xvckNo
b29zZXJVSUNvbnRyb2xsZXIuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVk
ZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ29sb3JTdWdnZXN0aW9uUGlja2Vy
LmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJQaWNrZXJDb21tb24uaCIKICNpbmNs
dWRlICJXZWJDb2xvckNob29zZXIuaCIKLSNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgotI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb2xvci5oPgotI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBLZWVwIGluIHN5bmMgd2l0aCBBY3Rp
b25zIGluIGNvbG9yU3VnZ2VzdGlvblBpY2tlci5qcy4KLWVudW0gQ29sb3JQaWNrZXJQb3B1cEFj
dGlvbiB7Ci0gICAgQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNob29zZU90aGVyQ29sb3IgPSAtMiwK
LSAgICBDb2xvclBpY2tlclBvcHVwQWN0aW9uQ2FuY2VsID0gLTEsCi0gICAgQ29sb3JQaWNrZXJQ
b3B1cEFjdGlvblNldFZhbHVlID0gMAotfTsKIAogQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpD
b2xvckNob29zZXJVSUNvbnRyb2xsZXIoQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50LCBD
b2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNs
aWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcG9wdXAoMCkKLSAgICAsIG1f
bG9jYWxlKExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgpKQogewotICAgIGlmIChtX2NsaWVudC0+c2hv
dWxkU2hvd1N1Z2dlc3Rpb25zKCkpCi0gICAgICAgIG9wZW5Qb3B1cCgpOwotICAgIGVsc2UKLSAg
ICAgICAgb3BlbkNvbG9yQ2hvb3NlcigpOwogfQogCiBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6
On5Db2xvckNob29zZXJVSUNvbnRyb2xsZXIoKQogewogfQogCit2b2lkIENvbG9yQ2hvb3NlclVJ
Q29udHJvbGxlcjo6b3BlblVJKCkKK3sKKyAgICBvcGVuQ29sb3JDaG9vc2VyKCk7Cit9CisKIHZv
aWQgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKIHsKICAgICBBU1NFUlQobV9jaG9vc2VyKTsKQEAgLTc5LDggKzYzLDYgQEAgdm9p
ZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmVuZENob29zZXIoKQogewogICAgIGlmIChtX2No
b29zZXIpCiAgICAgICAgIG1fY2hvb3Nlci0+ZW5kQ2hvb3NlcigpOwotICAgIGlmIChtX3BvcHVw
KQotICAgICAgICBjbG9zZVBvcHVwKCk7CiB9CiAKIHZvaWQgQ29sb3JDaG9vc2VyVUlDb250cm9s
bGVyOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb2xvciYgY29sb3IpCkBAIC05Niw3OSArNzgs
NiBAQCB2b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6ZGlkRW5kQ2hvb3NlcigpCiAgICAg
bV9jbGllbnQtPmRpZEVuZENob29zZXIoKTsKIH0KIAotSW50U2l6ZSBDb2xvckNob29zZXJVSUNv
bnRyb2xsZXI6OmNvbnRlbnRTaXplKCkKLXsKLSAgICByZXR1cm4gSW50U2l6ZSgwLCAwKTsKLX0K
LQotdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRX
cml0ZXImIHdyaXRlcikKLXsKLSAgICBWZWN0b3I8Q29sb3I+IHN1Z2dlc3Rpb25zID0gbV9jbGll
bnQtPnN1Z2dlc3Rpb25zKCk7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvblZhbHVlczsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyBpKyspCi0g
ICAgICAgIHN1Z2dlc3Rpb25WYWx1ZXMuYXBwZW5kKHN1Z2dlc3Rpb25zW2ldLnNlcmlhbGl6ZWQo
KSk7Ci0gICAgSW50UmVjdCBhbmNob3JSZWN0SW5TY3JlZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9v
dFZpZXdUb1NjcmVlbihtX2NsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSk7
Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihtX2Nocm9t
ZUNsaWVudC0+d2ViVmlldygpKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAgIElu
dFJlY3Qgcm9vdFZpZXdWaXNpYmxlQ29udGVudFJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJl
Y3QodHJ1ZSAvKiBpbmNsdWRlIHNjcm9sbGJhcnMgKi8pOwotICAgIEludFJlY3Qgcm9vdFZpZXdS
ZWN0SW5TY3JlZW4gPSBtX2Nocm9tZUNsaWVudC0+cm9vdFZpZXdUb1NjcmVlbihyb290Vmlld1Zp
c2libGVDb250ZW50UmVjdCk7Ci0gICAgCi0gICAgUGFnZVBvcHVwQ2xpZW50OjphZGRTdHJpbmco
IjwhRE9DVFlQRSBodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9J1VURi04Jz48c3R5bGU+XG4iLCB3
cml0ZXIpOwotICAgIHdyaXRlci5hZGREYXRhKHBpY2tlckNvbW1vbkNzcywgc2l6ZW9mKHBpY2tl
ckNvbW1vbkNzcykpOwotICAgIHdyaXRlci5hZGREYXRhKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNz
cywgc2l6ZW9mKGNvbG9yU3VnZ2VzdGlvblBpY2tlckNzcykpOwotICAgIFBhZ2VQb3B1cENsaWVu
dDo6YWRkU3RyaW5nKCI8L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4+TG9hZGluZy4u
LjwvZGl2PjxzY3JpcHQ+XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3aW5kb3cuZGlhbG9nQXJndW1lbnRzID0ge1xuIiwgd3JpdGVyKTsKLSAgICBQYWdlUG9wdXBD
bGllbnQ6OmFkZFByb3BlcnR5KCJ2YWx1ZXMiLCBzdWdnZXN0aW9uVmFsdWVzLCB3cml0ZXIpOyAg
ICAgICAKLSAgICBQYWdlUG9wdXBDbGllbnQ6OmFkZFByb3BlcnR5KCJvdGhlckNvbG9yTGFiZWwi
LCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRT
dHJpbmc6Ok90aGVyQ29sb3JMYWJlbCksIHdyaXRlcik7Ci0gICAgYWRkUHJvcGVydHkoImFuY2hv
clJlY3RJblNjcmVlbiIsIGFuY2hvclJlY3RJblNjcmVlbiwgd3JpdGVyKTsKLSAgICBhZGRQcm9w
ZXJ0eSgicm9vdFZpZXdSZWN0SW5TY3JlZW4iLCByb290Vmlld1JlY3RJblNjcmVlbiwgd3JpdGVy
KTsKLSNpZiBPUyhNQUNfT1NfWCkKLSAgICBhZGRQcm9wZXJ0eSgiY29uZmluZVRvUm9vdFZpZXci
LCB0cnVlLCB3cml0ZXIpOwotI2Vsc2UKLSAgICBhZGRQcm9wZXJ0eSgiY29uZmluZVRvUm9vdFZp
ZXciLCBmYWxzZSwgd3JpdGVyKTsKLSNlbmRpZgotICAgIFBhZ2VQb3B1cENsaWVudDo6YWRkU3Ry
aW5nKCJ9O1xuIiwgd3JpdGVyKTsKLSAgICB3cml0ZXIuYWRkRGF0YShwaWNrZXJDb21tb25Kcywg
c2l6ZW9mKHBpY2tlckNvbW1vbkpzKSk7Ci0gICAgd3JpdGVyLmFkZERhdGEoY29sb3JTdWdnZXN0
aW9uUGlja2VySnMsIHNpemVvZihjb2xvclN1Z2dlc3Rpb25QaWNrZXJKcykpOwotICAgIFBhZ2VQ
b3B1cENsaWVudDo6YWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwotfQot
Ci1Mb2NhbGUmIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6bG9jYWxlKCkKLXsKLSAgICByZXR1
cm4gKm1fbG9jYWxlOwotfQotCi12b2lkIENvbG9yQ2hvb3NlclVJQ29udHJvbGxlcjo6c2V0VmFs
dWVBbmRDbG9zZVBvcHVwKGludCBudW1WYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkK
LXsKLSAgICBBU1NFUlQobV9wb3B1cCk7Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBpZiAo
bnVtVmFsdWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvblNldFZhbHVlKQotICAgICAgICBtX2Ns
aWVudC0+ZGlkQ2hvb3NlQ29sb3IoQ29sb3Ioc3RyaW5nVmFsdWUpKTsKLSAgICBpZiAobnVtVmFs
dWUgPT0gQ29sb3JQaWNrZXJQb3B1cEFjdGlvbkNob29zZU90aGVyQ29sb3IpCi0gICAgICAgIG9w
ZW5Db2xvckNob29zZXIoKTsKLSAgICBjbG9zZVBvcHVwKCk7Ci19Ci0KLXZvaWQgQ29sb3JDaG9v
c2VyVUlDb250cm9sbGVyOjpkaWRDbG9zZVBvcHVwKCkKLXsKLSAgICBtX3BvcHVwID0gMDsKLQot
ICAgIGlmICghbV9jaG9vc2VyKQotICAgICAgICBkaWRFbmRDaG9vc2VyKCk7Ci19Ci0KLXZvaWQg
Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyOjpvcGVuUG9wdXAoKQotewotICAgIEFTU0VSVCghbV9w
b3B1cCk7Ci0gICAgbV9wb3B1cCA9IG1fY2hyb21lQ2xpZW50LT5vcGVuUGFnZVBvcHVwKHRoaXMs
IG1fY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKTsKLX0KLQotdm9pZCBD
b2xvckNob29zZXJVSUNvbnRyb2xsZXI6OmNsb3NlUG9wdXAoKQotewotICAgIGlmICghbV9wb3B1
cCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2hyb21lQ2xpZW50LT5jbG9zZVBhZ2VQb3B1cCht
X3BvcHVwKTsKLX0KLQogdm9pZCBDb2xvckNob29zZXJVSUNvbnRyb2xsZXI6Om9wZW5Db2xvckNo
b29zZXIoKQogewogICAgIEFTU0VSVCghbV9jaG9vc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgKaW5kZXggNjBjZWNm
ZTE4ZjI5NzE2YjU5N2FlMDI1Mzk3NzE1ODgyMTM3OTgxZS4uNGYzMmQ3ZTBhOTRiNGQzZWI4NmE3
YjRhNDYzMzEwMGZhMGYwN2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmgKQEAgLTI5LDE1ICsyOSwxMiBAQAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCi0j
aW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIK
ICNpbmNsdWRlICJXZWJDb2xvckNob29zZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OwotY2xhc3MgUGFnZVBvcHVwOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQ1LDExICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IENocm9tZUNsaWVudEltcGw7CiBjbGFzcyBXZWJDb2xvckNob29zZXI7CiAKLWNsYXNzIENvbG9y
Q2hvb3NlclVJQ29udHJvbGxlciA6IHB1YmxpYyBXZWJDb2xvckNob29zZXJDbGllbnQsIHB1Ymxp
YyBXZWJDb3JlOjpDb2xvckNob29zZXIsIHB1YmxpYyBXZWJDb3JlOjpQYWdlUG9wdXBDbGllbnQg
eworY2xhc3MgQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyIDogcHVibGljIFdlYkNvbG9yQ2hvb3Nl
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OkNvbG9yQ2hvb3NlciB7CiBwdWJsaWM6CiAgICAgQ29s
b3JDaG9vc2VyVUlDb250cm9sbGVyKENocm9tZUNsaWVudEltcGwqLCBXZWJDb3JlOjpDb2xvckNo
b29zZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db2xvckNob29zZXJVSUNvbnRyb2xsZXIoKTsK
IAorICAgIHZpcnR1YWwgdm9pZCBvcGVuVUkoKTsKKwogICAgIC8vIENvbG9yQ2hvb3NlciBmdW5j
dGlvbnM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpIE9WRVJSSURF
OwpAQCAtNTgsMjMgKzU3LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3Nl
Q29sb3IoY29uc3QgV2ViQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5k
Q2hvb3NlcigpIE9WRVJSSURFOwogCi0gICAgLy8gUGFnZVBvcHVwQ2xpZW50IGZ1bmN0aW9uczoK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudFNpemUoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxlJiBsb2NhbGUoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBbmRDbG9zZVBvcHVwKGludCwgY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlUG9wdXAoKSBPVkVSUklERTsK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoKTsKKyAgICBPd25QdHI8V2Vi
Q29sb3JDaG9vc2VyPiBtX2Nob29zZXI7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBvcGVuUG9wdXAo
KTsKLSAgICB2b2lkIGNsb3NlUG9wdXAoKTsKLSAgICB2b2lkIG9wZW5Db2xvckNob29zZXIoKTsK
IAogICAgIENocm9tZUNsaWVudEltcGwqIG1fY2hyb21lQ2xpZW50OwogICAgIFdlYkNvcmU6OkNv
bG9yQ2hvb3NlckNsaWVudCogbV9jbGllbnQ7Ci0gICAgT3duUHRyPFdlYkNvbG9yQ2hvb3Nlcj4g
bV9jaG9vc2VyOwotICAgIFdlYkNvcmU6OlBhZ2VQb3B1cCogbV9wb3B1cDsKLSAgICBPd25QdHI8
V2ViQ29yZTo6TG9jYWxlPiBtX2xvY2FsZTsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>