<?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>123131</bug_id>
          
          <creation_ts>2013-10-21 19:00:18 -0700</creation_ts>
          <short_desc>Re-instate ProposedDatabases needed by detailsForNameAndOrigin()</short_desc>
          <delta_ts>2013-10-23 11:33:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942126</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-21 19:00:18 -0700</bug_when>
    <thetext>The WebKit1 implementation for WebSQL quota management (to determine what database size is being requested by a webpage) used to rely on ProposedDatabase records being added and queried in DatabaseTracker::detailsForNameAndOrigin().  This was removed in favor passing the database details to the DatabaseContext::databaseExceededQuota().  However, this has proved to be inadequate.

This patch will fix this issue by re-instating the use of the ProposedDatabase record in DatabaseManager which serves as the front end interface for DatabaseTracker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942133</commentid>
    <comment_count>1</comment_count>
      <attachid>214808</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-21 19:27:02 -0700</bug_when>
    <thetext>Created attachment 214808
the patch.

Layout tests are happy.  I don&apos;t any new regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942135</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-21 19:31:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/14813808&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942142</commentid>
    <comment_count>3</comment_count>
      <attachid>214808</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-21 20:24:54 -0700</bug_when>
    <thetext>Comment on attachment 214808
the patch.

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        Previously, detailsForNameAndOrigin() relies on the ProposedDatabase
&gt; +        mechanism to provide this size information. This change re-instates the
&gt; +        ProposedDatabase mechanism so that WebKit1 client code that relies on
&gt; +        this behavior will continue to work.

Can you add a test for this? Seems like a pretty straightforward case.

&gt; Source/WebCore/Modules/webdatabase/DatabaseManager.h:139
&gt; +    HashSet&lt;ProposedDatabase*&gt; m_proposedDatabases;

A set implies that we plan to handle lots of proposed databases concurrently or re-entrently. Do we really intend to do that?

If not, let&apos;s make this code self-documenting by switching to a single pointer instead of a set, and ASSERTing and returning early if we&apos;re wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942608</commentid>
    <comment_count>4</comment_count>
      <attachid>214937</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-23 01:07:57 -0700</bug_when>
    <thetext>Created attachment 214937
patch 2: added a test, and track only 1 ProposedDatabase in DatabaseManager.

I tried to update the DumpRenderTree and test runner files for all the ports needed for the new test, but the gtk one has an abstraction layer that I don&apos;t quite understand yet.  So, instead, I added a TestExpectation to fail the test for the gtk port.  The gtk port owners will have to implement the needed changes based on other ports.

The test changes have been tested on Mac.  Will need to let the EWS check if they build on the other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942610</commentid>
    <comment_count>5</comment_count>
      <attachid>214937</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-23 01:11:55 -0700</bug_when>
    <thetext>Comment on attachment 214937
patch 2: added a test, and track only 1 ProposedDatabase in DatabaseManager.

Attachment 214937 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/7748072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942614</commentid>
    <comment_count>6</comment_count>
      <attachid>214938</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-23 01:17:28 -0700</bug_when>
    <thetext>Created attachment 214938
patch 3: fixed efl build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942623</commentid>
    <comment_count>7</comment_count>
      <attachid>214938</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-23 01:57:36 -0700</bug_when>
    <thetext>Comment on attachment 214938
patch 3: fixed efl build failure

Attachment 214938 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/7728098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942709</commentid>
    <comment_count>8</comment_count>
      <attachid>214970</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-23 09:24:32 -0700</bug_when>
    <thetext>Created attachment 214970
patch 4: with speculative fix for Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942757</commentid>
    <comment_count>9</comment_count>
      <attachid>214970</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-23 11:22:19 -0700</bug_when>
    <thetext>Comment on attachment 214970
patch 4: with speculative fix for Windows build

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

r=me

&gt; Source/WebCore/Modules/webdatabase/DatabaseManager.h:119
&gt; +        DatabaseManager* m_manager;

This should be a reference, since it can&apos;t be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942760</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-23 11:33:46 -0700</bug_when>
    <thetext>Thanks for the review. Geoff&apos;s last feedback has been addressed.  Landed in r157874: &lt;http://trac.webkit.org/r157874&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214808</attachid>
            <date>2013-10-21 19:27:02 -0700</date>
            <delta_ts>2013-10-23 01:07:57 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-123131.patch</filename>
            <type>text/plain</type>
            <size>8448</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzc3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEwLTIxICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0
YWJhc2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAg
ICAgICBJZiBhIHdlYnBhZ2UgdHJpZXMgdG8gY3JlYXRlIGEgZGF0YWJhc2UgdGhhdCBleGNlZWRz
IHRoZSBkYXRhYmFzZSBzaXplCisgICAgICAgIHF1b3RhIGZvciB0aGF0IHNlY3VyaXR5IG9yaWdp
biwgdGhlIFdlYktpdDEgcXVvdGEgcmVxdWVzdCBtZWNoYW5pc20KKyAgICAgICAgdXNlcyBkZXRh
aWxzRm9yTmFtZUFuZE9yaWdpbigpIHRvIGdldCB0aGUgcmVxdWVzdGVkIHNpemUgb2YgdGhlIGRh
dGFiYXNlCisgICAgICAgICh0aGF0IHRoZSB3ZWJwYWdlIGlzIGF0dGVtcHRpbmcgdG8gb3Blbikg
aW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKKyAgICAgICAgdG8gaW5jcmVhc2UgdGhlIHF1
b3RhIG9yIG5vdC4KKworICAgICAgICBQcmV2aW91c2x5LCBkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bigpIHJlbGllcyBvbiB0aGUgUHJvcG9zZWREYXRhYmFzZQorICAgICAgICBtZWNoYW5pc20gdG8g
cHJvdmlkZSB0aGlzIHNpemUgaW5mb3JtYXRpb24uIFRoaXMgY2hhbmdlIHJlLWluc3RhdGVzIHRo
ZQorICAgICAgICBQcm9wb3NlZERhdGFiYXNlIG1lY2hhbmlzbSBzbyB0aGF0IFdlYktpdDEgY2xp
ZW50IGNvZGUgdGhhdCByZWxpZXMgb24KKyAgICAgICAgdGhpcyBiZWhhdmlvciB3aWxsIGNvbnRp
bnVlIHRvIHdvcmsuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmV4aXN0aW5nRGF0
YWJhc2VDb250ZXh0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6cmVn
aXN0ZXJEYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
Ojp1bnJlZ2lzdGVyRGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZGlkQ29uc3RydWN0RGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6ZGlkRGVzdHJ1Y3REYXRhYmFzZUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bvc2VkRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4p
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmg6CisKIDIw
MTMtMTAtMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dJTl0gUHJvcGVybHkgc3VwcG9ydCByZXZlcnNlIGFuaW1hdGlvbnMgd2l0aG91dCBuZWVkaW5n
IHNvZnR3YXJlIGZhbGxiYWNrLgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTU3NzA1KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAogUGFzc1JlZlB0
cjxEYXRhYmFzZUNvbnRleHQ+IERhdGFiYXNlTWFuYWdlcjo6ZXhpc3RpbmdEYXRhYmFzZUNvbnRl
eHRGb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9jb250ZXh0TWFwTG9jayk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAKICAgICBBU1NFUlQobV9kYXRhYmFzZUNvbnRleHRSZWdpc3RlcmVkQ291bnQgPj0gMCk7
CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0SW5zdGFuY2VDb3VudCA+PSAwKTsKQEAgLTE1
OSw3ICsxNTksNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gRGF0YWJhc2VNYW5hCiAK
IHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZWdpc3RlckRhdGFiYXNlQ29udGV4dChEYXRhYmFzZUNv
bnRleHQqIGRhdGFiYXNlQ29udGV4dCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb250
ZXh0TWFwTG9jayk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGRhdGFiYXNlQ29udGV4dC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIG1fY29udGV4dE1hcC5zZXQoY29udGV4dCwgZGF0YWJhc2VDb250
ZXh0KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBEYXRh
YmFzZU1hbmFnZXI6OnJlZ2lzdGVyRGF0YWJhc2VDbwogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6
dW5yZWdpc3RlckRhdGFiYXNlQ29udGV4dChEYXRhYmFzZUNvbnRleHQqIGRhdGFiYXNlQ29udGV4
dCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb250ZXh0TWFwTG9jayk7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IGRhdGFiYXNlQ29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIEFT
U0VSVChtX2NvbnRleHRNYXAuZ2V0KGNvbnRleHQpKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBA
IC0xODEsMTMgKzE4MSwxMyBAQCB2b2lkIERhdGFiYXNlTWFuYWdlcjo6dW5yZWdpc3RlckRhdGFi
YXNlCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRpZENvbnN0
cnVjdERhdGFiYXNlQ29udGV4dCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NvbnRleHRN
YXBMb2NrKTsKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbG9jayk7CiAgICAgbV9kYXRhYmFzZUNv
bnRleHRJbnN0YW5jZUNvdW50Kys7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpkaWREZXN0
cnVjdERhdGFiYXNlQ29udGV4dCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NvbnRleHRN
YXBMb2NrKTsKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbG9jayk7CiAgICAgbV9kYXRhYmFzZUNv
bnRleHRJbnN0YW5jZUNvdW50LS07CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0UmVnaXN0
ZXJlZENvdW50IDw9IG1fZGF0YWJhc2VDb250ZXh0SW5zdGFuY2VDb3VudCk7CiB9CkBAIC0yNDgs
OCArMjQ4LDE0IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gRGF0YWJhc2UKICAg
ICAgICAgICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50IHRoYXQgd2UndmUgZXhjZWVkZWQgdGhlIGRh
dGFiYXNlIHF1b3RhLgogICAgICAgICAgICAgLy8gVGhlIGNsaWVudCBtYXkgd2FudCB0byBpbmNy
ZWFzZSB0aGUgcXVvdGEsIGFuZCB3ZSdsbCBnaXZlIGl0CiAgICAgICAgICAgICAvLyBvbmUgbW9y
ZSB0cnkgYWZ0ZXIgaWYgdGhhdCBpcyB0aGUgY2FzZS4KLSAgICAgICAgICAgIGRhdGFiYXNlQ29u
dGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUsCi0gICAgICAgICAgICAgICAgRGF0YWJh
c2VEZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgp
LCBlc3RpbWF0ZWRTaXplLCAwKSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHJv
cG9zZWREYXRhYmFzZSBwcm9wb3NlZERiKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmlzb2xh
dGVkQ29weSgpLAorICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZURldGFpbHMobmFtZS5pc29s
YXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDAp
KTsKKyAgICAgICAgICAgICAgICBhZGRQcm9wb3NlZERhdGFiYXNlKCZwcm9wb3NlZERiKTsKKyAg
ICAgICAgICAgICAgICBkYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1l
LAorICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZURldGFpbHMobmFtZS5pc29sYXRlZENvcHko
KSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDApKTsKKyAgICAg
ICAgICAgICAgICByZW1vdmVQcm9wb3NlZERhdGFiYXNlKCZwcm9wb3NlZERiKTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgZXJyb3IgPSBEYXRhYmFzZUVycm9yOjpOb25lOwogCkBAIC0y
NzgsNiArMjg0LDE4IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gRGF0YWJhc2UK
ICAgICByZXR1cm4gYmFja2VuZC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjphZGRQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqIHByb3Bvc2VkRGIpCit7Cisg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgbV9wcm9wb3NlZERhdGFiYXNlcy5h
ZGQocHJvcG9zZWREYik7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3Nl
ZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqIHByb3Bvc2VkRGIpCit7CisgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUocHJvcG9z
ZWREYik7Cit9CisKIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwKICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0
YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywKQEAgLTM1MSw2ICszNjksMTIgQEAgdm9p
ZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaQogCiBTdHJpbmcgRGF0YWJhc2VN
YW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKKyAgICB7CisgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBmb3IgKEhhc2hTZXQ8UHJv
cG9zZWREYXRhYmFzZSo+OjppdGVyYXRvciBpdGVyID0gbV9wcm9wb3NlZERhdGFiYXNlcy5iZWdp
bigpOyBpdGVyICE9IG1fcHJvcG9zZWREYXRhYmFzZXMuZW5kKCk7ICsraXRlcikKKyAgICAgICAg
ICAgIGlmICgoKml0ZXIpLT5zZWNvbmQubmFtZSgpID09IG5hbWUgJiYgKCppdGVyKS0+Zmlyc3Qt
PmVxdWFsKG9yaWdpbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0K
ICAgICByZXR1cm4gbV9zZXJ2ZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBj
cmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKQEAgLTM3MSw2ICszOTUsMTQgQEAgYm9vbCBEYXRh
YmFzZU1hbmFnZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogCiBEYXRhYmFzZURldGFpbHMgRGF0YWJh
c2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFByb3Bvc2VkRGF0YWJhc2UqPjo6aXRl
cmF0b3IgaXRlciA9IG1fcHJvcG9zZWREYXRhYmFzZXMuYmVnaW4oKTsgaXRlciAhPSBtX3Byb3Bv
c2VkRGF0YWJhc2VzLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICBpZiAoKCppdGVyKS0+c2Vj
b25kLm5hbWUoKSA9PSBuYW1lICYmICgqaXRlciktPmZpcnN0LT5lcXVhbChvcmlnaW4pKSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCgqaXRlciktPnNlY29uZC50aHJlYWQoKSA9PSBjdXJyZW50
VGhyZWFkKCkpOworICAgICAgICAgICAgICAgIHJldHVybiAoKml0ZXIpLT5zZWNvbmQ7CisgICAg
ICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBtX3NlcnZlci0+ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4obmFtZSwgb3JpZ2luKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiAxNTc3MDUp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC0xMDYsNiArMTA3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAKIHByaXZhdGU6CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgRGF0YWJhc2VEZXRhaWxzPiBQcm9wb3NlZERhdGFiYXNlOworCiAgICAg
RGF0YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFiYXNlTWFuYWdlcigpIHsgfQogCkBAIC0xMTcs
MjAgKzEyMCwyNiBAQCBwcml2YXRlOgogICAgICAgICBEYXRhYmFzZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgYm9vbCBzZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKIAorICAgIHZvaWQgYWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlKik7Cisg
ICAgdm9pZCByZW1vdmVQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UqKTsKKwogICAg
IHN0YXRpYyB2b2lkIGxvZ0Vycm9yTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIG1fc2Vy
dmVyOwogICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2Rh
dGFiYXNlSXNBdmFpbGFibGU7CiAKLSAgICAvLyBBY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBmaWVs
ZHMgcmVxdWlyZSBsb2NraW5nIG1fY29udGV4dE1hcExvY2s6CisgICAgLy8gQWNjZXNzIHRvIHRo
ZSBmb2xsb3dpbmcgZmllbGRzIHJlcXVpcmUgbG9ja2luZyBtX2xvY2sgYmVsb3c6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZUNvbnRleHQqPiBD
b250ZXh0TWFwOwogICAgIENvbnRleHRNYXAgbV9jb250ZXh0TWFwOwogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBpbnQgbV9kYXRhYmFzZUNvbnRleHRSZWdpc3RlcmVkQ291bnQ7CiAgICAgaW50
IG1fZGF0YWJhc2VDb250ZXh0SW5zdGFuY2VDb3VudDsKICNlbmRpZgotICAgIE11dGV4IG1fY29u
dGV4dE1hcExvY2s7CisgICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERh
dGFiYXNlczsKKworICAgIC8vIFRoaXMgbG9jayBwcm90ZWN0cyBtX2NvbnRleHRNYXAsIGFuZCBt
X3Byb3Bvc2VkRGF0YWJhc2VzLgorICAgIE11dGV4IG1fbG9jazsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214937</attachid>
            <date>2013-10-23 01:07:57 -0700</date>
            <delta_ts>2013-10-23 01:17:28 -0700</delta_ts>
            <desc>patch 2: added a test, and track only 1 ProposedDatabase in DatabaseManager.</desc>
            <filename>bug-123131b.patch</filename>
            <type>text/plain</type>
            <size>20532</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEwLTIzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0
