<?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>77049</bug_id>
          
          <creation_ts>2012-01-25 14:20:24 -0800</creation_ts>
          <short_desc>[Chromium] Force compositeAndReadback through regular scheduling flow</short_desc>
          <delta_ts>2012-03-12 13:08:43 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542619</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-25 14:20:24 -0800</bug_when>
    <thetext>Scheduler currently assumes that beginFrameComplete is only called after scheduledActionBeginFrame(). That&apos;s not the case for compositeAndReadback which might trigger a call to beginFrameComplete in different situations. This can currently cause an assertion failure in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542621</commentid>
    <comment_count>1</comment_count>
      <attachid>124011</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-25 14:23:48 -0800</bug_when>
    <thetext>Created attachment 124011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542631</commentid>
    <comment_count>2</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-25 14:29:52 -0800</bug_when>
    <thetext>The attached patch addresses this by simply changing the assumptions made about when beginFrameComplete can be called. Maybe we want to follow up with some larger changes to how compositeAndReadback interacts with the scheduler but I think this change is good enough as a bugfix+unittest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543347</commentid>
    <comment_count>3</comment_count>
      <attachid>124157</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-26 11:58:48 -0800</bug_when>
    <thetext>Created attachment 124157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543350</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-26 12:01:06 -0800</bug_when>
    <thetext>*** Bug 72908 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543352</commentid>
    <comment_count>5</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-26 12:02:40 -0800</bug_when>
    <thetext>Included a fix for https://bugs.webkit.org/show_bug.cgi?id=72908 as it&apos;s very much part of the same problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543376</commentid>
    <comment_count>6</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-26 12:22:00 -0800</bug_when>
    <thetext>Can you describe the sequence of events that is currently broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543434</commentid>
    <comment_count>7</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-26 13:31:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Can you describe the sequence of events that is currently broken?

The unit test covers the sequences I found to be broken. Here&apos;s one of them:

ImplThread - setVisible(false), e.g. the page is a background tab.
MainThread - setNeedsCommit, some change to the page cause this to be called.
MainThread - compositeAndReadback, is called before the scheduler schedules a BeginFrame action.
MainThread - beginFrameAndCommit, is called as pending commit exists.
ImplThread - beginFrameCompleteOnImplThread, blows up in debug mode as scheduler commit state is not COMMIT_STATE_FRAME_IN_PROGRESS when beginFrameComplete() is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561636</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 22:49:47 -0800</bug_when>
    <thetext>Can we make compositeAndReadback() forcibly kick the scheduler into the right state instead of making the scheduler ASSERT()s universally more liberal? compositeAndReadback() is very much a special case, and one that we&apos;d like to get rid of.  I can&apos;t speak for Nat but I know that I&apos;d be happier with that particular codepath setting funky bits explicitly instead of all scheduler / state machine logic needing to be aware of otherwise nonsensical states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573114</commentid>
    <comment_count>9</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-07 12:26:39 -0800</bug_when>
    <thetext>Thanks for the reproduce case!

I&apos;m going to try to fix this by changing the compositeAndReadback flow to never create a beginFrameAndCommitTask in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574730</commentid>
    <comment_count>10</comment_count>
      <attachid>131007</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-09 01:45:50 -0800</bug_when>
    <thetext>Created attachment 131007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575199</commentid>
    <comment_count>11</comment_count>
      <attachid>131007</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-09 14:04:19 -0800</bug_when>
    <thetext>Comment on attachment 131007
Patch

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

Very nice! I think we have a wee bit o&apos; a memory leak, but easily fixable.

R=me

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:397
&gt; +    m_pendingBeginFrameRequest = new BeginFrameAndCommitState();

if we schedule a begin frame from the impl thread, but then start a shutdown from the main thread before we process the message will we end up leaking this pointer?  maybe m_pendingBeginFrameRequest should be an OwnPtr&lt;&gt; member - i think if we have to shut down the compositor with a beginFrame pending the right thing to do is to free up its memory and just don&apos;t worry about the scroll offsets/etc on it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575204</commentid>
    <comment_count>12</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-09 14:05:38 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 131007 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131007&amp;action=review
&gt; 
&gt; Very nice! I think we have a wee bit o&apos; a memory leak, but easily fixable.
Hahaha whomp. Will fix that up. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576390</commentid>
    <comment_count>13</comment_count>
      <attachid>131381</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-12 12:30:49 -0700</bug_when>
    <thetext>Created attachment 131381
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576433</commentid>
    <comment_count>14</comment_count>
      <attachid>131381</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 13:08:38 -0700</bug_when>
    <thetext>Comment on attachment 131381
Patch for landing

Clearing flags on attachment: 131381

Committed r110464: &lt;http://trac.webkit.org/changeset/110464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576434</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 13:08:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124011</attachid>
            <date>2012-01-25 14:23:48 -0800</date>
            <delta_ts>2012-01-26 11:58:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77049-20120125172347.patch</filename>
            <type>text/plain</type>
            <size>5671</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uNzA5NjcyYmQzN2UwZTNmZDY5MmViYTMzOGM3NzM3
MzIwZmY4NTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTI1ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBj
b21wb3NpdGVBbmRSZWFkYmFjayBpbiB0aHJlYWRlZCBjb21wb3NpdG9yIGJyZWFrcyBzY2hlZHVs
ZXIgYXNzdW1wdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzA0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFsbG93IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1lQ29tcGxldGUo
KSB0byBiZSBjYWxsZWQKKyAgICAgICAgd2hlbiBjb21taXQgc3RhdGUgaXMgQ09NTUlUX1NUQVRF
X0lETEUgb3IKKyAgICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgYnkgdGhlIGZvbGxvd2luZyB1bml0IHRlc3Q6
CisgICAgICAgIC0gQ0NTY2hlZHVsZXJUZXN0LkNvbXBvc2l0ZUFuZFJlYWRiYWNrCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5G
cmFtZUNvbXBsZXRlKToKKwogMjAxMi0wMS0yMyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbmRleGVkREJNb2RlbCBzaG91
bGQga2VlcCB0cmFjayBvZiByZXF1ZXN0cyBzZW50IHRvIHRoZSBiYWNrZW5kLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBhZGNkZTg5NjA2ZDk1OWZhOGIwNWZlMmVmNjFlZjEwYTZlNjNi
OGE3Li5hN2U0ODViNmRmY2MzMDNiMjJiMjYxNDQxMmNiYTA0NWI2NWRiNTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTI1ICBEYXZpZCBSZXZl
bWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBjb21wb3Np
dGVBbmRSZWFkYmFjayBpbiB0aHJlYWRlZCBjb21wb3NpdG9yIGJyZWFrcyBzY2hlZHVsZXIgYXNz
dW1wdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzA0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBDQ1NjaGVkdWxlclRlc3QuQ29tcG9zaXRlQW5kUmVhZGJhY2sgdGVzdCBjaGVjayBpbnRl
cmFjdGlvbiBiZXR3ZWVuCisgICAgICAgIHNjaGVkdWxlciBjb21wb3NpdGVBbmRSZWFkYmFjayBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wMS0yMCAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUGFnZUFnZW50
Lm9wZW4oKSBkb3Nlbid0IGJlbG9uZyB0byB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggZDFhYTVjY2RjNzQ0YzhmY2I0MDMw
YjBmYmM1NjU4MzM0ZjY1ZGViZi4uMWNkNGUwYzMwNGIwMWE2YmMyYWJmNTc3ZWE3NjMyMjc4MDVi
ZTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApA
QCAtMTYzLDcgKzE2Myw5IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRz
Q29tbWl0KCkKIAogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBs
ZXRlKCkKIHsKLSAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfRlJBTUVf
SU5fUFJPR1JFU1MpOworICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9J
RExFCisgICAgICAgICAgIHx8IG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lO
X1BST0dSRVNTCisgICAgICAgICAgIHx8IG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1dB
SVRJTkdfRk9SX0ZJUlNUX0RSQVcpOwogICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggNDc1OTg3ZjEzYWM1ODlmNTA3MjRmMjM5ZWYw
YWRkMzA1MjQ3NDA2Yy4uNjAwYTdkMDIxZjU2NzU2YmQ2ZTFhOGRkYWU1YTcwYzBiYTkzNmM1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cApAQCAtMjQ4LDQgKzI0OCw3MCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1p
dEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygp
KTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclRlc3QsIENvbXBvc2l0ZUFuZFJlYWRiYWNrKQorewor
ICAgIEZha2VDQ1NjaGVkdWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVT
b3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAg
ICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNs
aWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOwor
ICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICAvLyBTZXROZWVkc0NvbW1p
dCBzaG91bGQgbm90IGJlZ2luIHRoZSBmcmFtZSBhcyB2aXNpYmlsaXR5IGlzIGZhbHNlLgorICAg
IHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51
bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTZXROZWVkQ29tbWl0
IGhhcyBiZWVuIGNhbGxlZCBzbyBjb21wb3NpdGVBbmRSZWFkYmFjayBpcyBmb3JjZWQgdG8KKyAg
ICAvLyBwZXJmb3JtIGEgYmVnaW5GcmFtZUNvbXBsZXRlIHRvIGVuc3VyZSB0aGF0IG5vIHBlbmRp
bmcgY29tbWl0cyBhcmUKKyAgICAvLyBwcmVzZW50LgorICAgIHNjaGVkdWxlci0+YmVnaW5GcmFt
ZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVu
dC5hY3Rpb24oMCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0Iiwg
Y2xpZW50LmFjdGlvbigxKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBGb3JjZSBh
IHJlZHJhdyBmb3IgcmVhZGJhY2suCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0ZvcmNlZFJlZHJh
dygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlvbigwKSk7Cisg
ICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBSZXN0b3JlIHZpc2liaWxpdHkuCisgICAgc2No
ZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxk
IGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAg
RVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gU2V0IHZpc2liaWxpdHkgdG8gZmFsc2UgYmVmb3JlIGJlZ2luRnJh
bWVDb21wbGV0ZS4gVGhpcyB0aGlzIHdpbGwKKyAgICAvLyBwdXQgdGhlIHNjaGVkdWxlciBpbiB0
aGUgIndhaXRpbmcgZm9yIGZpcnN0IGRyYXciIHN0YXRlIGFmdGVyIGNvbW1pdC4KKyAgICBzY2hl
ZHVsZXItPnNldFZpc2libGUoZmFsc2UpOworCisgICAgLy8gVXBkYXRlIHJlc291cmNlcyBhbmQg
Y29tbWl0LgorICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNU
X0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVk
QWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIEVYUEVD
VF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAg
Y2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBOb3cgc2V0TmVlZHNDb21taXQgYWdhaW4uCisgICAg
c2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVt
QWN0aW9ucygpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFBlcmZvcm0gYW5vdGhl
ciBjb21wb3NpdGVBbmRSZWFkYmFjayBzZXF1ZW5jZS4KKyAgICBzY2hlZHVsZXItPmJlZ2luRnJh
bWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGll
bnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIs
IGNsaWVudC5hY3Rpb24oMSkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gRm9yY2Ug
YSByZWRyYXcgZm9yIHJlYWRiYWNrLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNGb3JjZWRSZWRy
YXcoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOwor
ICAgIGNsaWVudC5yZXNldCgpOworfQorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124157</attachid>
            <date>2012-01-26 11:58:48 -0800</date>
            <delta_ts>2012-03-09 01:45:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77049-20120126145847.patch</filename>
            <type>text/plain</type>
            <size>6803</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyZTMzZDY1ZDliMWRj
