<?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>92993</bug_id>
          
          <creation_ts>2012-08-02 08:11:54 -0700</creation_ts>
          <short_desc>[V8] Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer constructed and destructed</short_desc>
          <delta_ts>2012-11-20 12:00:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>
          <dependson>42912</dependson>
    
    <dependson>64627</dependson>
          <blocked>94463</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ulan Degenbaev">ulan</reporter>
          <assigned_to name="Ulan Degenbaev">ulan</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>685407</commentid>
    <comment_count>0</comment_count>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-02 08:11:54 -0700</bug_when>
    <thetext>[V8] Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer constructed and destructed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685409</commentid>
    <comment_count>1</comment_count>
      <attachid>156089</attachid>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-02 08:16:20 -0700</bug_when>
    <thetext>Created attachment 156089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685425</commentid>
    <comment_count>2</comment_count>
      <attachid>156089</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 08:29:58 -0700</bug_when>
    <thetext>Comment on attachment 156089
Patch

LGTM. kbr@ will review the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685577</commentid>
    <comment_count>3</comment_count>
      <attachid>156089</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-02 10:50:36 -0700</bug_when>
    <thetext>Comment on attachment 156089
Patch

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

How well tested is this patch? Did you test the performance impact of this change on various WebGL samples and games (like Mandreel&apos;s: http://www.mandreel.com/?page_id=1312 )? Does it cause full GCs to be triggered more often? We don&apos;t want to penalize applications that allocate a lot of storage using typed arrays but which rely on scavenges to get their performance.

Did you test what happens if you allocate e.g. a new Float32Array(...)? Does this instrumentation catch the new ArrayBuffer that&apos;s created behind the scenes but which isn&apos;t exposed to JavaScript?

&gt; Source/WebCore/bindings/v8/custom/V8ArrayBufferCustom.cpp:74
&gt; +    v8::V8::AdjustAmountOfExternalAllocatedMemory(buffer-&gt;byteLength());

Add a comment indicating this is balanced in the autogenerated code for V8ArrayBuffer::derefObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685606</commentid>
    <comment_count>4</comment_count>
      <attachid>156089</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-02 11:22:02 -0700</bug_when>
    <thetext>Comment on attachment 156089
Patch

After offline discussion with Ulan, this patch definitely isn&apos;t handling the following cases correctly: (1) allocation of a new view (like Float32Array) which causes allocation of a new ArrayBuffer; and (2) transfer of ownership of an ArrayBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688133</commentid>
    <comment_count>5</comment_count>
      <attachid>156693</attachid>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-06 07:52:04 -0700</bug_when>
    <thetext>Created attachment 156693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688143</commentid>
    <comment_count>6</comment_count>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-06 08:06:04 -0700</bug_when>
    <thetext>I uploaded new patch that handles allocation of new view and transfer of ownership. It does so by adding a callback member to the ArrayBufferContents. This callback is invoked when the buffer is destructed and it calls V8::AdjustAmountOfExternalAllocatedMemory .

The patch is not ready to be landed, I uploaded it to check whether this approach is reasonable or not and to get some feedback.

In particular, I would appreciate suggestions about:
- ownership of the callback member (at the moment I assume that it is a static singleton and don&apos;t use any smart pointers).
- wtf/ArrayBuffer.h now looks ugly with all those ifdefs, is there a way to avoid it?

The patch depends on http://code.google.com/p/v8/source/detail?r=12262 

I tested performance with a few html5 benchmarks and didn&apos;t notice performance degradation so far. I am going to test more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689102</commentid>
    <comment_count>7</comment_count>
      <attachid>156930</attachid>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-07 06:49:48 -0700</bug_when>
    <thetext>Created attachment 156930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689109</commentid>
    <comment_count>8</comment_count>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-07 06:56:35 -0700</bug_when>
    <thetext>I uploaded new patch that fixes array buffer transfer. Now it decrements the external memory counter of the current isolate. I am looking for place where I could increment the external memory counter for the receiving isolate.

On the V8 side, I am adding debug tracing of the external memory counter and exposing it to privileged JS code so that I can write better tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690062</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-08 02:01:14 -0700</bug_when>
    <thetext>Sorry for the delay, but I probably won&apos;t be able to review this patch until Friday 8/10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690190</commentid>
    <comment_count>10</comment_count>
      <attachid>157193</attachid>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-08 05:30:01 -0700</bug_when>
    <thetext>Created attachment 157193
Add more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690194</commentid>
    <comment_count>11</comment_count>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-08 05:33:30 -0700</bug_when>
    <thetext>No problem, Ken. The new patch that I uploaded depends on http://code.google.com/p/v8/source/detail?r=12272 which probably won&apos;t be rolled in Chromium until Thursday/Friday anyway.

I added tests that check various ways to construct typed arrays and also check transfer of a buffer to a worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693042</commentid>
    <comment_count>12</comment_count>
      <attachid>157193</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-10 20:10:11 -0700</bug_when>
    <thetext>Comment on attachment 157193
Add more tests

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

This looks much better than the last patch. The tests look good and thorough. I&apos;m only r-&apos;ing this because of the license issue on the new header. A couple of other questions.

&gt; Source/WTF/wtf/ArrayBuffer.h:40
&gt; +class ArrayBufferDeallocationObserver {

You might want to add a comment that in the current implementation, the instance of this must be a singleton living for the entire process&apos;s lifetime (implicit because you&apos;re using a raw pointer to it in ArrayBuffer -- I&apos;m not suggesting to change that because of performance considerations).

&gt; Source/WTF/wtf/ArrayBuffer.h:88
&gt; +        // Notify the current V8 isolate that the buffer is gone.

Are you sure this is the behavior you want to implement? Conceptually, the other isolate should increase the amount of externally allocated memory, and the deallocation observer should be copied to the newly allocated ArrayBuffer. I realize this would involve more code, but do you at least want to add a FIXME here?

&gt; Source/WebCore/bindings/v8/custom/V8ArrayBufferCustom.h:2
&gt; + * Copyright (C) 2012 Google Inc. All rights reserved.

Wrong license. Use the two-clause license in Source/WebKit/LICENSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699390</commentid>
    <comment_count>13</comment_count>
      <attachid>159389</attachid>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-20 04:09:03 -0700</bug_when>
    <thetext>Created attachment 159389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699391</commentid>
    <comment_count>14</comment_count>
      <attachid>157193</attachid>
    <who name="Ulan Degenbaev">ulan</who>
    <bug_when>2012-08-20 04:11:56 -0700</bug_when>
    <thetext>Comment on attachment 157193
Add more tests

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

Thank you! I uploaded a new rebased patch.

&gt;&gt; Source/WTF/wtf/ArrayBuffer.h:40
&gt;&gt; +class ArrayBufferDeallocationObserver {
&gt; 
&gt; You might want to add a comment that in the current implementation, the instance of this must be a singleton living for the entire process&apos;s lifetime (implicit because you&apos;re using a raw pointer to it in ArrayBuffer -- I&apos;m not suggesting to change that because of performance considerations).

Done.

&gt;&gt; Source/WTF/wtf/ArrayBuffer.h:88
&gt;&gt; +        // Notify the current V8 isolate that the buffer is gone.
&gt; 
&gt; Are you sure this is the behavior you want to implement? Conceptually, the other isolate should increase the amount of externally allocated memory, and the deallocation observer should be copied to the newly allocated ArrayBuffer. I realize this would involve more code, but do you at least want to add a FIXME here?

I opened a new issue (bug 94463) to track this. I think it should be possible to increase the amount of externally allocated memory and set the deallocation observer on the receiving isolate during deserialization when we create a V8 wrapper for the typed array.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8ArrayBufferCustom.h:2
&gt;&gt; + * Copyright (C) 2012 Google Inc. All rights reserved.
&gt; 
&gt; Wrong license. Use the two-clause license in Source/WebKit/LICENSE.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699853</commentid>
    <comment_count>15</comment_count>
      <attachid>159389</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-20 13:22:29 -0700</bug_when>
    <thetext>Comment on attachment 159389
Patch

Thanks, looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701192</commentid>
    <comment_count>16</comment_count>
      <attachid>159389</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 15:32:09 -0700</bug_when>
    <thetext>Comment on attachment 159389
Patch

Clearing flags on attachment: 159389

Committed r126196: &lt;http://trac.webkit.org/changeset/126196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701193</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 15:32:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772062</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-11-20 12:00:02 -0800</bug_when>
    <thetext>*** Bug 42912 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156089</attachid>
            <date>2012-08-02 08:16:20 -0700</date>
            <delta_ts>2012-08-06 07:52:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92993-20120802171600.patch</filename>
            <type>text/plain</type>
            <size>4791</size>
            <attacher name="Ulan Degenbaev">ulan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmYjFlMmY5OWQzYWJi
MDAyYWUyZDk0ZGRmZmJlYWQ0NjYyY2JlNy4uZWE3ZGU2NDNkOTcyYTA2MTlmNzVkNTYyZGRkZmU3
Y2ZmYmU2YTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTAyICBVbGFu
IERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gQ2FsbCBBZGp1
c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBjb25z
dHJ1Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkg
d2hlbiBWOEFycmF5QnVmZmVyIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGFuZCBkZXN0cnVjdGVk
IHNvIHRoYXQgVjgncyBnYXJiYWdlIGNvbGxlY3Rpb24gaGV1cmlzdGljcyBjYW4gYWNjb3VudAor
ICAgICAgICBmb3IgdGhlIG1lbW9yeSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVm
ZmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QXJyYXlCdWZmZXI6OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorCiAyMDEyLTA4LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSByZXBvcnRNZW1vcnlV
c2FnZSB0byByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UgaW4gU3R5bGVSdWxlQmFzZSBkZXNj
ZW5kYW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCBhNDE5MmJmYTMyZDVhNTNjNDFiY2Y4NDIzZTJkMmY2MDcyMjkxN2U1
Li5iZGMxZTJlNTEzYmVlZjExYmE3MzhkMWYyZjFmYjFkODIzZDY3YmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzAz
NywxNiArMzAzNywyOCBAQCBFTkQKIAogICAgIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMoJGRhdGFO
b2RlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJG5hdGl2ZVR5cGUpOwogCi0gICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLQorICAgIGlmICgkaW1wbENsYXNzTmFtZSBlcSAiQXJy
YXlCdWZmZXIiKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2b2lkIFY4
QXJyYXlCdWZmZXI6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKK3sKKyAgICBBcnJheUJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihvYmplY3QpOworICAgIHY4OjpW
ODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgtYnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgIGJ1ZmZlci0+ZGVyZWYoKTsKK30KK0VORAorICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiB2b2lkICR7Y2xhc3NOYW1lfTo6ZGVyZWZP
YmplY3Qodm9pZCogb2JqZWN0KQogewogICAgIHN0YXRpY19jYXN0PCR7bmF0aXZlVHlwZX0qPihv
YmplY3QpLT5kZXJlZigpOwogfQorRU5ECisgICAgfQorCisgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogRU5ECi0KICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygk
ZGF0YU5vZGUpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9t
LmNwcAppbmRleCAzMTk2ZGQ4OWFjMTU2NDk0ZTI5NDIwY2JmNzk5YjI3YWJhMzkxZDkyLi41Njk1
MjkwMTdlN2Y2Yzc0YzkyNzJmM2UzNGNmMDYzYmY2ZWY3ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3Bw
CkBAIC03MSw2ICs3MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEFycmF5QnVmZmVyOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgICAgIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCksIDEp
OwogICAgIGlmICghYnVmZmVyLmdldCgpKQogICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dF
cnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJyYXlCdWZmZXIgc2l6ZSBpcyBub3QgYSBzbWFs
bCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgdjg6
OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmpl
Y3QgZm9yIHRoZSBhcnJheS4KICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5I
b2xkZXIoKSwgJmluZm8sIGJ1ZmZlci5nZXQoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01PYmplY3QoYnVmZmVyLnJlbGVhc2UoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggMmU4NDIzNmZiOGUwZGNhOGJmMTE0MDlkYjgwZWM3Y2NiYTZhZTYwYS4uZjZi
MzQyZjk4OGUzN2Q2ZDkyYWU2YTA4YmRkMjRiNGYyYTAyOTA4ZiAxMDA2NDQKLS0tIGEvQ2hhbmdl
TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTAyICBVbGFuIERl
Z2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gQ2FsbCBBZGp1c3RB
bW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBjb25zdHJ1
Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkgd2hl
biBWOEFycmF5QnVmZmVyIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGFuZCBkZXN0cnVjdGVkIHNv
IHRoYXQgVjgncyBnYXJiYWdlIGNvbGxlY3Rpb24gaGV1cmlzdGljcyBjYW4gYWNjb3VudAorICAg
ICAgICBmb3IgdGhlIG1lbW9yeSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAgKiBN
YW51YWxUZXN0cy9hcnJheS1idWZmZXItbWVtb3J5Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTAx
ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgbmV3IENTUyBw
cm9wZXJ0eSAiLXdlYmtpdC13aWRnZXQtcmVnaW9uIiB0byBleHBvc2UgZGFzaGJvYXJkIHJlZ2lv
biBzdXBwb3J0IGZvciBvdGhlciBwb3J0CmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9hcnJheS1i
dWZmZXItbWVtb3J5Lmh0bWwgYi9NYW51YWxUZXN0cy9hcnJheS1idWZmZXItbWVtb3J5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWFhODk3OTBlYWE3OGNmNzU5N2Q5OTYzODIyYzA2ZDg5ZDUwYTcyNwotLS0g
L2Rldi9udWxsCisrKyBiL01hbnVhbFRlc3RzL2FycmF5LWJ1ZmZlci1tZW1vcnkuaHRtbApAQCAt
MCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIG1lbW9yeSB0
ZXN0PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorVGVzdCBjcmVhdGluZyBtYW55IEFycmF5QnVm
ZmVycy4gIFRoZSBwYWdlIHNob3VsZCBmdWxseSBsb2FkIHdpdGhvdXQgY3Jhc2hpbmcgYW5kIHdp
dGhvdXQgdXNpbmcgbW9yZSB0aGFuIH4zMDBtYiBvZiByYW0uCis8c2NyaXB0PgorCitmdW5jdGlv
biBhbGxvY2F0ZUxhcmdlQnVmZmVyKCkgeworICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcig2NCAqIDEwMjQgKiAxMDI0KTsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgOTY7ICsr
aSkKKyAgICBhbGxvY2F0ZUxhcmdlQnVmZmVyKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156693</attachid>
            <date>2012-08-06 07:52:04 -0700</date>
            <delta_ts>2012-08-07 06:49:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92993-20120806165140.patch</filename>
            <type>text/plain</type>
            <size>12883</size>
            <attacher name="Ulan Degenbaev">ulan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIzNDkyYmZiNDIyYzZlMGJhYjljMjIy
MjA3NjRlOWZkYjgwMGMzZmYuLmJlODVmODA4MDRlNDRiZTY2NGE2ZjEwNDY5MWQ3OTFmMWVjY2U0
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDgtMDYgIFVsYW4gRGVnZW5iYWV2ICA8dWxh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJu
YWxBbGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyIGNvbnN0cnVjdGVkIGFuZCBkZXN0
cnVjdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
Mjk5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENh
bGwgQWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSB3aGVuIFY4QXJyYXlCdWZm
ZXIgaXMgY29uc3RydWN0ZWQKKyAgICAgICAgYW5kIGRlc3RydWN0ZWQgc28gdGhhdCBWOCdzIGdh
cmJhZ2UgY29sbGVjdGlvbiBoZXVyaXN0aWNzIGNhbiBhY2NvdW50CisgICAgICAgIGZvciB0aGUg
bWVtb3J5IGhlbGQgYnkgdGhlc2Ugb2JqZWN0cy4KKworICAgICAgICAqIHd0Zi9BcnJheUJ1ZmZl
ci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJhbnNmZXIpOgor
ICAgICAgICAoQXJyYXlCdWZmZXJDb250ZW50cyk6CisgICAgICAgIChBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXVEY6OkFycmF5QnVmZmVyOjpzZXREZWFsbG9jYXRpb25PYnNlcnZlcik6CisgICAg
ICAgIChXVEY6OkFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKToKKwog
MjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVudExvY2FsVGltZSgpIHdpdGggR3JlZ29yaWFuRGF0
ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmYjFlMmY5OWQz
YWJiMDAyYWUyZDk0ZGRmZmJlYWQ0NjYyY2JlNy4uZTdlNDc4YjhiMDZhZjhjYmVlNjNlMGNiOGJk
ZjYwMDdkMGEyM2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTA2ICBV
bGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gQ2FsbCBB
ZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBj
b25zdHJ1Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1v
cnkgd2hlbiBWOEFycmF5QnVmZmVyIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGFuZCBkZXN0cnVj
dGVkIHNvIHRoYXQgVjgncyBnYXJiYWdlIGNvbGxlY3Rpb24gaGV1cmlzdGljcyBjYW4gYWNjb3Vu
dAorICAgICAgICBmb3IgdGhlIG1lbW9yeSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1ZmZlckRlYWxsb2Nh
dGlvbk9ic2VydmVyOjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZp
ZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkpOgorCiAy
MDEyLTA4LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSByZXBvcnRNZW1vcnlVc2FnZSB0byByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UgaW4gU3R5bGVSdWxlQmFzZSBkZXNjZW5kYW50cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyLmgKaW5kZXggZDJjNzI0OTc4YjJkNDRlY2VlYWMxZmFjNDJiMmM4MzNjYjIwYTk3YS4uNjA4
NzYwOTNkYzBiN2YxMjllZjQ1MjAyNmVkYjEyYzkyZmZiNTU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5o
CkBAIC0zNiwxMiArMzYsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsK
IGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIAorI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKK2NsYXNz
IEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBBcnJheUJ1ZmZlckRlYWxsb2NhdGVkKHVuc2lnbmVkIHNpemVJbkJ5dGVzKSA9IDA7Cit9
OworI2VuZGlmCisKKwogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50cygpIAogICAgICAgICA6IG1fZGF0YSgwKQogICAgICAgICAsIG1fc2l6ZUluQnl0
ZXMoMCkKKyNpZiBkZWZpbmVkKFdURl9VU0VfVjgpCisgICAgICAgICwgbV9kZWFsbG9jYXRpb25P
YnNlcnZlcigwKQorI2VuZGlmCiAgICAgeyB9CiAKICAgICBpbmxpbmUgfkFycmF5QnVmZmVyQ29u
dGVudHMoKTsKQEAgLTUzLDYgKzY0LDkgQEAgcHJpdmF0ZToKICAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKSAKICAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKICAgICAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQorI2lmIGRlZmluZWQo
V1RGX1VTRV9WOCkKKyAgICAgICAgLCBtX2RlYWxsb2NhdGlvbk9ic2VydmVyKDApCisjZW5kaWYK
ICAgICB7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTcwLDEwICs4NCwx
OCBAQCBwcml2YXRlOgogICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRl
czsKICAgICAgICAgbV9kYXRhID0gMDsKICAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisjaWYg
ZGVmaW5lZChXVEZfVVNFX1Y4KQorICAgICAgICBvdGhlci5tX2RlYWxsb2NhdGlvbk9ic2VydmVy
ID0gbV9kZWFsbG9jYXRpb25PYnNlcnZlcjsKKyAgICAgICAgbV9kZWFsbG9jYXRpb25PYnNlcnZl
ciA9IDA7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkKiBtX2RhdGE7CiAgICAgdW5zaWduZWQg
bV9zaXplSW5CeXRlczsKKworI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKKyAgICBBcnJheUJ1ZmZl
ckRlYWxsb2NhdGlvbk9ic2VydmVyKiBtX2RlYWxsb2NhdGlvbk9ic2VydmVyOworI2VuZGlmCiB9
OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7
CkBAIC05OSw2ICsxMjEsMTMgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmLCBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7CiAgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4g
IW1fY29udGVudHMubV9kYXRhOyB9CiAKKyNpZiBkZWZpbmVkKFdURl9VU0VfVjgpCisgICAgdm9p
ZCBzZXREZWFsbG9jYXRpb25PYnNlcnZlcihBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVy
KiBkZWFsbG9jYXRpb25PYnNlcnZlcikKKyAgICB7CisgICAgICAgIG1fY29udGVudHMubV9kZWFs
bG9jYXRpb25PYnNlcnZlciA9IGRlYWxsb2NhdGlvbk9ic2VydmVyOworICAgIH0KKyNlbmRpZgor
CiAgICAgfkFycmF5QnVmZmVyKCkgeyB9CiAKIHByaXZhdGU6CkBAIC0yMzgsNiArMjY3LDEwIEBA
IHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVu
dHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAKIEFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1
ZmZlckNvbnRlbnRzKCkKIHsKKyNpZiBkZWZpbmVkIChXVEZfVVNFX1Y4KQorICAgIGlmIChtX2Rl
YWxsb2NhdGlvbk9ic2VydmVyKQorICAgICAgICBtX2RlYWxsb2NhdGlvbk9ic2VydmVyLT5BcnJh
eUJ1ZmZlckRlYWxsb2NhdGVkKG1fc2l6ZUluQnl0ZXMpOworI2VuZGlmCiAgICAgV1RGOjpmYXN0
RnJlZShtX2RhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTAwNTE2ZWM1YmMzMDgxZmE2
ZjY5NmEyNjdmMjg3ZWU3OTFjMmE1OC4uMzQxMGU1YWYzYTJhNDM0NzI3ZDU0MTNkNTBiZDMxM2Uz
OTk2NzcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjI5Miw2ICsyMjkyLDcgQEAKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZm
ZXJDdXN0b20uY3BwCmluZGV4IDMxOTZkZDg5YWMxNTY0OTRlMjk0MjBjYmY3OTliMjdhYmEzOTFk
OTIuLjM4N2JkOTkxYjkwMjkwNzBjMDM4NWM5YTk4OTVlYmNlMjRmZjcxM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1
c3RvbS5jcHAKQEAgLTI5LDE1ICsyOSwyNSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJWOEFycmF5QnVmZmVyQ3VzdG9tLmgiCisKICNpbmNsdWRlIDx3dGYvQXJyYXlC
dWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlci5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIq
IFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2UoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyLCBkZWFs
bG9jYXRpb25PYnNlcnZlciwgKCkpOworICAgIHJldHVybiAmZGVhbGxvY2F0aW9uT2JzZXJ2ZXI7
Cit9CisKKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5BcnJheUJ1ZmZlci5Db25zdHJ1Y3RvciIpOwpAQCAtNzEsNiArODEsOCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcgogICAgICAgICBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihsZW5ndGgpLCAxKTsKICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKICAg
ICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6UmFuZ2VFcnJvciwgIkFy
cmF5QnVmZmVyIHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIiwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIGJ1ZmZlci0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIo
VjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKKyAgICB2ODo6
Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVj
dCBmb3IgdGhlIGFycmF5LgogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhv
bGRlcigpLCAmaW5mbywgYnVmZmVyLmdldCgpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU9iamVjdChidWZmZXIucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMjk2
NDVlYmQzMzEwZDg1MmU0MDg5YThlOThmNjU0MzA4MjhiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5oCkBA
IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFY4QXJyYXlCdWZmZXJDdXN0b21faAorI2RlZmluZSBWOEFy
cmF5QnVmZmVyQ3VzdG9tX2gKKworI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0FycmF5
QnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhBcnJheUJ1ZmZlckRl
YWxsb2NhdGlvbk9ic2VydmVyOiBwdWJsaWMgV1RGOjpBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9i
c2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgQXJyYXlCdWZmZXJEZWFsbG9jYXRl
ZCh1bnNpZ25lZCBzaXplSW5CeXRlcykKKyAgICB7CisgICAgICAgIHY4OjpWODo6QWRqdXN0QW1v
dW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgtc3RhdGljX2Nhc3Q8aW50PihzaXplSW5CeXRl
cykpOworICAgIH0KKyAgICBzdGF0aWMgVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVy
KiBpbnN0YW5jZSgpOworfTsKKworfQorCisjZW5kaWYgLy8gVjhBcnJheUJ1ZmZlckN1c3RvbV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAppbmRleCA4YzczZjQ4ODg2NDFlYmRmNzNjMTUyYjVi
NzNjOGQzNmE4YjAwMjBjLi43Y2VmMmM3M2Q3YzMwMmY3ODFhZjEwNGYxNWY5MWU3NGZmODBjMzU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IDczY2E1YWUwMTA3MzI5NzU5YWUwM2NhYjIzMzQ1YzY3
ZmE5OGQ4MjcuLmViOTM1ZjU0MGFkYzg1ZTA4ZGEwNTE4NGZkNTY1NTM5YTliMjk3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmll
d0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyVmlld0N1c3RvbS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogCiAjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4QXJyYXlC
dWZmZXJDdXN0b20uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAKQEAgLTE4MSw2ICsxODIsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVj
dFdlYkdMQXJyYXkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5cGUKICAgICBp
ZiAoIWFycmF5LmdldCgpKQogICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFBy
b3h5OjpSYW5nZUVycm9yLCBub3RTbWFsbEVub3VnaFNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
IAorICAgIGlmIChkb0luc3RhbnRpYXRpb24pIHsKKyAgICAgICAgYXJyYXktPmJ1ZmZlcigpLT5z
ZXREZWFsbG9jYXRpb25PYnNlcnZlcihWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXI6
Omluc3RhbmNlKCkpOworICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxv
Y2F0ZWRNZW1vcnkoYXJyYXktPmJ5dGVMZW5ndGgoKSk7CisgICAgfQorCiAKICAgICAvLyBUcmFu
c2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAg
ICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgdHlwZSwgYXJyYXku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDJlODQyMzZm
YjhlMGRjYThiZjExNDA5ZGI4MGVjN2NjYmE2YWU2MGEuLjljMmVlY2I3ODRlOWI5YWFlYmY5ZWY3
NDAzYjY1ZGMzMWMzNDFlNmYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0wNiAgVWxhbiBEZWdlbmJhZXYgIDx1bGFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbVjhdIENhbGwgQWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9j
YXRlZE1lbW9yeSB3aGVuIFY4QXJyYXlCdWZmZXIgY29uc3RydWN0ZWQgYW5kIGRlc3RydWN0ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTkzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbCBBZGp1
c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBpcyBj
b25zdHJ1Y3RlZAorICAgICAgICBhbmQgZGVzdHJ1Y3RlZCBzbyB0aGF0IFY4J3MgZ2FyYmFnZSBj
b2xsZWN0aW9uIGhldXJpc3RpY3MgY2FuIGFjY291bnQKKyAgICAgICAgZm9yIHRoZSBtZW1vcnkg
aGVsZCBieSB0aGVzZSBvYmplY3RzLgorCisgICAgICAgICogTWFudWFsVGVzdHMvdHlwZWQtYXJy
YXktbWVtb3J5Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTAxICBKaWFuIExpICA8amlhbmxpQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgbmV3IENTUyBwcm9wZXJ0eSAiLXdlYmtpdC13aWRn
ZXQtcmVnaW9uIiB0byBleHBvc2UgZGFzaGJvYXJkIHJlZ2lvbiBzdXBwb3J0IGZvciBvdGhlciBw
b3J0CmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy90eXBlZC1hcnJheS1tZW1vcnkuaHRtbCBiL01h
bnVhbFRlc3RzL3R5cGVkLWFycmF5LW1lbW9yeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3N2QzYzMzMGQz
NDFlMGFiNmI4N2E0NGJiZmU3ZjkzZjE0ZmFlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxU
ZXN0cy90eXBlZC1hcnJheS1tZW1vcnkuaHRtbApAQCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIG1lbW9yeSB0ZXN0PC90aXRsZT4KKzwvaGVhZD4KKzxi
b2R5PgorVGVzdCBjcmVhdGluZyBtYW55IEFycmF5QnVmZmVycyBhbmQgdHlwZWQgYXJyYXlzLiBU
aGUgcGFnZSBzaG91bGQgZnVsbHkgbG9hZCB3aXRob3V0IGNyYXNoaW5nIGFuZCB3aXRob3V0IHVz
aW5nIG1vcmUgdGhhbiB+MzAwbWIgb2YgcmFtLgorPHNjcmlwdD4KKworTUIgPSAxMDI0ICogMTAy
NAorCitmdW5jdGlvbiBhbGxvY2F0ZUxhcmdlQXJyYXlzKCkgeworICAgIHZhciBhcnJheUJ1ZmZl
ciA9IG5ldyBBcnJheUJ1ZmZlcig2NCAqIE1CKTsKKyAgICB2YXIgdHlwZWRBcnJheSA9IG5ldyBG
bG9hdDMyQXJyYXkoMTYgKiBNQik7CisgICAgdmFyIHR5cGVkQXJyYXkyID0gdHlwZWRBcnJheS5z
dWJhcnJheShNQiwgOCAqIE1CKTsKKyAgICB2YXIgdHlwZWRBcnJheTMgPSBuZXcgRmxvYXQzMkFy
cmF5KGFycmF5QnVmZmVyKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCA5NjsgKytpKSB7Cisg
ICAgYWxsb2NhdGVMYXJnZUFycmF5cygpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156930</attachid>
            <date>2012-08-07 06:49:48 -0700</date>
            <delta_ts>2012-08-08 05:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92993-20120807154923.patch</filename>
            <type>text/plain</type>
            <size>13053</size>
            <attacher name="Ulan Degenbaev">ulan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIzNDkyYmZiNDIyYzZlMGJhYjljMjIy
MjA3NjRlOWZkYjgwMGMzZmYuLmJlODVmODA4MDRlNDRiZTY2NGE2ZjEwNDY5MWQ3OTFmMWVjY2U0
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDgtMDYgIFVsYW4gRGVnZW5iYWV2ICA8dWxh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJu
YWxBbGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyIGNvbnN0cnVjdGVkIGFuZCBkZXN0
cnVjdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
Mjk5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENh
bGwgQWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSB3aGVuIFY4QXJyYXlCdWZm
ZXIgaXMgY29uc3RydWN0ZWQKKyAgICAgICAgYW5kIGRlc3RydWN0ZWQgc28gdGhhdCBWOCdzIGdh
cmJhZ2UgY29sbGVjdGlvbiBoZXVyaXN0aWNzIGNhbiBhY2NvdW50CisgICAgICAgIGZvciB0aGUg
bWVtb3J5IGhlbGQgYnkgdGhlc2Ugb2JqZWN0cy4KKworICAgICAgICAqIHd0Zi9BcnJheUJ1ZmZl
ci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJhbnNmZXIpOgor
ICAgICAgICAoQXJyYXlCdWZmZXJDb250ZW50cyk6CisgICAgICAgIChBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXVEY6OkFycmF5QnVmZmVyOjpzZXREZWFsbG9jYXRpb25PYnNlcnZlcik6CisgICAg
ICAgIChXVEY6OkFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKToKKwog
MjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVudExvY2FsVGltZSgpIHdpdGggR3JlZ29yaWFuRGF0
ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmYjFlMmY5OWQz
YWJiMDAyYWUyZDk0ZGRmZmJlYWQ0NjYyY2JlNy4uZTdlNDc4YjhiMDZhZjhjYmVlNjNlMGNiOGJk
ZjYwMDdkMGEyM2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTA2ICBV
bGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gQ2FsbCBB
ZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBj
b25zdHJ1Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1v
cnkgd2hlbiBWOEFycmF5QnVmZmVyIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGFuZCBkZXN0cnVj
dGVkIHNvIHRoYXQgVjgncyBnYXJiYWdlIGNvbGxlY3Rpb24gaGV1cmlzdGljcyBjYW4gYWNjb3Vu
dAorICAgICAgICBmb3IgdGhlIG1lbW9yeSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1ZmZlckRlYWxsb2Nh
dGlvbk9ic2VydmVyOjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZp
ZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkpOgorCiAy
MDEyLTA4LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSByZXBvcnRNZW1vcnlVc2FnZSB0byByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UgaW4gU3R5bGVSdWxlQmFzZSBkZXNjZW5kYW50cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyLmgKaW5kZXggZDJjNzI0OTc4YjJkNDRlY2VlYWMxZmFjNDJiMmM4MzNjYjIwYTk3YS4uN2E0
MDY3ZDZkOGNiMDJmOGZjNjkyNzZkODc1MWY4YzljNmE1OGEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5o
CkBAIC0zNiwxMiArMzYsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsK
IGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIAorI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKK2NsYXNz
IEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBBcnJheUJ1ZmZlckRlYWxsb2NhdGVkKHVuc2lnbmVkIHNpemVJbkJ5dGVzKSA9IDA7Cit9
OworI2VuZGlmCisKKwogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50cygpIAogICAgICAgICA6IG1fZGF0YSgwKQogICAgICAgICAsIG1fc2l6ZUluQnl0
ZXMoMCkKKyNpZiBkZWZpbmVkKFdURl9VU0VfVjgpCisgICAgICAgICwgbV9kZWFsbG9jYXRpb25P
YnNlcnZlcigwKQorI2VuZGlmCiAgICAgeyB9CiAKICAgICBpbmxpbmUgfkFycmF5QnVmZmVyQ29u
dGVudHMoKTsKQEAgLTUzLDYgKzY0LDkgQEAgcHJpdmF0ZToKICAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKSAKICAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKICAgICAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQorI2lmIGRlZmluZWQo
V1RGX1VTRV9WOCkKKyAgICAgICAgLCBtX2RlYWxsb2NhdGlvbk9ic2VydmVyKDApCisjZW5kaWYK
ICAgICB7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTcwLDEwICs4NCwy
MSBAQCBwcml2YXRlOgogICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRl
czsKICAgICAgICAgbV9kYXRhID0gMDsKICAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisjaWYg
ZGVmaW5lZChXVEZfVVNFX1Y4KQorICAgICAgICAvLyBOb3RpZnkgdGhlIGN1cnJlbnQgVjggaXNv
bGF0ZSB0aGF0IHRoZSBidWZmZXIgaXMgZ29uZS4KKyAgICAgICAgaWYgKG1fZGVhbGxvY2F0aW9u
T2JzZXJ2ZXIpCisgICAgICAgICAgICBtX2RlYWxsb2NhdGlvbk9ic2VydmVyLT5BcnJheUJ1ZmZl
ckRlYWxsb2NhdGVkKG90aGVyLm1fc2l6ZUluQnl0ZXMpOworICAgICAgICBBU1NFUlQoIW90aGVy
Lm1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXIpOworICAgICAgICBtX2RlYWxsb2NhdGlvbk9ic2VydmVy
ID0gMDsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQqIG1fZGF0YTsKICAgICB1bnNpZ25lZCBt
X3NpemVJbkJ5dGVzOworCisjaWYgZGVmaW5lZChXVEZfVVNFX1Y4KQorICAgIEFycmF5QnVmZmVy
RGVhbGxvY2F0aW9uT2JzZXJ2ZXIqIG1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXI7CisjZW5kaWYKIH07
CiAKIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsK
QEAgLTk5LDYgKzEyNCwxMyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
dHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiA+JiBuZXV0ZXJlZFZpZXdzKTsKICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAh
bV9jb250ZW50cy5tX2RhdGE7IH0KIAorI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKKyAgICB2b2lk
IHNldERlYWxsb2NhdGlvbk9ic2VydmVyKEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIq
IGRlYWxsb2NhdGlvbk9ic2VydmVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZW50cy5tX2RlYWxs
b2NhdGlvbk9ic2VydmVyID0gZGVhbGxvY2F0aW9uT2JzZXJ2ZXI7CisgICAgfQorI2VuZGlmCisK
ICAgICB+QXJyYXlCdWZmZXIoKSB7IH0KIAogcHJpdmF0ZToKQEAgLTIzOCw2ICsyNzAsMTAgQEAg
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKIAogQXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVm
ZmVyQ29udGVudHMoKQogeworI2lmIGRlZmluZWQgKFdURl9VU0VfVjgpCisgICAgaWYgKG1fZGVh
bGxvY2F0aW9uT2JzZXJ2ZXIpCisgICAgICAgIG1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXItPkFycmF5
QnVmZmVyRGVhbGxvY2F0ZWQobV9zaXplSW5CeXRlcyk7CisjZW5kaWYKICAgICBXVEY6OmZhc3RG
cmVlKG1fZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5MDA1MTZlYzViYzMwODFmYTZm
Njk2YTI2N2YyODdlZTc5MWMyYTU4Li4zNDEwZTVhZjNhMmE0MzQ3MjdkNTQxM2Q1MGJkMzEzZTM5
OTY3NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjkyLDYgKzIyOTIsNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
ckN1c3RvbS5jcHAKaW5kZXggMzE5NmRkODlhYzE1NjQ5NGUyOTQyMGNiZjc5OWIyN2FiYTM5MWQ5
Mi4uMzg3YmQ5OTFiOTAyOTA3MGMwMzg1YzlhOTg5NWViY2UyNGZmNzEzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3Vz
dG9tLmNwcApAQCAtMjksMTUgKzI5LDI1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJDdXN0b20uaCIKKwogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVm
ZmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Y4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlciog
VjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIsIGRlYWxs
b2NhdGlvbk9ic2VydmVyLCAoKSk7CisgICAgcmV0dXJuICZkZWFsbG9jYXRpb25PYnNlcnZlcjsK
K30KKworCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkFycmF5QnVmZmVyLkNvbnN0cnVjdG9yIik7CkBAIC03MSw2ICs4MSw4IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyCiAgICAgICAgIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCksIDEpOwogICAgIGlmICghYnVmZmVyLmdldCgpKQogICAg
ICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJy
YXlCdWZmZXIgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgYnVmZmVyLT5zZXREZWFsbG9jYXRpb25PYnNlcnZlcihW
OEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXI6Omluc3RhbmNlKCkpOworICAgIHY4OjpW
ODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0
IGZvciB0aGUgYXJyYXkuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9s
ZGVyKCksICZpbmZvLCBidWZmZXIuZ2V0KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGJ1ZmZlci5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyOTY0
NWViZDMzMTBkODUyZTQwODlhOGU5OGY2NTQzMDgyOGI1ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVjhBcnJheUJ1ZmZlckN1c3RvbV9oCisjZGVmaW5lIFY4QXJy
YXlCdWZmZXJDdXN0b21faAorCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvQXJyYXlC
dWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOEFycmF5QnVmZmVyRGVh
bGxvY2F0aW9uT2JzZXJ2ZXI6IHB1YmxpYyBXVEY6OkFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2Jz
ZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBBcnJheUJ1ZmZlckRlYWxsb2NhdGVk
KHVuc2lnbmVkIHNpemVJbkJ5dGVzKQorICAgIHsKKyAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91
bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KC1zdGF0aWNfY2FzdDxpbnQ+KHNpemVJbkJ5dGVz
KSk7CisgICAgfQorICAgIHN0YXRpYyBWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIq
IGluc3RhbmNlKCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBWOEFycmF5QnVmZmVyQ3VzdG9tX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVm
ZmVyVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwCmluZGV4IDhjNzNmNDg4ODY0MWViZGY3M2MxNTJiNWI3
M2M4ZDM2YThiMDAyMGMuLjdjZWYyYzczZDdjMzAyZjc4MWFmMTA0ZjE1ZjkxZTc0ZmY4MGMzNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVm
ZmVyVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcApAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggNzNjYTVhZTAxMDczMjk3NTlhZTAzY2FiMjMzNDVjNjdm
YTk4ZDgyNy4uZWI5MzVmNTQwYWRjODVlMDhkYTA1MTg0ZmQ1NjU1MzlhOWIyOTdkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlckN1c3RvbS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKIApAQCAtMTgxLDYgKzE4MiwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0
V2ViR0xBcnJheShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIGlm
ICghYXJyYXkuZ2V0KCkpCiAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJv
eHk6OlJhbmdlRXJyb3IsIG5vdFNtYWxsRW5vdWdoU2l6ZSwgYXJncy5HZXRJc29sYXRlKCkpOwog
CisgICAgaWYgKGRvSW5zdGFudGlhdGlvbikgeworICAgICAgICBhcnJheS0+YnVmZmVyKCktPnNl
dERlYWxsb2NhdGlvbk9ic2VydmVyKFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6
aW5zdGFuY2UoKSk7CisgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9j
YXRlZE1lbW9yeShhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB9CisKIAogICAgIC8vIFRyYW5z
Zm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAg
IFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCB0eXBlLCBhcnJheS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMmU4NDIzNmZi
OGUwZGNhOGJmMTE0MDlkYjgwZWM3Y2NiYTZhZTYwYS4uOWMyZWVjYjc4NGU5YjlhYWViZjllZjc0
MDNiNjVkYzMxYzM0MWU2ZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTA2ICBVbGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtWOF0gQ2FsbCBBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2Nh
dGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBjb25zdHJ1Y3RlZCBhbmQgZGVzdHJ1Y3RlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIEFkanVz
dEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyIGlzIGNv
bnN0cnVjdGVkCisgICAgICAgIGFuZCBkZXN0cnVjdGVkIHNvIHRoYXQgVjgncyBnYXJiYWdlIGNv
bGxlY3Rpb24gaGV1cmlzdGljcyBjYW4gYWNjb3VudAorICAgICAgICBmb3IgdGhlIG1lbW9yeSBo
ZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy90eXBlZC1hcnJh
eS1tZW1vcnkuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMDEgIEppYW4gTGkgIDxqaWFubGlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBuZXcgQ1NTIHByb3BlcnR5ICItd2Via2l0LXdpZGdl
dC1yZWdpb24iIHRvIGV4cG9zZSBkYXNoYm9hcmQgcmVnaW9uIHN1cHBvcnQgZm9yIG90aGVyIHBv
cnQKZGlmZiAtLWdpdCBhL01hbnVhbFRlc3RzL3R5cGVkLWFycmF5LW1lbW9yeS5odG1sIGIvTWFu
dWFsVGVzdHMvdHlwZWQtYXJyYXktbWVtb3J5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc3ZDNjMzMwZDM0
MWUwYWI2Yjg3YTQ0YmJmZTdmOTNmMTRmYWUwZQotLS0gL2Rldi9udWxsCisrKyBiL01hbnVhbFRl
c3RzL3R5cGVkLWFycmF5LW1lbW9yeS5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+QXJyYXlCdWZmZXIgbWVtb3J5IHRlc3Q8L3RpdGxlPgorPC9oZWFkPgorPGJv
ZHk+CitUZXN0IGNyZWF0aW5nIG1hbnkgQXJyYXlCdWZmZXJzIGFuZCB0eXBlZCBhcnJheXMuIFRo
ZSBwYWdlIHNob3VsZCBmdWxseSBsb2FkIHdpdGhvdXQgY3Jhc2hpbmcgYW5kIHdpdGhvdXQgdXNp
bmcgbW9yZSB0aGFuIH4zMDBtYiBvZiByYW0uCis8c2NyaXB0PgorCitNQiA9IDEwMjQgKiAxMDI0
CisKK2Z1bmN0aW9uIGFsbG9jYXRlTGFyZ2VBcnJheXMoKSB7CisgICAgdmFyIGFycmF5QnVmZmVy
ID0gbmV3IEFycmF5QnVmZmVyKDY0ICogTUIpOworICAgIHZhciB0eXBlZEFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheSgxNiAqIE1CKTsKKyAgICB2YXIgdHlwZWRBcnJheTIgPSB0eXBlZEFycmF5LnN1
YmFycmF5KE1CLCA4ICogTUIpOworICAgIHZhciB0eXBlZEFycmF5MyA9IG5ldyBGbG9hdDMyQXJy
YXkoYXJyYXlCdWZmZXIpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDk2OyArK2kpIHsKKyAg
ICBhbGxvY2F0ZUxhcmdlQXJyYXlzKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157193</attachid>
            <date>2012-08-08 05:30:01 -0700</date>
            <delta_ts>2012-08-20 04:11:56 -0700</delta_ts>
            <desc>Add more tests</desc>
            <filename>bug-92993-20120808142934.patch</filename>
            <type>text/plain</type>
            <size>20989</size>
            <attacher name="Ulan Degenbaev">ulan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIzNDkyYmZiNDIyYzZlMGJhYjljMjIy
MjA3NjRlOWZkYjgwMGMzZmYuLmJlODVmODA4MDRlNDRiZTY2NGE2ZjEwNDY5MWQ3OTFmMWVjY2U0
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDgtMDYgIFVsYW4gRGVnZW5iYWV2ICA8dWxh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJu
YWxBbGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyIGNvbnN0cnVjdGVkIGFuZCBkZXN0
cnVjdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
Mjk5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENh
bGwgQWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSB3aGVuIFY4QXJyYXlCdWZm
ZXIgaXMgY29uc3RydWN0ZWQKKyAgICAgICAgYW5kIGRlc3RydWN0ZWQgc28gdGhhdCBWOCdzIGdh
cmJhZ2UgY29sbGVjdGlvbiBoZXVyaXN0aWNzIGNhbiBhY2NvdW50CisgICAgICAgIGZvciB0aGUg
bWVtb3J5IGhlbGQgYnkgdGhlc2Ugb2JqZWN0cy4KKworICAgICAgICAqIHd0Zi9BcnJheUJ1ZmZl
ci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNv
bnRlbnRzKToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXJDb250ZW50czo6dHJhbnNmZXIpOgor
ICAgICAgICAoQXJyYXlCdWZmZXJDb250ZW50cyk6CisgICAgICAgIChBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXVEY6OkFycmF5QnVmZmVyOjpzZXREZWFsbG9jYXRpb25PYnNlcnZlcik6CisgICAg
ICAgIChXVEY6OkFycmF5QnVmZmVyQ29udGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKToKKwog
MjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVudExvY2FsVGltZSgpIHdpdGggR3JlZ29yaWFuRGF0
ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmYjFlMmY5OWQz
YWJiMDAyYWUyZDk0ZGRmZmJlYWQ0NjYyY2JlNy4uZTdlNDc4YjhiMDZhZjhjYmVlNjNlMGNiOGJk
ZjYwMDdkMGEyM2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTA2ICBV
bGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gQ2FsbCBB
ZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBj
b25zdHJ1Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1v
cnkgd2hlbiBWOEFycmF5QnVmZmVyIGlzIGNvbnN0cnVjdGVkCisgICAgICAgIGFuZCBkZXN0cnVj
dGVkIHNvIHRoYXQgVjgncyBnYXJiYWdlIGNvbGxlY3Rpb24gaGV1cmlzdGljcyBjYW4gYWNjb3Vu
dAorICAgICAgICBmb3IgdGhlIG1lbW9yeSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1ZmZlckRlYWxsb2Nh
dGlvbk9ic2VydmVyOjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZp
ZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkpOgorCiAy
MDEyLTA4LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSByZXBvcnRNZW1vcnlVc2FnZSB0byByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UgaW4gU3R5bGVSdWxlQmFzZSBkZXNjZW5kYW50cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVm
ZmVyLmgKaW5kZXggZDJjNzI0OTc4YjJkNDRlY2VlYWMxZmFjNDJiMmM4MzNjYjIwYTk3YS4uN2E0
MDY3ZDZkOGNiMDJmOGZjNjkyNzZkODc1MWY4YzljNmE1OGEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5o
CkBAIC0zNiwxMiArMzYsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsK
IGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIAorI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKK2NsYXNz
IEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBBcnJheUJ1ZmZlckRlYWxsb2NhdGVkKHVuc2lnbmVkIHNpemVJbkJ5dGVzKSA9IDA7Cit9
OworI2VuZGlmCisKKwogY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXJyYXlCdWZmZXJDb250ZW50cyk7CiBwdWJsaWM6CiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50cygpIAogICAgICAgICA6IG1fZGF0YSgwKQogICAgICAgICAsIG1fc2l6ZUluQnl0
ZXMoMCkKKyNpZiBkZWZpbmVkKFdURl9VU0VfVjgpCisgICAgICAgICwgbV9kZWFsbG9jYXRpb25P
YnNlcnZlcigwKQorI2VuZGlmCiAgICAgeyB9CiAKICAgICBpbmxpbmUgfkFycmF5QnVmZmVyQ29u
dGVudHMoKTsKQEAgLTUzLDYgKzY0LDkgQEAgcHJpdmF0ZToKICAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzKHZvaWQqIGRhdGEsIHVuc2lnbmVkIHNpemVJbkJ5dGVzKSAKICAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKICAgICAgICAgLCBtX3NpemVJbkJ5dGVzKHNpemVJbkJ5dGVzKQorI2lmIGRlZmluZWQo
V1RGX1VTRV9WOCkKKyAgICAgICAgLCBtX2RlYWxsb2NhdGlvbk9ic2VydmVyKDApCisjZW5kaWYK
ICAgICB7IH0KIAogICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTcwLDEwICs4NCwy
MSBAQCBwcml2YXRlOgogICAgICAgICBvdGhlci5tX3NpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRl
czsKICAgICAgICAgbV9kYXRhID0gMDsKICAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisjaWYg
ZGVmaW5lZChXVEZfVVNFX1Y4KQorICAgICAgICAvLyBOb3RpZnkgdGhlIGN1cnJlbnQgVjggaXNv
bGF0ZSB0aGF0IHRoZSBidWZmZXIgaXMgZ29uZS4KKyAgICAgICAgaWYgKG1fZGVhbGxvY2F0aW9u
T2JzZXJ2ZXIpCisgICAgICAgICAgICBtX2RlYWxsb2NhdGlvbk9ic2VydmVyLT5BcnJheUJ1ZmZl
ckRlYWxsb2NhdGVkKG90aGVyLm1fc2l6ZUluQnl0ZXMpOworICAgICAgICBBU1NFUlQoIW90aGVy
Lm1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXIpOworICAgICAgICBtX2RlYWxsb2NhdGlvbk9ic2VydmVy
ID0gMDsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQqIG1fZGF0YTsKICAgICB1bnNpZ25lZCBt
X3NpemVJbkJ5dGVzOworCisjaWYgZGVmaW5lZChXVEZfVVNFX1Y4KQorICAgIEFycmF5QnVmZmVy
RGVhbGxvY2F0aW9uT2JzZXJ2ZXIqIG1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXI7CisjZW5kaWYKIH07
CiAKIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsK
QEAgLTk5LDYgKzEyNCwxMyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
dHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYsIFZlY3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiA+JiBuZXV0ZXJlZFZpZXdzKTsKICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAh
bV9jb250ZW50cy5tX2RhdGE7IH0KIAorI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKKyAgICB2b2lk
IHNldERlYWxsb2NhdGlvbk9ic2VydmVyKEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIq
IGRlYWxsb2NhdGlvbk9ic2VydmVyKQorICAgIHsKKyAgICAgICAgbV9jb250ZW50cy5tX2RlYWxs
b2NhdGlvbk9ic2VydmVyID0gZGVhbGxvY2F0aW9uT2JzZXJ2ZXI7CisgICAgfQorI2VuZGlmCisK
ICAgICB+QXJyYXlCdWZmZXIoKSB7IH0KIAogcHJpdmF0ZToKQEAgLTIzOCw2ICsyNzAsMTAgQEAg
dm9pZCBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGUKIAogQXJyYXlCdWZmZXJDb250ZW50czo6fkFycmF5QnVm
ZmVyQ29udGVudHMoKQogeworI2lmIGRlZmluZWQgKFdURl9VU0VfVjgpCisgICAgaWYgKG1fZGVh
bGxvY2F0aW9uT2JzZXJ2ZXIpCisgICAgICAgIG1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXItPkFycmF5
QnVmZmVyRGVhbGxvY2F0ZWQobV9zaXplSW5CeXRlcyk7CisjZW5kaWYKICAgICBXVEY6OmZhc3RG
cmVlKG1fZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5MDA1MTZlYzViYzMwODFmYTZm
Njk2YTI2N2YyODdlZTc5MWMyYTU4Li4zNDEwZTVhZjNhMmE0MzQ3MjdkNTQxM2Q1MGJkMzEzZTM5
OTY3NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjkyLDYgKzIyOTIsNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
ckN1c3RvbS5jcHAKaW5kZXggMzE5NmRkODlhYzE1NjQ5NGUyOTQyMGNiZjc5OWIyN2FiYTM5MWQ5
Mi4uMzg3YmQ5OTFiOTAyOTA3MGMwMzg1YzlhOTg5NWViY2UyNGZmNzEzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3Vz
dG9tLmNwcApAQCAtMjksMTUgKzI5LDI1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJDdXN0b20uaCIKKwogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVm
ZmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Y4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlciog
VjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIsIGRlYWxs
b2NhdGlvbk9ic2VydmVyLCAoKSk7CisgICAgcmV0dXJuICZkZWFsbG9jYXRpb25PYnNlcnZlcjsK
K30KKworCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkFycmF5QnVmZmVyLkNvbnN0cnVjdG9yIik7CkBAIC03MSw2ICs4MSw4IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyCiAgICAgICAgIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCksIDEpOwogICAgIGlmICghYnVmZmVyLmdldCgpKQogICAg
ICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSYW5nZUVycm9yLCAiQXJy
YXlCdWZmZXIgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgYnVmZmVyLT5zZXREZWFsbG9jYXRpb25PYnNlcnZlcihW
OEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXI6Omluc3RhbmNlKCkpOworICAgIHY4OjpW
ODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0
IGZvciB0aGUgYXJyYXkuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9s
ZGVyKCksICZpbmZvLCBidWZmZXIuZ2V0KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGJ1ZmZlci5yZWxlYXNlKCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyOTY0
NWViZDMzMTBkODUyZTQwODlhOGU5OGY2NTQzMDgyOGI1ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVjhBcnJheUJ1ZmZlckN1c3RvbV9oCisjZGVmaW5lIFY4QXJy
YXlCdWZmZXJDdXN0b21faAorCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvQXJyYXlC
dWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOEFycmF5QnVmZmVyRGVh
bGxvY2F0aW9uT2JzZXJ2ZXI6IHB1YmxpYyBXVEY6OkFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2Jz
ZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBBcnJheUJ1ZmZlckRlYWxsb2NhdGVk
KHVuc2lnbmVkIHNpemVJbkJ5dGVzKQorICAgIHsKKyAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91
bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KC1zdGF0aWNfY2FzdDxpbnQ+KHNpemVJbkJ5dGVz
KSk7CisgICAgfQorICAgIHN0YXRpYyBWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXIq
IGluc3RhbmNlKCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBWOEFycmF5QnVmZmVyQ3VzdG9tX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVm
ZmVyVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwCmluZGV4IDhjNzNmNDg4ODY0MWViZGY3M2MxNTJiNWI3
M2M4ZDM2YThiMDAyMGMuLjdjZWYyYzczZDdjMzAyZjc4MWFmMTA0ZjE1ZjkxZTc0ZmY4MGMzNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVm
ZmVyVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcApAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggNzNjYTVhZTAxMDczMjk3NTlhZTAzY2FiMjMzNDVjNjdm
YTk4ZDgyNy4uMWRmYjZkMTUzYzZjNmM3NDRjYTAzNTc1NGY2Njc0OTczYmM2MTg5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlckN1c3RvbS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKIApAQCAtMTQ2LDYgKzE0Nyw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RX
ZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgICAg
IGlmICghYXJyYXkuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJv
cihWOFByb3h5OjpSYW5nZUVycm9yLCBub3RTbWFsbEVub3VnaFNpemUsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKIAorICAgICAgICBhcnJheS0+YnVmZmVyKCktPnNldERlYWxsb2NhdGlvbk9ic2VydmVy
KFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2UoKSk7CisgICAgICAg
IHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShhcnJheS0+Ynl0
ZUxlbmd0aCgpKTsKKwogICAgICAgICBtZW1jcHkoYXJyYXktPmJhc2VBZGRyZXNzKCksIHNvdXJj
ZS0+YmFzZUFkZHJlc3MoKSwgbGVuZ3RoICogc2l6ZW9mKEVsZW1lbnRUeXBlKSk7CiAKICAgICAg
ICAgcmV0dXJuIHdyYXBBcnJheUJ1ZmZlclZpZXcoYXJncywgdHlwZSwgYXJyYXksIGFycmF5VHlw
ZSwgdHJ1ZSk7CkBAIC0xODEsNiArMTg1LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25z
dHJ1Y3RXZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAg
ICAgaWYgKCFhcnJheS5nZXQoKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93RXJyb3Io
VjhQcm94eTo6UmFuZ2VFcnJvciwgbm90U21hbGxFbm91Z2hTaXplLCBhcmdzLkdldElzb2xhdGUo
KSk7CiAKKyAgICBpZiAoZG9JbnN0YW50aWF0aW9uKSB7CisgICAgICAgIGFycmF5LT5idWZmZXIo
KS0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2Vy
dmVyOjppbnN0YW5jZSgpKTsKKyAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFs
QWxsb2NhdGVkTWVtb3J5KGFycmF5LT5ieXRlTGVuZ3RoKCkpOworICAgIH0KKwogCiAgICAgLy8g
VHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXJyYXku
CiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksIHR5cGUsIGFy
cmF5LmdldCgpKTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyZTg0
MjM2ZmI4ZTBkY2E4YmYxMTQwOWRiODBlYzdjY2JhNmFlNjBhLi45YzJlZWNiNzg0ZTliOWFhZWJm
OWVmNzQwM2I2NWRjMzFjMzQxZTZmIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMDYgIFVsYW4gRGVnZW5iYWV2ICA8dWxhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxB
bGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyIGNvbnN0cnVjdGVkIGFuZCBkZXN0cnVj
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjk5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbGwg
QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSB3aGVuIFY4QXJyYXlCdWZmZXIg
aXMgY29uc3RydWN0ZWQKKyAgICAgICAgYW5kIGRlc3RydWN0ZWQgc28gdGhhdCBWOCdzIGdhcmJh
Z2UgY29sbGVjdGlvbiBoZXVyaXN0aWNzIGNhbiBhY2NvdW50CisgICAgICAgIGZvciB0aGUgbWVt
b3J5IGhlbGQgYnkgdGhlc2Ugb2JqZWN0cy4KKworICAgICAgICAqIE1hbnVhbFRlc3RzL3R5cGVk
LWFycmF5LW1lbW9yeS5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0wMSAgSmlhbiBMaSAgPGppYW5s
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBDU1MgcHJvcGVydHkgIi13ZWJraXQt
d2lkZ2V0LXJlZ2lvbiIgdG8gZXhwb3NlIGRhc2hib2FyZCByZWdpb24gc3VwcG9ydCBmb3Igb3Ro
ZXIgcG9ydApkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvdHlwZWQtYXJyYXktbWVtb3J5Lmh0bWwg
Yi9NYW51YWxUZXN0cy90eXBlZC1hcnJheS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDYyNDI5
OWIxNmU1MjVmYjE2MTE0NjJlMTJjZmQ2ZmI4Y2VmMmMxCi0tLSAvZGV2L251bGwKKysrIGIvTWFu
dWFsVGVzdHMvdHlwZWQtYXJyYXktbWVtb3J5Lmh0bWwKQEAgLTAsMCArMSwyMjEgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+QXJyYXlCdWZmZXIgRXh0ZXJuYWwgTWVtb3J5IHRlc3Q8L3RpdGxl
PgorPHNjcmlwdD4KKwordmFyIGxvZzsKK2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQor
eworICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkp
OworICAgIHBhcmFncmFwaC5zdHlsZS5mb250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYg
KGNvbG9yKQorICAgICAgICBwYXJhZ3JhcGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBsb2cu
YXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gcGFzcyhtc2cpCit7CisgICAg
cHJpbnQoIlBBU1M6ICIgKyBtc2csICJncmVlbiIpOworfQorCitmdW5jdGlvbiBmYWlsKG1zZykK
K3sKKyAgICBwcmludCgiRkFJTDogIiArIG1zZywgInJlZCIpOworfQorCit2YXIgS0IgPSAxMDI0
OwordmFyIE1CID0gS0IgKiBLQjsKK3ZhciBub2lzZSA9IEtCOworCitmdW5jdGlvbiBleHRlcm5h
bE1lbW9yeSgpIHsKKyAgICByZXR1cm4gZ2V0VjhTdGF0aXN0aWNzKCkuYW1vdW50X29mX2V4dGVy
bmFsX2FsbG9jYXRlZF9tZW1vcnk7Cit9CisKK2Z1bmN0aW9uIGNvbGxlY3RHYXJiYWdlKCkgewor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgZ2MoKTsKK30KKworZnVuY3Rpb24gYWxs
b2NhdGlvbnNUaGF0SW5jcmVhc2VFeHRlcm5hbE1lbW9yeSgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0
KGV4cHJlc3Npb24pIHsKKyAgICAgICAgdmFyIGJlZm9yZSA9IGV4dGVybmFsTWVtb3J5KCk7Cisg
ICAgICAgIChmdW5jdGlvbiAoKSB7IGV2YWwoZXhwcmVzc2lvbik7IH0pICgpOworICAgICAgICB2
YXIgbm93ID0gZXh0ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAgaWYgKG5vdyA8IGJlZm9yZSArIE1C
IC0gbm9pc2UpIHsKKyAgICAgICAgICAgIGZhaWwoZXhwcmVzc2lvbiArICIgZGlkIG5vdCBpbmNy
ZWFzZSB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeSAoIiArCisgICAgICAgICAgICAgICAg
ICBiZWZvcmUgKyAiLCAiICsgbm93ICsgIikuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBwYXNzKGV4cHJlc3Npb24gKyAiIGluY3JlYXNlZCB0aGUgYW1vdW50IG9mIGV4dGVybmFs
IG1lbW9yeS4iKTsKKyAgICAgICAgfQorICAgICAgICBjb2xsZWN0R2FyYmFnZSgpOworICAgICAg
ICB2YXIgYWZ0ZXIgPSBleHRlcm5hbE1lbW9yeSgpOworICAgICAgICBpZiAoYWZ0ZXIgPiBub3cg
KyBub2lzZSkgeworICAgICAgICAgICAgZmFpbCgiR2FyYmFnZSBjb2xsZWN0aW9uIGFmdGVyICIg
KyBleHByZXNzaW9uICsKKyAgICAgICAgICAgICAgICAgIiBkaWQgbm90IHJldHVybiB0aGUgYW1v
dW50IG9mIGV4dGVybmFsIG1lbW9yeSB0byB0aGUgaW5pdGlhbCB2YWx1ZSAoIiArCisgICAgICAg
ICAgICAgICAgIG5vdyArICIsICIgKyBhZnRlciArICIpLiIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcGFzcygiR2FyYmFnZSBjb2xsZWN0aW9uIGFmdGVyICIgKyBleHByZXNzaW9u
ICsKKyAgICAgICAgICAgICAgICAgIiByZXR1cm5lZCB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1l
bW9yeSB0byB0aGUgaW5pdGlhbCB2YWx1ZS4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRl
c3QoIihuZXcgQXJyYXlCdWZmZXIoTUIpKSIpOworICAgIHRlc3QoIihuZXcgRmxvYXQzMkFycmF5
KE1CKSkiKTsKKyAgICB0ZXN0KCIobmV3IEZsb2F0NjRBcnJheShNQikpIik7CisgICAgdGVzdCgi
KG5ldyBJbnQ4QXJyYXkoTUIpKSIpOworICAgIHRlc3QoIihuZXcgSW50MTZBcnJheShNQikpIik7
CisgICAgdGVzdCgiKG5ldyBJbnQzMkFycmF5KE1CKSkiKTsKKyAgICB0ZXN0KCIobmV3IFVpbnQ4
QXJyYXkoTUIpKSIpOworICAgIHRlc3QoIihuZXcgVWludDE2QXJyYXkoTUIpKSIpOworICAgIHRl
c3QoIihuZXcgVWludDMyQXJyYXkoTUIpKSIpOworICAgIHZhciBsYXJnZUpTQXJyYXkgPSBbXTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IE1COyBpKyspIGxhcmdlSlNBcnJheS5wdXNoKGkpOwor
ICAgIHRlc3QoIihuZXcgRmxvYXQzMkFycmF5KGxhcmdlSlNBcnJheSkpIik7CisgICAgdGVzdCgi
KG5ldyBGbG9hdDY0QXJyYXkobGFyZ2VKU0FycmF5KSkiKTsKKyAgICB0ZXN0KCIobmV3IEludDhB
cnJheShsYXJnZUpTQXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgSW50MTZBcnJheShsYXJnZUpT
QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgSW50MzJBcnJheShsYXJnZUpTQXJyYXkpKSIpOwor
ICAgIHRlc3QoIihuZXcgVWludDhBcnJheShsYXJnZUpTQXJyYXkpKSIpOworICAgIHRlc3QoIihu
ZXcgVWludDE2QXJyYXkobGFyZ2VKU0FycmF5KSkiKTsKKyAgICB0ZXN0KCIobmV3IFVpbnQzMkFy
cmF5KGxhcmdlSlNBcnJheSkpIik7CisgICAgdmFyIGludDhBcnJheSA9IG5ldyBJbnQ4QXJyYXko
TUIpOworICAgIHRlc3QoIihuZXcgIEZsb2F0MzJBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRl
c3QoIihuZXcgIEZsb2F0NjRBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIElu
dDhBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIEludDE2QXJyYXkoaW50OEFy
cmF5KSkiKTsKKyAgICB0ZXN0KCIobmV3ICBJbnQzMkFycmF5KGludDhBcnJheSkpIik7CisgICAg
dGVzdCgiKG5ldyAgVWludDhBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIFVp
bnQxNkFycmF5KGludDhBcnJheSkpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDMyQXJyYXkoaW50
OEFycmF5KSkiKTsKK30KKworCitmdW5jdGlvbiBhbGxvY2F0aW9uc1RoYXREb05vdENoYW5nZUV4
dGVybmFsTWVtb3J5KCkgeworICAgIGZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbikgeworICAgICAg
ICB2YXIgYmVmb3JlID0gZXh0ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAgKGZ1bmN0aW9uICgpIHsg
ZXZhbChleHByZXNzaW9uKTsgfSkgKCk7CisgICAgICAgIHZhciBub3cgPSBleHRlcm5hbE1lbW9y
eSgpOworICAgICAgICBpZiAobm93ID4gYmVmb3JlICsgbm9pc2UpIHsKKyAgICAgICAgICAgIGZh
aWwoZXhwcmVzc2lvbiArICIgaW5jcmVhc2VkIHRoZSBhbW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5
ICgiICsgYmVmb3JlICsgIiwgIiArIG5vdyArICIpLiIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcGFzcyhleHByZXNzaW9uICsgIiBkaWQgbm90IGluY3JlYXNlIHRoZSBhbW91bnQg
b2YgZXh0ZXJuYWwgbWVtb3J5LiIpOworICAgICAgICB9CisgICAgICAgIGNvbGxlY3RHYXJiYWdl
KCk7CisgICAgICAgIHZhciBhZnRlciA9IGV4dGVybmFsTWVtb3J5KCk7CisgICAgICAgIGlmIChh
ZnRlciA8IG5vdyAtIG5vaXNlKSB7CisgICAgICAgICAgICBmYWlsKCJHYXJiYWdlIGNvbGxlY3Rp
b24gYWZ0ZXIgIiArIGV4cHJlc3Npb24gKyAiIGRlY3JlYXNlZCB0aGUgYW1vdW50IG9mIGV4dGVy
bmFsIG1lbW9yeSAoIiArCisgICAgICAgICAgICAgICAgIG5vdyArICIsICIgKyBhZnRlciArICIp
LiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFzcygiR2FyYmFnZSBjb2xsZWN0
aW9uIGFmdGVyICIgKyBleHByZXNzaW9uICsKKyAgICAgICAgICAgICAgICAgIiBkaWQgbm90IGRl
Y3JlYXNlIHRoZSBhbW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5LiIpOworICAgICAgICB9CisgICAg
fQorICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihNQik7CisgICAgdGVzdCgi
KG5ldyAgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKSkiKTsKKyAgICB0ZXN0KCIobmV3ICBGbG9h
dDY0QXJyYXkoYXJyYXlCdWZmZXIpKSIpOworICAgIHRlc3QoIihuZXcgIEludDhBcnJheShhcnJh
eUJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgSW50MTZBcnJheShhcnJheUJ1ZmZlcikpIik7
CisgICAgdGVzdCgiKG5ldyAgSW50MzJBcnJheShhcnJheUJ1ZmZlcikpIik7CisgICAgdGVzdCgi
KG5ldyAgVWludDhBcnJheShhcnJheUJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDE2
QXJyYXkoYXJyYXlCdWZmZXIpKSIpOworICAgIHRlc3QoIihuZXcgIFVpbnQzMkFycmF5KGFycmF5
QnVmZmVyKSkiKTsKKyAgICB2YXIgaW50OEFycmF5ID0gbmV3IEludDhBcnJheShNQik7CisgICAg
dGVzdCgiKG5ldyAgRmxvYXQzMkFycmF5KGludDhBcnJheS5idWZmZXIpKSIpOworICAgIHRlc3Qo
IihuZXcgIEZsb2F0NjRBcnJheShpbnQ4QXJyYXkuYnVmZmVyKSkiKTsKKyAgICB0ZXN0KCIobmV3
ICBJbnQ4QXJyYXkoaW50OEFycmF5LmJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgSW50MTZB
cnJheShpbnQ4QXJyYXkuYnVmZmVyKSkiKTsKKyAgICB0ZXN0KCIobmV3ICBJbnQzMkFycmF5KGlu
dDhBcnJheS5idWZmZXIpKSIpOworICAgIHRlc3QoIihuZXcgIFVpbnQ4QXJyYXkoaW50OEFycmF5
LmJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDE2QXJyYXkoaW50OEFycmF5LmJ1ZmZl
cikpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDMyQXJyYXkoaW50OEFycmF5LmJ1ZmZlcikpIik7
Cit9CisKKworZnVuY3Rpb24gdHJhbnNmZXJzVGhhdERlY3JlYXNlRXh0ZXJuYWxNZW1vcnkoKSB7
CisgICAgdmFyIHdvcmtlclNvdXJjZSA9CisiZnVuY3Rpb24gZXh0ZXJuYWxNZW1vcnkoKSB7XG4i
ICsKKyIgICAgcmV0dXJuIGdldFY4U3RhdGlzdGljcygpLmFtb3VudF9vZl9leHRlcm5hbF9hbGxv
Y2F0ZWRfbWVtb3J5O1xuIiArCisifVxuIiArCisiZnVuY3Rpb24gY29sbGVjdEdhcmJhZ2UoKSB7
XG4iICsKKyIgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSBnYygpO1xuIiArCisifVxu
IiArCisidmFyIGJlZm9yZSA9IGV4dGVybmFsTWVtb3J5KCk7XG4iICsKKyJzZWxmLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGUpIHtcbiIgKworIiAgICB2YXIgbm93ID0gZXh0ZXJuYWxNZW1vcnkoKTtc
biIgKworIiAgICBlLmRhdGEgPSBudWxsO1xuIiArCisiICAgIGNvbGxlY3RHYXJiYWdlKCk7XG4i
ICsKKyIgICAgdmFyIGFmdGVyID0gZXh0ZXJuYWxNZW1vcnkoKTtcbiIgKworIiAgICBzZWxmLnBv
c3RNZXNzYWdlKGJlZm9yZSArICcgJyArIG5vdyArICcgJyArIGFmdGVyKTtcbiIgKworIn1cbiI7
CisKKyAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFt3b3JrZXJTb3VyY2VdKTsKKyAgICB2YXIgd29y
a2VyID0gbmV3IFdvcmtlcih3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7
CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHByaW50KCJt
ZXNzYWdlIGZyb20gd29ya2VyOiAiICsgZS5kYXRhLCAiYmx1ZSIpOworICAgIH0KKyAgICBmdW5j
dGlvbiB0ZXN0KGV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2YXIgYnVmZmVyID0gZXZhbChl
eHByZXNzaW9uKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBiZWZvcmUgPSBleHRl
cm5hbE1lbW9yeSgpOworICAgICAgICAgICAgd29ya2VyLndlYmtpdFBvc3RNZXNzYWdlKGJ1ZmZl
ciwgW2J1ZmZlcl0pOworICAgICAgICAgICAgdmFyIG5vdyA9IGV4dGVybmFsTWVtb3J5KCk7Cisg
ICAgICAgICAgICBpZiAobm93ID4gYmVmb3JlIC0gTUIgKyBub2lzZSkgeworICAgICAgICAgICAg
ICAgIGZhaWwoIlRyYW5zZmVyIG9mICIgKyBleHByZXNzaW9uICsgIiBkaWQgbm90IGRlY3JlYXNl
IHRoZSBhbW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5ICgiICsKKyAgICAgICAgICAgICAgICAgICAg
IGJlZm9yZSArICIsICIgKyBub3cgKyAiKS4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcGFzcygiVHJhbnNmZXIgb2YgIiArIGV4cHJlc3Npb24gKyAiIGRlY3JlYXNl
ZCB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbGxlY3RHYXJiYWdlKCk7CisgICAgICAgICAgICB2YXIgYWZ0ZXIgPSBleHRlcm5h
bE1lbW9yeSgpOworICAgICAgICAgICAgaWYgKGFmdGVyIDwgbm93IC0gbm9pc2UpIHsKKyAgICAg
ICAgICAgICAgICBmYWlsKCJHYXJiYWdlIGNvbGxlY3Rpb24gYWZ0ZXIgdHJhbnNmZXIgb2YgIiAr
IGV4cHJlc3Npb24gKworICAgICAgICAgICAgICAgICAgICAgIiBkZWNyZWFzZWQgdGhlIGFtb3Vu
dCBvZiBleHRlcm5hbCBtZW1vcnkgKCIgKyBub3cgKyAiLCAiICsgYWZ0ZXIgKyAiKS4iKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFzcygiR2FyYmFnZSBjb2xsZWN0
aW9uIGFmdGVyIHRyYW5zZmVyIG9mICIgKyBleHByZXNzaW9uICsKKyAgICAgICAgICAgICAgICAg
ICAgICIgZGlkIG5vdCBkZWNyZWFzZSB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeS4iKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZmFpbCgi
VHJhbnNmZXIgb2YgIiArIG5hbWUgKyAiOiBjb3VsZCBub3Qgd2Via2l0UG9zdE1lc3NhZ2U6ICIg
KyBlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgdGVzdCgiKG5ldyBBcnJheUJ1ZmZlcihNQikpIik7CisgICAg
dGVzdCgiKG5ldyBGbG9hdDMyQXJyYXkoTUIpKS5idWZmZXIiKTsKKyAgICB0ZXN0KCIobmV3IEZs
b2F0NjRBcnJheShNQikpLmJ1ZmZlciIpOworICAgIHRlc3QoIihuZXcgSW50OEFycmF5KE1CKSku
YnVmZmVyIik7CisgICAgdGVzdCgiKG5ldyBJbnQxNkFycmF5KE1CKSkuYnVmZmVyIik7CisgICAg
dGVzdCgiKG5ldyBJbnQzMkFycmF5KE1CKSkuYnVmZmVyIik7CisgICAgdGVzdCgiKG5ldyBVaW50
OEFycmF5KE1CKSkuYnVmZmVyIik7CisgICAgdGVzdCgiKG5ldyBVaW50MTZBcnJheShNQikpLmJ1
ZmZlciIpOworICAgIHRlc3QoIihuZXcgVWludDMyQXJyYXkoTUIpKS5idWZmZXIiKTsKK30KKwor
CitmdW5jdGlvbiBydW5BbGwoKSB7CisgICAgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZzEiKTsKKyAgICBpZiAodHlwZW9mIGdjID09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiBnZXRW
OFN0YXRpc3RpY3MgPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgcHJpbnQoIlJ1biBjaHJvbWUg
YnJvd3NlciB3aXRoIC0tanMtZmxhZ3M9Jy0tZXhwb3NlX2djIC0tdHJhY2tfZ2Nfb2JqZWN0X3N0
YXRzJyIsICJyZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICAgYWxsb2NhdGlvbnNUaGF0SW5j
cmVhc2VFeHRlcm5hbE1lbW9yeSgpOworICAgICAgICAgY29sbGVjdEdhcmJhZ2UoKTsKKyAgICAg
ICAgIGFsbG9jYXRpb25zVGhhdERvTm90Q2hhbmdlRXh0ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAg
IGNvbGxlY3RHYXJiYWdlKCk7CisgICAgICAgICBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9nMiIpOworICAgICAgICAgdHJhbnNmZXJzVGhhdERlY3JlYXNlRXh0ZXJuYWxNZW1vcnko
KTsKKyAgICAgICAgIGNvbGxlY3RHYXJiYWdlKCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuQWxsKCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiB0eXBlZCBhcnJheXMgY29ycmVjdGx5Cith
ZGp1c3RzIHRoZSBhbW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5IGluIFY4LjwvcD4KKzxkaXYgaWQ9
J2xvZzEnPjwvZGl2PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRyYW5zZmVyIG9mIGFuIGFy
cmF5IGJ1ZmZlciB0byB3b3JrZXIgZGVjcmVhc2VzIGFtb3VudCBvZgorZXh0ZXJuYWwgbWVtb3J5
IGluIHRoZSBtYWluIFY4IGlzb2xhdGUuPC9wPgorPGRpdiBpZD0nbG9nMic+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159389</attachid>
            <date>2012-08-20 04:09:03 -0700</date>
            <delta_ts>2012-08-21 15:32:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92993-20120820130823.patch</filename>
            <type>text/plain</type>
            <size>20863</size>
            <attacher name="Ulan Degenbaev">ulan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NzhjOGVhNTFjNTVjM2NmYzc1NjNl
MjJkNDA1NjNiNTRiYzU2NGIuLjMyZWIyZWY3ZDc5ZWZjMDcyMTRjNjMyNjczNzZmYTQwZGQ1Yjgw
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDgtMjAgIFVsYW4gRGVnZW5iYWV2ICA8dWxh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FsbCBBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxs
b2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBjb25zdHJ1Y3RlZCBhbmQgZGVzdHJ1Y3Rl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5OTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIEFk
anVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyCisg
ICAgICAgIGlzIGNvbnN0cnVjdGVkIGFuZCBkZXN0cnVjdGVkIHNvIHRoYXQgVjgncyBnYXJiYWdl
IGNvbGxlY3Rpb24KKyAgICAgICAgaGV1cmlzdGljcyBjYW4gYWNjb3VudCBmb3IgdGhlIG1lbW9y
eSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAgKiB3dGYvQXJyYXlCdWZmZXIuaDoK
KyAgICAgICAgKFdURik6CisgICAgICAgIChBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVy
KToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXJDb250ZW50czo6QXJyYXlCdWZmZXJDb250ZW50
cyk6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyYW5zZmVyKToKKyAgICAg
ICAgKEFycmF5QnVmZmVyQ29udGVudHMpOgorICAgICAgICAoQXJyYXlCdWZmZXIpOgorICAgICAg
ICAoV1RGOjpBcnJheUJ1ZmZlcjo6c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAo
V1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzOjp+QXJyYXlCdWZmZXJDb250ZW50cyk6CisKIDIwMTIt
MDgtMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IGFiaWxpdHkgdG8gY3JlYXRlIEF0b21pY1N0cmluZyB1c2luZyBMQ2hhciogYnVmZmVyIGFuZCBs
ZW5ndGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1MjVkMmNjNWVlMTNlNGM1MjY2ZTIzM2QzNWE5NDk4MDg1NzI5
ZGE5Li44OWNlNTBmYzM5ZDg3OTQ3YmIxMTg3ZjM5NDk3ZGViYmI3YWU5MjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDgtMjAgIFVsYW4gRGVnZW5iYWV2ICA8dWxhbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgQ2FsbCBBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVk
TWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBjb25zdHJ1Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIEFkanVzdEFt
b3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkgd2hlbiBWOEFycmF5QnVmZmVyCisgICAgICAg
IGlzIGNvbnN0cnVjdGVkIGFuZCBkZXN0cnVjdGVkIHNvIHRoYXQgVjgncyBnYXJiYWdlIGNvbGxl
Y3Rpb24KKyAgICAgICAgaGV1cmlzdGljcyBjYW4gYWNjb3VudCBmb3IgdGhlIG1lbW9yeSBoZWxk
IGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEFycmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXI6Omluc3RhbmNlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxs
YmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3Ry
dWN0V2ViR0xBcnJheSk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorCiAyMDEyLTA4LTE4ICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1ha2UgcHJvZmlsZXMgcGFuZWwgYSBsYXppbHkgbG9hZGVkIG1vZHVsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZl
ci5oCmluZGV4IGQyYzcyNDk3OGIyZDQ0ZWNlZWFjMWZhYzQyYjJjODMzY2IyMGE5N2EuLmFhNTlj
ZjczM2IwNGVhODllN2U0NTgwOWEwOWVhNDZlN2M4ZGUzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaApA
QCAtMzYsMTIgKzM2LDI1IEBAIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgQXJyYXlCdWZmZXI7CiBj
bGFzcyBBcnJheUJ1ZmZlclZpZXc7CiAKKyNpZiBkZWZpbmVkKFdURl9VU0VfVjgpCisvLyBUaGUg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgdGhlIGluc3RhbmNlIG9mIHRoaXMg
Y2xhc3MgaXMgYQorLy8gc2luZ2xldG9uIGxpdmluZyBmb3IgdGhlIGVudGlyZSBwcm9jZXNzJ3Mg
bGlmZXRpbWUuCitjbGFzcyBBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgQXJyYXlCdWZmZXJEZWFsbG9jYXRlZCh1bnNpZ25lZCBzaXpl
SW5CeXRlcykgPSAwOworfTsKKyNlbmRpZgorCisKIGNsYXNzIEFycmF5QnVmZmVyQ29udGVudHMg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFycmF5QnVmZmVyQ29udGVudHMpOwogcHVibGlj
OgogICAgIEFycmF5QnVmZmVyQ29udGVudHMoKSAKICAgICAgICAgOiBtX2RhdGEoMCkKICAgICAg
ICAgLCBtX3NpemVJbkJ5dGVzKDApCisjaWYgZGVmaW5lZChXVEZfVVNFX1Y4KQorICAgICAgICAs
IG1fZGVhbGxvY2F0aW9uT2JzZXJ2ZXIoMCkKKyNlbmRpZgogICAgIHsgfQogCiAgICAgaW5saW5l
IH5BcnJheUJ1ZmZlckNvbnRlbnRzKCk7CkBAIC01Myw2ICs2Niw5IEBAIHByaXZhdGU6CiAgICAg
QXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcykgCiAg
ICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgICAgICwgbV9zaXplSW5CeXRlcyhzaXplSW5CeXRl
cykKKyNpZiBkZWZpbmVkKFdURl9VU0VfVjgpCisgICAgICAgICwgbV9kZWFsbG9jYXRpb25PYnNl
cnZlcigwKQorI2VuZGlmCiAgICAgeyB9CiAKICAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7
CkBAIC03MCwxMCArODYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgb3RoZXIubV9zaXplSW5CeXRl
cyA9IG1fc2l6ZUluQnl0ZXM7CiAgICAgICAgIG1fZGF0YSA9IDA7CiAgICAgICAgIG1fc2l6ZUlu
Qnl0ZXMgPSAwOworI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkKKyAgICAgICAgLy8gTm90aWZ5IHRo
ZSBjdXJyZW50IFY4IGlzb2xhdGUgdGhhdCB0aGUgYnVmZmVyIGlzIGdvbmUuCisgICAgICAgIGlm
IChtX2RlYWxsb2NhdGlvbk9ic2VydmVyKQorICAgICAgICAgICAgbV9kZWFsbG9jYXRpb25PYnNl
cnZlci0+QXJyYXlCdWZmZXJEZWFsbG9jYXRlZChvdGhlci5tX3NpemVJbkJ5dGVzKTsKKyAgICAg
ICAgQVNTRVJUKCFvdGhlci5tX2RlYWxsb2NhdGlvbk9ic2VydmVyKTsKKyAgICAgICAgbV9kZWFs
bG9jYXRpb25PYnNlcnZlciA9IDA7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkKiBtX2RhdGE7
CiAgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKKworI2lmIGRlZmluZWQoV1RGX1VTRV9WOCkK
KyAgICBBcnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyKiBtX2RlYWxsb2NhdGlvbk9ic2Vy
dmVyOworI2VuZGlmCiB9OwogCiBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEFycmF5QnVmZmVyPiB7CkBAIC05OSw2ICsxMjYsMTMgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMmLCBWZWN0b3I8UmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7CiAgICAgYm9vbCBpc05ldXRl
cmVkKCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRhOyB9CiAKKyNpZiBkZWZpbmVkKFdURl9V
U0VfVjgpCisgICAgdm9pZCBzZXREZWFsbG9jYXRpb25PYnNlcnZlcihBcnJheUJ1ZmZlckRlYWxs
b2NhdGlvbk9ic2VydmVyKiBkZWFsbG9jYXRpb25PYnNlcnZlcikKKyAgICB7CisgICAgICAgIG1f
Y29udGVudHMubV9kZWFsbG9jYXRpb25PYnNlcnZlciA9IGRlYWxsb2NhdGlvbk9ic2VydmVyOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgfkFycmF5QnVmZmVyKCkgeyB9CiAKIHByaXZhdGU6CkBAIC0y
MzgsNiArMjcyLDEwIEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAKIEFycmF5QnVmZmVyQ29u
dGVudHM6On5BcnJheUJ1ZmZlckNvbnRlbnRzKCkKIHsKKyNpZiBkZWZpbmVkIChXVEZfVVNFX1Y4
KQorICAgIGlmIChtX2RlYWxsb2NhdGlvbk9ic2VydmVyKQorICAgICAgICBtX2RlYWxsb2NhdGlv
bk9ic2VydmVyLT5BcnJheUJ1ZmZlckRlYWxsb2NhdGVkKG1fc2l6ZUluQnl0ZXMpOworI2VuZGlm
CiAgICAgV1RGOjpmYXN0RnJlZShtX2RhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMmQ3
NzNlNDNhNWE4ZjMzYjkwMzQ4ZjdkMGU1ODI1N2I0ZGE2N2MxNy4uZjJlNGFlODkyM2QyMzIwYzhj
MmFjMzdmNDhmMTUwNWY0MTMyYzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjMwOCw2ICsyMzA4
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uaCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCmluZGV4IGFkYmVhY2RmOGVlYWViM2I3MDMzYjc4
MWNjMWVmOGZiNTc0NmQ1ZTUuLjY3MmMyYWI5ZDVhZGI0ZDQ3MmFmNDI0ZjUxZjlmYTkwYjE4YjNk
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTI5LDE1ICsyOSwyNSBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyQ3VzdG9tLmgiCisKICNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWOEFycmF5QnVmZmVyRGVhbGxv
Y2F0aW9uT2JzZXJ2ZXIqIFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFu
Y2UoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVjhBcnJheUJ1ZmZlckRlYWxsb2NhdGlv
bk9ic2VydmVyLCBkZWFsbG9jYXRpb25PYnNlcnZlciwgKCkpOworICAgIHJldHVybiAmZGVhbGxv
Y2F0aW9uT2JzZXJ2ZXI7Cit9CisKKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZm
ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5BcnJheUJ1ZmZlci5Db25zdHJ1Y3RvciIpOwpAQCAtNzEsNiArODEs
OCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgICAgICBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpLCAxKTsKICAgICBpZiAoIWJ1
ZmZlci5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgIkFycmF5
QnVmZmVyIHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIiwgYXJn
cy5HZXRJc29sYXRlKCkpOworICAgIGJ1ZmZlci0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhB
cnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKKyAgICB2ODo6Vjg6
OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBm
b3IgdGhlIGFycmF5LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3Mu
SG9sZGVyKCk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZv
LCBidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYwZmU4YzEwMTQ4YzYx
ZTUyMDA1NmEyMjk1ODU3Zjc4OWEwYzJhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmgKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgVjhBcnJheUJ1ZmZlckN1c3RvbV9oCisj
ZGVmaW5lIFY4QXJyYXlCdWZmZXJDdXN0b21faAorCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOEFy
cmF5QnVmZmVyRGVhbGxvY2F0aW9uT2JzZXJ2ZXI6IHB1YmxpYyBXVEY6OkFycmF5QnVmZmVyRGVh
bGxvY2F0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBBcnJheUJ1ZmZl
ckRlYWxsb2NhdGVkKHVuc2lnbmVkIHNpemVJbkJ5dGVzKQorICAgIHsKKyAgICAgICAgdjg6OlY4
OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KC1zdGF0aWNfY2FzdDxpbnQ+
KHNpemVJbkJ5dGVzKSk7CisgICAgfQorICAgIHN0YXRpYyBWOEFycmF5QnVmZmVyRGVhbGxvY2F0
aW9uT2JzZXJ2ZXIqIGluc3RhbmNlKCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBWOEFycmF5QnVm
ZmVyQ3VzdG9tX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwCmluZGV4IDhjNzNmNDg4ODY0MWVi
ZGY3M2MxNTJiNWI3M2M4ZDM2YThiMDAyMGMuLjdjZWYyYzczZDdjMzAyZjc4MWFmMTA0ZjE1Zjkx
ZTc0ZmY4MGMzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcApAQCAtMSw0ICsxLDMgQEAK
LQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggOTNiMjQyYTA1MDlhZGRhYTFiZjcw
Nzg5YWM1NjJlOGRlMGU2ODJlZC4uMTJiZTViMzA5YTliNTY5M2U5ZjFmMTFlYmVjNjY3ODc3MWMz
YjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJy
YXlCdWZmZXJWaWV3Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVk
ZSAiVjhBcnJheUJ1ZmZlckN1c3RvbS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1
ZGUgIlY4UHJveHkuaCIKIApAQCAtMTQ3LDYgKzE0OCw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb25zdHJ1Y3RXZWJHTEFycmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJU
eXBlCiAgICAgICAgIGlmICghYXJyYXkuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihSYW5nZUVycm9yLCB0b29MYXJnZVNpemUsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAorICAg
ICAgICBhcnJheS0+YnVmZmVyKCktPnNldERlYWxsb2NhdGlvbk9ic2VydmVyKFY4QXJyYXlCdWZm
ZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2UoKSk7CisgICAgICAgIHY4OjpWODo6QWRq
dXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShhcnJheS0+Ynl0ZUxlbmd0aCgpKTsK
KwogICAgICAgICBtZW1jcHkoYXJyYXktPmJhc2VBZGRyZXNzKCksIHNvdXJjZS0+YmFzZUFkZHJl
c3MoKSwgbGVuZ3RoICogc2l6ZW9mKEVsZW1lbnRUeXBlKSk7CiAKICAgICAgICAgcmV0dXJuIHdy
YXBBcnJheUJ1ZmZlclZpZXcoYXJncywgdHlwZSwgYXJyYXksIGFycmF5VHlwZSwgdHJ1ZSk7CkBA
IC0xODIsNiArMTg2LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFy
cmF5KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgaWYgKCFhcnJh
eS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoUmFuZ2VFcnJvciwgdG9vTGFyZ2VT
aXplLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKKyAgICBpZiAoZG9JbnN0YW50aWF0aW9uKSB7Cisg
ICAgICAgIGFycmF5LT5idWZmZXIoKS0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJheUJ1
ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKKyAgICAgICAgdjg6OlY4OjpB
ZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KGFycmF5LT5ieXRlTGVuZ3RoKCkp
OworICAgIH0KKwogCiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIg
b2JqZWN0IGZvciB0aGUgYXJyYXkuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFy
Z3MuSG9sZGVyKCksIHR5cGUsIGFycmF5LmdldCgpKTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCBiMTQxZjJkMmYwYzA4NjZjNzdlNjYwYjI4NGUxY2M0ZDg2ZDU2OTM0
Li4wY2I4ODg4MGY0YmIxZjdjYTdkYzkwYThmN2E3NzY1MDM0NjcxMWRkIDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMjAgIFVs
YW4gRGVnZW5iYWV2ICA8dWxhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FsbCBBZGp1c3RB
bW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5IHdoZW4gVjhBcnJheUJ1ZmZlciBjb25zdHJ1
Y3RlZCBhbmQgZGVzdHJ1Y3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTI5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYWxsIEFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkgd2hl
biBWOEFycmF5QnVmZmVyCisgICAgICAgIGlzIGNvbnN0cnVjdGVkIGFuZCBkZXN0cnVjdGVkIHNv
IHRoYXQgVjgncyBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgaGV1cmlzdGljcyBjYW4gYWNj
b3VudCBmb3IgdGhlIG1lbW9yeSBoZWxkIGJ5IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAgKiBN
YW51YWxUZXN0cy90eXBlZC1hcnJheS1tZW1vcnkuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMTcg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtD
TWFrZV0gQWRkIEZpbmREQnVzLmNtYWtlIGFuZCB1c2UgaXQgaW4gdGhlIEVGTCBwb3J0LgpkaWZm
IC0tZ2l0IGEvTWFudWFsVGVzdHMvdHlwZWQtYXJyYXktbWVtb3J5Lmh0bWwgYi9NYW51YWxUZXN0
cy90eXBlZC1hcnJheS1tZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDYyNDI5OWIxNmU1MjVmYjE2
MTE0NjJlMTJjZmQ2ZmI4Y2VmMmMxCi0tLSAvZGV2L251bGwKKysrIGIvTWFudWFsVGVzdHMvdHlw
ZWQtYXJyYXktbWVtb3J5Lmh0bWwKQEAgLTAsMCArMSwyMjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+QXJyYXlCdWZmZXIgRXh0ZXJuYWwgTWVtb3J5IHRlc3Q8L3RpdGxlPgorPHNjcmlwdD4K
KwordmFyIGxvZzsKK2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQoreworICAgIHZhciBw
YXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGgu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFn
cmFwaC5zdHlsZS5mb250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAg
ICAgICBwYXJhZ3JhcGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBsb2cuYXBwZW5kQ2hpbGQo
cGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gcGFzcyhtc2cpCit7CisgICAgcHJpbnQoIlBBU1M6
ICIgKyBtc2csICJncmVlbiIpOworfQorCitmdW5jdGlvbiBmYWlsKG1zZykKK3sKKyAgICBwcmlu
dCgiRkFJTDogIiArIG1zZywgInJlZCIpOworfQorCit2YXIgS0IgPSAxMDI0OwordmFyIE1CID0g
S0IgKiBLQjsKK3ZhciBub2lzZSA9IEtCOworCitmdW5jdGlvbiBleHRlcm5hbE1lbW9yeSgpIHsK
KyAgICByZXR1cm4gZ2V0VjhTdGF0aXN0aWNzKCkuYW1vdW50X29mX2V4dGVybmFsX2FsbG9jYXRl
ZF9tZW1vcnk7Cit9CisKK2Z1bmN0aW9uIGNvbGxlY3RHYXJiYWdlKCkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTA7IGkrKykgZ2MoKTsKK30KKworZnVuY3Rpb24gYWxsb2NhdGlvbnNUaGF0
SW5jcmVhc2VFeHRlcm5hbE1lbW9yeSgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0KGV4cHJlc3Npb24p
IHsKKyAgICAgICAgdmFyIGJlZm9yZSA9IGV4dGVybmFsTWVtb3J5KCk7CisgICAgICAgIChmdW5j
dGlvbiAoKSB7IGV2YWwoZXhwcmVzc2lvbik7IH0pICgpOworICAgICAgICB2YXIgbm93ID0gZXh0
ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAgaWYgKG5vdyA8IGJlZm9yZSArIE1CIC0gbm9pc2UpIHsK
KyAgICAgICAgICAgIGZhaWwoZXhwcmVzc2lvbiArICIgZGlkIG5vdCBpbmNyZWFzZSB0aGUgYW1v
dW50IG9mIGV4dGVybmFsIG1lbW9yeSAoIiArCisgICAgICAgICAgICAgICAgICBiZWZvcmUgKyAi
LCAiICsgbm93ICsgIikuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXNzKGV4
cHJlc3Npb24gKyAiIGluY3JlYXNlZCB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeS4iKTsK
KyAgICAgICAgfQorICAgICAgICBjb2xsZWN0R2FyYmFnZSgpOworICAgICAgICB2YXIgYWZ0ZXIg
PSBleHRlcm5hbE1lbW9yeSgpOworICAgICAgICBpZiAoYWZ0ZXIgPiBub3cgKyBub2lzZSkgewor
ICAgICAgICAgICAgZmFpbCgiR2FyYmFnZSBjb2xsZWN0aW9uIGFmdGVyICIgKyBleHByZXNzaW9u
ICsKKyAgICAgICAgICAgICAgICAgIiBkaWQgbm90IHJldHVybiB0aGUgYW1vdW50IG9mIGV4dGVy
bmFsIG1lbW9yeSB0byB0aGUgaW5pdGlhbCB2YWx1ZSAoIiArCisgICAgICAgICAgICAgICAgIG5v
dyArICIsICIgKyBhZnRlciArICIpLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cGFzcygiR2FyYmFnZSBjb2xsZWN0aW9uIGFmdGVyICIgKyBleHByZXNzaW9uICsKKyAgICAgICAg
ICAgICAgICAgIiByZXR1cm5lZCB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeSB0byB0aGUg
aW5pdGlhbCB2YWx1ZS4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlc3QoIihuZXcgQXJy
YXlCdWZmZXIoTUIpKSIpOworICAgIHRlc3QoIihuZXcgRmxvYXQzMkFycmF5KE1CKSkiKTsKKyAg
ICB0ZXN0KCIobmV3IEZsb2F0NjRBcnJheShNQikpIik7CisgICAgdGVzdCgiKG5ldyBJbnQ4QXJy
YXkoTUIpKSIpOworICAgIHRlc3QoIihuZXcgSW50MTZBcnJheShNQikpIik7CisgICAgdGVzdCgi
KG5ldyBJbnQzMkFycmF5KE1CKSkiKTsKKyAgICB0ZXN0KCIobmV3IFVpbnQ4QXJyYXkoTUIpKSIp
OworICAgIHRlc3QoIihuZXcgVWludDE2QXJyYXkoTUIpKSIpOworICAgIHRlc3QoIihuZXcgVWlu
dDMyQXJyYXkoTUIpKSIpOworICAgIHZhciBsYXJnZUpTQXJyYXkgPSBbXTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IE1COyBpKyspIGxhcmdlSlNBcnJheS5wdXNoKGkpOworICAgIHRlc3QoIihu
ZXcgRmxvYXQzMkFycmF5KGxhcmdlSlNBcnJheSkpIik7CisgICAgdGVzdCgiKG5ldyBGbG9hdDY0
QXJyYXkobGFyZ2VKU0FycmF5KSkiKTsKKyAgICB0ZXN0KCIobmV3IEludDhBcnJheShsYXJnZUpT
QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgSW50MTZBcnJheShsYXJnZUpTQXJyYXkpKSIpOwor
ICAgIHRlc3QoIihuZXcgSW50MzJBcnJheShsYXJnZUpTQXJyYXkpKSIpOworICAgIHRlc3QoIihu
ZXcgVWludDhBcnJheShsYXJnZUpTQXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgVWludDE2QXJy
YXkobGFyZ2VKU0FycmF5KSkiKTsKKyAgICB0ZXN0KCIobmV3IFVpbnQzMkFycmF5KGxhcmdlSlNB
cnJheSkpIik7CisgICAgdmFyIGludDhBcnJheSA9IG5ldyBJbnQ4QXJyYXkoTUIpOworICAgIHRl
c3QoIihuZXcgIEZsb2F0MzJBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIEZs
b2F0NjRBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIEludDhBcnJheShpbnQ4
QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIEludDE2QXJyYXkoaW50OEFycmF5KSkiKTsKKyAg
ICB0ZXN0KCIobmV3ICBJbnQzMkFycmF5KGludDhBcnJheSkpIik7CisgICAgdGVzdCgiKG5ldyAg
VWludDhBcnJheShpbnQ4QXJyYXkpKSIpOworICAgIHRlc3QoIihuZXcgIFVpbnQxNkFycmF5KGlu
dDhBcnJheSkpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDMyQXJyYXkoaW50OEFycmF5KSkiKTsK
K30KKworCitmdW5jdGlvbiBhbGxvY2F0aW9uc1RoYXREb05vdENoYW5nZUV4dGVybmFsTWVtb3J5
KCkgeworICAgIGZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbikgeworICAgICAgICB2YXIgYmVmb3Jl
ID0gZXh0ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAgKGZ1bmN0aW9uICgpIHsgZXZhbChleHByZXNz
aW9uKTsgfSkgKCk7CisgICAgICAgIHZhciBub3cgPSBleHRlcm5hbE1lbW9yeSgpOworICAgICAg
ICBpZiAobm93ID4gYmVmb3JlICsgbm9pc2UpIHsKKyAgICAgICAgICAgIGZhaWwoZXhwcmVzc2lv
biArICIgaW5jcmVhc2VkIHRoZSBhbW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5ICgiICsgYmVmb3Jl
ICsgIiwgIiArIG5vdyArICIpLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFz
cyhleHByZXNzaW9uICsgIiBkaWQgbm90IGluY3JlYXNlIHRoZSBhbW91bnQgb2YgZXh0ZXJuYWwg
bWVtb3J5LiIpOworICAgICAgICB9CisgICAgICAgIGNvbGxlY3RHYXJiYWdlKCk7CisgICAgICAg
IHZhciBhZnRlciA9IGV4dGVybmFsTWVtb3J5KCk7CisgICAgICAgIGlmIChhZnRlciA8IG5vdyAt
IG5vaXNlKSB7CisgICAgICAgICAgICBmYWlsKCJHYXJiYWdlIGNvbGxlY3Rpb24gYWZ0ZXIgIiAr
IGV4cHJlc3Npb24gKyAiIGRlY3JlYXNlZCB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeSAo
IiArCisgICAgICAgICAgICAgICAgIG5vdyArICIsICIgKyBhZnRlciArICIpLiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcGFzcygiR2FyYmFnZSBjb2xsZWN0aW9uIGFmdGVyICIg
KyBleHByZXNzaW9uICsKKyAgICAgICAgICAgICAgICAgIiBkaWQgbm90IGRlY3JlYXNlIHRoZSBh
bW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5LiIpOworICAgICAgICB9CisgICAgfQorICAgIHZhciBh
cnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihNQik7CisgICAgdGVzdCgiKG5ldyAgRmxvYXQz
MkFycmF5KGFycmF5QnVmZmVyKSkiKTsKKyAgICB0ZXN0KCIobmV3ICBGbG9hdDY0QXJyYXkoYXJy
YXlCdWZmZXIpKSIpOworICAgIHRlc3QoIihuZXcgIEludDhBcnJheShhcnJheUJ1ZmZlcikpIik7
CisgICAgdGVzdCgiKG5ldyAgSW50MTZBcnJheShhcnJheUJ1ZmZlcikpIik7CisgICAgdGVzdCgi
KG5ldyAgSW50MzJBcnJheShhcnJheUJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDhB
cnJheShhcnJheUJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgVWludDE2QXJyYXkoYXJyYXlC
dWZmZXIpKSIpOworICAgIHRlc3QoIihuZXcgIFVpbnQzMkFycmF5KGFycmF5QnVmZmVyKSkiKTsK
KyAgICB2YXIgaW50OEFycmF5ID0gbmV3IEludDhBcnJheShNQik7CisgICAgdGVzdCgiKG5ldyAg
RmxvYXQzMkFycmF5KGludDhBcnJheS5idWZmZXIpKSIpOworICAgIHRlc3QoIihuZXcgIEZsb2F0
NjRBcnJheShpbnQ4QXJyYXkuYnVmZmVyKSkiKTsKKyAgICB0ZXN0KCIobmV3ICBJbnQ4QXJyYXko
aW50OEFycmF5LmJ1ZmZlcikpIik7CisgICAgdGVzdCgiKG5ldyAgSW50MTZBcnJheShpbnQ4QXJy
YXkuYnVmZmVyKSkiKTsKKyAgICB0ZXN0KCIobmV3ICBJbnQzMkFycmF5KGludDhBcnJheS5idWZm
ZXIpKSIpOworICAgIHRlc3QoIihuZXcgIFVpbnQ4QXJyYXkoaW50OEFycmF5LmJ1ZmZlcikpIik7
CisgICAgdGVzdCgiKG5ldyAgVWludDE2QXJyYXkoaW50OEFycmF5LmJ1ZmZlcikpIik7CisgICAg
dGVzdCgiKG5ldyAgVWludDMyQXJyYXkoaW50OEFycmF5LmJ1ZmZlcikpIik7Cit9CisKKworZnVu
Y3Rpb24gdHJhbnNmZXJzVGhhdERlY3JlYXNlRXh0ZXJuYWxNZW1vcnkoKSB7CisgICAgdmFyIHdv
cmtlclNvdXJjZSA9CisiZnVuY3Rpb24gZXh0ZXJuYWxNZW1vcnkoKSB7XG4iICsKKyIgICAgcmV0
dXJuIGdldFY4U3RhdGlzdGljcygpLmFtb3VudF9vZl9leHRlcm5hbF9hbGxvY2F0ZWRfbWVtb3J5
O1xuIiArCisifVxuIiArCisiZnVuY3Rpb24gY29sbGVjdEdhcmJhZ2UoKSB7XG4iICsKKyIgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSBnYygpO1xuIiArCisifVxuIiArCisidmFyIGJl
Zm9yZSA9IGV4dGVybmFsTWVtb3J5KCk7XG4iICsKKyJzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGUpIHtcbiIgKworIiAgICB2YXIgbm93ID0gZXh0ZXJuYWxNZW1vcnkoKTtcbiIgKworIiAgICBl
LmRhdGEgPSBudWxsO1xuIiArCisiICAgIGNvbGxlY3RHYXJiYWdlKCk7XG4iICsKKyIgICAgdmFy
IGFmdGVyID0gZXh0ZXJuYWxNZW1vcnkoKTtcbiIgKworIiAgICBzZWxmLnBvc3RNZXNzYWdlKGJl
Zm9yZSArICcgJyArIG5vdyArICcgJyArIGFmdGVyKTtcbiIgKworIn1cbiI7CisKKyAgICB2YXIg
YmxvYiA9IG5ldyBCbG9iKFt3b3JrZXJTb3VyY2VdKTsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdv
cmtlcih3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7CisgICAgd29ya2Vy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHByaW50KCJtZXNzYWdlIGZyb20g
d29ya2VyOiAiICsgZS5kYXRhLCAiYmx1ZSIpOworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0KGV4
cHJlc3Npb24pCisgICAgeworICAgICAgICB2YXIgYnVmZmVyID0gZXZhbChleHByZXNzaW9uKTsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBiZWZvcmUgPSBleHRlcm5hbE1lbW9yeSgp
OworICAgICAgICAgICAgd29ya2VyLndlYmtpdFBvc3RNZXNzYWdlKGJ1ZmZlciwgW2J1ZmZlcl0p
OworICAgICAgICAgICAgdmFyIG5vdyA9IGV4dGVybmFsTWVtb3J5KCk7CisgICAgICAgICAgICBp
ZiAobm93ID4gYmVmb3JlIC0gTUIgKyBub2lzZSkgeworICAgICAgICAgICAgICAgIGZhaWwoIlRy
YW5zZmVyIG9mICIgKyBleHByZXNzaW9uICsgIiBkaWQgbm90IGRlY3JlYXNlIHRoZSBhbW91bnQg
b2YgZXh0ZXJuYWwgbWVtb3J5ICgiICsKKyAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSArICIs
ICIgKyBub3cgKyAiKS4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cGFzcygiVHJhbnNmZXIgb2YgIiArIGV4cHJlc3Npb24gKyAiIGRlY3JlYXNlZCB0aGUgYW1vdW50
IG9mIGV4dGVybmFsIG1lbW9yeS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbGxl
Y3RHYXJiYWdlKCk7CisgICAgICAgICAgICB2YXIgYWZ0ZXIgPSBleHRlcm5hbE1lbW9yeSgpOwor
ICAgICAgICAgICAgaWYgKGFmdGVyIDwgbm93IC0gbm9pc2UpIHsKKyAgICAgICAgICAgICAgICBm
YWlsKCJHYXJiYWdlIGNvbGxlY3Rpb24gYWZ0ZXIgdHJhbnNmZXIgb2YgIiArIGV4cHJlc3Npb24g
KworICAgICAgICAgICAgICAgICAgICAgIiBkZWNyZWFzZWQgdGhlIGFtb3VudCBvZiBleHRlcm5h
bCBtZW1vcnkgKCIgKyBub3cgKyAiLCAiICsgYWZ0ZXIgKyAiKS4iKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgcGFzcygiR2FyYmFnZSBjb2xsZWN0aW9uIGFmdGVyIHRy
YW5zZmVyIG9mICIgKyBleHByZXNzaW9uICsKKyAgICAgICAgICAgICAgICAgICAgICIgZGlkIG5v
dCBkZWNyZWFzZSB0aGUgYW1vdW50IG9mIGV4dGVybmFsIG1lbW9yeS4iKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZmFpbCgiVHJhbnNmZXIgb2Yg
IiArIG5hbWUgKyAiOiBjb3VsZCBub3Qgd2Via2l0UG9zdE1lc3NhZ2U6ICIgKyBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgdGVzdCgiKG5ldyBBcnJheUJ1ZmZlcihNQikpIik7CisgICAgdGVzdCgiKG5ldyBG
bG9hdDMyQXJyYXkoTUIpKS5idWZmZXIiKTsKKyAgICB0ZXN0KCIobmV3IEZsb2F0NjRBcnJheShN
QikpLmJ1ZmZlciIpOworICAgIHRlc3QoIihuZXcgSW50OEFycmF5KE1CKSkuYnVmZmVyIik7Cisg
ICAgdGVzdCgiKG5ldyBJbnQxNkFycmF5KE1CKSkuYnVmZmVyIik7CisgICAgdGVzdCgiKG5ldyBJ
bnQzMkFycmF5KE1CKSkuYnVmZmVyIik7CisgICAgdGVzdCgiKG5ldyBVaW50OEFycmF5KE1CKSku
YnVmZmVyIik7CisgICAgdGVzdCgiKG5ldyBVaW50MTZBcnJheShNQikpLmJ1ZmZlciIpOworICAg
IHRlc3QoIihuZXcgVWludDMyQXJyYXkoTUIpKS5idWZmZXIiKTsKK30KKworCitmdW5jdGlvbiBy
dW5BbGwoKSB7CisgICAgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZzEiKTsKKyAg
ICBpZiAodHlwZW9mIGdjID09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiBnZXRWOFN0YXRpc3RpY3Mg
PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgcHJpbnQoIlJ1biBjaHJvbWUgYnJvd3NlciB3aXRo
IC0tanMtZmxhZ3M9Jy0tZXhwb3NlX2djIC0tdHJhY2tfZ2Nfb2JqZWN0X3N0YXRzJyIsICJyZWQi
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAgYWxsb2NhdGlvbnNUaGF0SW5jcmVhc2VFeHRlcm5h
bE1lbW9yeSgpOworICAgICAgICAgY29sbGVjdEdhcmJhZ2UoKTsKKyAgICAgICAgIGFsbG9jYXRp
b25zVGhhdERvTm90Q2hhbmdlRXh0ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAgIGNvbGxlY3RHYXJi
YWdlKCk7CisgICAgICAgICBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nMiIpOwor
ICAgICAgICAgdHJhbnNmZXJzVGhhdERlY3JlYXNlRXh0ZXJuYWxNZW1vcnkoKTsKKyAgICAgICAg
IGNvbGxlY3RHYXJiYWdlKCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuQWxsKCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFsbG9jYXRpb24g
YW5kIGRlYWxsb2NhdGlvbiBvZiB0eXBlZCBhcnJheXMgY29ycmVjdGx5CithZGp1c3RzIHRoZSBh
bW91bnQgb2YgZXh0ZXJuYWwgbWVtb3J5IGluIFY4LjwvcD4KKzxkaXYgaWQ9J2xvZzEnPjwvZGl2
PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRyYW5zZmVyIG9mIGFuIGFycmF5IGJ1ZmZlciB0
byB3b3JrZXIgZGVjcmVhc2VzIGFtb3VudCBvZgorZXh0ZXJuYWwgbWVtb3J5IGluIHRoZSBtYWlu
IFY4IGlzb2xhdGUuPC9wPgorPGRpdiBpZD0nbG9nMic+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>