YWJhc2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uvd2Vic3Fs
L29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwKKworICAgICAgICBJZiBhIHdlYnBhZ2Ug
dHJpZXMgdG8gY3JlYXRlIGEgZGF0YWJhc2UgdGhhdCBleGNlZWRzIHRoZSBkYXRhYmFzZSBzaXpl
CisgICAgICAgIHF1b3RhIGZvciB0aGF0IHNlY3VyaXR5IG9yaWdpbiwgdGhlIFdlYktpdDEgcXVv
dGEgcmVxdWVzdCBtZWNoYW5pc20KKyAgICAgICAgdXNlcyBkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bigpIHRvIGdldCB0aGUgcmVxdWVzdGVkIHNpemUgb2YgdGhlIGRhdGFiYXNlCisgICAgICAgICh0
aGF0IHRoZSB3ZWJwYWdlIGlzIGF0dGVtcHRpbmcgdG8gb3BlbikgaW4gb3JkZXIgdG8gZGV0ZXJt
aW5lIHdoZXRoZXIKKyAgICAgICAgdG8gaW5jcmVhc2UgdGhlIHF1b3RhIG9yIG5vdC4KKworICAg
ICAgICBQcmV2aW91c2x5LCBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpIHJlbGllcyBvbiB0aGUg
UHJvcG9zZWREYXRhYmFzZQorICAgICAgICBtZWNoYW5pc20gdG8gcHJvdmlkZSB0aGlzIHNpemUg
aW5mb3JtYXRpb24uIFRoaXMgY2hhbmdlIHJlLWluc3RhdGVzIHRoZQorICAgICAgICBQcm9wb3Nl
ZERhdGFiYXNlIG1lY2hhbmlzbSBzbyB0aGF0IFdlYktpdDEgY2xpZW50IGNvZGUgdGhhdCByZWxp
ZXMgb24KKyAgICAgICAgdGhpcyBiZWhhdmlvciB3aWxsIGNvbnRpbnVlIHRvIHdvcmsuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFi
YXNlOjp+UHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om9wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
OlByb3Bvc2VkRGF0YWJhc2U6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OlByb3Bvc2VkRGF0YWJhc2U6OmRldGFpbHMpOgorCiAyMDEzLTEwLTIyICBab2x0YW4g
SG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZmFjdG9yIExpbmVCcmVh
a2VyOjpuZXh0U2VnbWVudEJyZWFrLCBhZGQgQnJlYWtpbmdDb250ZXh0IHRoYXQgaG9sZHMgYWxs
IGl0cyBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTU3ODQ5KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RhdGFi
YXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFzZTo6UHJvcG9zZWREYXRhYmFzZShEYXRhYmFzZU1h
bmFnZXIqIG1hbmFnZXIsCisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fb3JpZ2luKG9yaWdpbi0+
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2RldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlz
cGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDApCit7CisgICAgQVNTRVJU
KCFtX21hbmFnZXItPm1fcHJvcG9zZWREYXRhYmFzZSk7CisgICAgbV9tYW5hZ2VyLT5tX3Byb3Bv
c2VkRGF0YWJhc2UgPSB0aGlzOworfQorCitEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0YWJh
c2U6On5Qcm9wb3NlZERhdGFiYXNlKCkKK3sKKyAgICBtX21hbmFnZXItPm1fcHJvcG9zZWREYXRh
YmFzZSA9IDA7Cit9CisKIERhdGFiYXNlTWFuYWdlciYgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkKIHsKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyKiBkYk1hbmFnZXIgPSAwOwpAQCAtNjgs
NiArODMsNyBAQCBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCiAgICAgLCBtX2Rh
dGFiYXNlQ29udGV4dFJlZ2lzdGVyZWRDb3VudCgwKQogICAgICwgbV9kYXRhYmFzZUNvbnRleHRJ
bnN0YW5jZUNvdW50KDApCiAjZW5kaWYKKyAgICAsIG1fcHJvcG9zZWREYXRhYmFzZSgwKQogewog
ICAgIEFTU0VSVChtX3NlcnZlcik7IC8vIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHNlcnZlciB0
byB3b3JrIHdpdGguCiB9CkBAIC0yNDgsOSArMjY0LDExIEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VC
YWNrZW5kQmFzZT4gRGF0YWJhc2UKICAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50IHRo
YXQgd2UndmUgZXhjZWVkZWQgdGhlIGRhdGFiYXNlIHF1b3RhLgogICAgICAgICAgICAgLy8gVGhl
IGNsaWVudCBtYXkgd2FudCB0byBpbmNyZWFzZSB0aGUgcXVvdGEsIGFuZCB3ZSdsbCBnaXZlIGl0
CiAgICAgICAgICAgICAvLyBvbmUgbW9yZSB0cnkgYWZ0ZXIgaWYgdGhhdCBpcyB0aGUgY2FzZS4K
LSAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUs
Ci0gICAgICAgICAgICAgICAgRGF0YWJhc2VEZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRp
c3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwKSk7Ci0KKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBQcm9wb3NlZERhdGFiYXNlIHByb3Bvc2VkRGIodGhpcywg
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpOworICAgICAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1
b3RhKG5hbWUsCisgICAgICAgICAgICAgICAgICAgIERhdGFiYXNlRGV0YWlscyhuYW1lLmlzb2xh
dGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCkp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZXJyb3IgPSBEYXRhYmFzZUVycm9yOjpOb25l
OwogCiAgICAgICAgICAgICBiYWNrZW5kID0gbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShiYWNrZW5k
Q29udGV4dCwgdHlwZSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLApAQCAtMzUxLDYgKzM2OSw5IEBA
IHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmkKIAogU3RyaW5nIERhdGFi
YXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiB7CisgICAgUHJv
cG9zZWREYXRhYmFzZSogZGIgPSBtX3Byb3Bvc2VkRGF0YWJhc2U7CisgICAgaWYgKGRiICYmIGRi
LT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgZGItPm9yaWdpbigpLT5lcXVhbChvcmlnaW4p
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fc2VydmVyLT5mdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogfQogCkBA
IC0zNzEsNiArMzkyLDExIEBAIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9y
T3IKIAogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogeworICAg
IFByb3Bvc2VkRGF0YWJhc2UqIGRiID0gbV9wcm9wb3NlZERhdGFiYXNlOworICAgIGlmIChkYiAm
JiBkYi0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIGRiLT5vcmlnaW4oKS0+ZXF1YWwob3Jp
Z2luKSkgeworICAgICAgICBBU1NFUlQoZGItPmRldGFpbHMoKS50aHJlYWQoKSA9PSBjdXJyZW50
VGhyZWFkKCkpOworICAgICAgICByZXR1cm4gZGItPmRldGFpbHMoKTsKKyAgICB9CiAgICAgcmV0
dXJuIG1fc2VydmVyLT5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE1Nzg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2
ICsxMDYsMjEgQEAgcHVibGljOgogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgUHJv
cG9zZWREYXRhYmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBQcm9wb3NlZERhdGFiYXNlKERh
dGFiYXNlTWFuYWdlciosIFNlY3VyaXR5T3JpZ2luKiwKKyAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKTsKKyAgICAgICAgflByb3Bvc2VkRGF0YWJhc2UoKTsKKworICAgICAgICBTZWN1cml0
eU9yaWdpbiogb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICAgICAgRGF0
YWJhc2VEZXRhaWxzJiBkZXRhaWxzKCkgeyByZXR1cm4gbV9kZXRhaWxzOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBEYXRhYmFzZU1hbmFnZXIqIG1fbWFuYWdlcjsKKyAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICAgICAgRGF0YWJhc2VEZXRhaWxzIG1fZGV0
YWlsczsKKyAgICB9OworCiAgICAgRGF0YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFiYXNlTWFu
YWdlcigpIHsgfQogCkBAIC0xMzEsNiArMTQ2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kYXRh
YmFzZUNvbnRleHRJbnN0YW5jZUNvdW50OwogI2VuZGlmCiAgICAgTXV0ZXggbV9jb250ZXh0TWFw
TG9jazsKKworICAgIFByb3Bvc2VkRGF0YWJhc2UqIG1fcHJvcG9zZWREYXRhYmFzZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTEwLTIzICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0YWJh
c2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlc2UgZmlsZXMgdG8g
YWxsb3cgZGF0YWJhc2UgcXVvdGFzIHRvIGdyb3cgd2l0aGluIGEgbGltaXQgZm9yCisgICAgICAg
IHRlc3RpbmcgcHVycG9zZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZWZsL0R1bXBSZW5kZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChvbkV4Y2VlZGVkRGF0YWJh
c2VRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFG
b3JTZWN1cml0eU9yaWdpbjpkYXRhYmFzZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChVSURlbGVnYXRlOjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRF
eGNlZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKwogMjAx
My0xMC0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEYXNoYm9hcmQgcmVwYWludHMgY29uc3RhbnRseQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE1Nzg0
OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0QmxhY2tCZXJyeS5oIgogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWwuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIkR1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIgpAQCAtNzgzLDcgKzc4MywxNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVl
OjpleGNlZWRlZERhdGFiYXNlUXVvCiAgICAgaWYgKCF0ZXN0RG9uZSAmJiBnVGVzdFJ1bm5lci0+
ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFU
QUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnsl
cywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgb3JpZ2luLT5wcm90b2NvbCgpLnV0ZjgoKS5kYXRh
KCksIG9yaWdpbi0+aG9zdCgpLnV0ZjgoKS5kYXRhKCksIG9yaWdpbi0+cG9ydCgpLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEobWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCA1ICogMTAy
NCAqIDEwMjQpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgbWFuYWdlciA9IFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOyAKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURl
dGFpbHMgZGV0YWlscyA9IGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAy
NCAqIDEwMjQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhRdW90YSA9
IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gZGVm
YXVsdFF1b3RhOworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0
ZWRTaXplIDw9IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXplOwor
ICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQg
cXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOworICAgIH0KKyAgICBtYW5hZ2VyLnNldFF1b3Rh
KG9yaWdpbiwgbmV3UXVvdGEpOwogfQogCiBib29sIER1bXBSZW5kZXJUcmVlOjphbGxvd3NPcGVu
aW5nV2luZG93KCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJl
ZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxNTc4NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRHVtcFJlbmRlclRyZWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEz
NCwxMyBAQCBzdGF0aWMgdWludDY0X3Qgb25FeGNlZWRlZERhdGFiYXNlUXVvdGEoCiAgICAgICAg
ICAgICBkYXRhYmFzZU5hbWUpOwogICAgIGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZShvcmlnaW4p
OwogCi0gICAgcmV0dXJuIDUgKiAxMDI0ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0
X3QgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OworICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgaWYgKGRlZmF1bHRRdW90YSA8
IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgcHJp
bnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICVs
bHVcbiIsIG5ld1F1b3RhKTsKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkU2l6ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGRlZmF1bHRRdW90YTsKIH0KIAogc3RhdGljIGludDY0X3Qgb25FeGNlZWRlZEFw
cGxpY2F0aW9uQ2FjaGVRdW90YShFd2tfVmlld19TbWFydF9EYXRhKiwgRXdrX1NlY3VyaXR5X09y
aWdpbiAqb3JpZ2luLCBpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgaW50NjRfdCB0b3RhbFNw
YWNlTmVlZGVkKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJl
dmlzaW9uIDE1Nzg0OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCwxMSBAQAogI2ltcG9ydCAiRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAj
aW1wb3J0ICJUZXN0UnVubmVyLmgiCisKICNpbXBvcnQgPFdlYktpdC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViSFRNTFZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YWJhc2VNYW5h
Z2VyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlF1b3RhTWFuYWdlci5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YlVJRGVsZWdhdGVQcml2YXRlLmg+CkBAIC0xNzIsOCArMTc0LDE3IEBAIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBmcmFtZToKICAgICAgICAgICAgIFtvcmlnaW4gcG9ydF0sIFtk
YXRhYmFzZUlkZW50aWZpZXIgVVRGOFN0cmluZ10pOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OyAgICAK
LSAgICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6ZGVmYXVsdFF1b3Rh
XTsKKyAgICBOU0RpY3Rpb25hcnkgKmRhdGFiYXNlRGV0YWlscyA9IFtbV2ViRGF0YWJhc2VNYW5h
Z2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gZGV0YWlsc0ZvckRhdGFiYXNlOmRhdGFiYXNl
SWRlbnRpZmllciB3aXRoT3JpZ2luOm9yaWdpbl07CisgICAgQVNTRVJUKGRhdGFiYXNlRGV0YWls
cyk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkU2l6ZSA9IFtbZGF0YWJhc2VEZXRh
aWxzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZUV4cGVjdGVkU2l6ZUtleV0gdW5zaWduZWRMb25n
TG9uZ1ZhbHVlXTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRR
dW90YSA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBs
b25nIG1heFF1b3RhID0gMTAgKiAxMDI0ICogMTAyNDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
bmV3UXVvdGEgPSBkZWZhdWx0UXVvdGE7CisgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVk
U2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgbmV3UXVvdGEgPSBl
eHBlY3RlZFNpemU7CisgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJB
Q0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4iLCBuZXdRdW90YSk7CisgICAgfQorICAgIFtb
b3JpZ2luIGRhdGFiYXNlUXVvdGFNYW5hZ2VyXSBzZXRRdW90YTpuZXdRdW90YV07CiB9CiAKIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiB0
b3RhbFNwYWNlTmVlZGVkOihOU1VJbnRlZ2VyKXRvdGFsU3BhY2VOZWVkZWQKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE1Nzg0OSkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk1LDcgKzU5NSwzMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFVJRGVsZWdhdGU6OmV4
CiAgICAgU3lzRnJlZVN0cmluZyhob3N0KTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIG9yaWdpbi0+c2V0
UXVvdGEoZGVmYXVsdFF1b3RhKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
IG1heFF1b3RhID0gMTAgKiAxMDI0ICogMTAyNDsKKworICAgIENPTVB0cjxJV2ViRGF0YWJhc2VN
YW5hZ2VyPiBkYXRhYmFzZU1hbmFnZXI7CisgICAgQ09NUHRyPElXZWJEYXRhYmFzZU1hbmFnZXI+
IHRtcERhdGFiYXNlTWFuYWdlcjsKKworICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFu
Y2UoQ0xTSURfV2ViRGF0YWJhc2VNYW5hZ2VyLCAwLCBJSURfSVdlYkRhdGFiYXNlTWFuYWdlciwg
KHZvaWQqKikmdG1wRGF0YWJhc2VNYW5hZ2VyKSkpIHsKKyAgICAgICAgb3JpZ2luLT5zZXRRdW90
YShkZWZhdWx0UXVvdGEpOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisgICAgaWYgKEZB
SUxFRCh0bXBEYXRhYmFzZU1hbmFnZXItPnNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcigmZGF0YWJh
c2VNYW5hZ2VyKSkpIHsKKyAgICAgICAgb3JpZ2luLT5zZXRRdW90YShkZWZhdWx0UXVvdGEpOwor
ICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisgICAgSVByb3BlcnR5QmFnKiBkZXRhaWxzQmFn
OworICAgIGlmIChGQUlMRUQoZGF0YWJhc2VNYW5hZ2VyLT5kZXRhaWxzRm9yRGF0YWJhc2UoZGF0
YWJhc2VJZGVudGlmaWVyLCBvcmlnaW4sICZkZXRhaWxzQmFnKSkpIHsKKyAgICAgICAgb3JpZ2lu
LT5zZXRRdW90YShkZWZhdWx0UXVvdGEpOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9Cisg
ICAgVkFSSUFOVCB2YXI7CisgICAgZGV0YWlsc0JhZy0+UmVhZChXZWJEYXRhYmFzZVVzYWdlS2V5
LCAmdmFyLCAwKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRTaXplID0gVl9VSTgo
dmFyKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBkZWZhdWx0UXVvdGE7Cisg
ICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4
UXVvdGEpIHsKKyAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFNpemU7CisgICAgICAgIHByaW50
ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1
XG4iLCBuZXdRdW90YSk7CisgICAgfQorICAgIG9yaWdpbi0+c2V0UXVvdGEobmV3UXVvdGEpOwog
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTU3ODQ5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MywxMCArMTQzLDE2IEBA
IHN0YXRpYyBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgKICAgICByZXR1cm4gVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLmJlZm9yZVVubG9hZFJldHVyblZhbHVlKCk7CiB9CiAKLXN0
YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVm
LCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIGNvbnN0IHZvaWQqKQorc3RhdGljIHVuc2lnbmVkIGxv
bmcgbG9uZyBleGNlZWRlZERhdGFiYXNlUXVvdGEoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIGxvbmcg
bG9uZywgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZyBleHBlY3RlZFVzYWdlLCBjb25zdCB2b2lkKikKIHsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBy
ZXR1cm4gZGVmYXVsdFF1b3RhOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcg
bWF4UXVvdGEgPSAxMCAqIDEwMjQgKiAxMDI0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdR
dW90YSA9IGRlZmF1bHRRdW90YTsKKyAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRVc2Fn
ZSAmJiBleHBlY3RlZFVzYWdlIDw9IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3RhID0gZXhw
ZWN0ZWRVc2FnZTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFD
SzogaW5jcmVhc2VkIHF1b3RhIHRvICVsbHVcbiIsIG5ld1F1b3RhKTsKKyAgICB9CisgICAgcmV0
dXJuIG5ld1F1b3RhOwogfQogCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlz
aW9uIDE1Nzg0OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0OSw3ICsxNDQ5LDE4IEBA
IHVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGEKICAgICB9CiAKICAgICBz
dGF0aWMgY29uc3QgdWludDY0X3QgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwotICAg
IHJldHVybiBkZWZhdWx0UXVvdGE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFF1b3Rh
ID0gMTAgKiAxMDI0ICogMTAyNDsKKyAgICB1aW50NjRfdCBuZXdRdW90YSA9IGRlZmF1bHRRdW90
YTsKKyAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRVc2FnZUJ5dGVzICYmIGV4cGVjdGVk
VXNhZ2VCeXRlcyA8PSBtYXhRdW90YSkgeworICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVkVXNh
Z2VCeXRlczsKKworICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJB
Q0s6IGluY3JlYXNlZCBxdW90YSB0byAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRO
dW1iZXIobmV3UXVvdGEpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50
b1N0cmluZygpKTsKKyAgICB9CisgICAgcmV0dXJuIG5ld1F1b3RhOwogfQogCiAvLyBFZGl0b3Ig
Q2xpZW50IENhbGxiYWNrcwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3ODUxKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMTAtMjMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlLWluc3RhdGUgUHJv
cG9zZWREYXRhYmFzZXMgbmVlZGVkIGJ5IGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKCkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMxMzEuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0
IHRvIGV4ZXJjaXNlIGdyb3dpbmcgdGhlIGRhdGFiYXNlIHF1b3RhIHdpdGhpbiBsaW1pdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1
b3RhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNl
LW92ZXItcXVvdGEuaHRtbDoKKwogMjAxMy0xMC0yMiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZWZhY3RvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRC
cmVhaywgYWRkIEJyZWFraW5nQ29udGV4dCB0aGF0IGhvbGRzIGFsbCBpdHMgc3RhdGUKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNTc4
NDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtNDQ3LDYgKzQ0Nyw5IEBAIHdlYmtpdC5vcmcvYi8xMDcxOTQgaHR0cC90ZXN0
cy9zZWN1cml0eS8KIHdlYmtpdC5vcmcvYi8xMDcxOTQgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4td29ya2VyLWluZGV4ZWRkYi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTA3
MTk0IGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8taW5kZXhlZGRiLWZyb20tc2FuZGJveC5odG1sIFsg
U2tpcCBdCiAKKyMgTmVlZHMgdG8gdXBkYXRlIHRoZSBndGsgZGF0YWJhc2VRdW90YUV4Y2VlZGVk
KCkgdGVzdCBmdW5jdGlvbiB0byBoYW5kbGUgcXVvdGEgZXhwYW5zaW9uIHJlcXVlc3RzLgorc3Rv
cmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEuaHRtbCBbIEZhaWx1cmUgXQor
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgZmFp
bHVyZXMKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkluZGV4OiBMYXlvdXRUZXN0
cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1l
eHBhbmQtcXVvdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3Rv
cmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6
IGluY3JlYXNlZCBxdW90YSB0byA4MDAwMDAwCitUaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBvcGVu
RGF0YWJhc2Ugd2l0aCBhIHNpemUgb3ZlciA1TUIgZG9lc24ndCBhc3NlcnQgb24gZGVidWcgYnVp
bGRzLCBhbmQgd2lsbCBpbmNyZWFzZSB0aGUgcXVvdGEgdG8gYWNjb21tb2RhdGUgdGhlIHJlcXVl
c3RlZCBzaXplIHdoZW5ub3QgZXhjZWVkaW5nIGEgbWF4IGxpbWl0IG9mIDEwTS4KK1BBU1MKSW5k
ZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3Rh
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRh
YmFzZS1leHBhbmQtcXVvdGEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhckFsbERhdGFiYXNlcygpOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIHZhciBkYiA9IG9wZW5EYXRhYmFzZSgnRXhwYW5k
ZWRRdW90YU9wZW4nLCAnJywgJ1Rlc3QgZm9yIGJ1ZyAxMjMxMzE6IGluY3JlYXNlIGRhdGFiYXNl
IHF1b3RhJywgODAwMDAwMCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAnUEFTUycKKyAgICB9IGNhdGNoIChlcnIpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMJworICAgIH0K
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPGRpdj5U
aGlzIHRlc3RzIHRoYXQgY2FsbGluZyBvcGVuRGF0YWJhc2Ugd2l0aCBhIHNpemUgb3ZlciA1TUIg
ZG9lc24ndCBhc3NlcnQgb24gZGVidWcgYnVpbGRzLAorYW5kIHdpbGwgaW5jcmVhc2UgdGhlIHF1
b3RhIHRvIGFjY29tbW9kYXRlIHRoZSByZXF1ZXN0ZWQgc2l6ZSB3aGVubm90IGV4Y2VlZGluZyBh
IG1heCBsaW1pdCBvZiAxME0uCis8ZGl2IGlkPSJyZXN1bHQiPgorUEFTUzogU3VjY2Vzc2Z1bGx5
IG9wZW5lZCBkYXRhYmFzZSBncmVhdGVyIHRoYW4gNU0uCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1x
dW90YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJz
cWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU3ODQ5
KQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3Rh
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKLVRoaXMgdGVzdHMg
dGhhdCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBvdmVyIDVNQiBkb2Vzbid0IGFz
c2VydCBvbiBkZWJ1ZyBidWlsZHMuCitUaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBvcGVuRGF0YWJh
c2Ugd2l0aCBhIHNpemUgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgdGVzdCBtYXggcXVvdGEgbGlt
aXQgb2YgMTBNQiBkb2Vzbid0IGFzc2VydCBvbiBkZWJ1ZyBidWlsZHMuCiBQQVNTCkluZGV4OiBM
YXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92
ZXItcXVvdGEuaHRtbAkocmV2aXNpb24gMTU3ODQ5KQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS93
ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgs
NyArOCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfQogCiAgICAgdHJ5IHsKLSAgICAg
ICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCdPdmVyUXVvdGFPcGVuJywgJycsICdUZXN0IGZvciBi
dWcgMzY0NzM6IG1pc3NpbmcgbG9jayBpbiBjYWxsIHRvIGRvbmVDcmVhdGluZ0RhdGFiYXNlJywg
MTAwMDAwMDApOworICAgICAgICB2YXIgZGIgPSBvcGVuRGF0YWJhc2UoJ092ZXJRdW90YU9wZW4n
LCAnJywgJ1Rlc3QgZm9yIGJ1ZyAzNjQ3MzogbWlzc2luZyBsb2NrIGluIGNhbGwgdG8gZG9uZUNy
ZWF0aW5nRGF0YWJhc2UnLCAyMDAwMDAwMCk7CiAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnUEFTUycKICAg
ICB9CkBAIC0xNiw3ICsxNiw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxkaXY+VGhpcyB0ZXN0cyB0aGF0IGNh
bGxpbmcgb3BlbkRhdGFiYXNlIHdpdGggYSBzaXplIG92ZXIgNU1CIGRvZXNuJ3QgYXNzZXJ0IG9u
IGRlYnVnIGJ1aWxkcy4KKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNl
IHdpdGggYSBzaXplIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHRlc3QgbWF4IHF1b3RhIGxpbWl0
IG9mIDEwTUIKK2RvZXNuJ3QgYXNzZXJ0IG9uIGRlYnVnIGJ1aWxkcy4KIDxkaXYgaWQ9InJlc3Vs
dCI+CiBGQUlMOiBXZSBzaG91bGRuJ3QgaGF2ZSBiZWVuIGFibGUgdG8gb3BlbiB0aGUgZGF0YWJh
c2UuCiA8L2Rpdj4K
</data>
<flag name="commit-queue"
          id="237555"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214938</attachid>
            <date>2013-10-23 01:17:28 -0700</date>
            <delta_ts>2013-10-23 09:24:32 -0700</delta_ts>
            <desc>patch 3: fixed efl build failure</desc>
            <filename>bug-123131b.patch</filename>
            <type>text/plain</type>
            <size>20536</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEwLTIzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0