NGRmMmY2MDFjYjZhYTFmYTgwM2EwMGQxYS4uMzVjNzdiMWFlMjc5ZGYwNDMyZmVhNTYxOTMwYmZh
MjYyOGI0NjU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTI2ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBj
b21wb3NpdGVBbmRSZWFkYmFjayBpbiB0aHJlYWRlZCBjb21wb3NpdG9yIGJyZWFrcyBzY2hlZHVs
ZXIgYXNzdW1wdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzA0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFsbG93IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1lQ29tcGxldGUo
KSB0byBiZSBjYWxsZWQKKyAgICAgICAgd2hlbiBjb21taXQgc3RhdGUgaXMgQ09NTUlUX1NUQVRF
X0lETEUgb3IKKyAgICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgYnkgdGhlIGZvbGxvd2luZyB1bml0IHRlc3Q6
CisgICAgICAgIC0gQ0NTY2hlZHVsZXJUZXN0LkNvbXBvc2l0ZUFuZFJlYWRiYWNrCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5G
cmFtZUNvbXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OmNvbW1pdFBlbmRpbmcpOgorCiAyMDEyLTAxLTI2ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViV2hlZWxFdmVudDo6UGhhc2Ug
YW5kIFBsYXRmb3JtV2hlZWxFdmVudDo6UGhhc2UgZGVjbGFyYXRpb25zIHNob3VsZCBtYXRjaCBB
cHBLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGE5MjBkNWQwYjhiYzFkNTI0MGNm
YTU4MWZhYjM3ZmFiNWM3ZDRiYi4uYmRmMGM2NTQyMmE3NzMyY2RiYzBmYTBmOTA3NGJjZjMwNmM1
MTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0w
MS0yNiAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtD
aHJvbWl1bV0gY29tcG9zaXRlQW5kUmVhZGJhY2sgaW4gdGhyZWFkZWQgY29tcG9zaXRvciBicmVh
a3Mgc2NoZWR1bGVyIGFzc3VtcHRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzcwNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgQ0NTY2hlZHVsZXJUZXN0LkNvbXBvc2l0ZUFuZFJlYWRiYWNr
IHRlc3QgY2hlY2sgaW50ZXJhY3Rpb24gYmV0d2VlbgorICAgICAgICBzY2hlZHVsZXIgY29tcG9z
aXRlQW5kUmVhZGJhY2sgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHRlc3RzL0NDU2NoZWR1
bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJL
aXRUZXN0cyk6CisKIDIwMTItMDEtMjUgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2dsZS5j
b20+CiAKICAgICAgICAgQWRkIEludGVudFJlcXVlc3QgaW5jbHVkZSBmb3IgRnJhbWVMb2FkZXJD
bGllbnRJbXBsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
CmluZGV4IGQxYWE1Y2NkYzc0NGM4ZmNiNDAzMGIwZmJjNTY1ODMzNGY2NWRlYmYuLjFjZDRlMGMz
MDRiMDFhNmJjMmFiZjU3N2VhNzYzMjI3ODA1YmUxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTE2Myw3ICsxNjMsOSBAQCB2b2lkIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAKIHZvaWQgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0
U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsKKyAgICBBU1NFUlQobV9j
b21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfSURMRQorICAgICAgICAgICB8fCBtX2NvbW1pdFN0
YXRlID09IENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUworICAgICAgICAgICB8fCBtX2Nv
bW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXKTsKICAgICBt
X2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggN2RlNzE4ODQ2ZTdl
MzE3NDhhYzU2OTg2ZmJmYzIyYzg3NTE0NzdiMy4uMjRmY2E4MDRkY2FiMTY5NzI1M2ZlOGI5ZDNm
NDg5ODQ2ZmUxMTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29tbWl0UGVuZGluZygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9jb21taXRTdGF0ZSAhPSBDT01NSVRfU1RB
VEVfSURMRTsKKyAgICAgICAgcmV0dXJuIG1fbmVlZHNDb21taXQgfHwgbV9jb21taXRTdGF0ZSAh
PSBDT01NSVRfU1RBVEVfSURMRTsKICAgICB9CiAKICAgICBib29sIHJlZHJhd1BlbmRpbmcoKSBj
b25zdCB7IHJldHVybiBtX25lZWRzUmVkcmF3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggNDc1OTg3ZjEzYWM1ODlmNTA3MjRm
MjM5ZWYwYWRkMzA1MjQ3NDA2Yy4uZjk4N2U3NDA0OTQyNTIxZmVlODVkYTQ3ZDFkNDMzMzMxODA2
YzRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcApAQCAtMjQ4LDQgKzI0OCw3OCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVz
dENvbW1pdEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVu
ZGluZygpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclRlc3QsIENvbXBvc2l0ZUFuZFJlYWRiYWNr
KQoreworICAgIEZha2VDQ1NjaGVkdWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VD
Q1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgp
KTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVh
dGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNl
KSkpOworICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICAvLyBTZXROZWVk
c0NvbW1pdCBzaG91bGQgbm90IGJlZ2luIHRoZSBmcmFtZSBhcyB2aXNpYmlsaXR5IGlzIGZhbHNl
LgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xp
ZW50Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBjb21taXRQ
ZW5kaW5nKCkgc2hvdWxkIGJlIHRydWUgYXMgY29tcG9zaXRlQW5kUmVhZGJhY2sgY2FuCisgICAg
Ly8gY2FsbCBiZWdpbkZyYW1lQ29tcGxldGUoKSBhdCB0aGlzIHBvaW50LgorICAgIEVYUEVDVF9U
UlVFKHNjaGVkdWxlci0+Y29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIFNldE5lZWRDb21taXQg
aGFzIGJlZW4gY2FsbGVkIHNvIGNvbXBvc2l0ZUFuZFJlYWRiYWNrIGlzIGZvcmNlZCB0bworICAg
IC8vIHBlcmZvcm0gYSBiZWdpbkZyYW1lQ29tcGxldGUgdG8gZW5zdXJlIHRoYXQgbm8gcGVuZGlu
ZyBjb21taXRzIGFyZQorICAgIC8vIHByZXNlbnQuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1l
Q29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50
LmFjdGlvbigwKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBj
bGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIEZvcmNlIGEg
cmVkcmF3IGZvciByZWFkYmFjay4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzRm9yY2VkUmVkcmF3
KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9T
VFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAg
ICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFJlc3RvcmUgdmlzaWJpbGl0eS4KKyAgICBzY2hl
ZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTZXROZWVkc0NvbW1pdCBzaG91bGQg
YmVnaW4gdGhlIGZyYW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hl
ZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBTZXQgdmlzaWJpbGl0eSB0byBmYWxzZSBiZWZvcmUgYmVnaW5GcmFt
ZUNvbXBsZXRlLiBUaGlzIHRoaXMgd2lsbAorICAgIC8vIHB1dCB0aGUgc2NoZWR1bGVyIGluIHRo
ZSAid2FpdGluZyBmb3IgZmlyc3QgZHJhdyIgc3RhdGUgYWZ0ZXIgY29tbWl0LgorICAgIHNjaGVk
dWxlci0+c2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICAvLyBjb21taXRQZW5kaW5nKCkgc2hvdWxk
IGJlIHRydWUgYXMgY29tcG9zaXRlQW5kUmVhZGJhY2sgY2FuCisgICAgLy8gY2FsbCBiZWdpbkZy
YW1lQ29tcGxldGUoKSBhdCB0aGlzIHBvaW50LgorICAgIEVYUEVDVF9UUlVFKHNjaGVkdWxlci0+
Y29tbWl0UGVuZGluZygpKTsKKworICAgIC8vIFVwZGF0ZSByZXNvdXJjZXMgYW5kIGNvbW1pdC4K
KyAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgyLCBj
bGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVw
ZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEo
InNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gTm93IHNldE5lZWRzQ29tbWl0IGFnYWluLgorICAgIHNjaGVkdWxl
ci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bUFjdGlvbnMo
KSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBQZXJmb3JtIGFub3RoZXIgY29tcG9z
aXRlQW5kUmVhZGJhY2sgc2VxdWVuY2UuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlv
bigwKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQu
YWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIEZvcmNlIGEgcmVkcmF3
IGZvciByZWFkYmFjay4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7Cisg
ICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgi
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGll
bnQucmVzZXQoKTsKK30KKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131007</attachid>
            <date>2012-03-09 01:45:50 -0800</date>
            <delta_ts>2012-03-12 12:30:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77049-20120309014549.patch</filename>
            <type>text/plain</type>
            <size>30520</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDRlMmI3M2FmMGNl