YWJhc2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uvd2Vic3Fs
L29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwKKworICAgICAgICBJZiBhIHdlYnBhZ2Ug
dHJpZXMgdG8gY3JlYXRlIGEgZGF0YWJhc2UgdGhhdCBleGNlZWRzIHRoZSBkYXRhYmFzZSBzaXpl
CisgICAgICAgIHF1b3RhIGZvciB0aGF0IHNlY3VyaXR5IG9yaWdpbiwgdGhlIFdlYktpdDEgcXVv
dGEgcmVxdWVzdCBtZWNoYW5pc20KKyAgICAgICAgdXNlcyBkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bigpIHRvIGdldCB0aGUgcmVxdWVzdGVkIHNpemUgb2YgdGhlIGRhdGFiYXNlCisgICAgICAgICh0
aGF0IHRoZSB3ZWJwYWdlIGlzIGF0dGVtcHRpbmcgdG8gb3BlbikgaW4gb3JkZXIgdG8gZGV0ZXJt
aW5lIHdoZXRoZXIKKyAgICAgICAgdG8gaW5jcmVhc2UgdGhlIHF1b3RhIG9yIG5vdC4KKworICAg
ICAgICBQcmV2aW91c2x5LCBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpIHJlbGllcyBvbiB0aGUg
UHJvcG9zZWREYXRhYmFzZQorICAgICAgICBtZWNoYW5pc20gdG8gcHJvdmlkZSB0aGlzIHNpemUg
aW5mb3JtYXRpb24uIFRoaXMgY2hhbmdlIHJlLWluc3RhdGVzIHRoZQorICAgICAgICBQcm9wb3Nl
ZERhdGFiYXNlIG1lY2hhbmlzbSBzbyB0aGF0IFdlYktpdDEgY2xpZW50IGNvZGUgdGhhdCByZWxp
ZXMgb24KKyAgICAgICAgdGhpcyBiZWhhdmlvciB3aWxsIGNvbnRpbnVlIHRvIHdvcmsuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFi
YXNlOjp+UHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om9wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
OlByb3Bvc2VkRGF0YWJhc2U6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OlByb3Bvc2VkRGF0YWJhc2U6OmRldGFpbHMpOgorCiAyMDEzLTEwLTIyICBab2x0YW4g
SG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZmFjdG9yIExpbmVCcmVh
a2VyOjpuZXh0U2VnbWVudEJyZWFrLCBhZGQgQnJlYWtpbmdDb250ZXh0IHRoYXQgaG9sZHMgYWxs
IGl0cyBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTU3ODQ5KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RhdGFi
YXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFzZTo6UHJvcG9zZWREYXRhYmFzZShEYXRhYmFzZU1h
bmFnZXIqIG1hbmFnZXIsCisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fb3JpZ2luKG9yaWdpbi0+
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2RldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlz
cGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDApCit7CisgICAgQVNTRVJU
KCFtX21hbmFnZXItPm1fcHJvcG9zZWREYXRhYmFzZSk7CisgICAgbV9tYW5hZ2VyLT5tX3Byb3Bv
c2VkRGF0YWJhc2UgPSB0aGlzOworfQorCitEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0YWJh
c2U6On5Qcm9wb3NlZERhdGFiYXNlKCkKK3sKKyAgICBtX21hbmFnZXItPm1fcHJvcG9zZWREYXRh
YmFzZSA9IDA7Cit9CisKIERhdGFiYXNlTWFuYWdlciYgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkKIHsKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyKiBkYk1hbmFnZXIgPSAwOwpAQCAtNjgs
NiArODMsNyBAQCBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCiAgICAgLCBtX2Rh
dGFiYXNlQ29udGV4dFJlZ2lzdGVyZWRDb3VudCgwKQogICAgICwgbV9kYXRhYmFzZUNvbnRleHRJ
bnN0YW5jZUNvdW50KDApCiAjZW5kaWYKKyAgICAsIG1fcHJvcG9zZWREYXRhYmFzZSgwKQogewog
ICAgIEFTU0VSVChtX3NlcnZlcik7IC8vIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHNlcnZlciB0
byB3b3JrIHdpdGguCiB9CkBAIC0yNDgsOSArMjY0LDExIEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VC
YWNrZW5kQmFzZT4gRGF0YWJhc2UKICAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50IHRo
YXQgd2UndmUgZXhjZWVkZWQgdGhlIGRhdGFiYXNlIHF1b3RhLgogICAgICAgICAgICAgLy8gVGhl
IGNsaWVudCBtYXkgd2FudCB0byBpbmNyZWFzZSB0aGUgcXVvdGEsIGFuZCB3ZSdsbCBnaXZlIGl0
CiAgICAgICAgICAgICAvLyBvbmUgbW9yZSB0cnkgYWZ0ZXIgaWYgdGhhdCBpcyB0aGUgY2FzZS4K
LSAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUs
Ci0gICAgICAgICAgICAgICAgRGF0YWJhc2VEZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRp
c3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwKSk7Ci0KKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBQcm9wb3NlZERhdGFiYXNlIHByb3Bvc2VkRGIodGhpcywg
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpOworICAgICAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1
b3RhKG5hbWUsCisgICAgICAgICAgICAgICAgICAgIERhdGFiYXNlRGV0YWlscyhuYW1lLmlzb2xh
dGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCkp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZXJyb3IgPSBEYXRhYmFzZUVycm9yOjpOb25l
OwogCiAgICAgICAgICAgICBiYWNrZW5kID0gbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShiYWNrZW5k
Q29udGV4dCwgdHlwZSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLApAQCAtMzUxLDYgKzM2OSw5IEBA
IHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmkKIAogU3RyaW5nIERhdGFi
YXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiB7CisgICAgUHJv
cG9zZWREYXRhYmFzZSogZGIgPSBtX3Byb3Bvc2VkRGF0YWJhc2U7CisgICAgaWYgKGRiICYmIGRi
LT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgZGItPm9yaWdpbigpLT5lcXVhbChvcmlnaW4p
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fc2VydmVyLT5mdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogfQogCkBA
IC0zNzEsNiArMzkyLDExIEBAIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9y
T3IKIAogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogeworICAg
IFByb3Bvc2VkRGF0YWJhc2UqIGRiID0gbV9wcm9wb3NlZERhdGFiYXNlOworICAgIGlmIChkYiAm
JiBkYi0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIGRiLT5vcmlnaW4oKS0+ZXF1YWwob3Jp
Z2luKSkgeworICAgICAgICBBU1NFUlQoZGItPmRldGFpbHMoKS50aHJlYWQoKSA9PSBjdXJyZW50
VGhyZWFkKCkpOworICAgICAgICByZXR1cm4gZGItPmRldGFpbHMoKTsKKyAgICB9CiAgICAgcmV0
dXJuIG1fc2VydmVyLT5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE1Nzg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2
ICsxMDYsMjEgQEAgcHVibGljOgogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgUHJv
cG9zZWREYXRhYmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBQcm9wb3NlZERhdGFiYXNlKERh
dGFiYXNlTWFuYWdlciosIFNlY3VyaXR5T3JpZ2luKiwKKyAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKTsKKyAgICAgICAgflByb3Bvc2VkRGF0YWJhc2UoKTsKKworICAgICAgICBTZWN1cml0
eU9yaWdpbiogb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICAgICAgRGF0
YWJhc2VEZXRhaWxzJiBkZXRhaWxzKCkgeyByZXR1cm4gbV9kZXRhaWxzOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBEYXRhYmFzZU1hbmFnZXIqIG1fbWFuYWdlcjsKKyAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICAgICAgRGF0YWJhc2VEZXRhaWxzIG1fZGV0
YWlsczsKKyAgICB9OworCiAgICAgRGF0YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFiYXNlTWFu
YWdlcigpIHsgfQogCkBAIC0xMzEsNiArMTQ2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kYXRh
YmFzZUNvbnRleHRJbnN0YW5jZUNvdW50OwogI2VuZGlmCiAgICAgTXV0ZXggbV9jb250ZXh0TWFw
TG9jazsKKworICAgIFByb3Bvc2VkRGF0YWJhc2UqIG1fcHJvcG9zZWREYXRhYmFzZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTEwLTIzICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0YWJh
c2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlc2UgZmlsZXMgdG8g
YWxsb3cgZGF0YWJhc2UgcXVvdGFzIHRvIGdyb3cgd2l0aGluIGEgbGltaXQgZm9yCisgICAgICAg
IHRlc3RpbmcgcHVycG9zZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZWZsL0R1bXBSZW5kZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChvbkV4Y2VlZGVkRGF0YWJh
c2VRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFG
b3JTZWN1cml0eU9yaWdpbjpkYXRhYmFzZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChVSURlbGVnYXRlOjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRF
eGNlZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKwogMjAx
My0xMC0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEYXNoYm9hcmQgcmVwYWludHMgY29uc3RhbnRseQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE1Nzg0
OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0QmxhY2tCZXJyeS5oIgogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWwuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIkR1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIgpAQCAtNzgzLDcgKzc4MywxNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVl
OjpleGNlZWRlZERhdGFiYXNlUXVvCiAgICAgaWYgKCF0ZXN0RG9uZSAmJiBnVGVzdFJ1bm5lci0+
ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFU
QUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnsl
cywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgb3JpZ2luLT5wcm90b2NvbCgpLnV0ZjgoKS5kYXRh
KCksIG9yaWdpbi0+aG9zdCgpLnV0ZjgoKS5kYXRhKCksIG9yaWdpbi0+cG9ydCgpLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEobWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCA1ICogMTAy
NCAqIDEwMjQpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgbWFuYWdlciA9IFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOyAKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURl
dGFpbHMgZGV0YWlscyA9IGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAy
NCAqIDEwMjQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhRdW90YSA9
IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gZGVm
YXVsdFF1b3RhOworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0
ZWRTaXplIDw9IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXplOwor
ICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQg
cXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOworICAgIH0KKyAgICBtYW5hZ2VyLnNldFF1b3Rh
KG9yaWdpbiwgbmV3UXVvdGEpOwogfQogCiBib29sIER1bXBSZW5kZXJUcmVlOjphbGxvd3NPcGVu
aW5nV2luZG93KCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJl
ZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxNTc4NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRHVtcFJlbmRlclRyZWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEz
NCwxMyBAQCBzdGF0aWMgdWludDY0X3Qgb25FeGNlZWRlZERhdGFiYXNlUXVvdGEoCiAgICAgICAg
ICAgICBkYXRhYmFzZU5hbWUpOwogICAgIGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZShvcmlnaW4p
OwogCi0gICAgcmV0dXJuIDUgKiAxMDI0ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0
X3QgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OworICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgaWYgKGRlZmF1bHRRdW90YSA8
IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgcHJp
bnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICVs
bHVcbiIsIGV4cGVjdGVkU2l6ZSk7CisgICAgICAgIHJldHVybiBleHBlY3RlZFNpemU7CisgICAg
fQorICAgIHJldHVybiBkZWZhdWx0UXVvdGE7CiB9CiAKIHN0YXRpYyBpbnQ2NF90IG9uRXhjZWVk
ZWRBcHBsaWNhdGlvbkNhY2hlUXVvdGEoRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV3a19TZWN1cml0
eV9PcmlnaW4gKm9yaWdpbiwgaW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIGludDY0X3QgdG90
YWxTcGFjZU5lZWRlZCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1t
CShyZXZpc2lvbiAxNTc4NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTEgQEAKICNpbXBvcnQgIkV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
IgogI2ltcG9ydCAiVGVzdFJ1bm5lci5oIgorCiAjaW1wb3J0IDxXZWJLaXQvV2ViQXBwbGljYXRp
b25DYWNoZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkhUTUxWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFiYXNl
TWFuYWdlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJRdW90YU1hbmFnZXIuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oPgpAQCAtMTcyLDggKzE3NCwxNyBAQCAtICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6CiAgICAgICAgICAgICBbb3JpZ2luIHBvcnRd
LCBbZGF0YWJhc2VJZGVudGlmaWVyIFVURjhTdHJpbmddKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsg
ICAgCi0gICAgW1tvcmlnaW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1bHRR
dW90YV07CisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhYmFzZURldGFpbHMgPSBbW1dlYkRhdGFiYXNl
TWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRldGFpbHNGb3JEYXRhYmFzZTpkYXRh
YmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjpvcmlnaW5dOworICAgIEFTU0VSVChkYXRhYmFzZURl
dGFpbHMpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFNpemUgPSBbW2RhdGFiYXNl
RGV0YWlscyBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VFeHBlY3RlZFNpemVLZXldIHVuc2lnbmVk
TG9uZ0xvbmdWYWx1ZV07CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZh
dWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxv
bmcgbG9uZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBl
Y3RlZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3Rh
ID0gZXhwZWN0ZWRTaXplOworICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENB
TExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOworICAgIH0KKyAg
ICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6bmV3UXVvdGFdOwogfQog
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZXhjZWVkZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gdG90YWxTcGFjZU5lZWRlZDooTlNVSW50ZWdlcil0b3RhbFNwYWNlTmVlZGVkCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxNTc4NDkpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5NSw3ICs1OTUsMzMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVSURlbGVnYXRl
OjpleAogICAgIFN5c0ZyZWVTdHJpbmcoaG9zdCk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBvcmlnaW4t
PnNldFF1b3RhKGRlZmF1bHRRdW90YSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcg
bG9uZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisKKyAgICBDT01QdHI8SVdlYkRhdGFi
YXNlTWFuYWdlcj4gZGF0YWJhc2VNYW5hZ2VyOworICAgIENPTVB0cjxJV2ViRGF0YWJhc2VNYW5h
Z2VyPiB0bXBEYXRhYmFzZU1hbmFnZXI7CisKKyAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUlu
c3RhbmNlKENMU0lEX1dlYkRhdGFiYXNlTWFuYWdlciwgMCwgSUlEX0lXZWJEYXRhYmFzZU1hbmFn
ZXIsICh2b2lkKiopJnRtcERhdGFiYXNlTWFuYWdlcikpKSB7CisgICAgICAgIG9yaWdpbi0+c2V0
UXVvdGEoZGVmYXVsdFF1b3RhKTsKKyAgICAgICAgcmV0dXJuIFNfT0s7CisgICAgfQorICAgIGlm
IChGQUlMRUQodG1wRGF0YWJhc2VNYW5hZ2VyLT5zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIoJmRh
dGFiYXNlTWFuYWdlcikpKSB7CisgICAgICAgIG9yaWdpbi0+c2V0UXVvdGEoZGVmYXVsdFF1b3Rh
KTsKKyAgICAgICAgcmV0dXJuIFNfT0s7CisgICAgfQorICAgIElQcm9wZXJ0eUJhZyogZGV0YWls
c0JhZzsKKyAgICBpZiAoRkFJTEVEKGRhdGFiYXNlTWFuYWdlci0+ZGV0YWlsc0ZvckRhdGFiYXNl
KGRhdGFiYXNlSWRlbnRpZmllciwgb3JpZ2luLCAmZGV0YWlsc0JhZykpKSB7CisgICAgICAgIG9y
aWdpbi0+c2V0UXVvdGEoZGVmYXVsdFF1b3RhKTsKKyAgICAgICAgcmV0dXJuIFNfT0s7CisgICAg
fQorICAgIFZBUklBTlQgdmFyOworICAgIGRldGFpbHNCYWctPlJlYWQoV2ViRGF0YWJhc2VVc2Fn
ZUtleSwgJnZhciwgMCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkU2l6ZSA9IFZf
VUk4KHZhcik7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gZGVmYXVsdFF1b3Rh
OworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9
IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXplOworICAgICAgICBw
cmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8g
JWxsdVxuIiwgbmV3UXVvdGEpOworICAgIH0KKyAgICBvcmlnaW4tPnNldFF1b3RhKG5ld1F1b3Rh
KTsKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE1Nzg0OSkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTAgKzE0Mywx
NiBAQCBzdGF0aWMgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoCiAgICAgcmV0dXJu
IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSgpOwogfQog
Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXS1BhZ2VS
ZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3RyaW5nUmVmLCBXS1N0cmlu
Z1JlZiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nLCBjb25zdCB2b2lkKikKK3N0YXRpYyB1bnNpZ25l
ZCBsb25nIGxvbmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgY29uc3Qgdm9pZCopCiB7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0g
ICAgcmV0dXJuIGRlZmF1bHRRdW90YTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBs
b25nIG1heFF1b3RhID0gMTAgKiAxMDI0ICogMTAyNDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
bmV3UXVvdGEgPSBkZWZhdWx0UXVvdGE7CisgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVk
VXNhZ2UgJiYgZXhwZWN0ZWRVc2FnZSA8PSBtYXhRdW90YSkgeworICAgICAgICBuZXdRdW90YSA9
IGV4cGVjdGVkVXNhZ2U7CisgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FM
TEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4iLCBuZXdRdW90YSk7CisgICAgfQorICAg
IHJldHVybiBuZXdRdW90YTsKIH0KIAogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShy
ZXZpc2lvbiAxNTc4NDkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDksNyArMTQ0OSwx
OCBAQCB1aW50NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEV4Y2VlZERhCiAgICAgfQogCiAg
ICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsK
LSAgICByZXR1cm4gZGVmYXVsdFF1b3RhOworICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBtYXhR
dW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdWludDY0X3QgbmV3UXVvdGEgPSBkZWZhdWx0
UXVvdGE7CisgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkVXNhZ2VCeXRlcyAmJiBleHBl
Y3RlZFVzYWdlQnl0ZXMgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgbmV3UXVvdGEgPSBleHBlY3Rl
ZFVzYWdlQnl0ZXM7CisKKyAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERFTEVHQVRFIERBVEFCQVNFIENB
TExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTnVtYmVyKG5ld1F1b3RhKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7
CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKSk7CisgICAgfQorICAgIHJldHVybiBuZXdRdW90YTsKIH0KIAogLy8gRWRp
dG9yIENsaWVudCBDYWxsYmFja3MKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEw
LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRl
IFByb3Bvc2VkRGF0YWJhc2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
dGVzdCB0byBleGVyY2lzZSBncm93aW5nIHRoZSBkYXRhYmFzZSBxdW90YSB3aXRoaW4gbGltaXQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBz
dG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3Rh
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zl
ci1xdW90YS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRh
YmFzZS1vdmVyLXF1b3RhLmh0bWw6CisKIDIwMTMtMTAtMjIgIFpvbHRhbiBIb3J2YXRoICA8em9s
dGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVmYWN0b3IgTGluZUJyZWFrZXI6Om5leHRTZWdt
ZW50QnJlYWssIGFkZCBCcmVha2luZ0NvbnRleHQgdGhhdCBob2xkcyBhbGwgaXRzIHN0YXRlCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24g
MTU3ODQ5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHdv
cmtpbmcgY29weSkKQEAgLTQ0Nyw2ICs0NDcsOSBAQCB3ZWJraXQub3JnL2IvMTA3MTk0IGh0dHAv
dGVzdHMvc2VjdXJpdHkvCiB3ZWJraXQub3JnL2IvMTA3MTk0IGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3Mtb3JpZ2luLXdvcmtlci1pbmRleGVkZGIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzEwNzE5NCBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLWluZGV4ZWRkYi1mcm9tLXNhbmRib3guaHRt
bCBbIFNraXAgXQogCisjIE5lZWRzIHRvIHVwZGF0ZSB0aGUgZ3RrIGRhdGFiYXNlUXVvdGFFeGNl
ZWRlZCgpIHRlc3QgZnVuY3Rpb24gdG8gaGFuZGxlIHF1b3RhIGV4cGFuc2lvbiByZXF1ZXN0cy4K
K3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwgWyBGYWlsdXJl
IF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIEV4cGVjdGVk
IGZhaWx1cmVzCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpJbmRleDogTGF5b3V0
VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJh
c2UtZXhwYW5kLXF1b3RhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKK1VJIERFTEVHQVRFIERBVEFCQVNFIENBTExC
QUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gODAwMDAwMAorVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcg
b3BlbkRhdGFiYXNlIHdpdGggYSBzaXplIG92ZXIgNU1CIGRvZXNuJ3QgYXNzZXJ0IG9uIGRlYnVn
IGJ1aWxkcywgYW5kIHdpbGwgaW5jcmVhc2UgdGhlIHF1b3RhIHRvIGFjY29tbW9kYXRlIHRoZSBy
ZXF1ZXN0ZWQgc2l6ZSB3aGVubm90IGV4Y2VlZGluZyBhIG1heCBsaW1pdCBvZiAxME0uCitQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1x
dW90YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4t
ZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMo
KTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICB2YXIgZGIgPSBvcGVuRGF0YWJhc2UoJ0V4
cGFuZGVkUXVvdGFPcGVuJywgJycsICdUZXN0IGZvciBidWcgMTIzMTMxOiBpbmNyZWFzZSBkYXRh
YmFzZSBxdW90YScsIDgwMDAwMDApOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0JykuaW5uZXJIVE1MID0gJ1BBU1MnCisgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTCcKKyAg
ICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxk
aXY+VGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNlIHdpdGggYSBzaXplIG92ZXIg
NU1CIGRvZXNuJ3QgYXNzZXJ0IG9uIGRlYnVnIGJ1aWxkcywKK2FuZCB3aWxsIGluY3JlYXNlIHRo
ZSBxdW90YSB0byBhY2NvbW1vZGF0ZSB0aGUgcmVxdWVzdGVkIHNpemUgd2hlbm5vdCBleGNlZWRp
bmcgYSBtYXggbGltaXQgb2YgMTBNLgorPGRpdiBpZD0icmVzdWx0Ij4KK1BBU1M6IFN1Y2Nlc3Nm
dWxseSBvcGVuZWQgZGF0YWJhc2UgZ3JlYXRlciB0aGFuIDVNLgorPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92
ZXItcXVvdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2Uv
d2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1
Nzg0OSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1x
dW90YS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1UaGlzIHRl
c3RzIHRoYXQgY2FsbGluZyBvcGVuRGF0YWJhc2Ugd2l0aCBhIHNpemUgb3ZlciA1TUIgZG9lc24n
dCBhc3NlcnQgb24gZGVidWcgYnVpbGRzLgorVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRh
dGFiYXNlIHdpdGggYSBzaXplIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHRlc3QgbWF4IHF1b3Rh
IGxpbWl0IG9mIDEwTUIgZG9lc24ndCBhc3NlcnQgb24gZGVidWcgYnVpbGRzLgogUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFz
ZS1vdmVyLXF1b3RhLmh0bWwJKHJldmlzaW9uIDE1Nzg0OSkKKysrIExheW91dFRlc3RzL3N0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC04LDcgKzgsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIH0KIAogICAgIHRyeSB7Ci0g
ICAgICAgIHZhciBkYiA9IG9wZW5EYXRhYmFzZSgnT3ZlclF1b3RhT3BlbicsICcnLCAnVGVzdCBm
b3IgYnVnIDM2NDczOiBtaXNzaW5nIGxvY2sgaW4gY2FsbCB0byBkb25lQ3JlYXRpbmdEYXRhYmFz
ZScsIDEwMDAwMDAwKTsKKyAgICAgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCdPdmVyUXVvdGFP
cGVuJywgJycsICdUZXN0IGZvciBidWcgMzY0NzM6IG1pc3NpbmcgbG9jayBpbiBjYWxsIHRvIGRv
bmVDcmVhdGluZ0RhdGFiYXNlJywgMjAwMDAwMDApOwogICAgIH0gY2F0Y2ggKGVycikgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1BBU1Mn
CiAgICAgfQpAQCAtMTYsNyArMTYsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogPC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08ZGl2PlRoaXMgdGVzdHMgdGhh
dCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBvdmVyIDVNQiBkb2Vzbid0IGFzc2Vy
dCBvbiBkZWJ1ZyBidWlsZHMuCis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRh
YmFzZSB3aXRoIGEgc2l6ZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0ZXN0IG1heCBxdW90YSBs
aW1pdCBvZiAxME1CCitkb2Vzbid0IGFzc2VydCBvbiBkZWJ1ZyBidWlsZHMuCiA8ZGl2IGlkPSJy
ZXN1bHQiPgogRkFJTDogV2Ugc2hvdWxkbid0IGhhdmUgYmVlbiBhYmxlIHRvIG9wZW4gdGhlIGRh
dGFiYXNlLgogPC9kaXY+Cg==
</data>
<flag name="commit-queue"
          id="237560"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214970</attachid>
            <date>2013-10-23 09:24:32 -0700</date>
            <delta_ts>2013-10-23 11:22:19 -0700</delta_ts>
            <desc>patch 4: with speculative fix for Windows build</desc>
            <filename>bug-123131b.patch</filename>
            <type>text/plain</type>
            <size>20729</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEwLTIzICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0