MWYxYjQ3MWJlMzNhZmU0OTI1MzE3MzI4Zi4uOTE5MjVlYWY3MWIzMjUxZjZiMjUzNGMwMjQwNGUx
MGRiZmI0M2E5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAzLTA5ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZvcmNlIGNv
bXBvc2l0ZUFuZFJlYWRiYWNrIHRocm91Z2ggcmVndWxhciBzY2hlZHVsaW5nIGZsb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NGcmFtZVJhdGVDb250cm9sbGVyOjpvblRpbWVyVGljayk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmg6CisgICAg
ICAgIChDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjp2c3luY1RpY2spOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgIChDQ1NjaGVk
dWxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRDb21taXQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFtZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlOjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUp
OgorICAgICAgICAoQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKwogMjAxMi0wMy0wOSAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBnb29nbGUuY29tPgogCiAgICAgICAgIEZpbGVJbnB1dFR5cGUg
ZG9lc24ndCBzdXBwb3J0IChzYXZlfHJlc3RvcmUpRm9ybUNvbnRyb2xTdGF0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBlZTZhODJlNjg2YjZiZGJiMGY5YjMxOTZkMmYyOTA3OGFlNTZm
MzEzLi42YTA0YzZjZTQ5MjFlZTU5ZGY1NmYyYjJhOWNiMWM2OTBlMmJkYmY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTA5ICBOYXQgRHVjYSAg
PG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZvcmNlIGNvbXBvc2l0
ZUFuZFJlYWRiYWNrIHRocm91Z2ggcmVndWxhciBzY2hlZHVsaW5nIGZsb3cKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDQ5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0ZyYW1lUmF0ZUNv
bnRyb2xsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NGcmFtZVJhdGVD
b250cm9sbGVyQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDRnJh
bWVSYXRlQ29udHJvbGxlckNsaWVudDo6dnN5bmNUaWNrZWQpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQ6OnZzeW5jVGljayk6CisgICAgICAg
IChGYWtlQ0NGcmFtZVJhdGVDb250cm9sbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9zaXRlQW5kUmVhZGJh
Y2tXaGlsZUludmlzaWJsZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21w
b3NpdGVBbmRSZWFkYmFja1doaWxlSW52aXNpYmxlOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9z
aXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RDb21wb3NpdGVBbmRSZWFkYmFja1doaWxlSW52aXNpYmxlOjpiZWdpblRlc3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9zaXRlQW5kUmVhZGJhY2tXaGls
ZUludmlzaWJsZTo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKToKKyAgICAgICAgKFdURjo6Q0NMYXll
clRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZpc2libGU6OmFmdGVyVGVz
dCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6c2V0
TmVlZHNGb3JjZWRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5lOjpuZWVk
c0ZvcmNlZENvbW1pdCk6CisgICAgICAgIChTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMy0wOCAgSWFuIFZvbGxpY2sg
IDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSB0aGF0
IHRoZSBjYyB0aHJlYWQgYW5pbWF0aW9uIGZyYW1ld29yayBjb250aW51ZXMgdG8gdGljayB3aGVu
IHRoZSB0YWIgaXMgYmFja2dyb3VuZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250
cm9sbGVyLmNwcAppbmRleCA1NTQ0N2NhNTlkNDU4NDU1Y2FkMmNiMWIzMjMxMWYzN2RiMWM2MzAz
Li5kYjZkOTVjYzAwY2MxNTU2OGUwY2U1NjdmNDQ5NzhhOTI3OTI0YmU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBD
Q0ZyYW1lUmF0ZUNvbnRyb2xsZXI6Om9uVGltZXJUaWNrKCkKICAgICB9CiAKICAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5iZWdpbkZyYW1lKCk7CisgICAgICAgIG1fY2xpZW50
LT52c3luY1RpY2soKTsKIH0KIAogdm9pZCBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6OmRpZEJlZ2lu
RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaAppbmRleCBhM2Vl
ZmU4NDY4ODM2MDVlNTJhZjFmNzliMDg1ZDk3ZGYyNmUzN2U5Li41NzM0ZDRhYTZlOWY3NDYxYTRj
NjZjNmUwYTE4NjBkYTMwZDQ5NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEND
RnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGJl
Z2luRnJhbWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZzeW5jVGljaygpID0gMDsKIAogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkNDRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCgpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDYzM2YyMWQ0N2I5MzFjY2E4NDc4NTQyNmE3MWY0
ZjhkM2I2ZTQ2NWYuLjYxYmQ5MzEzZjU0YmNlMmIwYmRkZWE4NTQ2NDc5YTMwYTJlNTJhNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTU2LDYgKzU2LDEyIEBAIHZvaWQgQ0NTY2hlZHVs
ZXI6OnNldE5lZWRzQ29tbWl0KCkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQog
Cit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZENvbW1pdCgpCit7CisgICAgbV9zdGF0
ZU1hY2hpbmUuc2V0TmVlZHNGb3JjZWRDb21taXQoKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0
aW9ucygpOworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAg
bV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNSZWRyYXcoKTsKQEAgLTEwMSwxMyArMTA3LDEzIEBAIHZv
aWQgQ0NTY2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4dCgpCiAgICAgcHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCit2b2lkIEND
U2NoZWR1bGVyOjp2c3luY1RpY2soKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsK
ICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
bV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgfQotICAgIFRSQUNFX0VW
RU5UKCJDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5U
KCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7CiAKICAgICBtX3N0YXRlTWFjaGlu
ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oCmluZGV4IGY4YmEyMWY5OWYyNGM1YTljZTA3ZDE2YmEyMzUxNTY0MzlkMGVl
NzYuLjhlZjVkY2Y3MmMyNzBhM2E2YzgxNDdlNDA3MjA1OTJlODcxZDY2ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaApAQCAtNjMsOSArNjMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKIAogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKKworICAgIC8vIExpa2Ugc2V0
TmVlZHNDb21taXQoKSwgYnV0IGVuc3VyZXMgYSBjb21taXQgd2lsbCBkZWZpbml0ZWx5IGhhcHBl
biBldmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZS4KKyAgICB2b2lkIHNldE5lZWRzRm9yY2VkQ29t
bWl0KCk7CisKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKLSAgICAvLyBBcyBzZXROZWVk
c1JlZHJhdygpLCBidXQgZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2
ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgorICAgIC8vIExpa2Ugc2V0TmVlZHNSZWRyYXcoKSwg
YnV0IGVuc3VyZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFy
ZSBub3QgdmlzaWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKICAgICB2
b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwpAQCAtODAsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3
UGVuZGluZygpOyB9CiAKICAgICAvLyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQgaW1wbGVt
ZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFtZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB2c3luY1RpY2soKTsKIAogcHJpdmF0ZToKICAgICBDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNs
aWVudCosIFBhc3NPd25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0
YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggMDU0YTRlZGQ3MThhYTA5ZWQ0
NjkxNTg2YjI1MTY2YjRhZDc0NTBmMC4uODVkOTQ5Y2NmMjhkZGYyMTVjYTczMGMzOWM4YWM3OWE4
ODY5YjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNw
cApAQCAtMzUsNiArMzUsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUoKQogICAgICwgbV9uZWVkc1JlZHJhdyhmYWxzZSkKICAgICAsIG1fbmVlZHNG
b3JjZWRSZWRyYXcoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQorICAgICwgbV9u
ZWVkc0ZvcmNlZENvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZh
bHNlKQpAQCAtNzUsMTMgKzc2LDE1IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24g
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgIGNhc2UgQ09N
TUlUX1NUQVRFX0lETEU6CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FD
VElWRSAmJiBtX25lZWRzRm9yY2VkUmVkcmF3KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9E
UkFXOworICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9u
ZWVkc0ZvcmNlZENvbW1pdCkKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7
CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpCiAgICAgICAgICAg
ICByZXR1cm4gQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjsKICAgICAgICAgaWYgKG1f
Y29udGV4dFN0YXRlID09IENPTlRFWFRfUkVDUkVBVElORykKICAgICAgICAgICAgIHJldHVybiBB
Q1RJT05fTk9ORTsKICAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKICAgICAgICAgICAgIHJldHVy
biBBQ1RJT05fRFJBVzsKLSAgICAgICAgaWYgKG1fbmVlZHNDb21taXQgJiYgbV92aXNpYmxlKQor
ICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCAmJiAobV92aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRD
b21taXQpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAg
cmV0dXJuIEFDVElPTl9OT05FOwogCkBAIC0xMDUsNyArMTA4LDcgQEAgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIC8vIENPTU1JVF9T
VEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJZiBt
X2NhbkRyYXcgaXMgZmFsc2UsCiAgICAgICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAo
c2ltaWxhciBhcyBpbiBDT01NSVRfU1RBVEVfSURMRSkuCi0gICAgICAgIGlmICghbV9jYW5EcmF3
ICYmIG1fbmVlZHNDb21taXQgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAoIW1fY2FuRHJhdyAm
JiBtX25lZWRzQ29tbWl0ICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCiAg
ICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNU
SU9OX05PTkU7CiAgICAgfQpAQCAtMTIwLDkgKzEyMywxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogICAgICAgICByZXR1cm47CiAK
ICAgICBjYXNlIEFDVElPTl9CRUdJTl9GUkFNRToKLSAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7
CisgICAgICAgIEFTU0VSVChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCk7CiAgICAg
ICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CiAgICAg
ICAgIG1fbmVlZHNDb21taXQgPSBmYWxzZTsKKyAgICAgICAgbV9uZWVkc0ZvcmNlZENvbW1pdCA9
IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVM6CkBAIC0xMzEsNyArMTM1LDcgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgY2FzZSBBQ1RJT05fQ09NTUlUOgotICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCB8fCAhbV92
aXNpYmxlKQorICAgICAgICBpZiAoKG1fbmVlZHNDb21taXQgfHwgIW1fdmlzaWJsZSkgJiYgIW1f
bmVlZHNGb3JjZWRDb21taXQpCiAgICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NU
QVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
Y29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfSURMRTsKQEAgLTIwMCw2ICsyMDQsMTEgQEAgdm9p
ZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21taXQoKQogICAgIG1fbmVlZHND
b21taXQgPSB0cnVlOwogfQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVk
c0ZvcmNlZENvbW1pdCgpCit7CisgICAgbV9uZWVkc0ZvcmNlZENvbW1pdCA9IHRydWU7Cit9CisK
IHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAg
ICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDIyZmNk
ZjQyMjQ5ZmRhMzFlZDcxMzEzYzI4OTE4MWM5NGVkOTI5YjguLjYxYmVjMzk0ZWNlODA5NTNjYWQ5
ZDViYThiZjMwNjY5NWMwZTFmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIENPTlRFWFRfTE9T
VCwKICAgICAgICAgQ09OVEVYVF9SRUNSRUFUSU5HLAogICAgIH07CisKICAgICBib29sIGNvbW1p
dFBlbmRpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fY29tbWl0U3RhdGUgIT0g
Q09NTUlUX1NUQVRFX0lETEU7CkBAIC05OSw2ICsxMDAsMTAgQEAgcHVibGljOgogICAgIC8vIHRo
cmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEFzIHNl
dE5lZWRzQ29tbWl0KCksIGJ1dCBlbnN1cmVzIHRoZSBiZWdpbkZyYW1lIHdpbGwgZGVmaW5pdGVs
eSBoYXBwZW4gZXZlbiBpZgorICAgIC8vIHdlIGFyZSBub3QgdmlzaWJsZS4KKyAgICB2b2lkIHNl
dE5lZWRzRm9yY2VkQ29tbWl0KCk7CisKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25z
ZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX0JFR0lOX0ZSQU1FCiAgICAgLy8gZnJvbSBuZXh0U3Rh
dGUuIEluZGljYXRlcyB0aGF0IGFsbCBwYWludGluZyBpcyBjb21wbGV0ZSBhbmQgdGhhdAogICAg
IC8vIHVwZGF0aW5nIG9mIGNvbXBvc2l0b3IgcmVzb3VyY2VzIGNhbiBiZWdpbi4KQEAgLTEyNyw2
ICsxMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX25lZWRzUmVkcmF3OwogICAgIGJvb2wg
bV9uZWVkc0ZvcmNlZFJlZHJhdzsKICAgICBib29sIG1fbmVlZHNDb21taXQ7CisgICAgYm9vbCBt
X25lZWRzRm9yY2VkQ29tbWl0OwogICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
ZzsKICAgICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zpc2libGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDNkNjU5NmQwNGUxNjQ3NDY5ZGIxYThkMWQ3MGEyOTYy
N2E5YjcyZDEuLmRiNTgwNDY0OGY5YTRjMzM0NjBhZTE5NmE3NjlhZTJjMDAyZDEzNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01NywxNiArNTcsMTYgQEAgUGFzc093blB0cjxD
Q1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVI
b3N0KQogfQogCiBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCog
bGF5ZXJUcmVlSG9zdCkKLSAgICA6IG1fYW5pbWF0ZVJlcXVlc3RlZChmYWxzZSkKKyAgICA6IG1f
cGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0KDApCisgICAgLCBtX2FuaW1hdGVSZXF1ZXN0ZWQoZmFs
c2UpCiAgICAgLCBtX2NvbW1pdFJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1fY29udGV4dExvc3Qo
ZmFsc2UpCiAgICAgLCBtX2xheWVyVHJlZUhvc3QobGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fY29t
cG9zaXRvcklkZW50aWZpZXIoLTEpCiAgICAgLCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZChm
YWxzZSkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKLSAgICAsIG1fbGFzdEV4ZWN1dGVkQmVnaW5G
cmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyKC0xKQotICAgICwgbV9udW1CZWdpbkZyYW1lQW5k
Q29tbWl0c0lzc3VlZE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9tYWluVGhyZWFkUHJveHkoQ0NT
Y29wZWRUaHJlYWRQcm94eTo6Y3JlYXRlKENDUHJveHk6Om1haW5UaHJlYWQoKSkpCisgICAgLCBt
X2JlZ2luRnJhbWVDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQoMCkKICAgICAsIG1fcmVhZGJh
Y2tSZXF1ZXN0T25JbXBsVGhyZWFkKDApCiAgICAgLCBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQoMCkKQEAgLTk0LDI1ICs5NCwxNCBAQCBib29sIENDVGhyZWFkUHJveHk6OmNv
bXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIElmIGEgY29tbWl0IGlzIHBlbmRp
bmcsIHBlcmZvcm0gdGhlIGNvbW1pdCBmaXJzdC4KLSAgICBpZiAobV9jb21taXRSZXF1ZXN0ZWQp
ICB7Ci0gICAgICAgIC8vIFRoaXMgYml0IG9mIGNvZGUgaXMgdWdsaWVyIHRoYW4gaXQgc2hvdWxk
IGJlIGJlY2F1c2UgcmV0dXJuaW5nCi0gICAgICAgIC8vIHBvaW50ZXJzIHZpYSB0aGUgQ0NUaHJl
YWQgdGFzayBtb2RlbCBpcyByZWFsbHkgbWVzc3kuIEVmZmVjdGl2ZWx5LCB3ZQotICAgICAgICAv
LyBhcmUgbWFraW5nIGEgYmxvY2tpbmcgY2FsbCB0byBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0
VGFza09uSW1wbFRocmVhZCwKLSAgICAgICAgLy8gYW5kIHRyeWluZyB0byBnZXQgdGhlIENDTWFp
blRocmVhZDo6VGFzayBpdCByZXR1cm5zIHNvIHdlIGNhbiBydW4gaXQuCi0gICAgICAgIE93blB0
cjxDQ1RocmVhZDo6VGFzaz4gYmVnaW5GcmFtZUFuZENvbW1pdFRhc2s7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIENDVGhyZWFkOjpUYXNrKiB0YXNrUHRyID0gMDsKLSAgICAgICAgICAgIENDQ29t
cGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFk
KCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6b2J0
YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoJmNvbXBsZXRpb24pLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZ0YXNrUHRyKSkpOwot
ICAgICAgICAgICAgY29tcGxldGlvbi53YWl0KCk7Ci0gICAgICAgICAgICBiZWdpbkZyYW1lQW5k
Q29tbWl0VGFzayA9IGFkb3B0UHRyKHRhc2tQdHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYmVn
aW5GcmFtZUFuZENvbW1pdFRhc2stPnBlcmZvcm1UYXNrKCk7Ci0gICAgfQogCi0gICAgLy8gRHJh
dyB1c2luZyB0aGUgbmV3IHRyZWUgYW5kIHJlYWQgYmFjayB0aGUgcmVzdWx0cy4KKyAgICAvLyBQ
ZXJmb3JtIGEgc3luY2hyb25vdXMgY29tbWl0LgorICAgIENDQ29tcGxldGlvbkV2ZW50IGJlZ2lu
RnJhbWVDb21wbGV0aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojpmb3JjZUJlZ2luRnJhbWVPbklt
cGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmJlZ2luRnJhbWVDb21wbGV0aW9uKSkp
OworICAgIGJlZ2luRnJhbWVDb21wbGV0aW9uLndhaXQoKTsKKyAgICBiZWdpbkZyYW1lKCk7CisK
KyAgICAvLyBQZXJmb3JtIGEgc3luY2hyb25vdXMgcmVhZGJhY2suCiAgICAgUmVhZGJhY2tSZXF1
ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVzdC5yZWN0ID0gcmVjdDsKICAgICByZXF1ZXN0LnBpeGVs
cyA9IHBpeGVsczsKQEAgLTEzMSw2ICsxMjAsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlcXVl
c3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqIHJlcXVlc3QpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQgPSByZXF1
ZXN0OworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc1JlZHJhdygpOwogICAg
IG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogfQogCkBA
IC0zODUsNTQgKzM3NSw1MSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmlu
Z09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogICAgIG1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogfQogCi12b2lkIENDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQordm9pZCBDQ1RocmVhZFByb3h5
Ojpmb3JjZUJlZ2luRnJhbWVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUiLCB0aGlzLCAwKTsKLSAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3Jl
YXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojpmb3JjZUJlZ2luRnJhbWVPbkltcGxUaHJlYWQiKTsK
KyAgICBBU1NFUlQoIW1fYmVnaW5GcmFtZUNvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisK
KyAgICBpZiAobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSkgeworICAg
ICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fYmVnaW5GcmFtZUNvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247Cisg
ICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzQ29tbWl0KCk7CisgICAgbV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkQ29tbWl0KCk7CiB9CiAKLXZvaWQgQ0NU
aHJlYWRQcm94eTo6b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIENDVGhyZWFkOjpUYXNrKiogdGFza1B0cikKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpCiB7Ci0gICAgT3du
UHRyPENDVGhyZWFkOjpUYXNrPiB0YXNrID0gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tP
bkltcGxUaHJlYWQoKTsKLSAgICAqdGFza1B0ciA9IHRhc2subGVha1B0cigpOwotICAgIGNvbXBs
ZXRpb24tPnNpZ25hbCgpOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIpOworICAgIEFTU0VSVCghbV9wZW5kaW5nQmVnaW5G
cmFtZVJlcXVlc3QpOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gbmV3IEJlZ2lu
RnJhbWVBbmRDb21taXRTdGF0ZSgpOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5m
cmFtZUJlZ2luVGltZSA9IDA7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPnNjcm9s
bEluZm8gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CisKKyAg
ICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKSk7CisKKyAgICBpZiAobV9iZWdpbkZyYW1lQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkKSB7CisgICAgICAgIG1fYmVnaW5GcmFtZUNvbXBsZXRpb25F
dmVudE9uSW1wbFRocmVhZC0+c2lnbmFsKCk7CisgICAgICAgIG1fYmVnaW5GcmFtZUNvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCA9IDA7CisgICAgfQogfQogCi1QYXNzT3duUHRyPENDVGhyZWFk
OjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1w
bFRocmVhZCgpCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUoKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1w
bFRocmVhZCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgZG91
YmxlIGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKLQotICAgIC8vIE5PVEUsIGl0IGlz
IHBvc3NpYmxlIHRvIHJlY2VpZXZlIGEgcmVxdWVzdCBmb3IgYQotICAgIC8vIGJlZ2luRnJhbWVB
bmRDb21taXRPbkltcGxUaHJlYWQgZnJvbSBmaW5pc2hBbGxSZW5kZXJpbmcgd2hpbGUgYQotICAg
IC8vIGJlZ2luRnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQgaXMgZW5xdWV1ZWQuIFNpbmNlIEND
VGhyZWFkIGRvZXNuJ3QKLSAgICAvLyBwcm92aWRlIGEgdGhyZWFkc2FmZSB3YXkgdG8gY2FuY2Vs
IHRhc2tzLCBpdCBpcyBpbXBvcnRhbnQgdGhhdAotICAgIC8vIGJlZ2luRnJhbWVBbmRDb21taXQg
YmUgc3RydWN0dXJlZCB0byB1bmRlcnN0YW5kIHRoYXQgaXQgbWF5IGdldCBjYWxsZWQgYXQKLSAg
ICAvLyBhIHBvaW50IHRoYXQgaXQgc2hvdWxkbid0LiBXZSBkbyB0aGlzIGJ5IGFzc2lnbmluZyBh
IHNlcXVlbmNlIG51bWJlciB0bwotICAgIC8vIGV2ZXJ5IG5ldyBiZWdpbkZyYW1lQW5kQ29tbWl0
IHRhc2suIFRoZW4sIGJlZ2luRnJhbWVBbmRDb21taXQgdHJhY2tzIHRoZQotICAgIC8vIGxhc3Qg
ZXhlY3V0ZWQgc2VxdWVuY2UgbnVtYmVyLCBkcm9wcGluZyBiZWdpbkZyYW1lQW5kQ29tbWl0IHdp
dGggc2VxdWVuY2UKLSAgICAvLyBudW1iZXJzIGJlbG93IHRoZSBsYXN0IGV4ZWN1dGVkIG9uZS4K
LSAgICBpbnQgdGhpc1Rhc2tTZXF1ZW5jZU51bWJlciA9IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1p
dHNJc3N1ZWRPbkltcGxUaHJlYWQ7Ci0gICAgbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0c0lzc3Vl
ZE9uSW1wbFRocmVhZCsrOwotICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJ
bmZvID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwotICAgIHJl
dHVybiBjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQsIHRoaXNUYXNrU2VxdWVuY2VOdW1iZXIsIGZyYW1lQmVnaW5UaW1lLCBzY3JvbGxJ
bmZvLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENv
bW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0
cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvKQotewotICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CisgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lIik7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gRHJvcCBiZWdpbkZyYW1lQW5kQ29tbWl0IGNhbGxzIHRoYXQgb2NjdXIgb3V0
IG9mIHNlcXVlbmNlLiBTZWUgY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJl
YWQgZm9yCi0gICAgLy8gYW4gZXhwbGFuYXRpb24gb2YgaG93IG91dC1vZi1zZXF1ZW5jZSBiZWdp
bkZyYW1lQW5kQ29tbWl0IHRhc2tzIGNhbiBvY2N1ci4KLSAgICBpZiAoc2VxdWVuY2VOdW1iZXIg
PCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcikgewotICAg
ICAgICBUUkFDRV9FVkVOVCgiRWFybHlPdXRfU3RhbGVCZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhp
cywgMCk7CisgICAgaWYgKCFtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdCkgeworICAgICAgICBU
UkFDRV9FVkVOVDAoImNjIiwgIkVhcmx5T3V0X1N0YWxlQmVnaW5GcmFtZU1lc3NhZ2UiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21t
aXRTZXF1ZW5jZU51bWJlciA9IHNlcXVlbmNlTnVtYmVyOworCisgICAgT3duUHRyPEJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZT4gcmVxdWVzdChhZG9wdFB0cihtX3BlbmRpbmdCZWdpbkZyYW1lUmVx
dWVzdCkpOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gMDsKIAogICAgIC8vIERv
IG5vdCBub3RpZnkgdGhlIGltcGwgdGhyZWFkIG9mIGNvbW1pdCByZXF1ZXN0cyB0aGF0IG9jY3Vy
IGR1cmluZwogICAgIC8vIHRoZSBhcHBseS9hbmltYXRlL2xheW91dCBwYXJ0IG9mIHRoZSBiZWdp
bkZyYW1lQW5kQ29tbWl0IHByb2Nlc3Mgc2luY2UKQEAgLTQ0OCwxNCArNDM1LDEyIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRv
dWJsZSBmcmFtZUJlZ2luVGltCiAKICAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHksIHNjcm9sbCBk
ZWx0YXMgbmVlZCB0byBiZSBhcHBsaWVkIGZvciBkcm9wcGVkIGNvbW1pdHMgYXMgd2VsbC4KICAg
ICAvLyBSZS1kbyB0aGUgY29tbWl0IGZsb3cgc28gdGhhdCB3ZSBkb24ndCBzZW5kIHRoZSBzY3Jv
bGxJbmZvIG9uIHRoZSBCRkFDIG1lc3NhZ2UuCi0gICAgbV9sYXllclRyZWVIb3N0LT5hcHBseVNj
cm9sbEFuZFNjYWxlKCpzY3JvbGxJbmZvKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmFwcGx5U2Ny
b2xsQW5kU2NhbGUoKnJlcXVlc3QtPnNjcm9sbEluZm8pOwogCiAgICAgLy8gRklYTUU6IHJlY3Jl
YXRlIHRoZSBjb250ZXh0IGlmIGl0IHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGltcGwgdGhyZWFkLgot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7Cisg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVBbmltYXRpb25zKHJlcXVlc3QtPmZyYW1lQmVnaW5U
aW1lKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmxheW91dCgpOwogCi0gICAgQVNTRVJUKG1fbGFz
dEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVt
YmVyKTsKLQogICAgIC8vIENsZWFyIHRoZSBjb21taXQgZmxhZyBhZnRlciB1cGRhdGluZyBhbmlt
YXRpb25zIGFuZCBsYXlvdXQgaGVyZSAtLS0gb2JqZWN0cyB0aGF0IG9ubHkKICAgICAvLyBsYXlv
dXQgd2hlbiBwYWludGVkIHdpbGwgdHJpZ2dlciBhbm90aGVyIHNldE5lZWRzQ29tbWl0IGluc2lk
ZQogICAgIC8vIHVwZGF0ZUxheWVycy4KQEAgLTQ4Miw4ICs0NjcsNiBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJh
bWVCZWdpblRpbQogICAgIH0KIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUo
KTsKLQotICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5j
ZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDRlYWY4NDBmNmI1N2Q1NWMwNzNiZmE1Njhm
NDBhZjA2YjhiMDg2MmUuLjczZDc0YjM4Y2JjMDZjNzBhMjQ4YTFiMGI0ZjA5ZGE0NDk0M2Q0MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTkwLDggKzkwLDE2IEBAIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKICAgICBmcmllbmQg
Y2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI7CiAKKyAgICAvLyBTZXQg
b24gaW1wbCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQuCisgICAgc3RydWN0IEJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZSB7CisgICAgICAgIEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpIDog
ZnJhbWVCZWdpblRpbWUoMCkgeyB9CisgICAgICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZTsKKyAg
ICAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CisgICAgfTsKKyAg
ICBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUqIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0Owor
CiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCi0gICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29t
bWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRy
PENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKKyAgICB2b2lkIGJlZ2luRnJhbWUoKTsKICAgICB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25F
dmVudHNWZWN0b3I+KTsKQEAgLTEwNSw4ICsxMTMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lk
KiBwaXhlbHM7CiAgICAgICAgIEludFJlY3QgcmVjdDsKICAgICB9OwotICAgIFBhc3NPd25QdHI8
Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFk
KCk7Ci0gICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChD
Q0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNrKiopOworICAgIHZvaWQgZm9yY2VCZWdp
bkZyYW1lT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBiZWdpbkZy
YW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJl
cXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lkIHJl
cXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBv
c2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7
CkBAIC0xMjksMTEgKzEzNiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xheWVyUmVuZGVyZXJJ
bml0aWFsaXplZDsKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIG1fbGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllc01haW5UaHJlYWRDb3B5OwogICAgIGJvb2wgbV9zdGFydGVkOwotICAgIGlu
dCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcjsKIAogICAg
IC8vIFVzZWQgb24gdGhlIENDVGhyZWFkIG9ubHkuCiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dEltcGw+IG1fbGF5ZXJUcmVlSG9zdEltcGw7Ci0gICAgaW50IG1fbnVtQmVnaW5GcmFtZUFuZENv
bW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQ7CiAKICAgICBPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IG1f
aW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkOwogCkBAIC0xNDUsNiArMTUwLDkgQEAgcHJpdmF0ZToK
ICAgICAvLyBhbmQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBjYWxscy4KICAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhy
ZWFkOwogCisgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBz
Y2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIHRvIGJlIGlzc3VlZC4KKyAgICBDQ0NvbXBsZXRpb25F
dmVudCogbV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOworCiAgICAgLy8g
U2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaWluZyBvbiBhIHJlYWRiYWNrLgogICAgIFJl
YWRiYWNrUmVxdWVzdCogbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxl
clRlc3QuY3BwCmluZGV4IGFlNDNkNDFjMWNlMDNhYjcxZWM3MGIwYzc1N2IxZWEzNzZkMGEwZTcu
LmYzMTU5MDM5MDFhYmU4NjJiODRjMTA5M2VhZDFkZmE2ZTE0MmY4MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJU
ZXN0LmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIGNsYXNzIEZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q0NGcmFtZVJhdGVDb250cm9sbGVyQ2xpCiBwdWJs
aWM6CiAgICAgRmFrZUNDRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCgpIHsgcmVzZXQoKTsgfQog
Ci0gICAgdm9pZCByZXNldCgpIHsgbV9mcmFtZUJlZ3VuID0gZmFsc2U7IH0KLSAgICBib29sIGZy
YW1lQmVndW4oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQmVndW47IH0KKyAgICB2b2lkIHJlc2V0
KCkgeyBtX3ZzeW5jVGlja2VkID0gZmFsc2U7IH0KKyAgICBib29sIHZzeW5jVGlja2VkKCkgY29u
c3QgeyByZXR1cm4gbV92c3luY1RpY2tlZDsgfQogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luRnJh
bWUoKSB7IG1fZnJhbWVCZWd1biA9IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdnN5bmNUaWNr
KCkgeyBtX3ZzeW5jVGlja2VkID0gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBtX2Zy
YW1lQmVndW47CisgICAgYm9vbCBtX3ZzeW5jVGlja2VkOwogfTsKIAogCkBAIC02NSw3ICs2NSw3
IEBAIFRFU1QoQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdCwgVGVzdEZyYW1lVGhyb3R0bGluZ19J
bW1lZGlhdGVBY2spCiAgICAgZWxhcHNlZCArPSB0aHJlYWQucGVuZGluZ0RlbGF5KCk7CiAgICAg
dGltZVNvdXJjZS0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoZWxhcHNlZCk7CiAg
ICAgdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7Ci0gICAgRVhQRUNUX1RSVUUoY2xpZW50LmZyYW1l
QmVndW4oKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LnZzeW5jVGlja2VkKCkpOwogICAgIGNs
aWVudC5yZXNldCgpOwogCiAgICAgLy8gVGVsbCB0aGUgY29udHJvbGxlciB3ZSBkcmV3CkBAIC04
MCw3ICs4MCw3IEBAIFRFU1QoQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdCwgVGVzdEZyYW1lVGhy
b3R0bGluZ19JbW1lZGlhdGVBY2spCiAgICAgRVhQRUNUX1RSVUUoZWxhcHNlZCA+PSB0aW1lU291
cmNlLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcygpKTsgLy8gU2FuaXR5IGNoZWNrIHRo
YXQgcHJldmlvdXMgY29kZSBkaWRuJ3QgbW92ZSB0aW1lIGJhY2t3YXJkLgogICAgIHRpbWVTb3Vy
Y2UtPnNldE1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zKGVsYXBzZWQpOwogICAgIHRocmVh
ZC5ydW5QZW5kaW5nVGFzaygpOwotICAgIEVYUEVDVF9UUlVFKGNsaWVudC5mcmFtZUJlZ3VuKCkp
OworICAgIEVYUEVDVF9UUlVFKGNsaWVudC52c3luY1RpY2tlZCgpKTsKIH0KIAogVEVTVChDQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXJUZXN0LCBUZXN0RnJhbWVUaHJvdHRsaW5nX1R3b0ZyYW1lc0luRmxp
Z2h0KQpAQCAtMTAwLDcgKzEwMCw3IEBAIFRFU1QoQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdCwg
VGVzdEZyYW1lVGhyb3R0bGluZ19Ud29GcmFtZXNJbkZsaWdodCkKICAgICBlbGFwc2VkICs9IHRo
cmVhZC5wZW5kaW5nRGVsYXkoKTsKICAgICB0aW1lU291cmNlLT5zZXRNb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWVNcyhlbGFwc2VkKTsKICAgICB0aHJlYWQucnVuUGVuZGluZ1Rhc2soKTsKLSAg
ICBFWFBFQ1RfVFJVRShjbGllbnQuZnJhbWVCZWd1bigpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGll
bnQudnN5bmNUaWNrZWQoKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBUZWxsIHRo
ZSBjb250cm9sbGVyIHdlIGRyZXcKQEAgLTExMSw3ICsxMTEsNyBAQCBURVNUKENDRnJhbWVSYXRl
Q29udHJvbGxlclRlc3QsIFRlc3RGcmFtZVRocm90dGxpbmdfVHdvRnJhbWVzSW5GbGlnaHQpCiAg
ICAgRVhQRUNUX1RSVUUoZWxhcHNlZCA+PSB0aW1lU291cmNlLT5tb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWVNcygpKTsgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcHJldmlvdXMgY29kZSBkaWRuJ3Qg
bW92ZSB0aW1lIGJhY2t3YXJkLgogICAgIHRpbWVTb3VyY2UtPnNldE1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZU1zKGVsYXBzZWQpOwogICAgIHRocmVhZC5ydW5QZW5kaW5nVGFzaygpOwotICAg
IEVYUEVDVF9UUlVFKGNsaWVudC5mcmFtZUJlZ3VuKCkpOworICAgIEVYUEVDVF9UUlVFKGNsaWVu
dC52c3luY1RpY2tlZCgpKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRlbGwgdGhl
IGNvbnRyb2xsZXIgd2UgZHJldywgYWdhaW4uCkBAIC0xMjIsMjEgKzEyMiwyMSBAQCBURVNUKEND
RnJhbWVSYXRlQ29udHJvbGxlclRlc3QsIFRlc3RGcmFtZVRocm90dGxpbmdfVHdvRnJhbWVzSW5G
bGlnaHQpCiAgICAgRVhQRUNUX1RSVUUoZWxhcHNlZCA+PSB0aW1lU291cmNlLT5tb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWVNcygpKTsgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcHJldmlvdXMgY29k
ZSBkaWRuJ3QgbW92ZSB0aW1lIGJhY2t3YXJkLgogICAgIHRpbWVTb3VyY2UtPnNldE1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZU1zKGVsYXBzZWQpOwogICAgIHRocmVhZC5ydW5QZW5kaW5nVGFz
aygpOwotICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZnJhbWVCZWd1bigpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoY2xpZW50LnZzeW5jVGlja2VkKCkpOwogCiAgICAgLy8gVGVsbCB0aGUgY29udHJvbGxl
ciB0aGUgZmlyc3QgZnJhbWUgZW5kZWQgNW1zIGxhdGVyCiAgICAgdGltZVNvdXJjZS0+c2V0TW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXModGltZVNvdXJjZS0+bW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lTXMoKSArIDUpOwogICAgIGNvbnRyb2xsZXIuZGlkRmluaXNoRnJhbWUoKTsKIAog
ICAgIC8vIFRpY2sgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkCi0gICAgRVhQRUNUX0ZBTFNF
KGNsaWVudC5mcmFtZUJlZ3VuKCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQudnN5bmNUaWNr
ZWQoKSk7CiAKICAgICAvLyBUcmlnZ2VyIHlldCBhbm90aGVyIGZyYW1lLiBTaW5jZSBvbmUgZnJh
bWVzIGlzIHBlbmRpbmcsIGFub3RoZXIgdnN5bmMgY2FsbGJhY2sgc2hvdWxkIHJ1bi4KICAgICBl
bGFwc2VkICs9IHRocmVhZC5wZW5kaW5nRGVsYXkoKTsKICAgICBFWFBFQ1RfVFJVRShlbGFwc2Vk
ID49IHRpbWVTb3VyY2UtPm1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zKCkpOyAvLyBTYW5p
dHkgY2hlY2sgdGhhdCBwcmV2aW91cyBjb2RlIGRpZG4ndCBtb3ZlIHRpbWUgYmFja3dhcmQuCiAg
ICAgdGltZVNvdXJjZS0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoZWxhcHNlZCk7
CiAgICAgdGhyZWFkLnJ1blBlbmRpbmdUYXNrKCk7Ci0gICAgRVhQRUNUX1RSVUUoY2xpZW50LmZy
YW1lQmVndW4oKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LnZzeW5jVGlja2VkKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAppbmRleCBmYTc1ZGVjMGM3NWMxMGFjYmJiMTg2ZDQ4MmUxZWI4Y2MyOThiNWI1
Li43ODRhZWM0ODhlODVjNzk4YjM1NDUyNmY3ODdiZWYwYjk3MzljMzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAg
LTgwNiw2ICs4MDYsNDYgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJh
dywgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9CiAKKy8vIEEgY29t
cG9zaXRlQW5kUmVhZGJhY2sgd2hpbGUgaW52aXNpYmxlIHNob3VsZCBmb3JjZSBhIG5vcm1hbCBj
b21taXQgd2l0aG91dCBhc3NlcnRpb24uCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9z
aXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0
VGhyZWFkT25seSB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFu
ZFJlYWRiYWNrV2hpbGVJbnZpc2libGUoKQorICAgICAgICA6IG1fbnVtQ29tbWl0cygwKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAg
ICBtX251bUNvbW1pdHMrKzsKKyAgICAgICAgaWYgKG1fbnVtQ29tbWl0cyA9PSAxKSB7CisgICAg
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgT3duQXJyYXlQdHI8Y2hhcj4g
cGl4ZWxzKGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbNF0pKTsKKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tcG9zaXRlQW5kUmVhZGJhY2soc3RhdGljX2Nhc3Q8dm9pZCo+KHBpeGVscy5n
ZXQoKSksIEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGVuZFRlc3QoKTsKKworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1Rf
RihDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9zaXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZSwg
cnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdFRocmVhZGVkKCk7Cit9CisKKwogLy8gVHJp
Z2dlciBhIGZyYW1lIHdpdGggc2V0TmVlZHNDb21taXQuIFRoZW4sIGluc2lkZSB0aGUgcmVzdWx0
aW5nIGFuaW1hdGUKIC8vIGNhbGxiYWNrLCByZXF1ZXQgYW5vdGhlciBmcmFtZSB1c2luZyBzZXRO
ZWVkc0FuaW1hdGUuIEVuZCB0aGUgdGVzdCB3aGVuCiAvLyBhbmltYXRlIGdldHMgY2FsbGVkIHll
dC1hZ2FpbiwgaW5kaWNhdGluZyB0aGF0IHRoZSBwcm94eSBpcyBjb3JyZWN0bHkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LmNwcAppbmRleCAwODUzZTVhMzY1ZDQ5YzM2YTZmMDBkZjg0MzU0ZTFhMGE2YmZi
MjI4Li44Yjk4MGQ1OWU4M2VhMmNmMzk1Yjc5NTEyZWM3NWJjN2VmMTRkNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5l
ZWRzQ29tbWl0KGJvb2wgYikgeyBtX25lZWRzQ29tbWl0ID0gYjsgfQogICAgIGJvb2wgbmVlZHND
b21taXQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ29tbWl0OyB9CiAKKyAgICB2b2lkIHNldE5l
ZWRzRm9yY2VkQ29tbWl0KGJvb2wgYikgeyBtX25lZWRzRm9yY2VkQ29tbWl0ID0gYjsgfQorICAg
IGJvb2wgbmVlZHNGb3JjZWRDb21taXQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRm9yY2VkQ29t
bWl0OyB9CisKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KGJvb2wgYikgeyBtX25lZWRzUmVkcmF3
ID0gYjsgfQogICAgIGJvb2wgbmVlZHNSZWRyYXcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVk
cmF3OyB9CiAKQEAgLTc3OCw0ICs3ODEsNDQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RGaW5pc2hBbGxSZW5kZXJpbmdXaGlsZUNvbnRleHRMb3N0KQogICAgIHN0YXRl
LmRpZExlYXZlVlN5bmMoKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RCZWdpbkZyYW1lV2hlbkludmlzaWJsZUFuZEZvcmNlQ29tbWl0KQoreworICAgIFN0YXRl
TWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkQ29tbWl0KHRydWUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZS
QU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVXaGVuQ29tbWl0SW5Qcm9ncmVzcykKK3sKKyAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7CisgICAgc3RhdGUu
c2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFN
RV9JTl9QUk9HUkVTUyk7CisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgc3Rh
dGUuc2V0TmVlZHNGb3JjZWRDb21taXQodHJ1ZSk7CisKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29t
cGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3Rh
dGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKK1RF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0
TG9zdCkKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVk
c0ZvcmNlZENvbW1pdCh0cnVlKTsKKyAgICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworfQorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131381</attachid>
            <date>2012-03-12 12:30:49 -0700</date>
            <delta_ts>2012-03-12 13:08:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-77049-20120312123048.patch</filename>
            <type>text/plain</type>
            <size>30211</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdlYTQ5NzUyYWFhMTc0