YWJhc2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uvd2Vic3Fs
L29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwKKworICAgICAgICBJZiBhIHdlYnBhZ2Ug
dHJpZXMgdG8gY3JlYXRlIGEgZGF0YWJhc2UgdGhhdCBleGNlZWRzIHRoZSBkYXRhYmFzZSBzaXpl
CisgICAgICAgIHF1b3RhIGZvciB0aGF0IHNlY3VyaXR5IG9yaWdpbiwgdGhlIFdlYktpdDEgcXVv
dGEgcmVxdWVzdCBtZWNoYW5pc20KKyAgICAgICAgdXNlcyBkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bigpIHRvIGdldCB0aGUgcmVxdWVzdGVkIHNpemUgb2YgdGhlIGRhdGFiYXNlCisgICAgICAgICh0
aGF0IHRoZSB3ZWJwYWdlIGlzIGF0dGVtcHRpbmcgdG8gb3BlbikgaW4gb3JkZXIgdG8gZGV0ZXJt
aW5lIHdoZXRoZXIKKyAgICAgICAgdG8gaW5jcmVhc2UgdGhlIHF1b3RhIG9yIG5vdC4KKworICAg
ICAgICBQcmV2aW91c2x5LCBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpIHJlbGllcyBvbiB0aGUg
UHJvcG9zZWREYXRhYmFzZQorICAgICAgICBtZWNoYW5pc20gdG8gcHJvdmlkZSB0aGlzIHNpemUg
aW5mb3JtYXRpb24uIFRoaXMgY2hhbmdlIHJlLWluc3RhdGVzIHRoZQorICAgICAgICBQcm9wb3Nl
ZERhdGFiYXNlIG1lY2hhbmlzbSBzbyB0aGF0IFdlYktpdDEgY2xpZW50IGNvZGUgdGhhdCByZWxp
ZXMgb24KKyAgICAgICAgdGhpcyBiZWhhdmlvciB3aWxsIGNvbnRpbnVlIHRvIHdvcmsuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFi
YXNlOjp+UHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om9wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
OlByb3Bvc2VkRGF0YWJhc2U6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OlByb3Bvc2VkRGF0YWJhc2U6OmRldGFpbHMpOgorCiAyMDEzLTEwLTIyICBab2x0YW4g
SG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZmFjdG9yIExpbmVCcmVh
a2VyOjpuZXh0U2VnbWVudEJyZWFrLCBhZGQgQnJlYWtpbmdDb250ZXh0IHRoYXQgaG9sZHMgYWxs
IGl0cyBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTU3ODQ5KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RhdGFi
YXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFzZTo6UHJvcG9zZWREYXRhYmFzZShEYXRhYmFzZU1h
bmFnZXIqIG1hbmFnZXIsCisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpCisgICAgOiBtX21hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fb3JpZ2luKG9yaWdpbi0+
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2RldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlz
cGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDApCit7CisgICAgQVNTRVJU
KCFtX21hbmFnZXItPm1fcHJvcG9zZWREYXRhYmFzZSk7CisgICAgbV9tYW5hZ2VyLT5tX3Byb3Bv
c2VkRGF0YWJhc2UgPSB0aGlzOworfQorCitEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0YWJh
c2U6On5Qcm9wb3NlZERhdGFiYXNlKCkKK3sKKyAgICBtX21hbmFnZXItPm1fcHJvcG9zZWREYXRh
YmFzZSA9IDA7Cit9CisKIERhdGFiYXNlTWFuYWdlciYgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkKIHsKICAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyKiBkYk1hbmFnZXIgPSAwOwpAQCAtNjgs
NiArODMsNyBAQCBEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCiAgICAgLCBtX2Rh
dGFiYXNlQ29udGV4dFJlZ2lzdGVyZWRDb3VudCgwKQogICAgICwgbV9kYXRhYmFzZUNvbnRleHRJ
bnN0YW5jZUNvdW50KDApCiAjZW5kaWYKKyAgICAsIG1fcHJvcG9zZWREYXRhYmFzZSgwKQogewog
ICAgIEFTU0VSVChtX3NlcnZlcik7IC8vIFdlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHNlcnZlciB0
byB3b3JrIHdpdGguCiB9CkBAIC0yNDgsOSArMjY0LDExIEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VC
YWNrZW5kQmFzZT4gRGF0YWJhc2UKICAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50IHRo
YXQgd2UndmUgZXhjZWVkZWQgdGhlIGRhdGFiYXNlIHF1b3RhLgogICAgICAgICAgICAgLy8gVGhl
IGNsaWVudCBtYXkgd2FudCB0byBpbmNyZWFzZSB0aGUgcXVvdGEsIGFuZCB3ZSdsbCBnaXZlIGl0
CiAgICAgICAgICAgICAvLyBvbmUgbW9yZSB0cnkgYWZ0ZXIgaWYgdGhhdCBpcyB0aGUgY2FzZS4K
LSAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUs
Ci0gICAgICAgICAgICAgICAgRGF0YWJhc2VEZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRp
c3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwKSk7Ci0KKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBQcm9wb3NlZERhdGFiYXNlIHByb3Bvc2VkRGIodGhpcywg
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpOworICAgICAgICAgICAgICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1
b3RhKG5hbWUsCisgICAgICAgICAgICAgICAgICAgIERhdGFiYXNlRGV0YWlscyhuYW1lLmlzb2xh
dGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCkp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZXJyb3IgPSBEYXRhYmFzZUVycm9yOjpOb25l
OwogCiAgICAgICAgICAgICBiYWNrZW5kID0gbV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShiYWNrZW5k
Q29udGV4dCwgdHlwZSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLApAQCAtMzUxLDYgKzM2OSw5IEBA
IHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmkKIAogU3RyaW5nIERhdGFi
YXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiB7CisgICAgUHJv
cG9zZWREYXRhYmFzZSogZGIgPSBtX3Byb3Bvc2VkRGF0YWJhc2U7CisgICAgaWYgKGRiICYmIGRi
LT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgZGItPm9yaWdpbigpLT5lcXVhbChvcmlnaW4p
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1fc2VydmVyLT5mdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogfQogCkBA
IC0zNzEsNiArMzkyLDExIEBAIGJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9y
T3IKIAogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogeworICAg
IFByb3Bvc2VkRGF0YWJhc2UqIGRiID0gbV9wcm9wb3NlZERhdGFiYXNlOworICAgIGlmIChkYiAm
JiBkYi0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIGRiLT5vcmlnaW4oKS0+ZXF1YWwob3Jp
Z2luKSkgeworICAgICAgICBBU1NFUlQoZGItPmRldGFpbHMoKS50aHJlYWQoKSA9PSBjdXJyZW50
VGhyZWFkKCkpOworICAgICAgICByZXR1cm4gZGItPmRldGFpbHMoKTsKKyAgICB9CiAgICAgcmV0
dXJuIG1fc2VydmVyLT5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE1Nzg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2
ICsxMDYsMjEgQEAgcHVibGljOgogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgUHJv
cG9zZWREYXRhYmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBQcm9wb3NlZERhdGFiYXNlKERh
dGFiYXNlTWFuYWdlciosIFNlY3VyaXR5T3JpZ2luKiwKKyAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKTsKKyAgICAgICAgflByb3Bvc2VkRGF0YWJhc2UoKTsKKworICAgICAgICBTZWN1cml0
eU9yaWdpbiogb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICAgICAgRGF0
YWJhc2VEZXRhaWxzJiBkZXRhaWxzKCkgeyByZXR1cm4gbV9kZXRhaWxzOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBEYXRhYmFzZU1hbmFnZXIqIG1fbWFuYWdlcjsKKyAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICAgICAgRGF0YWJhc2VEZXRhaWxzIG1fZGV0
YWlsczsKKyAgICB9OworCiAgICAgRGF0YWJhc2VNYW5hZ2VyKCk7CiAgICAgfkRhdGFiYXNlTWFu
YWdlcigpIHsgfQogCkBAIC0xMzEsNiArMTQ2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9kYXRh
YmFzZUNvbnRleHRJbnN0YW5jZUNvdW50OwogI2VuZGlmCiAgICAgTXV0ZXggbV9jb250ZXh0TWFw
TG9jazsKKworICAgIFByb3Bvc2VkRGF0YWJhc2UqIG1fcHJvcG9zZWREYXRhYmFzZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg1MSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEzLTEwLTIzICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZS1pbnN0YXRlIFByb3Bvc2VkRGF0YWJh
c2VzIG5lZWRlZCBieSBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbigpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTMxLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlc2UgZmlsZXMgdG8g
YWxsb3cgZGF0YWJhc2UgcXVvdGFzIHRvIGdyb3cgd2l0aGluIGEgbGltaXQgZm9yCisgICAgICAg
IHRlc3RpbmcgcHVycG9zZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZWZsL0R1bXBSZW5kZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChvbkV4Y2VlZGVkRGF0YWJh
c2VRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFG
b3JTZWN1cml0eU9yaWdpbjpkYXRhYmFzZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChVSURlbGVnYXRlOjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRF
eGNlZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKwogMjAx
My0xMC0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEYXNoYm9hcmQgcmVwYWludHMgY29uc3RhbnRseQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE1Nzg0
OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0QmxhY2tCZXJyeS5oIgogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWwuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIkR1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIgpAQCAtNzgzLDcgKzc4MywxNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVl
OjpleGNlZWRlZERhdGFiYXNlUXVvCiAgICAgaWYgKCF0ZXN0RG9uZSAmJiBnVGVzdFJ1bm5lci0+
ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFU
QUJBU0UgQ0FMTEJBQ0s6IGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOnsl
cywgJXMsICVpfSBkYXRhYmFzZTolc1xuIiwgb3JpZ2luLT5wcm90b2NvbCgpLnV0ZjgoKS5kYXRh
KCksIG9yaWdpbi0+aG9zdCgpLnV0ZjgoKS5kYXRhKCksIG9yaWdpbi0+cG9ydCgpLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEobWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCA1ICogMTAy
NCAqIDEwMjQpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgbWFuYWdlciA9IFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOyAKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURl
dGFpbHMgZGV0YWlscyA9IGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAy
NCAqIDEwMjQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhRdW90YSA9
IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gZGVm
YXVsdFF1b3RhOworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0
ZWRTaXplIDw9IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXplOwor
ICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQg
cXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOworICAgIH0KKyAgICBtYW5hZ2VyLnNldFF1b3Rh
KG9yaWdpbiwgbmV3UXVvdGEpOwogfQogCiBib29sIER1bXBSZW5kZXJUcmVlOjphbGxvd3NPcGVu
aW5nV2luZG93KCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJl
ZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxNTc4NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRHVtcFJlbmRlclRyZWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEz
NCwxMyBAQCBzdGF0aWMgdWludDY0X3Qgb25FeGNlZWRlZERhdGFiYXNlUXVvdGEoCiAgICAgICAg
ICAgICBkYXRhYmFzZU5hbWUpOwogICAgIGV3a19zZWN1cml0eV9vcmlnaW5fZnJlZShvcmlnaW4p
OwogCi0gICAgcmV0dXJuIDUgKiAxMDI0ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3QgdWludDY0
X3QgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OworICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgaWYgKGRlZmF1bHRRdW90YSA8
IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgcHJp
bnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICVs
bHVcbiIsIGV4cGVjdGVkU2l6ZSk7CisgICAgICAgIHJldHVybiBleHBlY3RlZFNpemU7CisgICAg
fQorICAgIHJldHVybiBkZWZhdWx0UXVvdGE7CiB9CiAKIHN0YXRpYyBpbnQ2NF90IG9uRXhjZWVk
ZWRBcHBsaWNhdGlvbkNhY2hlUXVvdGEoRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV3a19TZWN1cml0
eV9PcmlnaW4gKm9yaWdpbiwgaW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIGludDY0X3QgdG90
YWxTcGFjZU5lZWRlZCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1t
CShyZXZpc2lvbiAxNTc4NDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTEgQEAKICNpbXBvcnQgIkV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIk1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
IgogI2ltcG9ydCAiVGVzdFJ1bm5lci5oIgorCiAjaW1wb3J0IDxXZWJLaXQvV2ViQXBwbGljYXRp
b25DYWNoZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkhUTUxWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFiYXNl
TWFuYWdlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJRdW90YU1hbmFnZXIuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oPgpAQCAtMTcyLDggKzE3NCwxNyBAQCAtICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6CiAgICAgICAgICAgICBbb3JpZ2luIHBvcnRd
LCBbZGF0YWJhc2VJZGVudGlmaWVyIFVURjhTdHJpbmddKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsg
ICAgCi0gICAgW1tvcmlnaW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1bHRR
dW90YV07CisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhYmFzZURldGFpbHMgPSBbW1dlYkRhdGFiYXNl
TWFuYWdlciBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJdIGRldGFpbHNGb3JEYXRhYmFzZTpkYXRh
YmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjpvcmlnaW5dOworICAgIEFTU0VSVChkYXRhYmFzZURl
dGFpbHMpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFNpemUgPSBbW2RhdGFiYXNl
RGV0YWlscyBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VFeHBlY3RlZFNpemVLZXldIHVuc2lnbmVk
TG9uZ0xvbmdWYWx1ZV07CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZh
dWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxv
bmcgbG9uZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBl
Y3RlZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9IG1heFF1b3RhKSB7CisgICAgICAgIG5ld1F1b3Rh
ID0gZXhwZWN0ZWRTaXplOworICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENB
TExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOworICAgIH0KKyAg
ICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6bmV3UXVvdGFdOwogfQog
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZXhjZWVkZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gdG90YWxTcGFjZU5lZWRlZDooTlNVSW50ZWdlcil0b3RhbFNwYWNlTmVlZGVkCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxNTc4NDkpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Lmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAK
IHVzaW5nIHN0ZDo6d3N0cmluZzsKQEAgLTU5NSw3ICs1OTYsMzMgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBVSURlbGVnYXRlOjpleAogICAgIFN5c0ZyZWVTdHJpbmcoaG9zdCk7CiAKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0
ICogMTAyNDsKLSAgICBvcmlnaW4tPnNldFF1b3RhKGRlZmF1bHRRdW90YSk7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisK
KyAgICBDT01QdHI8SVdlYkRhdGFiYXNlTWFuYWdlcj4gZGF0YWJhc2VNYW5hZ2VyOworICAgIENP
TVB0cjxJV2ViRGF0YWJhc2VNYW5hZ2VyPiB0bXBEYXRhYmFzZU1hbmFnZXI7CisKKyAgICBpZiAo
RkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYkRhdGFiYXNlTWFuYWdlciwgMCwg
SUlEX0lXZWJEYXRhYmFzZU1hbmFnZXIsICh2b2lkKiopJnRtcERhdGFiYXNlTWFuYWdlcikpKSB7
CisgICAgICAgIG9yaWdpbi0+c2V0UXVvdGEoZGVmYXVsdFF1b3RhKTsKKyAgICAgICAgcmV0dXJu
IFNfT0s7CisgICAgfQorICAgIGlmIChGQUlMRUQodG1wRGF0YWJhc2VNYW5hZ2VyLT5zaGFyZWRX
ZWJEYXRhYmFzZU1hbmFnZXIoJmRhdGFiYXNlTWFuYWdlcikpKSB7CisgICAgICAgIG9yaWdpbi0+
c2V0UXVvdGEoZGVmYXVsdFF1b3RhKTsKKyAgICAgICAgcmV0dXJuIFNfT0s7CisgICAgfQorICAg
IElQcm9wZXJ0eUJhZyogZGV0YWlsc0JhZzsKKyAgICBpZiAoRkFJTEVEKGRhdGFiYXNlTWFuYWdl
ci0+ZGV0YWlsc0ZvckRhdGFiYXNlKGRhdGFiYXNlSWRlbnRpZmllciwgb3JpZ2luLCAmZGV0YWls
c0JhZykpKSB7CisgICAgICAgIG9yaWdpbi0+c2V0UXVvdGEoZGVmYXVsdFF1b3RhKTsKKyAgICAg
ICAgcmV0dXJuIFNfT0s7CisgICAgfQorICAgIFZBUklBTlQgdmFyOworICAgIGRldGFpbHNCYWct
PlJlYWQoV2ViRGF0YWJhc2VVc2FnZUtleSwgJnZhciwgMCk7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIGV4cGVjdGVkU2l6ZSA9IFZfVUk4KCZ2YXIpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YSA9IGRlZmF1bHRRdW90YTsKKyAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRT
aXplICYmIGV4cGVjdGVkU2l6ZSA8PSBtYXhRdW90YSkgeworICAgICAgICBuZXdRdW90YSA9IGV4
cGVjdGVkU2l6ZTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFD
SzogaW5jcmVhc2VkIHF1b3RhIHRvICVsbHVcbiIsIG5ld1F1b3RhKTsKKyAgICB9CisgICAgb3Jp
Z2luLT5zZXRRdW90YShuZXdRdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTc4NDkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQzLDEwICsxNDMsMTYgQEAgc3RhdGljIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKAogICAgIHJldHVybiBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuYmVmb3JlVW5s
b2FkUmV0dXJuVmFsdWUoKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBleGNlZWRl
ZERhdGFiYXNlUXVvdGEoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVm
LCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgY29uc3Qg
dm9pZCopCitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3RyaW5nUmVmLCBX
S1N0cmluZ1JlZiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2ln
bmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIGNvbnN0IHZv
aWQqKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1b3Rh
ID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIHJldHVybiBkZWZhdWx0UXVvdGE7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7Cisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOworICAgIGlmIChk
ZWZhdWx0UXVvdGEgPCBleHBlY3RlZFVzYWdlICYmIGV4cGVjdGVkVXNhZ2UgPD0gbWF4UXVvdGEp
IHsKKyAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFVzYWdlOworICAgICAgICBwcmludGYoIlVJ
IERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gJWxsdVxuIiwg
bmV3UXVvdGEpOworICAgIH0KKyAgICByZXR1cm4gbmV3UXVvdGE7CiB9CiAKIApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTU3ODQ5KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDQ5LDcgKzE0NDksMTggQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRFeGNlZWREYQogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZhdWx0UXVv
dGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgcmV0dXJuIGRlZmF1bHRRdW90YTsKKyAgICBzdGF0
aWMgY29uc3QgdWludDY0X3QgbWF4UXVvdGEgPSAxMCAqIDEwMjQgKiAxMDI0OworICAgIHVpbnQ2
NF90IG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOworICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBl
Y3RlZFVzYWdlQnl0ZXMgJiYgZXhwZWN0ZWRVc2FnZUJ5dGVzIDw9IG1heFF1b3RhKSB7CisgICAg
ICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRVc2FnZUJ5dGVzOworCisgICAgICAgIFN0cmluZ0J1aWxk
ZXIgc3RyaW5nQnVpbGRlcjsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJV
SSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICIpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihuZXdRdW90YSk7CisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
b3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICByZXR1cm4g
bmV3UXVvdGE7CiB9CiAKIC8vIEVkaXRvciBDbGllbnQgQ2FsbGJhY2tzCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNTc4NTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMy0xMC0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmUtaW5zdGF0ZSBQcm9wb3NlZERhdGFiYXNlcyBuZWVkZWQgYnkgZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMzEzMS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gZXhlcmNpc2UgZ3Jvd2luZyB0aGUgZGF0YWJh
c2UgcXVvdGEgd2l0aGluIGxpbWl0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQt
cXVvdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL3dlYnNxbC9vcGVu
LWRhdGFiYXNlLWV4cGFuZC1xdW90YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL3dl
YnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS5odG1sOgorCiAyMDEzLTEwLTIy
ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZmFjdG9y
IExpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrLCBhZGQgQnJlYWtpbmdDb250ZXh0IHRoYXQg
aG9sZHMgYWxsIGl0cyBzdGF0ZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMJKHJldmlzaW9uIDE1Nzg0OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC00NDcsNiArNDQ3LDkgQEAgd2Vi
a2l0Lm9yZy9iLzEwNzE5NCBodHRwL3Rlc3RzL3NlY3VyaXR5Lwogd2Via2l0Lm9yZy9iLzEwNzE5
NCBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13b3JrZXItaW5kZXhlZGRiLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDcxOTQgaHR0cC90ZXN0cy9zZWN1cml0eS9uby1pbmRl
eGVkZGItZnJvbS1zYW5kYm94Lmh0bWwgWyBTa2lwIF0KIAorIyBOZWVkcyB0byB1cGRhdGUgdGhl
IGd0ayBkYXRhYmFzZVF1b3RhRXhjZWVkZWQoKSB0ZXN0IGZ1bmN0aW9uIHRvIGhhbmRsZSBxdW90
YSBleHBhbnNpb24gcmVxdWVzdHMuCitzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFu
ZC1xdW90YS5odG1sIFsgRmFpbHVyZSBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAjIEVuZCBvZiBFeHBlY3RlZCBmYWlsdXJlcwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Ut
ZXhwYW5kLXF1b3RhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9y
YWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFu
ZC1xdW90YS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACitVSSBE
RUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvIDgwMDAwMDAKK1Ro
aXMgdGVzdHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBvdmVyIDVNQiBk
b2Vzbid0IGFzc2VydCBvbiBkZWJ1ZyBidWlsZHMsIGFuZCB3aWxsIGluY3JlYXNlIHRoZSBxdW90
YSB0byBhY2NvbW1vZGF0ZSB0aGUgcmVxdWVzdGVkIHNpemUgd2hlbm5vdCBleGNlZWRpbmcgYSBt
YXggbGltaXQgb2YgMTBNLgorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwv
b3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQt
cXVvdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFyQWxsRGF0YWJhc2VzKCk7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgdmFy
IGRiID0gb3BlbkRhdGFiYXNlKCdFeHBhbmRlZFF1b3RhT3BlbicsICcnLCAnVGVzdCBmb3IgYnVn
IDEyMzEzMTogaW5jcmVhc2UgZGF0YWJhc2UgcXVvdGEnLCA4MDAwMDAwKTsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdQQVNTJworICAgIH0g
Y2F0Y2ggKGVycikgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyku
aW5uZXJIVE1MID0gJ0ZBSUwnCisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8ZGl2PlRoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRh
YmFzZSB3aXRoIGEgc2l6ZSBvdmVyIDVNQiBkb2Vzbid0IGFzc2VydCBvbiBkZWJ1ZyBidWlsZHMs
CithbmQgd2lsbCBpbmNyZWFzZSB0aGUgcXVvdGEgdG8gYWNjb21tb2RhdGUgdGhlIHJlcXVlc3Rl
ZCBzaXplIHdoZW5ub3QgZXhjZWVkaW5nIGEgbWF4IGxpbWl0IG9mIDEwTS4KKzxkaXYgaWQ9InJl
c3VsdCI+CitQQVNTOiBTdWNjZXNzZnVsbHkgb3BlbmVkIGRhdGFiYXNlIGdyZWF0ZXIgdGhhbiA1
TS4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS93
ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTc4NDkpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNx
bC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDIgKzEsMiBAQAotVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNlIHdpdGgg
YSBzaXplIG92ZXIgNU1CIGRvZXNuJ3QgYXNzZXJ0IG9uIGRlYnVnIGJ1aWxkcy4KK1RoaXMgdGVz
dHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBncmVhdGVyIG9yIGVxdWFs
IHRvIHRoZSB0ZXN0IG1heCBxdW90YSBsaW1pdCBvZiAxME1CIGRvZXNuJ3QgYXNzZXJ0IG9uIGRl
YnVnIGJ1aWxkcy4KIFBBU1MKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4t
ZGF0YWJhc2Utb3Zlci1xdW90YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS5odG1sCShyZXZpc2lvbiAxNTc4NDkp
CisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
ICAgICB9CiAKICAgICB0cnkgewotICAgICAgICB2YXIgZGIgPSBvcGVuRGF0YWJhc2UoJ092ZXJR
dW90YU9wZW4nLCAnJywgJ1Rlc3QgZm9yIGJ1ZyAzNjQ3MzogbWlzc2luZyBsb2NrIGluIGNhbGwg
dG8gZG9uZUNyZWF0aW5nRGF0YWJhc2UnLCAxMDAwMDAwMCk7CisgICAgICAgIHZhciBkYiA9IG9w
ZW5EYXRhYmFzZSgnT3ZlclF1b3RhT3BlbicsICcnLCAnVGVzdCBmb3IgYnVnIDM2NDczOiBtaXNz
aW5nIGxvY2sgaW4gY2FsbCB0byBkb25lQ3JlYXRpbmdEYXRhYmFzZScsIDIwMDAwMDAwKTsKICAg
ICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9ICdQQVNTJwogICAgIH0KQEAgLTE2LDcgKzE2LDggQEAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgotPGRpdj5UaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBvcGVuRGF0YWJhc2Ugd2l0aCBhIHNpemUg
b3ZlciA1TUIgZG9lc24ndCBhc3NlcnQgb24gZGVidWcgYnVpbGRzLgorPGRpdj5UaGlzIHRlc3Rz
IHRoYXQgY2FsbGluZyBvcGVuRGF0YWJhc2Ugd2l0aCBhIHNpemUgZ3JlYXRlciBvciBlcXVhbCB0
byB0aGUgdGVzdCBtYXggcXVvdGEgbGltaXQgb2YgMTBNQgorZG9lc24ndCBhc3NlcnQgb24gZGVi
dWcgYnVpbGRzLgogPGRpdiBpZD0icmVzdWx0Ij4KIEZBSUw6IFdlIHNob3VsZG4ndCBoYXZlIGJl
ZW4gYWJsZSB0byBvcGVuIHRoZSBkYXRhYmFzZS4KIDwvZGl2Pgo=
</data>
<flag name="review"
          id="237591"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>