ZmQxMzEwODVhOWJkMzE4ZDM2NjkzYzliMS4uN2U5NzNiNDJjMmMyNjg0NzgxNDcyMjFkNGIyOWIw
OWNlZGExOWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAzLTA5ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZvcmNlIGNv
bXBvc2l0ZUFuZFJlYWRiYWNrIHRocm91Z2ggcmVndWxhciBzY2hlZHVsaW5nIGZsb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NGcmFtZVJhdGVDb250cm9sbGVyOjpvblRpbWVyVGljayk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmg6CisgICAg
ICAgIChDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjp2c3luY1RpY2spOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgIChDQ1NjaGVk
dWxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRDb21taXQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFtZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlOjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUp
OgorICAgICAgICAoQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKwogMjAxMi0wMy0wNyAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFtTdHlsZXNdIENsaWNrIGluIHRoZSBmaXJzdCBsaW5lIG9mIHJ1bGUgd2hpbGUgZWRp
dGluZyBwcm9wZXJ0eSBzdGFydHMgYSBuZXcgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggZTIyNmRlZTMzNTdiZDIwMmM0NzNiMDI0MjcwYzgyOGNhNmI3NjEwNy4uZTIzOWI0
YWY5NTY1OTJkNTA0YjgzNDE5NGE1ZTI4MmE0NDQxZGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wMy0wOSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBGb3JjZSBjb21wb3NpdGVBbmRSZWFkYmFj
ayB0aHJvdWdoIHJlZ3VsYXIgc2NoZWR1bGluZyBmbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzA0OQorCisgICAgICAgIFJldmlld2VkIGJ5IEph
bWVzIFJvYmluc29uLgorCisgICAgICAgICogdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDRnJhbWVSYXRlQ29udHJvbGxlckNs
aWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXJDbGllbnQ6OnZzeW5jVGlja2VkKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NG
cmFtZVJhdGVDb250cm9sbGVyQ2xpZW50Ojp2c3luY1RpY2spOgorICAgICAgICAoRmFrZUNDRnJh
bWVSYXRlQ29udHJvbGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEYpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZp
c2libGUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9zaXRlQW5kUmVh
ZGJhY2tXaGlsZUludmlzaWJsZTo6Q0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRi
YWNrV2hpbGVJbnZpc2libGUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29t
cG9zaXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdU
Rjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZpc2libGU6
OmRpZENvbW1pdEFuZERyYXdGcmFtZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RDb21wb3NpdGVBbmRSZWFkYmFja1doaWxlSW52aXNpYmxlOjphZnRlclRlc3QpOgorICAgICAg
ICAoV1RGOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnNldE5lZWRzRm9yY2Vk
Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6bmVlZHNGb3JjZWRDb21t
aXQpOgorICAgICAgICAoU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDMtMDkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQsIGJ1aWxk
IGZpeCBhZnRlciByMTEwMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVy
LmNwcAppbmRleCA1NTQ0N2NhNTlkNDU4NDU1Y2FkMmNiMWIzMjMxMWYzN2RiMWM2MzAzLi5kYjZk
OTVjYzAwY2MxNTU2OGUwY2U1NjdmNDQ5NzhhOTI3OTI0YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBDQ0ZyYW1l
UmF0ZUNvbnRyb2xsZXI6Om9uVGltZXJUaWNrKCkKICAgICB9CiAKICAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5iZWdpbkZyYW1lKCk7CisgICAgICAgIG1fY2xpZW50LT52c3lu
Y1RpY2soKTsKIH0KIAogdm9pZCBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6OmRpZEJlZ2luRnJhbWUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaAppbmRleCBhM2VlZmU4NDY4
ODM2MDVlNTJhZjFmNzliMDg1ZDk3ZGYyNmUzN2U5Li41NzM0ZDRhYTZlOWY3NDYxYTRjNjZjNmUw
YTE4NjBkYTMwZDQ5NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRnJhbWVS
YXRlQ29udHJvbGxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luRnJh
bWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZzeW5jVGljaygpID0gMDsKIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgfkNDRnJhbWVSYXRlQ29udHJvbGxlckNsaWVudCgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCmluZGV4IDYzM2YyMWQ0N2I5MzFjY2E4NDc4NTQyNmE3MWY0ZjhkM2I2
ZTQ2NWYuLjYxYmQ5MzEzZjU0YmNlMmIwYmRkZWE4NTQ2NDc5YTMwYTJlNTJhNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHAKQEAgLTU2LDYgKzU2LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNl
dE5lZWRzQ29tbWl0KCkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lk
IENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZENvbW1pdCgpCit7CisgICAgbV9zdGF0ZU1hY2hp
bmUuc2V0TmVlZHNGb3JjZWRDb21taXQoKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygp
OworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAgbV9zdGF0
ZU1hY2hpbmUuc2V0TmVlZHNSZWRyYXcoKTsKQEAgLTEwMSwxMyArMTA3LDEzIEBAIHZvaWQgQ0NT
Y2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4dCgpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlv
bnMoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCit2b2lkIENDU2NoZWR1
bGVyOjp2c3luY1RpY2soKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKICAgICAg
ICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGll
bnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgfQotICAgIFRSQUNFX0VWRU5UKCJD
Q1NjaGVkdWxlcjo6YmVnaW5GcmFtZSIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ1Nj
aGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7CiAKICAgICBtX3N0YXRlTWFjaGluZS5kaWRF
bnRlclZTeW5jKCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5oCmluZGV4IGY4YmEyMWY5OWYyNGM1YTljZTA3ZDE2YmEyMzUxNTY0MzlkMGVlNzYuLjhl
ZjVkY2Y3MmMyNzBhM2E2YzgxNDdlNDA3MjA1OTJlODcxZDY2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuaApAQCAtNjMsOSArNjMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlzaWJsZShib29s
KTsKIAogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKKworICAgIC8vIExpa2Ugc2V0TmVlZHND
b21taXQoKSwgYnV0IGVuc3VyZXMgYSBjb21taXQgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVu
IGlmIHdlIGFyZSBub3QgdmlzaWJsZS4KKyAgICB2b2lkIHNldE5lZWRzRm9yY2VkQ29tbWl0KCk7
CisKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKLSAgICAvLyBBcyBzZXROZWVkc1JlZHJh
dygpLCBidXQgZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYg
d2UgYXJlIG5vdCB2aXNpYmxlLgorICAgIC8vIExpa2Ugc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVu
c3VyZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3Qg
dmlzaWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiAKICAgICB2b2lkIGJl
Z2luRnJhbWVDb21wbGV0ZSgpOwpAQCAtODAsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBy
ZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGlu
ZygpOyB9CiAKICAgICAvLyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQgaW1wbGVtZW50YXRp
b24KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5GcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCB2c3lu
Y1RpY2soKTsKIAogcHJpdmF0ZToKICAgICBDQ1NjaGVkdWxlcihDQ1NjaGVkdWxlckNsaWVudCos
IFBhc3NPd25QdHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggMDU0YTRlZGQ3MThhYTA5ZWQ0NjkxNTg2
YjI1MTY2YjRhZDc0NTBmMC4uODVkOTQ5Y2NmMjhkZGYyMTVjYTczMGMzOWM4YWM3OWE4ODY5YjQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAt
MzUsNiArMzUsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUoKQogICAgICwgbV9uZWVkc1JlZHJhdyhmYWxzZSkKICAgICAsIG1fbmVlZHNGb3JjZWRS
ZWRyYXcoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQorICAgICwgbV9uZWVkc0Zv
cmNlZENvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFs
c2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQpA
QCAtNzUsMTMgKzc2LDE1IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgIGNhc2UgQ09NTUlUX1NU
QVRFX0lETEU6CiAgICAgICAgIGlmIChtX2NvbnRleHRTdGF0ZSAhPSBDT05URVhUX0FDVElWRSAm
JiBtX25lZWRzRm9yY2VkUmVkcmF3KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwor
ICAgICAgICBpZiAobV9jb250ZXh0U3RhdGUgIT0gQ09OVEVYVF9BQ1RJVkUgJiYgbV9uZWVkc0Zv
cmNlZENvbW1pdCkKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAgICAg
ICAgIGlmIChtX2NvbnRleHRTdGF0ZSA9PSBDT05URVhUX0xPU1QpCiAgICAgICAgICAgICByZXR1
cm4gQUNUSU9OX0JFR0lOX0NPTlRFWFRfUkVDUkVBVElPTjsKICAgICAgICAgaWYgKG1fY29udGV4
dFN0YXRlID09IENPTlRFWFRfUkVDUkVBVElORykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05f
Tk9ORTsKICAgICAgICAgaWYgKHNob3VsZERyYXcoKSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJ
T05fRFJBVzsKLSAgICAgICAgaWYgKG1fbmVlZHNDb21taXQgJiYgbV92aXNpYmxlKQorICAgICAg
ICBpZiAobV9uZWVkc0NvbW1pdCAmJiAobV92aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRDb21taXQp
KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJu
IEFDVElPTl9OT05FOwogCkBAIC0xMDUsNyArMTA4LDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIC8vIENPTU1JVF9TVEFURV9X
QUlUSU5HX0ZPUl9GSVJTVF9EUkFXIHdhbnRzIHRvIGVuZm9yY2UgYSBkcmF3LiBJZiBtX2NhbkRy
YXcgaXMgZmFsc2UsCiAgICAgICAgIC8vIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAoc2ltaWxh
ciBhcyBpbiBDT01NSVRfU1RBVEVfSURMRSkuCi0gICAgICAgIGlmICghbV9jYW5EcmF3ICYmIG1f
bmVlZHNDb21taXQgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAoIW1fY2FuRHJhdyAmJiBtX25l
ZWRzQ29tbWl0ICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCkpCiAgICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05P
TkU7CiAgICAgfQpAQCAtMTIwLDkgKzEyMywxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBj
YXNlIEFDVElPTl9CRUdJTl9GUkFNRToKLSAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7CisgICAg
ICAgIEFTU0VSVChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZENvbW1pdCk7CiAgICAgICAgIG1f
Y29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CiAgICAgICAgIG1f
bmVlZHNDb21taXQgPSBmYWxzZTsKKyAgICAgICAgbV9uZWVkc0ZvcmNlZENvbW1pdCA9IGZhbHNl
OwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVM6CkBAIC0xMzEsNyArMTM1LDcgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fz
ZSBBQ1RJT05fQ09NTUlUOgotICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCB8fCAhbV92aXNpYmxl
KQorICAgICAgICBpZiAoKG1fbmVlZHNDb21taXQgfHwgIW1fdmlzaWJsZSkgJiYgIW1fbmVlZHNG
b3JjZWRDb21taXQpCiAgICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1dB
SVRJTkdfRk9SX0ZJUlNUX0RSQVc7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY29tbWl0
U3RhdGUgPSBDT01NSVRfU1RBVEVfSURMRTsKQEAgLTIwMCw2ICsyMDQsMTEgQEAgdm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21taXQoKQogICAgIG1fbmVlZHNDb21taXQg
PSB0cnVlOwogfQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0ZvcmNl
ZENvbW1pdCgpCit7CisgICAgbV9uZWVkc0ZvcmNlZENvbW1pdCA9IHRydWU7Cit9CisKIHZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgQVNT
RVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDIyZmNkZjQyMjQ5
ZmRhMzFlZDcxMzEzYzI4OTE4MWM5NGVkOTI5YjguLjYxYmVjMzk0ZWNlODA5NTNjYWQ5ZDViYThi
ZjMwNjY5NWMwZTFmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIENPTlRFWFRfTE9TVCwKICAg
ICAgICAgQ09OVEVYVF9SRUNSRUFUSU5HLAogICAgIH07CisKICAgICBib29sIGNvbW1pdFBlbmRp
bmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fY29tbWl0U3RhdGUgIT0gQ09NTUlU
X1NUQVRFX0lETEU7CkBAIC05OSw2ICsxMDAsMTAgQEAgcHVibGljOgogICAgIC8vIHRocmVhZCB0
byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEFzIHNldE5lZWRz
Q29tbWl0KCksIGJ1dCBlbnN1cmVzIHRoZSBiZWdpbkZyYW1lIHdpbGwgZGVmaW5pdGVseSBoYXBw
ZW4gZXZlbiBpZgorICAgIC8vIHdlIGFyZSBub3QgdmlzaWJsZS4KKyAgICB2b2lkIHNldE5lZWRz
Rm9yY2VkQ29tbWl0KCk7CisKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byBy
ZWNlaXZpbmcgYW4gQUNUSU9OX0JFR0lOX0ZSQU1FCiAgICAgLy8gZnJvbSBuZXh0U3RhdGUuIElu
ZGljYXRlcyB0aGF0IGFsbCBwYWludGluZyBpcyBjb21wbGV0ZSBhbmQgdGhhdAogICAgIC8vIHVw
ZGF0aW5nIG9mIGNvbXBvc2l0b3IgcmVzb3VyY2VzIGNhbiBiZWdpbi4KQEAgLTEyNyw2ICsxMzIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX25lZWRzUmVkcmF3OwogICAgIGJvb2wgbV9uZWVk
c0ZvcmNlZFJlZHJhdzsKICAgICBib29sIG1fbmVlZHNDb21taXQ7CisgICAgYm9vbCBtX25lZWRz
Rm9yY2VkQ29tbWl0OwogICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsKICAg
ICBib29sIG1faW5zaWRlVlN5bmM7CiAgICAgYm9vbCBtX3Zpc2libGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCmluZGV4IDNkNjU5NmQwNGUxNjQ3NDY5ZGIxYThkMWQ3MGEyOTYyN2E5Yjcy
ZDEuLjllYWJmZjhjZTE2MzAyMTgzYmM2ZjFmZWRjNTBlOWNhM2RlNmQ2ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCkBAIC02NCw5ICs2NCw4IEBAIENDVGhyZWFkUHJveHk6OkNDVGhy
ZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgICwgbV9jb21wb3Np
dG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKGZhbHNl
KQogICAgICwgbV9zdGFydGVkKGZhbHNlKQotICAgICwgbV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1l
QW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIoLTEpCi0gICAgLCBtX251bUJlZ2luRnJhbWVBbmRDb21t
aXRzSXNzdWVkT25JbXBsVGhyZWFkKDApCiAgICAgLCBtX21haW5UaHJlYWRQcm94eShDQ1Njb3Bl
ZFRocmVhZFByb3h5OjpjcmVhdGUoQ0NQcm94eTo6bWFpblRocmVhZCgpKSkKKyAgICAsIG1fYmVn
aW5GcmFtZUNvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9yZWFkYmFja1Jl
cXVlc3RPbkltcGxUaHJlYWQoMCkKICAgICAsIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkKDApCiAgICAgLCBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCgwKQpAQCAtOTQsMjUgKzkzLDE0IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9z
aXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gSWYgYSBjb21taXQgaXMgcGVuZGluZywg
cGVyZm9ybSB0aGUgY29tbWl0IGZpcnN0LgotICAgIGlmIChtX2NvbW1pdFJlcXVlc3RlZCkgIHsK
LSAgICAgICAgLy8gVGhpcyBiaXQgb2YgY29kZSBpcyB1Z2xpZXIgdGhhbiBpdCBzaG91bGQgYmUg
YmVjYXVzZSByZXR1cm5pbmcKLSAgICAgICAgLy8gcG9pbnRlcnMgdmlhIHRoZSBDQ1RocmVhZCB0
YXNrIG1vZGVsIGlzIHJlYWxseSBtZXNzeS4gRWZmZWN0aXZlbHksIHdlCi0gICAgICAgIC8vIGFy
ZSBtYWtpbmcgYSBibG9ja2luZyBjYWxsIHRvIGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNr
T25JbXBsVGhyZWFkLAotICAgICAgICAvLyBhbmQgdHJ5aW5nIHRvIGdldCB0aGUgQ0NNYWluVGhy
ZWFkOjpUYXNrIGl0IHJldHVybnMgc28gd2UgY2FuIHJ1biBpdC4KLSAgICAgICAgT3duUHRyPEND
VGhyZWFkOjpUYXNrPiBiZWdpbkZyYW1lQW5kQ29tbWl0VGFzazsKLSAgICAgICAgewotICAgICAg
ICAgICAgQ0NUaHJlYWQ6OlRhc2sqIHRhc2tQdHIgPSAwOwotICAgICAgICAgICAgQ0NDb21wbGV0
aW9uRXZlbnQgY29tcGxldGlvbjsKLSAgICAgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpvYnRhaW5C
ZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cygmY29tcGxldGlvbiksIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJnRhc2tQdHIpKSk7Ci0gICAg
ICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKLSAgICAgICAgICAgIGJlZ2luRnJhbWVBbmRDb21t
aXRUYXNrID0gYWRvcHRQdHIodGFza1B0cik7Ci0gICAgICAgIH0KLQotICAgICAgICBiZWdpbkZy
YW1lQW5kQ29tbWl0VGFzay0+cGVyZm9ybVRhc2soKTsKLSAgICB9CiAKLSAgICAvLyBEcmF3IHVz
aW5nIHRoZSBuZXcgdHJlZSBhbmQgcmVhZCBiYWNrIHRoZSByZXN1bHRzLgorICAgIC8vIFBlcmZv
cm0gYSBzeW5jaHJvbm91cyBjb21taXQuCisgICAgQ0NDb21wbGV0aW9uRXZlbnQgYmVnaW5GcmFt
ZUNvbXBsZXRpb247CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFtZU9uSW1wbFRo
cmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmYmVnaW5GcmFtZUNvbXBsZXRpb24pKSk7Cisg
ICAgYmVnaW5GcmFtZUNvbXBsZXRpb24ud2FpdCgpOworICAgIGJlZ2luRnJhbWUoKTsKKworICAg
IC8vIFBlcmZvcm0gYSBzeW5jaHJvbm91cyByZWFkYmFjay4KICAgICBSZWFkYmFja1JlcXVlc3Qg
cmVxdWVzdDsKICAgICByZXF1ZXN0LnJlY3QgPSByZWN0OwogICAgIHJlcXVlc3QucGl4ZWxzID0g
cGl4ZWxzOwpAQCAtMTMxLDYgKzExOSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJl
YWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCA9IHJlcXVlc3Q7
CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgbV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiB9CiAKQEAgLTM4
NSw1NCArMzc0LDUwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAgICAgbV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpCit2b2lkIENDVGhyZWFkUHJveHk6OmZv
cmNlQmVnaW5GcmFtZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikK
IHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSIsIHRoaXMsIDApOwotICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVC
ZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVDAo
ImNjIiwgIkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFtZU9uSW1wbFRocmVhZCIpOworICAg
IEFTU0VSVCghbV9iZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKworICAg
IGlmIChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKSB7CisgICAgICAg
IGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9i
ZWdpbkZyYW1lQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKKyAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRDb21taXQoKTsKIH0KIAotdm9pZCBDQ1RocmVh
ZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbiwgQ0NUaHJlYWQ6OlRhc2sqKiB0YXNrUHRyKQordm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkKIHsKLSAgICBPd25QdHI8
Q0NUaHJlYWQ6OlRhc2s+IHRhc2sgPSBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1w
bFRocmVhZCgpOwotICAgICp0YXNrUHRyID0gdGFzay5sZWFrUHRyKCk7Ci0gICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdCZWdpbkZyYW1l
UmVxdWVzdCk7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcg
QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkpOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1
ZXN0LT5mcmFtZUJlZ2luVGltZSA9IDA7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3Qt
PnNjcm9sbEluZm8gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7
CisKKyAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRo
aXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKSk7CisKKyAgICBpZiAobV9iZWdpbkZyYW1l
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKSB7CisgICAgICAgIG1fYmVnaW5GcmFtZUNvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZC0+c2lnbmFsKCk7CisgICAgICAgIG1fYmVnaW5GcmFtZUNv
bXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IDA7CisgICAgfQogfQogCi1QYXNzT3duUHRyPEND
VGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFz
a09uSW1wbFRocmVhZCgpCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUoKQogewotICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFz
a09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0g
ICAgZG91YmxlIGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKLQotICAgIC8vIE5PVEUs
IGl0IGlzIHBvc3NpYmxlIHRvIHJlY2VpZXZlIGEgcmVxdWVzdCBmb3IgYQotICAgIC8vIGJlZ2lu
RnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQgZnJvbSBmaW5pc2hBbGxSZW5kZXJpbmcgd2hpbGUg
YQotICAgIC8vIGJlZ2luRnJhbWVBbmRDb21taXRPbkltcGxUaHJlYWQgaXMgZW5xdWV1ZWQuIFNp
bmNlIENDVGhyZWFkIGRvZXNuJ3QKLSAgICAvLyBwcm92aWRlIGEgdGhyZWFkc2FmZSB3YXkgdG8g
Y2FuY2VsIHRhc2tzLCBpdCBpcyBpbXBvcnRhbnQgdGhhdAotICAgIC8vIGJlZ2luRnJhbWVBbmRD
b21taXQgYmUgc3RydWN0dXJlZCB0byB1bmRlcnN0YW5kIHRoYXQgaXQgbWF5IGdldCBjYWxsZWQg
YXQKLSAgICAvLyBhIHBvaW50IHRoYXQgaXQgc2hvdWxkbid0LiBXZSBkbyB0aGlzIGJ5IGFzc2ln
bmluZyBhIHNlcXVlbmNlIG51bWJlciB0bwotICAgIC8vIGV2ZXJ5IG5ldyBiZWdpbkZyYW1lQW5k
Q29tbWl0IHRhc2suIFRoZW4sIGJlZ2luRnJhbWVBbmRDb21taXQgdHJhY2tzIHRoZQotICAgIC8v
IGxhc3QgZXhlY3V0ZWQgc2VxdWVuY2UgbnVtYmVyLCBkcm9wcGluZyBiZWdpbkZyYW1lQW5kQ29t
bWl0IHdpdGggc2VxdWVuY2UKLSAgICAvLyBudW1iZXJzIGJlbG93IHRoZSBsYXN0IGV4ZWN1dGVk
IG9uZS4KLSAgICBpbnQgdGhpc1Rhc2tTZXF1ZW5jZU51bWJlciA9IG1fbnVtQmVnaW5GcmFtZUFu
ZENvbW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQ7Ci0gICAgbV9udW1CZWdpbkZyYW1lQW5kQ29tbWl0
c0lzc3VlZE9uSW1wbFRocmVhZCsrOwotICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBz
Y3JvbGxJbmZvID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwot
ICAgIHJldHVybiBjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVBbmRDb21taXQsIHRoaXNUYXNrU2VxdWVuY2VOdW1iZXIsIGZyYW1lQmVnaW5UaW1lLCBz
Y3JvbGxJbmZvLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFz
c093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvKQotewotICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CisgICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lIik7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgLy8gRHJvcCBiZWdpbkZyYW1lQW5kQ29tbWl0IGNhbGxzIHRoYXQgb2Nj
dXIgb3V0IG9mIHNlcXVlbmNlLiBTZWUgY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbklt
cGxUaHJlYWQgZm9yCi0gICAgLy8gYW4gZXhwbGFuYXRpb24gb2YgaG93IG91dC1vZi1zZXF1ZW5j
ZSBiZWdpbkZyYW1lQW5kQ29tbWl0IHRhc2tzIGNhbiBvY2N1ci4KLSAgICBpZiAoc2VxdWVuY2VO
dW1iZXIgPCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcikg
ewotICAgICAgICBUUkFDRV9FVkVOVCgiRWFybHlPdXRfU3RhbGVCZWdpbkZyYW1lQW5kQ29tbWl0
IiwgdGhpcywgMCk7CisgICAgaWYgKCFtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdCkgeworICAg
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkVhcmx5T3V0X1N0YWxlQmVnaW5GcmFtZU1lc3NhZ2Ui
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVB
bmRDb21taXRTZXF1ZW5jZU51bWJlciA9IHNlcXVlbmNlTnVtYmVyOworCisgICAgT3duUHRyPEJl
Z2luRnJhbWVBbmRDb21taXRTdGF0ZT4gcmVxdWVzdChtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVz
dC5yZWxlYXNlKCkpOwogCiAgICAgLy8gRG8gbm90IG5vdGlmeSB0aGUgaW1wbCB0aHJlYWQgb2Yg
Y29tbWl0IHJlcXVlc3RzIHRoYXQgb2NjdXIgZHVyaW5nCiAgICAgLy8gdGhlIGFwcGx5L2FuaW1h
dGUvbGF5b3V0IHBhcnQgb2YgdGhlIGJlZ2luRnJhbWVBbmRDb21taXQgcHJvY2VzcyBzaW5jZQpA
QCAtNDQ4LDE0ICs0MzMsMTIgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29t
bWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KIAogICAgIC8vIEZJ
WE1FOiB0ZWNobmljYWxseSwgc2Nyb2xsIGRlbHRhcyBuZWVkIHRvIGJlIGFwcGxpZWQgZm9yIGRy
b3BwZWQgY29tbWl0cyBhcyB3ZWxsLgogICAgIC8vIFJlLWRvIHRoZSBjb21taXQgZmxvdyBzbyB0
aGF0IHdlIGRvbid0IHNlbmQgdGhlIHNjcm9sbEluZm8gb24gdGhlIEJGQUMgbWVzc2FnZS4KLSAg
ICBtX2xheWVyVHJlZUhvc3QtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoKnNjcm9sbEluZm8pOworICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YXBwbHlTY3JvbGxBbmRTY2FsZSgqcmVxdWVzdC0+c2Nyb2xsSW5m
byk7CiAKICAgICAvLyBGSVhNRTogcmVjcmVhdGUgdGhlIGNvbnRleHQgaWYgaXQgd2FzIHJlcXVl
c3RlZCBieSB0aGUgaW1wbCB0aHJlYWQuCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVBbmlt
YXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUFuaW1h
dGlvbnMocmVxdWVzdC0+ZnJhbWVCZWdpblRpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+bGF5
b3V0KCk7CiAKLSAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2Vx
dWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwotCiAgICAgLy8gQ2xlYXIgdGhlIGNvbW1p
dCBmbGFnIGFmdGVyIHVwZGF0aW5nIGFuaW1hdGlvbnMgYW5kIGxheW91dCBoZXJlIC0tLSBvYmpl
Y3RzIHRoYXQgb25seQogICAgIC8vIGxheW91dCB3aGVuIHBhaW50ZWQgd2lsbCB0cmlnZ2VyIGFu
b3RoZXIgc2V0TmVlZHNDb21taXQgaW5zaWRlCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgpAQCAtNDgy
LDggKzQ2NSw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgfQogCiAgICAgbV9sYXll
clRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwotCi0gICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVk
QmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0K
IAogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXgg
NGVhZjg0MGY2YjU3ZDU1YzA3M2JmYTU2OGY0MGFmMDZiOGIwODYyZS4uNmQ2NzIxMTI3YzJkZWE2
YTIzMWRiODIyMThkYTcwMTlkMTdkZTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAt
OTAsOCArOTAsMTYgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5
ZXJUcmVlSG9zdCopOwogICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3Jl
YXRpb25UaW1lcjsKIAorICAgIC8vIFNldCBvbiBpbXBsIHRocmVhZCwgcmVhZCBvbiBtYWluIHRo
cmVhZC4KKyAgICBzdHJ1Y3QgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlIHsKKyAgICAgICAgQmVn
aW5GcmFtZUFuZENvbW1pdFN0YXRlKCkgOiBmcmFtZUJlZ2luVGltZSgwKSB7IH0KKyAgICAgICAg
ZG91YmxlIGZyYW1lQmVnaW5UaW1lOworICAgICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNl
dD4gc2Nyb2xsSW5mbzsKKyAgICB9OworICAgIE93blB0cjxCZWdpbkZyYW1lQW5kQ29tbWl0U3Rh
dGU+IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4g
dGhyZWFkCi0gICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwg
ZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsK
KyAgICB2b2lkIGJlZ2luRnJhbWUoKTsKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgp
OwogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogICAgIHZvaWQgc2V0QW5pbWF0
aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+KTsKQEAgLTEwNSw4
ICsxMTMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkKiBwaXhlbHM7CiAgICAgICAgIEludFJl
Y3QgcmVjdDsKICAgICB9OwotICAgIFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJl
Z2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7Ci0gICAgdm9pZCBvYnRhaW5CZWdp
bkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhy
ZWFkOjpUYXNrKiopOworICAgIHZvaWQgZm9yY2VCZWdpbkZyYW1lT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVh
ZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwg
ZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CkBAIC0xMjksMTEgKzEzNiw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZDsKICAgICBMYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzIG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc01haW5UaHJlYWRD
b3B5OwogICAgIGJvb2wgbV9zdGFydGVkOwotICAgIGludCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJh
bWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcjsKIAogICAgIC8vIFVzZWQgb24gdGhlIENDVGhyZWFk
IG9ubHkuCiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG1fbGF5ZXJUcmVlSG9zdElt
cGw7Ci0gICAgaW50IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkltcGxUaHJlYWQ7
CiAKICAgICBPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFk
OwogCkBAIC0xNDUsNiArMTUwLDkgQEAgcHJpdmF0ZToKICAgICAvLyBhbmQgaW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoKSBjYWxscy4KICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29u
dGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBsVGhyZWFkOwogCisgICAgLy8gU2V0IHdoZW4g
dGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1l
IHRvIGJlIGlzc3VlZC4KKyAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9iZWdpbkZyYW1lQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkOworCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFk
IGlzIHdhaWluZyBvbiBhIHJlYWRiYWNrLgogICAgIFJlYWRiYWNrUmVxdWVzdCogbV9yZWFkYmFj
a1JlcXVlc3RPbkltcGxUaHJlYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDRnJhbWVSYXRlQ29udHJvbGxlclRlc3QuY3BwCmluZGV4IGFlNDNkNDFj
MWNlMDNhYjcxZWM3MGIwYzc1N2IxZWEzNzZkMGEwZTcuLmYzMTU5MDM5MDFhYmU4NjJiODRjMTA5
M2VhZDFkZmE2ZTE0MmY4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUZXN0LmNwcApAQCAtMzksMTMgKzM5LDEz
IEBAIGNsYXNzIEZha2VDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Q0NGcmFtZVJhdGVDb250cm9sbGVyQ2xpCiBwdWJsaWM6CiAgICAgRmFrZUNDRnJhbWVSYXRl
Q29udHJvbGxlckNsaWVudCgpIHsgcmVzZXQoKTsgfQogCi0gICAgdm9pZCByZXNldCgpIHsgbV9m
cmFtZUJlZ3VuID0gZmFsc2U7IH0KLSAgICBib29sIGZyYW1lQmVndW4oKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lQmVndW47IH0KKyAgICB2b2lkIHJlc2V0KCkgeyBtX3ZzeW5jVGlja2VkID0gZmFs
c2U7IH0KKyAgICBib29sIHZzeW5jVGlja2VkKCkgY29uc3QgeyByZXR1cm4gbV92c3luY1RpY2tl
ZDsgfQogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luRnJhbWUoKSB7IG1fZnJhbWVCZWd1biA9IHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdnN5bmNUaWNrKCkgeyBtX3ZzeW5jVGlja2VkID0gdHJ1
ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBtX2ZyYW1lQmVndW47CisgICAgYm9vbCBtX3Zz
eW5jVGlja2VkOwogfTsKIAogCkBAIC02NSw3ICs2NSw3IEBAIFRFU1QoQ0NGcmFtZVJhdGVDb250
cm9sbGVyVGVzdCwgVGVzdEZyYW1lVGhyb3R0bGluZ19JbW1lZGlhdGVBY2spCiAgICAgZWxhcHNl
ZCArPSB0aHJlYWQucGVuZGluZ0RlbGF5KCk7CiAgICAgdGltZVNvdXJjZS0+c2V0TW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lTXMoZWxhcHNlZCk7CiAgICAgdGhyZWFkLnJ1blBlbmRpbmdUYXNr
KCk7Ci0gICAgRVhQRUNUX1RSVUUoY2xpZW50LmZyYW1lQmVndW4oKSk7CisgICAgRVhQRUNUX1RS
VUUoY2xpZW50LnZzeW5jVGlja2VkKCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8g
VGVsbCB0aGUgY29udHJvbGxlciB3ZSBkcmV3CkBAIC04MCw3ICs4MCw3IEBAIFRFU1QoQ0NGcmFt
ZVJhdGVDb250cm9sbGVyVGVzdCwgVGVzdEZyYW1lVGhyb3R0bGluZ19JbW1lZGlhdGVBY2spCiAg
ICAgRVhQRUNUX1RSVUUoZWxhcHNlZCA+PSB0aW1lU291cmNlLT5tb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWVNcygpKTsgLy8gU2FuaXR5IGNoZWNrIHRoYXQgcHJldmlvdXMgY29kZSBkaWRuJ3Qg
bW92ZSB0aW1lIGJhY2t3YXJkLgogICAgIHRpbWVTb3VyY2UtPnNldE1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZU1zKGVsYXBzZWQpOwogICAgIHRocmVhZC5ydW5QZW5kaW5nVGFzaygpOwotICAg
IEVYUEVDVF9UUlVFKGNsaWVudC5mcmFtZUJlZ3VuKCkpOworICAgIEVYUEVDVF9UUlVFKGNsaWVu
dC52c3luY1RpY2tlZCgpKTsKIH0KIAogVEVTVChDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUZXN0LCBU
ZXN0RnJhbWVUaHJvdHRsaW5nX1R3b0ZyYW1lc0luRmxpZ2h0KQpAQCAtMTAwLDcgKzEwMCw3IEBA
IFRFU1QoQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdCwgVGVzdEZyYW1lVGhyb3R0bGluZ19Ud29G
cmFtZXNJbkZsaWdodCkKICAgICBlbGFwc2VkICs9IHRocmVhZC5wZW5kaW5nRGVsYXkoKTsKICAg
ICB0aW1lU291cmNlLT5zZXRNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcyhlbGFwc2VkKTsK
ICAgICB0aHJlYWQucnVuUGVuZGluZ1Rhc2soKTsKLSAgICBFWFBFQ1RfVFJVRShjbGllbnQuZnJh
bWVCZWd1bigpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQudnN5bmNUaWNrZWQoKSk7CiAgICAg
Y2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBUZWxsIHRoZSBjb250cm9sbGVyIHdlIGRyZXcKQEAg
LTExMSw3ICsxMTEsNyBAQCBURVNUKENDRnJhbWVSYXRlQ29udHJvbGxlclRlc3QsIFRlc3RGcmFt
ZVRocm90dGxpbmdfVHdvRnJhbWVzSW5GbGlnaHQpCiAgICAgRVhQRUNUX1RSVUUoZWxhcHNlZCA+
PSB0aW1lU291cmNlLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcygpKTsgLy8gU2FuaXR5
IGNoZWNrIHRoYXQgcHJldmlvdXMgY29kZSBkaWRuJ3QgbW92ZSB0aW1lIGJhY2t3YXJkLgogICAg
IHRpbWVTb3VyY2UtPnNldE1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zKGVsYXBzZWQpOwog
ICAgIHRocmVhZC5ydW5QZW5kaW5nVGFzaygpOwotICAgIEVYUEVDVF9UUlVFKGNsaWVudC5mcmFt
ZUJlZ3VuKCkpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC52c3luY1RpY2tlZCgpKTsKICAgICBj
bGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRlbGwgdGhlIGNvbnRyb2xsZXIgd2UgZHJldywgYWdh
aW4uCkBAIC0xMjIsMjEgKzEyMiwyMSBAQCBURVNUKENDRnJhbWVSYXRlQ29udHJvbGxlclRlc3Qs
IFRlc3RGcmFtZVRocm90dGxpbmdfVHdvRnJhbWVzSW5GbGlnaHQpCiAgICAgRVhQRUNUX1RSVUUo
ZWxhcHNlZCA+PSB0aW1lU291cmNlLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNcygpKTsg
Ly8gU2FuaXR5IGNoZWNrIHRoYXQgcHJldmlvdXMgY29kZSBkaWRuJ3QgbW92ZSB0aW1lIGJhY2t3
YXJkLgogICAgIHRpbWVTb3VyY2UtPnNldE1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1zKGVs
YXBzZWQpOwogICAgIHRocmVhZC5ydW5QZW5kaW5nVGFzaygpOwotICAgIEVYUEVDVF9GQUxTRShj
bGllbnQuZnJhbWVCZWd1bigpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LnZzeW5jVGlja2Vk
KCkpOwogCiAgICAgLy8gVGVsbCB0aGUgY29udHJvbGxlciB0aGUgZmlyc3QgZnJhbWUgZW5kZWQg
NW1zIGxhdGVyCiAgICAgdGltZVNvdXJjZS0+c2V0TW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
TXModGltZVNvdXJjZS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTXMoKSArIDUpOwogICAg
IGNvbnRyb2xsZXIuZGlkRmluaXNoRnJhbWUoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkCi0gICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5mcmFtZUJlZ3VuKCkpOwor
ICAgIEVYUEVDVF9GQUxTRShjbGllbnQudnN5bmNUaWNrZWQoKSk7CiAKICAgICAvLyBUcmlnZ2Vy
IHlldCBhbm90aGVyIGZyYW1lLiBTaW5jZSBvbmUgZnJhbWVzIGlzIHBlbmRpbmcsIGFub3RoZXIg
dnN5bmMgY2FsbGJhY2sgc2hvdWxkIHJ1bi4KICAgICBlbGFwc2VkICs9IHRocmVhZC5wZW5kaW5n
RGVsYXkoKTsKICAgICBFWFBFQ1RfVFJVRShlbGFwc2VkID49IHRpbWVTb3VyY2UtPm1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZU1zKCkpOyAvLyBTYW5pdHkgY2hlY2sgdGhhdCBwcmV2aW91cyBj
b2RlIGRpZG4ndCBtb3ZlIHRpbWUgYmFja3dhcmQuCiAgICAgdGltZVNvdXJjZS0+c2V0TW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lTXMoZWxhcHNlZCk7CiAgICAgdGhyZWFkLnJ1blBlbmRpbmdU
YXNrKCk7Ci0gICAgRVhQRUNUX1RSVUUoY2xpZW50LmZyYW1lQmVndW4oKSk7CisgICAgRVhQRUNU
X1RSVUUoY2xpZW50LnZzeW5jVGlja2VkKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBmYTc1ZGVj
MGM3NWMxMGFjYmJiMTg2ZDQ4MmUxZWI4Y2MyOThiNWI1Li43ODRhZWM0ODhlODVjNzk4YjM1NDUy
NmY3ODdiZWYwYjk3MzljMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTgwNiw2ICs4MDYsNDYgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdywgcnVuTXVsdGlUaHJlYWQpCiAgICAg
cnVuVGVzdFRocmVhZGVkKCk7CiB9CiAKKy8vIEEgY29tcG9zaXRlQW5kUmVhZGJhY2sgd2hpbGUg
aW52aXNpYmxlIHNob3VsZCBmb3JjZSBhIG5vcm1hbCBjb21taXQgd2l0aG91dCBhc3NlcnRpb24u
CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tcG9zaXRlQW5kUmVhZGJhY2tXaGlsZUludmlz
aWJsZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdENvbXBvc2l0ZUFuZFJlYWRiYWNrV2hpbGVJbnZpc2libGUo
KQorICAgICAgICA6IG1fbnVtQ29tbWl0cygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENv
bW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBtX251bUNvbW1pdHMrKzsKKyAgICAg
ICAgaWYgKG1fbnVtQ29tbWl0cyA9PSAxKSB7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgp
OworICAgICAgICAgICAgT3duQXJyYXlQdHI8Y2hhcj4gcGl4ZWxzKGFkb3B0QXJyYXlQdHIobmV3
IGNoYXJbNF0pKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tcG9zaXRlQW5kUmVh
ZGJhY2soc3RhdGljX2Nhc3Q8dm9pZCo+KHBpeGVscy5nZXQoKSksIEludFJlY3QoMCwgMCwgMSwg
MSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Q29t
cG9zaXRlQW5kUmVhZGJhY2tXaGlsZUludmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAg
cnVuVGVzdFRocmVhZGVkKCk7Cit9CisKKwogLy8gVHJpZ2dlciBhIGZyYW1lIHdpdGggc2V0TmVl
ZHNDb21taXQuIFRoZW4sIGluc2lkZSB0aGUgcmVzdWx0aW5nIGFuaW1hdGUKIC8vIGNhbGxiYWNr
LCByZXF1ZXQgYW5vdGhlciBmcmFtZSB1c2luZyBzZXROZWVkc0FuaW1hdGUuIEVuZCB0aGUgdGVz
dCB3aGVuCiAvLyBhbmltYXRlIGdldHMgY2FsbGVkIHlldC1hZ2FpbiwgaW5kaWNhdGluZyB0aGF0
IHRoZSBwcm94eSBpcyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCAwODUz
ZTVhMzY1ZDQ5YzM2YTZmMDBkZjg0MzU0ZTFhMGE2YmZiMjI4Li44Yjk4MGQ1OWU4M2VhMmNmMzk1
Yjc5NTEyZWM3NWJjN2VmMTRkNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC01Miw2
ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KGJvb2wgYikgeyBtX25l
ZWRzQ29tbWl0ID0gYjsgfQogICAgIGJvb2wgbmVlZHNDb21taXQoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzQ29tbWl0OyB9CiAKKyAgICB2b2lkIHNldE5lZWRzRm9yY2VkQ29tbWl0KGJvb2wgYikg
eyBtX25lZWRzRm9yY2VkQ29tbWl0ID0gYjsgfQorICAgIGJvb2wgbmVlZHNGb3JjZWRDb21taXQo
KSBjb25zdCB7IHJldHVybiBtX25lZWRzRm9yY2VkQ29tbWl0OyB9CisKICAgICB2b2lkIHNldE5l
ZWRzUmVkcmF3KGJvb2wgYikgeyBtX25lZWRzUmVkcmF3ID0gYjsgfQogICAgIGJvb2wgbmVlZHNS
ZWRyYXcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVkcmF3OyB9CiAKQEAgLTc3OCw0ICs3ODEs
NDQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGaW5pc2hBbGxSZW5k
ZXJpbmdXaGlsZUNvbnRleHRMb3N0KQogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIH0KIAor
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RCZWdpbkZyYW1lV2hlbkludmlz
aWJsZUFuZEZvcmNlQ29tbWl0KQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0
ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAg
IHN0YXRlLnNldE5lZWRzRm9yY2VkQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVX
aGVuQ29tbWl0SW5Qcm9ncmVzcykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3Rh
dGUuc2V0VmlzaWJsZShmYWxzZSk7CisgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUyk7CisgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRDb21taXQo
dHJ1ZSk7CisKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBk
YXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0TG9zdCkKK3sKKyAgICBTdGF0ZU1hY2hp
bmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVk
c0NvbW1pdCh0cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZENvbW1pdCh0cnVlKTsKKyAg
ICBzdGF0ZS5kaWRMb3NlQ29udGV4dCgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>