<?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>23587</bug_id>
          
          <creation_ts>2009-01-28 08:47:26 -0800</creation_ts>
          <short_desc>Eliminate boolean arguments in HitTestRequest ctor and replace with enum</short_desc>
          <delta_ts>2009-02-02 12:47:06 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Treat">manyoso</reporter>
          <assigned_to name="Adam Treat">manyoso</assigned_to>
          <cc>levin</cc>
    
    <cc>staikos</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107330</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-01-28 08:47:26 -0800</bug_when>
    <thetext>The WebCore::HitTestRequest class has too many boolean arguments in the constructor.  This should be refactored to replace the boolean arguments with an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107917</commentid>
    <comment_count>1</comment_count>
      <attachid>27236</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-01 15:48:34 -0800</bug_when>
    <thetext>Created attachment 27236
Eliminate bools from HitTestRequest

Patch to eliminate ugly boolean arguments to HitTestRequest ctor.  Refactor and cleanup all the code that constructs and uses HitTestRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107918</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-01 16:51:59 -0800</bug_when>
    <thetext>enum RequestType {
    ReadOnly = 0x0,
    Active = 0x1,
    MouseMove = 0x2,
    MouseUp = 0x4,
    ClipToVisible = 0x8
 };

I think it should be

enum RequestType {
    ReadOnly = 0x1,
    Active = 0x2,
    MouseMove = 0x4,
    MouseUp = 0x8,
    ClipToVisible = 0x10
 };

(right now readOnly() is never true.)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107919</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-02-01 16:57:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (right now readOnly() is never true.)

Yes, and I also think ClipToVisible obfuscates the code a bit. How about calling it &apos;IgnoreClipping&apos; or sth. along the lines, to not force most call-sites to add the HitTestRequest::ClipToVisible flag. It&apos;s also a dangerous default behaviour to force callers to enable it explicitely. There is only a Qt platform specific codepath, that actually needs ClipToVisible.

Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107923</commentid>
    <comment_count>4</comment_count>
      <attachid>27238</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-01 17:45:54 -0800</bug_when>
    <thetext>Created attachment 27238
New version to incorporate comments

ClipToVisible -&gt; IgnoreClipping

Fix the bitflags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107924</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-01 17:51:48 -0800</bug_when>
    <thetext>Latest patch has teensy oops at EventHandler.cpp:733.  I&apos;ve fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107960</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-02-02 06:43:14 -0800</bug_when>
    <thetext>Do you need to update the EventHandler.h hitTestResultAtPoint to change clipToVisible and flip the bool?

WebCore/page/EventHandler.cpp:727:        result = mainFrame-&gt;eventHandler()-&gt;hitTestResultAtPoint(mainFramePoint, allowShadowContent, clipToVisible);



</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107962</commentid>
    <comment_count>7</comment_count>
      <attachid>27246</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-02 07:13:12 -0800</bug_when>
    <thetext>Created attachment 27246
Fixing oops and flip bool

New version flips the bool and updates the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107964</commentid>
    <comment_count>8</comment_count>
      <attachid>27246</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-02-02 07:53:06 -0800</bug_when>
    <thetext>Comment on attachment 27246
Fixing oops and flip bool

Looks great, r=me, in case no layout test broke.
Adam, can you verify that it doesn&apos;t break any mac layout test? If not, I can try the patch first, just mail me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107965</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-02 08:03:38 -0800</bug_when>
    <thetext>Niko, unfortunately I can not verify as I don&apos;t own a mac.  Please apply the patch and let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107966</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-02-02 08:06:00 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Niko, unfortunately I can not verify as I don&apos;t own a mac.  Please apply the
&gt; patch and let me know.
We really need a trybot :-) Applying your patch as we speak, going to post results soon.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108012</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-02 12:47:06 -0800</bug_when>
    <thetext>Fixed and landed with r40486.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27236</attachid>
            <date>2009-02-01 15:48:34 -0800</date>
            <delta_ts>2009-02-01 17:46:30 -0800</delta_ts>
            <desc>Eliminate bools from HitTestRequest</desc>
            <filename>hittest_bools.patch</filename>
            <type>text/plain</type>
            <size>21322</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmMwMWY4ZS4uODJmN2QxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAwOS0wMi0wMSAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIEhpdFRlc3RSZXF1ZXN0IHRvIGVsaW1pbmF0
ZSBhbGwgdGhlIHVnbHkgYm9vbGVhbiBhcmd1bWVudHMgYW5kCisgICAgICAgIHVzZSBhbiBlbnVt
IGJpdGZsYWcgaW5zdGVhZC4gIENsZWFudXAgYWxsIHRoZSBjb2RlIHRoYXQgY29uc3RydWN0cyB0
aGUKKyAgICAgICAgdmFyaW91cyBIaXRUZXN0UmVxdWVzdHMgdG8gbWFrZSB0aGUgY29kZSBtb3Jl
IHJlYWRhYmxlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjplbGVtZW50RnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmNvbnRh
aW5zKToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGlj
a0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3Zl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6cmVhZE9ubHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVxdWVzdDo6bW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojpt
b3VzZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpjbGlwVG9WaXNpYmxl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRnJhbWVTZXQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZSk6CisKIDIwMDkt
MDEtMzEgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNWFmNjk2Li43OGFiYTQz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC04OTgsNyArODk4LDkgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1l
bnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogICAgIGlmICghcmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHRydWUsIHRydWUp
OworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkNsaXBUb1Zpc2libGUpOwog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KEludFBvaW50KHgsIHkpKTsKICAgICByZW5kZXJWaWV3
KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsgCiAKQEAgLTIwMTcsNyArMjAx
OSw3IEBAIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRG9jdW1lbnQ6OnByZXBhcmVNb3Vz
ZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
ZG9jdW1lbnRQb2ludCk7CiAgICAgcmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAKLSAgICBpZiAoIXJlcXVlc3QucmVhZG9ubHkpCisgICAgaWYgKCFyZXF1
ZXN0LnJlYWRPbmx5KCkpCiAgICAgICAgIHVwZGF0ZVJlbmRlcmluZygpOwogCiAgICAgcmV0dXJu
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMoZXZlbnQsIHJlc3VsdCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggOWJkY2VhNi4uNmQyZTU3YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtOTk1LDcgKzk5NSw5IEBAIGJv
b2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y29udGFpbnMoY29uc3QgSW50UG9pbnQmIHBvaW50KQog
ICAgIGlmICghZG9jdW1lbnQtPnJlbmRlcmVyKCkpIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCB0cnVlKTsKKyAgICBIaXRUZXN0
UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9WaXNpYmxlKTsKICAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdChwb2ludCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC5p
bm5lck5vZGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcCBiL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApp
bmRleCBiYjVjZTY3Li4xMmU1ZTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCkBAIC0xNzQ4LDcgKzE3NDgsOSBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9p
bgogI2Vsc2UKICAgICAgICAgb3VycG9pbnQgPSBwb2ludDsKICNlbmRpZgotICAgICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KHRydWUsIHRydWUpOworICAgICAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkNsaXBUb1Zpc2libGUpOwogICAgICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdChvdXJwb2ludCk7CiAgICAgICAgIHJlbmRlclZpZXctPmxheWVyKCktPmhp
dFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgaW5uZXJOb2RlID0gcmVzdWx0LmlubmVy
Tm9kZSgpOwpAQCAtMTkwOCw3ICsxOTEwLDkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnQKICAg
ICAKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveChtX3JlbmRlcmVyKS0+bGF5
ZXIoKTsKICAgICAgCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCB0cnVlKTsKKyAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9WaXNpYmxlKTsKICAgICBI
aXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHBvaW50KTsKICAgICBs
YXllci0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKICAgICBpZiAoIWhpdFRlc3RS
ZXN1bHQuaW5uZXJOb2RlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ3YWM0ODEuLjg4MmI2
MTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00NDMsNyArNDQzLDggQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQp
IGNvbnN0CiAgICAgaWYgKCFESFRNTEZsYWcgJiYgIVVBRmxhZykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHJ1ZSwgZmFsc2UpOworICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9WaXNpYmxlKTsKICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
ZXZlbnQucG9zKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGJvb2wgc3JjSXNESFRNTDsKQEAgLTQ2Miw4
ICs0NjMsMTIgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJh
ZygpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBIaXRUZXN0UmVxdWVzdDo6TW91c2VNb3ZlIHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9WaXNpYmxlKTsKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRpb24pKTsKLSAg
ICBsYXllci0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCh0cnVlLCB0cnVlLCB0cnVlKSwgcmVzdWx0
KTsKKyAgICBsYXllci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIHVwZGF0ZVNlbGVj
dGlvbkZvck1vdXNlRHJhZyhyZXN1bHQuaW5uZXJOb2RlKCksIHJlc3VsdC5sb2NhbFBvaW50KCkp
OwogfQogCkBAIC02OTYsNyArNzAxLDEwIEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpo
aXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsCiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwogICAgIGlmICghbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QodHJ1ZSwgdHJ1ZSwgZmFs
c2UsIGZhbHNlLCBjbGlwVG9WaXNpYmxlKSwgcmVzdWx0KTsKKyAgICBpbnQgaGl0VHlwZSA9IEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CisgICAgaWYg
KGNsaXBUb1Zpc2libGUpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkNsaXBU
b1Zpc2libGU7CisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRl
c3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7CiAKICAgICB3aGlsZSAodHJ1ZSkg
ewogICAgICAgICBOb2RlKiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtNzEzLDcgKzcyMSw3
IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25z
dCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsCiAgICAgICAgIEludFBvaW50IHdpZGdldFBvaW50
KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0
LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAogICAgICAgICAg
ICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRn
ZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBI
aXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQpOwotICAgICAgICBm
cmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3Qo
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBjbGlwVG9WaXNpYmxlKSwgd2lkZ2V0SGl0VGVzdFJl
c3VsdCk7CisgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVz
dChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAg
IHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAgICAgfQogICAgIApAQCAtMTAwOCw3ICsx
MDE2LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgbV9tb3VzZURvd25Qb3MgPSBtX2Zy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobW91c2VFdmVudC5wb3MoKSk7CiAgICAgbV9t
b3VzZURvd25XYXNJblN1YmZyYW1lID0gZmFsc2U7CiAKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KGZhbHNlLCB0
cnVlKSwgbW91c2VFdmVudCk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0
OjpDbGlwVG9WaXNpYmxlKTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9
IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOwogCiAgICAgaWYgKCFtZXYu
dGFyZ2V0Tm9kZSgpKSB7CiAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwpAQCAtMTA3OSw3ICsx
MDg5LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIC8vIGluIGNhc2UgdGhlIHNjcm9s
bGJhciB3aWRnZXQgd2FzIGRlc3Ryb3llZCB3aGVuIHRoZSBtb3VzZSBldmVudCB3YXMgaGFuZGxl
ZC4KICAgICBpZiAobWV2LnNjcm9sbGJhcigpKSB7CiAgICAgICAgIGNvbnN0IGJvb2wgd2FzTGFz
dFNjcm9sbEJhciA9IG1ldi5zY3JvbGxiYXIoKSA9PSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNl
LmdldCgpOwotICAgICAgICBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChIaXRUZXN0UmVxdWVzdCh0
cnVlLCB0cnVlKSwgbW91c2VFdmVudCk7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBIaXRUZXN0UmVxdWVzdDo6Q2xpcFRvVmlzaWJsZSk7CisgICAgICAgIG1ldiA9IHByZXBhcmVN
b3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOwogCiAgICAgICAgIGlmICh3YXNMYXN0U2Ny
b2xsQmFyICYmIG1ldi5zY3JvbGxiYXIoKSAhPSBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLmdl
dCgpKQogICAgICAgICAgICAgbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSA9IDA7CkBAIC0xMDk0
LDggKzExMDcsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgICAgIC8vIElmIGEgbW91
c2UgZXZlbnQgaGFuZGxlciBjaGFuZ2VzIHRoZSBpbnB1dCBlbGVtZW50IHR5cGUgdG8gb25lIHRo
YXQgaGFzIGEgd2lkZ2V0IGFzc29jaWF0ZWQsCiAgICAgICAgIC8vIHdlJ2QgbGlrZSB0byBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCB0byBwYXNzIHRoZSBldmVudCB0byB0aGUg
d2lkZ2V0IGFuZCB0aHVzIHRoZQogICAgICAgICAvLyBldmVudCB0YXJnZXQgbm9kZSBjYW4ndCBz
dGlsbCBiZSB0aGUgc2hhZG93IG5vZGUuCi0gICAgICAgIGlmIChtZXYudGFyZ2V0Tm9kZSgpLT5p
c1NoYWRvd05vZGUoKSAmJiBtZXYudGFyZ2V0Tm9kZSgpLT5zaGFkb3dQYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICAgICAgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQo
SGl0VGVzdFJlcXVlc3QodHJ1ZSwgdHJ1ZSksIG1vdXNlRXZlbnQpOworICAgICAgICBpZiAobWV2
LnRhcmdldE5vZGUoKS0+aXNTaGFkb3dOb2RlKCkgJiYgbWV2LnRhcmdldE5vZGUoKS0+c2hhZG93
UGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgeworICAgICAgICAgICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkNsaXBUb1Zpc2libGUp
OworICAgICAgICAgICAgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVu
dCk7CisgICAgICAgIH0KIAogICAgICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9IG1fZnJhbWUt
PnZpZXcoKS0+c2Nyb2xsYmFyVW5kZXJNb3VzZShtb3VzZUV2ZW50KTsKICAgICAgICAgaWYgKCFz
Y3JvbGxiYXIpCkBAIC0xMTIxLDcgKzExMzgsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VEb3VibGVDbGlja0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdgog
ICAgIG1fbW91c2VQcmVzc2VkID0gZmFsc2U7CiAgICAgbV9jdXJyZW50TW91c2VQb3NpdGlvbiA9
IG1vdXNlRXZlbnQucG9zKCk7CiAKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IHByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KGZhbHNlLCB0cnVlKSwgbW91c2VF
dmVudCk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9WaXNp
YmxlKTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3Vz
ZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOwogICAgIEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZy
YW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpOwogICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQ
cmVzc0V2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKSkgewogICAgICAgICBtX2NhcHR1cmlu
Z01vdXNlRXZlbnRzTm9kZSA9IDA7CkBAIC0xMTk3LDcgKzEyMTYsMTIgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91
c2VFdmVudCwgSGkKICAgICAvLyBpZiB3ZSBhcmUgYWxsb3dlZCB0byBzZWxlY3QuCiAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IDpob3ZlciBhbmQgOmFjdGl2ZSBmcmVlemUgaW4gdGhlIHN0YXRlIHRo
ZXkgd2VyZSBpbiB3aGVuIHRoZSBtb3VzZQogICAgIC8vIHdhcyBwcmVzc2VkLCByYXRoZXIgdGhh
biB1cGRhdGluZyBmb3Igbm9kZXMgdGhlIG1vdXNlIG1vdmVzIG92ZXIgYXMgeW91IGhvbGQgdGhl
IG1vdXNlIGRvd24uCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChtX21vdXNlUHJlc3NlZCAm
JiBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0LCBtX21vdXNlUHJlc3NlZCwgdHJ1ZSk7CisgICAg
aW50IGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6TW91c2VNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6
OkNsaXBUb1Zpc2libGU7CisgICAgaWYgKG1fbW91c2VQcmVzc2VkICYmIG1fbW91c2VEb3duTWF5
U3RhcnRTZWxlY3QpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
OworICAgIGlmIChtX21vdXNlUHJlc3NlZCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAgICAg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1
ZXN0LCBtb3VzZUV2ZW50KTsKICAgICBpZiAoaG92ZXJlZE5vZGUpCiAgICAgICAgICpob3ZlcmVk
Tm9kZSA9IG1ldi5oaXRUZXN0UmVzdWx0KCk7CkBAIC0xMjg3LDcgKzEzMTEsOSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBtb3VzZUV2ZW50KQogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3Vz
ZS0+bW91c2VVcCgpOwogICAgIH0KIAotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
bWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSksIG1vdXNlRXZlbnQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6Ok1vdXNlVXAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJl
cXVlc3Q6OkNsaXBUb1Zpc2libGUpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
bWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7CiAgICAgRnJhbWUq
IHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkgPyBzdWJmcmFtZUZv
clRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkpIDogc3ViZnJhbWVG
b3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVh
c2VFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSkpIHsKICAgICAgICAgbV9jYXB0dXJpbmdN
b3VzZUV2ZW50c05vZGUgPSAwOwpAQCAtMTMzOSw4ICsxMzY1LDEwIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBD
bGlwYm9hcmQqCiAKICAgICBpZiAoIW1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFy
ZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QodHJ1ZSwgZmFsc2UpLCBldmVudCk7CisKKyAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6Q2xpcFRvVmlzaWJsZSk7CisgICAg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1
ZXN0LCBldmVudCk7CiAKICAgICAvLyBEcmFnIGV2ZW50cyBzaG91bGQgbmV2ZXIgZ28gdG8gdGV4
dCBub2RlcyAoZm9sbG93aW5nIElFLCBhbmQgcHJvcGVyIG1vdXNlb3Zlci9vdXQgZGlzcGF0Y2gp
CiAgICAgTm9kZSogbmV3VGFyZ2V0ID0gbWV2LnRhcmdldE5vZGUoKTsKQEAgLTE1ODksNyArMTYx
Nyw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxF
dmVudCYgZSkKIAogICAgIEludFBvaW50IHZQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhlLnBvcygpKTsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHJ1ZSwg
ZmFsc2UpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9W
aXNpYmxlKTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2UG9pbnQpOwogICAgIGRvYy0+cmVu
ZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgTm9kZSog
bm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTE2MzUsNyArMTY2NCw5IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KQogICAgIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50OwogICAgIEludFBvaW50IHZpZXdw
b3J0UG9zID0gdi0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7Ci0gICAgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBkb2MtPnByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RS
ZXF1ZXN0KGZhbHNlLCB0cnVlKSwgdmlld3BvcnRQb3MsIGV2ZW50KTsKKyAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkNsaXBUb1Zpc2libGUpOworICAgIE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gZG9jLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCB2
aWV3cG9ydFBvcywgZXZlbnQpOwogCiAgICAgLy8gQ29udGV4dCBtZW51IGV2ZW50cyBzaG91bGRu
J3Qgc2VsZWN0IHRleHQgaW4gR1RLKyBhcHBsaWNhdGlvbnMgb3IgaW4gQ2hyb21pdW0uCiAgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGNvbmZpZ3VyYWJsZSBieSBlbWJlZGRl
cnMuIENvbnNpZGVyIG1ha2luZyBpdCBhIFdlYlByZWZlcmVuY2VzIHNldHRpbmcuCkBAIC0xNzEw
LDggKzE3NDEsMTAgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZChUaW1lcjxF
dmVudEhhbmRsZXI+KikKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAKICAgICBp
ZiAoUmVuZGVyVmlldyogcmVuZGVyZXIgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkgewor
ICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpNb3VzZU1vdmUg
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9W
aXNpYmxlKTsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9mcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRpb24pKTsKLSAgICAgICAgcmVuZGVy
ZXItPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoZmFsc2UsIGZhbHNlLCB0cnVlKSwg
cmVzdWx0KTsKKyAgICAgICAgcmVuZGVyZXItPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlUmVuZGVyaW5nKCk7CiAg
ICAgfQogfQpAQCAtMTk4Niw3ICsyMDE5LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURy
YWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAKICAgICBpZiAo
bV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykgewogICAg
ICAgICAvLyB0cnkgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUgZHJhZ2dlZAot
ICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHRydWUsIGZhbHNlKTsKKyAgICAgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpDbGlwVG9WaXNpYmxlKTsKICAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25Qb3MpOwogICAgICAgICBtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQp
OwogICAgICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXF1ZXN0LmgKaW5kZXggOTc0MzY5OC4uNGQ5MzhjYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVxdWVzdC5oCkBAIC0yLDYgKzIsNyBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEhUTUwgcmVuZGVyaW5nIGVuZ2luZSBmb3IgS0RFLgogICoKICAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0xOSwyNiArMjAsMzUgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICoKICov
CisKICNpZm5kZWYgSGl0VGVzdFJlcXVlc3RfaAogI2RlZmluZSBIaXRUZXN0UmVxdWVzdF9oCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEhpdFRlc3RSZXF1ZXN0IHsKLSAgICBIaXRU
ZXN0UmVxdWVzdChib29sIHIsIGJvb2wgYSwgYm9vbCBtID0gZmFsc2UsIGJvb2wgdSA9IGZhbHNl
LCBib29sIGMgPSB0cnVlKQotICAgICAgICA6IHJlYWRvbmx5KHIpCi0gICAgICAgICwgYWN0aXZl
KGEpCi0gICAgICAgICwgbW91c2VNb3ZlKG0pCi0gICAgICAgICwgbW91c2VVcCh1KQotICAgICAg
ICAsIGNsaXBUb1Zpc2libGUoYykKLSAgICB7IAorY2xhc3MgSGl0VGVzdFJlcXVlc3QgeworcHVi
bGljOgorICAgIGVudW0gUmVxdWVzdFR5cGUgeworICAgICAgICBSZWFkT25seSA9IDB4MCwKKyAg
ICAgICAgQWN0aXZlID0gMHgxLAorICAgICAgICBNb3VzZU1vdmUgPSAweDIsCisgICAgICAgIE1v
dXNlVXAgPSAweDQsCisgICAgICAgIENsaXBUb1Zpc2libGUgPSAweDgKKyAgICB9OworCisgICAg
SGl0VGVzdFJlcXVlc3QoaW50IHJlcXVlc3RUeXBlKQorICAgICAgICA6IG1fcmVxdWVzdFR5cGUo
cmVxdWVzdFR5cGUpCisgICAgewogICAgIH0KIAotICAgIGJvb2wgcmVhZG9ubHk7Ci0gICAgYm9v
bCBhY3RpdmU7Ci0gICAgYm9vbCBtb3VzZU1vdmU7Ci0gICAgYm9vbCBtb3VzZVVwOwotICAgIGJv
b2wgY2xpcFRvVmlzaWJsZTsKKyAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0VHlwZSAmIFJlYWRPbmx5OyB9CisgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3RUeXBlICYgQWN0aXZlOyB9CisgICAgYm9vbCBtb3VzZU1vdmUoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3RUeXBlICYgTW91c2VNb3ZlOyB9CisgICAgYm9vbCBtb3VzZVVwKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIE1vdXNlVXA7IH0KKyAgICBib29sIGNsaXBU
b1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQ2xpcFRvVmlzaWJsZTsg
fQorCitwcml2YXRlOgorICAgIGludCBtX3JlcXVlc3RUeXBlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDA3MTdjZjQu
LjM5Y2RiYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKQEAgLTE2NSw3ICsx
NjUsNyBAQCBib29sIFJlbmRlckZyYW1lU2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcgogICAgICAgICB8fCBtX2lzUmVzaXppbmcg
fHwgY2FuUmVzaXplKEludFBvaW50KHgsIHkpKTsKIAogICAgIGlmIChpbnNpZGUgJiYgZnJhbWVT
ZXQoKS0+bm9SZXNpemUoKQotICAgICAgICAgICAgJiYgIXJlcXVlc3QucmVhZG9ubHkgJiYgIXJl
c3VsdC5pbm5lck5vZGUoKSkgeworICAgICAgICAgICAgJiYgIXJlcXVlc3QucmVhZE9ubHkoKSAm
JiAhcmVzdWx0LmlubmVyTm9kZSgpKSB7CiAgICAgICAgIHJlc3VsdC5zZXRJbm5lck5vZGUobm9k
ZSgpKTsKICAgICAgICAgcmVzdWx0LnNldElubmVyTm9uU2hhcmVkTm9kZShub2RlKCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5OGI5ZjRmLi4zNzBjOTY5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xODU3LDcgKzE4NTcsNyBAQCBib29sIFJlbmRl
ckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQpCiAgICAgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
CiAgICAgCiAgICAgSW50UmVjdCBib3VuZHNSZWN0KG1feCwgbV95LCB3aWR0aCgpLCBoZWlnaHQo
KSk7Ci0gICAgaWYgKHJlcXVlc3QuY2xpcFRvVmlzaWJsZSkKKyAgICBpZiAocmVxdWVzdC5jbGlw
VG9WaXNpYmxlKCkpCiAgICAgICAgIGJvdW5kc1JlY3QuaW50ZXJzZWN0KGZyYW1lVmlzaWJsZVJl
Y3QocmVuZGVyZXIoKSkpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGluc2lkZUxheWVyID0gaGl0VGVz
dExheWVyKHRoaXMsIHJlcXVlc3QsIHJlc3VsdCwgYm91bmRzUmVjdCwgcmVzdWx0LnBvaW50KCkp
OwpAQCAtMjAwNiw3ICsyMDA2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0
TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVzdFJlcXUKICAgICAvLyBX
ZSBkaWRuJ3QgaGl0IGFueSBsYXllci4gSWYgd2UgYXJlIHRoZSByb290IGxheWVyIGFuZCB0aGUg
bW91c2UgaXMgLS0gb3IganVzdCB3YXMgLS0gZG93biwgCiAgICAgLy8gcmV0dXJuIG91cnNlbHZl
cy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBldmVudHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQg
YWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFuZCBzbyBoaXQg
dGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1lbnQuCi0gICAg
aWYgKChyZXF1ZXN0LmFjdGl2ZSB8fCByZXF1ZXN0Lm1vdXNlVXApICYmIHJlbmRlcmVyKCktPmlz
UmVuZGVyVmlldygpKSB7CisgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QubW91
c2VVcCgpKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlclZpZXcoKSkgewogICAgICAgICByZW5kZXJl
cigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgaGl0VGVzdFBvaW50KTsKICAgICAgICAg
cmV0dXJuIHRoaXM7CiAgICAgfQpAQCAtMjMwNiwxNCArMjMwNiwxNCBAQCBzdGF0aWMgUmVuZGVy
T2JqZWN0KiBjb21tb25BbmNlc3RvcihSZW5kZXJPYmplY3QqIG9iajEsIFJlbmRlck9iamVjdCog
b2JqMikKIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewotICAgIC8v
IFdlIGRvbid0IHVwZGF0ZSA6aG92ZXIvOmFjdGl2ZSBzdGF0ZSB3aGVuIHRoZSByZXN1bHQgaXMg
bWFya2VkIGFzIHJlYWRvbmx5LgotICAgIGlmIChyZXF1ZXN0LnJlYWRvbmx5KQorICAgIC8vIFdl
IGRvbid0IHVwZGF0ZSA6aG92ZXIvOmFjdGl2ZSBzdGF0ZSB3aGVuIHRoZSByZXN1bHQgaXMgbWFy
a2VkIGFzIHJlYWRPbmx5LgorICAgIGlmIChyZXF1ZXN0LnJlYWRPbmx5KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIERvY3VtZW50KiBkb2MgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpOwogCiAg
ICAgTm9kZSogYWN0aXZlTm9kZSA9IGRvYy0+YWN0aXZlTm9kZSgpOwotICAgIGlmIChhY3RpdmVO
b2RlICYmICFyZXF1ZXN0LmFjdGl2ZSkgeworICAgIGlmIChhY3RpdmVOb2RlICYmICFyZXF1ZXN0
LmFjdGl2ZSgpKSB7CiAgICAgICAgIC8vIFdlIGFyZSBjbGVhcmluZyB0aGUgOmFjdGl2ZSBjaGFp
biBiZWNhdXNlIHRoZSBtb3VzZSBoYXMgYmVlbiByZWxlYXNlZC4KICAgICAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGN1cnIgPSBhY3RpdmVOb2RlLT5yZW5kZXJlcigpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+cGFyZW50KCkpIHsKICAgICAgICAgICAgIGlmIChjdXJyLT5lbGVtZW50KCkgJiYgIWN1cnIt
PmlzVGV4dCgpKQpAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
SG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFIK
ICAgICAgICAgZG9jLT5zZXRBY3RpdmVOb2RlKDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIE5v
ZGUqIG5ld0FjdGl2ZU5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgICAgIGlmICghYWN0
aXZlTm9kZSAmJiBuZXdBY3RpdmVOb2RlICYmIHJlcXVlc3QuYWN0aXZlKSB7CisgICAgICAgIGlm
ICghYWN0aXZlTm9kZSAmJiBuZXdBY3RpdmVOb2RlICYmIHJlcXVlc3QuYWN0aXZlKCkpIHsKICAg
ICAgICAgICAgIC8vIFdlIGFyZSBzZXR0aW5nIHRoZSA6YWN0aXZlIGNoYWluIGFuZCBmcmVlemlu
ZyBpdC4gSWYgZnV0dXJlIG1vdmVzIGhhcHBlbiwgdGhleQogICAgICAgICAgICAgLy8gd2lsbCBu
ZWVkIHRvIHJlZmVyZW5jZSB0aGlzIGNoYWluLgogICAgICAgICAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGN1cnIgPSBuZXdBY3RpdmVOb2RlLT5yZW5kZXJlcigpOyBjdXJyOyBjdXJyID0gY3Vyci0+
cGFyZW50KCkpIHsKQEAgLTIzMzcsNyArMjMzNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
CiAgICAgLy8gSWYgdGhlIG1vdXNlIGlzIGRvd24gYW5kIGlmIHRoaXMgaXMgYSBtb3VzZSBtb3Zl
IGV2ZW50LCB3ZSB3YW50IHRvIHJlc3RyaWN0IGNoYW5nZXMgaW4gCiAgICAgLy8gOmhvdmVyLzph
Y3RpdmUgdG8gb25seSBhcHBseSB0byBlbGVtZW50cyB0aGF0IGFyZSBpbiB0aGUgOmFjdGl2ZSBj
aGFpbiB0aGF0IHdlIGZyb3plCiAgICAgLy8gYXQgdGhlIHRpbWUgdGhlIG1vdXNlIHdlbnQgZG93
bi4KLSAgICBib29sIG11c3RCZUluQWN0aXZlQ2hhaW4gPSByZXF1ZXN0LmFjdGl2ZSAmJiByZXF1
ZXN0Lm1vdXNlTW92ZTsKKyAgICBib29sIG11c3RCZUluQWN0aXZlQ2hhaW4gPSByZXF1ZXN0LmFj
dGl2ZSgpICYmIHJlcXVlc3QubW91c2VNb3ZlKCk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhlIGhvdmVyZWQgbm9kZSBoYXMgY2hhbmdlZC4gIElmIG5vdCwgdGhlbiB3ZSBkb24ndCBuZWVk
IHRvCiAgICAgLy8gZG8gYW55dGhpbmcuICAKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSCiAgICAgLy8gTm93IHNldCB0aGUgaG92ZXIgc3RhdGUgZm9yIG91ciBu
ZXcgb2JqZWN0IHVwIHRvIHRoZSByb290LgogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0g
bmV3SG92ZXJPYmo7IGN1cnI7IGN1cnIgPSBjdXJyLT5ob3ZlckFuY2VzdG9yKCkpIHsKICAgICAg
ICAgaWYgKGN1cnItPmVsZW1lbnQoKSAmJiAhY3Vyci0+aXNUZXh0KCkgJiYgKCFtdXN0QmVJbkFj
dGl2ZUNoYWluIHx8IGN1cnItPmVsZW1lbnQoKS0+aW5BY3RpdmVDaGFpbigpKSkgewotICAgICAg
ICAgICAgY3Vyci0+ZWxlbWVudCgpLT5zZXRBY3RpdmUocmVxdWVzdC5hY3RpdmUpOworICAgICAg
ICAgICAgY3Vyci0+ZWxlbWVudCgpLT5zZXRBY3RpdmUocmVxdWVzdC5hY3RpdmUoKSk7CiAgICAg
ICAgICAgICBjdXJyLT5lbGVtZW50KCktPnNldEhvdmVyZWQodHJ1ZSk7CiAgICAgICAgIH0KICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27238</attachid>
            <date>2009-02-01 17:45:54 -0800</date>
            <delta_ts>2009-02-02 07:13:12 -0800</delta_ts>
            <desc>New version to incorporate comments</desc>
            <filename>hittest_bools.patch</filename>
            <type>text/plain</type>
            <size>21445</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmMwMWY4ZS4uODJmN2QxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAwOS0wMi0wMSAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIEhpdFRlc3RSZXF1ZXN0IHRvIGVsaW1pbmF0
ZSBhbGwgdGhlIHVnbHkgYm9vbGVhbiBhcmd1bWVudHMgYW5kCisgICAgICAgIHVzZSBhbiBlbnVt
IGJpdGZsYWcgaW5zdGVhZC4gIENsZWFudXAgYWxsIHRoZSBjb2RlIHRoYXQgY29uc3RydWN0cyB0
aGUKKyAgICAgICAgdmFyaW91cyBIaXRUZXN0UmVxdWVzdHMgdG8gbWFrZSB0aGUgY29kZSBtb3Jl
IHJlYWRhYmxlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjplbGVtZW50RnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmNvbnRh
aW5zKToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEb3VibGVDbGlj
a0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3Zl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6cmVhZE9ubHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVxdWVzdDo6bW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojpt
b3VzZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpjbGlwVG9WaXNpYmxl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRnJhbWVTZXQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZSk6CisKIDIwMDkt
MDEtMzEgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNWFmNjk2Li5mZjMwZmI1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC04OTgsNyArODk4LDggQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1l
bnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogICAgIGlmICghcmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHRydWUsIHRydWUp
OworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwogICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KEludFBvaW50KHgsIHkpKTsKICAgICByZW5kZXJWaWV3KCkt
PmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsgCiAKQEAgLTIwMTcsNyArMjAxOCw3
IEBAIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRG9jdW1lbnQ6OnByZXBhcmVNb3VzZUV2
ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoZG9j
dW1lbnRQb2ludCk7CiAgICAgcmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7CiAKLSAgICBpZiAoIXJlcXVlc3QucmVhZG9ubHkpCisgICAgaWYgKCFyZXF1ZXN0
LnJlYWRPbmx5KCkpCiAgICAgICAgIHVwZGF0ZVJlbmRlcmluZygpOwogCiAgICAgcmV0dXJuIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMoZXZlbnQsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggOWJkY2VhNi4uYTUzYTVkOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtOTk1LDcgKzk5NSw4IEBAIGJvb2wg
U2VsZWN0aW9uQ29udHJvbGxlcjo6Y29udGFpbnMoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAg
IGlmICghZG9jdW1lbnQtPnJlbmRlcmVyKCkpIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChwb2ludCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+aGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC5pbm5lck5v
ZGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBi
YjVjZTY3Li5hNWM2ZTcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xNzQ4LDcgKzE3NDgsOCBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbgogI2Vs
c2UKICAgICAgICAgb3VycG9pbnQgPSBwb2ludDsKICNlbmRpZgotICAgICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KHRydWUsIHRydWUpOworICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KG91cnBvaW50KTsKICAgICAgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0
LCByZXN1bHQpOwogICAgICAgICBpbm5lck5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC0x
OTA4LDcgKzE5MDksOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpkb0FjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludAogICAgIAogICAgIFJlbmRl
ckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpLT5sYXllcigpOwogICAgICAK
LSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHRydWUsIHRydWUpOworICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwogICAgIEhpdFRlc3RSZXN1bHQgaGl0
VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQocG9pbnQpOwogICAgIGxheWVyLT5oaXRUZXN0KHJl
cXVlc3QsIGhpdFRlc3RSZXN1bHQpOwogICAgIGlmICghaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUo
KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDdhYzQ4MS4uMzI4ZmMxNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlT
dGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAo
IURIVE1MRmxhZyAmJiAhVUFGbGFnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCBmYWxzZSk7CisgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSkpOwogICAg
IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7CiAgICAgYm9vbCBzcmNJc0RIVE1MOwpAQCAtNDYyLDggKzQ2MiwxMSBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKICAgICBpZiAoIWxheWVy
KQogICAgICAgICByZXR1cm47CiAKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0
OjpNb3VzZU1vdmUpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29u
dGVudHMobV9jdXJyZW50TW91c2VQb3NpdGlvbikpOwotICAgIGxheWVyLT5oaXRUZXN0KEhpdFRl
c3RSZXF1ZXN0KHRydWUsIHRydWUsIHRydWUpLCByZXN1bHQpOworICAgIGxheWVyLT5oaXRUZXN0
KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKHJlc3Vs
dC5pbm5lck5vZGUoKSwgcmVzdWx0LmxvY2FsUG9pbnQoKSk7CiB9CiAKQEAgLTY5MSwxMiArNjk0
LDE1IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjphbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUws
IGJvb2wmIGZsYWdVQSkgY29uc3QKICAgICBmbGFnVUEgPSAoKG1hc2sgJiBEcmFnU291cmNlQWN0
aW9uSW1hZ2UpIHx8IChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHx8IChtYXNrICYgRHJh
Z1NvdXJjZUFjdGlvblNlbGVjdGlvbikpOwogfQogICAgIAotSGl0VGVzdFJlc3VsdCBFdmVudEhh
bmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBh
bGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgY2xpcFRvVmlzaWJsZSkKK0hpdFRlc3RSZXN1bHQgRXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJv
b2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nKQogewogICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpLT5sYXllcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KHRydWUsIHRydWUsIGZhbHNlLCBm
YWxzZSwgY2xpcFRvVmlzaWJsZSksIHJlc3VsdCk7CisgICAgaW50IGhpdFR5cGUgPSBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOworICAgIGlmIChpZ25v
cmVDbGlwcGluZykKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xp
cHBpbmc7CisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3Qo
SGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICBOb2RlKiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtNzEzLDcgKzcxOSw3IEBA
IEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBJ
bnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsCiAgICAgICAgIEludFBvaW50IHdpZGdldFBvaW50KHJl
c3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5i
b3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAogICAgICAgICAgICAg
cmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQt
PmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBIaXRU
ZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQpOwotICAgICAgICBmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QodHJ1
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBjbGlwVG9WaXNpYmxlKSwgd2lkZ2V0SGl0VGVzdFJlc3Vs
dCk7CisgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChI
aXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIHJl
c3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAgICAgfQogICAgIApAQCAtMTAwOCw3ICsxMDE0
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgbV9tb3VzZURvd25Qb3MgPSBtX2ZyYW1l
LT52aWV3KCktPndpbmRvd1RvQ29udGVudHMobW91c2VFdmVudC5wb3MoKSk7CiAgICAgbV9tb3Vz
ZURvd25XYXNJblN1YmZyYW1lID0gZmFsc2U7CiAKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KGZhbHNlLCB0cnVl
KSwgbW91c2VFdmVudCk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlKTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBh
cmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOwogCiAgICAgaWYgKCFtZXYudGFyZ2V0
Tm9kZSgpKSB7CiAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwpAQCAtMTA3OSw3ICsxMDg2LDkg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgLy8gaW4gY2FzZSB0aGUgc2Nyb2xsYmFyIHdp
ZGdldCB3YXMgZGVzdHJveWVkIHdoZW4gdGhlIG1vdXNlIGV2ZW50IHdhcyBoYW5kbGVkLgogICAg
IGlmIChtZXYuc2Nyb2xsYmFyKCkpIHsKICAgICAgICAgY29uc3QgYm9vbCB3YXNMYXN0U2Nyb2xs
QmFyID0gbWV2LnNjcm9sbGJhcigpID09IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UuZ2V0KCk7
Ci0gICAgICAgIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KHRydWUsIHRy
dWUpLCBtb3VzZUV2ZW50KTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1
ZXN0LCBtb3VzZUV2ZW50KTsKIAogICAgICAgICBpZiAod2FzTGFzdFNjcm9sbEJhciAmJiBtZXYu
c2Nyb2xsYmFyKCkgIT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS5nZXQoKSkKICAgICAgICAg
ICAgIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgPSAwOwpAQCAtMTA5NCw4ICsxMTAzLDExIEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgICAgICAvLyBJZiBhIG1vdXNlIGV2ZW50IGhhbmRs
ZXIgY2hhbmdlcyB0aGUgaW5wdXQgZWxlbWVudCB0eXBlIHRvIG9uZSB0aGF0IGhhcyBhIHdpZGdl
dCBhc3NvY2lhdGVkLAogICAgICAgICAvLyB3ZSdkIGxpa2UgdG8gRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnQgdG8gcGFzcyB0aGUgZXZlbnQgdG8gdGhlIHdpZGdldCBhbmQgdGh1
cyB0aGUKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUgY2FuJ3Qgc3RpbGwgYmUgdGhlIHNo
YWRvdyBub2RlLgotICAgICAgICBpZiAobWV2LnRhcmdldE5vZGUoKS0+aXNTaGFkb3dOb2RlKCkg
JiYgbWV2LnRhcmdldE5vZGUoKS0+c2hhZG93UGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkKLSAgICAgICAgICAgIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0
KHRydWUsIHRydWUpLCBtb3VzZUV2ZW50KTsKKyAgICAgICAgaWYgKG1ldi50YXJnZXROb2RlKCkt
PmlzU2hhZG93Tm9kZSgpICYmIG1ldi50YXJnZXROb2RlKCktPnNoYWRvd1BhcmVudE5vZGUoKS0+
aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKKyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgICAgICAgICBtZXYgPSBwcmVw
YXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZUV2ZW50KTsKKyAgICAgICAgfQogCiAgICAgICAg
IFNjcm9sbGJhciogc2Nyb2xsYmFyID0gbV9mcmFtZS0+dmlldygpLT5zY3JvbGxiYXJVbmRlck1v
dXNlKG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIXNjcm9sbGJhcikKQEAgLTExMjEsNyArMTEz
Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2CiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxz
ZTsKICAgICBtX2N1cnJlbnRNb3VzZVBvc2l0aW9uID0gbW91c2VFdmVudC5wb3MoKTsKIAotICAg
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQoSGl0
VGVzdFJlcXVlc3QoZmFsc2UsIHRydWUpLCBtb3VzZUV2ZW50KTsKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7
CiAgICAgRnJhbWUqIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CiAg
ICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3Vi
ZnJhbWUpKSB7CiAgICAgICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlID0gMDsKQEAgLTEx
OTcsNyArMTIxMCwxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogICAgIC8vIGlmIHdlIGFy
ZSBhbGxvd2VkIHRvIHNlbGVjdC4KICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgOmhvdmVyIGFuZCA6
YWN0aXZlIGZyZWV6ZSBpbiB0aGUgc3RhdGUgdGhleSB3ZXJlIGluIHdoZW4gdGhlIG1vdXNlCiAg
ICAgLy8gd2FzIHByZXNzZWQsIHJhdGhlciB0aGFuIHVwZGF0aW5nIGZvciBub2RlcyB0aGUgbW91
c2UgbW92ZXMgb3ZlciBhcyB5b3UgaG9sZCB0aGUgbW91c2UgZG93bi4KLSAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KG1fbW91c2VQcmVzc2VkICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3Qs
IG1fbW91c2VQcmVzc2VkLCB0cnVlKTsKKyAgICBpbnQgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0
OjpNb3VzZU1vdmU7CisgICAgaWYgKG1fbW91c2VQcmVzc2VkICYmIG1fbW91c2VEb3duTWF5U3Rh
cnRTZWxlY3QpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5Owor
ICAgIGlmIChtX21vdXNlUHJlc3NlZCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAgICAgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0
LCBtb3VzZUV2ZW50KTsKICAgICBpZiAoaG92ZXJlZE5vZGUpCiAgICAgICAgICpob3ZlcmVkTm9k
ZSA9IG1ldi5oaXRUZXN0UmVzdWx0KCk7CkBAIC0xMjg3LDcgKzEzMDUsOCBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBtb3VzZUV2ZW50KQogICAgICAgICByZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+
bW91c2VVcCgpOwogICAgIH0KIAotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2
ID0gcHJlcGFyZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QoZmFsc2UsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSksIG1vdXNlRXZlbnQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJl
cXVlc3Q6Ok1vdXNlVXApOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0g
cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7CiAgICAgRnJhbWUqIHN1YmZy
YW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkgPyBzdWJmcmFtZUZvclRhcmdl
dE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUuZ2V0KCkpIDogc3ViZnJhbWVGb3JIaXRU
ZXN0UmVzdWx0KG1ldik7CiAgICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVu
dFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSkpIHsKICAgICAgICAgbV9jYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUgPSAwOwpAQCAtMTMzOSw4ICsxMzU4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2Fy
ZCoKIAogICAgIGlmICghbV9mcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCi0gICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VF
dmVudChIaXRUZXN0UmVxdWVzdCh0cnVlLCBmYWxzZSksIGV2ZW50KTsKKworICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50
KTsKIAogICAgIC8vIERyYWcgZXZlbnRzIHNob3VsZCBuZXZlciBnbyB0byB0ZXh0IG5vZGVzIChm
b2xsb3dpbmcgSUUsIGFuZCBwcm9wZXIgbW91c2VvdmVyL291dCBkaXNwYXRjaCkKICAgICBOb2Rl
KiBuZXdUYXJnZXQgPSBtZXYudGFyZ2V0Tm9kZSgpOwpAQCAtMTU4OSw3ICsxNjA5LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQog
CiAgICAgSW50UG9pbnQgdlBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KGUucG9zKCkpOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCBmYWxzZSk7Cisg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZQb2ludCk7CiAgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxh
eWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0
LmlubmVyTm9kZSgpOwpAQCAtMTYzNSw3ICsxNjU1LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNl
bmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAg
CiAgICAgYm9vbCBzd2FsbG93RXZlbnQ7CiAgICAgSW50UG9pbnQgdmlld3BvcnRQb3MgPSB2LT53
aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvcygpKTsKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QoZmFsc2Us
IHRydWUpLCB2aWV3cG9ydFBvcywgZXZlbnQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyBtZXYgPSBkb2MtPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHZpZXdwb3J0UG9zLCBldmVu
dCk7CiAKICAgICAvLyBDb250ZXh0IG1lbnUgZXZlbnRzIHNob3VsZG4ndCBzZWxlY3QgdGV4dCBp
biBHVEsrIGFwcGxpY2F0aW9ucyBvciBpbiBDaHJvbWl1bS4KICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgYmUgY29uZmlndXJhYmxlIGJ5IGVtYmVkZGVycy4gQ29uc2lkZXIgbWFr
aW5nIGl0IGEgV2ViUHJlZmVyZW5jZXMgc2V0dGluZy4KQEAgLTE3MTAsOCArMTczMSw5IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCiAg
ICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHJl
bmRlcmVyID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKKyAgICAgICAgSGl0VGVzdFJl
cXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6TW91c2VNb3ZlKTsKICAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQobV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVu
dE1vdXNlUG9zaXRpb24pKTsKLSAgICAgICAgcmVuZGVyZXItPmxheWVyKCktPmhpdFRlc3QoSGl0
VGVzdFJlcXVlc3QoZmFsc2UsIGZhbHNlLCB0cnVlKSwgcmVzdWx0KTsKKyAgICAgICAgcmVuZGVy
ZXItPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgfQogfQpAQCAtMTk4Niw3ICsyMDA4
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcg
JiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykgewogICAgICAgICAvLyB0cnkgdG8gZmluZCBhbiBl
bGVtZW50IHRoYXQgd2FudHMgdG8gYmUgZHJhZ2dlZAotICAgICAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KHRydWUsIGZhbHNlKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX21v
dXNlRG93blBvcyk7CiAgICAgICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZXN1bHQu
aW5uZXJOb2RlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVz
dC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCA5NzQzNjk4Li40
NmRkN2I4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTIsNiArMiw3IEBACiAg
KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSFRNTCByZW5kZXJpbmcgZW5naW5lIGZvciBLREUu
CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDI2ICsyMCwzNSBAQAogICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCiAgKgogKi8KKwogI2lmbmRlZiBIaXRUZXN0UmVxdWVzdF9oCiAj
ZGVmaW5lIEhpdFRlc3RSZXF1ZXN0X2gKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3Qg
SGl0VGVzdFJlcXVlc3QgewotICAgIEhpdFRlc3RSZXF1ZXN0KGJvb2wgciwgYm9vbCBhLCBib29s
IG0gPSBmYWxzZSwgYm9vbCB1ID0gZmFsc2UsIGJvb2wgYyA9IHRydWUpCi0gICAgICAgIDogcmVh
ZG9ubHkocikKLSAgICAgICAgLCBhY3RpdmUoYSkKLSAgICAgICAgLCBtb3VzZU1vdmUobSkKLSAg
ICAgICAgLCBtb3VzZVVwKHUpCi0gICAgICAgICwgY2xpcFRvVmlzaWJsZShjKQotICAgIHsgCitj
bGFzcyBIaXRUZXN0UmVxdWVzdCB7CitwdWJsaWM6CisgICAgZW51bSBSZXF1ZXN0VHlwZSB7Cisg
ICAgICAgIFJlYWRPbmx5ID0gMHgxLAorICAgICAgICBBY3RpdmUgPSAweDIsCisgICAgICAgIE1v
dXNlTW92ZSA9IDB4NCwKKyAgICAgICAgTW91c2VVcCA9IDB4OCwKKyAgICAgICAgSWdub3JlQ2xp
cHBpbmcgPSAweDEwCisgICAgfTsKKworICAgIEhpdFRlc3RSZXF1ZXN0KGludCByZXF1ZXN0VHlw
ZSkKKyAgICAgICAgOiBtX3JlcXVlc3RUeXBlKHJlcXVlc3RUeXBlKQorICAgIHsKICAgICB9CiAK
LSAgICBib29sIHJlYWRvbmx5OwotICAgIGJvb2wgYWN0aXZlOwotICAgIGJvb2wgbW91c2VNb3Zl
OwotICAgIGJvb2wgbW91c2VVcDsKLSAgICBib29sIGNsaXBUb1Zpc2libGU7CisgICAgYm9vbCBy
ZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBSZWFkT25seTsgfQorICAg
IGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFjdGl2ZTsgfQor
ICAgIGJvb2wgbW91c2VNb3ZlKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIE1vdXNl
TW92ZTsgfQorICAgIGJvb2wgbW91c2VVcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUg
JiBNb3VzZVVwOyB9CisgICAgYm9vbCBpZ25vcmVDbGlwcGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdFR5cGUgJiBJZ25vcmVDbGlwcGluZzsgfQorCitwcml2YXRlOgorICAgIGludCBtX3Jl
cXVlc3RUeXBlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuY3BwCmluZGV4IDA3MTdjZjQuLjM5Y2RiYWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIFJlbmRlckZyYW1lU2V0
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcgogICAgICAgICB8fCBtX2lzUmVzaXppbmcgfHwgY2FuUmVzaXplKEludFBvaW50KHgsIHkp
KTsKIAogICAgIGlmIChpbnNpZGUgJiYgZnJhbWVTZXQoKS0+bm9SZXNpemUoKQotICAgICAgICAg
ICAgJiYgIXJlcXVlc3QucmVhZG9ubHkgJiYgIXJlc3VsdC5pbm5lck5vZGUoKSkgeworICAgICAg
ICAgICAgJiYgIXJlcXVlc3QucmVhZE9ubHkoKSAmJiAhcmVzdWx0LmlubmVyTm9kZSgpKSB7CiAg
ICAgICAgIHJlc3VsdC5zZXRJbm5lck5vZGUobm9kZSgpKTsKICAgICAgICAgcmVzdWx0LnNldElu
bmVyTm9uU2hhcmVkTm9kZShub2RlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCA5OGI5ZjRmLi4wMWM0OTI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC0xODU3LDcgKzE4NTcsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgcmVuZGVyZXIo
KS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgCiAgICAgSW50UmVjdCBib3VuZHNS
ZWN0KG1feCwgbV95LCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci0gICAgaWYgKHJlcXVlc3QuY2xpcFRv
VmlzaWJsZSkKKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSkKICAgICAgICAgYm91
bmRzUmVjdC5pbnRlcnNlY3QoZnJhbWVWaXNpYmxlUmVjdChyZW5kZXJlcigpKSk7CiAKICAgICBS
ZW5kZXJMYXllciogaW5zaWRlTGF5ZXIgPSBoaXRUZXN0TGF5ZXIodGhpcywgcmVxdWVzdCwgcmVz
dWx0LCBib3VuZHNSZWN0LCByZXN1bHQucG9pbnQoKSk7CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCBS
ZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBjb25zdCBIaXRUZXN0UmVxdQogICAgIC8vIFdlIGRpZG4ndCBoaXQgYW55IGxheWVyLiBJ
ZiB3ZSBhcmUgdGhlIHJvb3QgbGF5ZXIgYW5kIHRoZSBtb3VzZSBpcyAtLSBvciBqdXN0IHdhcyAt
LSBkb3duLCAKICAgICAvLyByZXR1cm4gb3Vyc2VsdmVzLiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2
ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2ZXJlZCBhZnRlciBhIGRyYWcgaGFzIAogICAgIC8v
IGV4aXRlZCB0aGUgV2ViVmlldywgYW5kIHNvIGhpdCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIg
aGl0cyB0aGUgY29udGVudCBkb2N1bWVudC4KLSAgICBpZiAoKHJlcXVlc3QuYWN0aXZlIHx8IHJl
cXVlc3QubW91c2VVcCkgJiYgcmVuZGVyZXIoKS0+aXNSZW5kZXJWaWV3KCkpIHsKKyAgICBpZiAo
KHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVzdC5tb3VzZVVwKCkpICYmIHJlbmRlcmVyKCktPmlz
UmVuZGVyVmlldygpKSB7CiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQo
cmVzdWx0LCBoaXRUZXN0UG9pbnQpOwogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CkBAIC0y
MzA2LDE0ICsyMzA2LDE0IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIGNvbW1vbkFuY2VzdG9yKFJl
bmRlck9iamVjdCogb2JqMSwgUmVuZGVyT2JqZWN0KiBvYmoyKQogCiB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgLy8gV2UgZG9uJ3QgdXBkYXRlIDpob3Zlci86
YWN0aXZlIHN0YXRlIHdoZW4gdGhlIHJlc3VsdCBpcyBtYXJrZWQgYXMgcmVhZG9ubHkuCi0gICAg
aWYgKHJlcXVlc3QucmVhZG9ubHkpCisgICAgLy8gV2UgZG9uJ3QgdXBkYXRlIDpob3Zlci86YWN0
aXZlIHN0YXRlIHdoZW4gdGhlIHJlc3VsdCBpcyBtYXJrZWQgYXMgcmVhZE9ubHkuCisgICAgaWYg
KHJlcXVlc3QucmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRG9jdW1lbnQqIGRv
YyA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCk7CiAKICAgICBOb2RlKiBhY3RpdmVOb2RlID0gZG9j
LT5hY3RpdmVOb2RlKCk7Ci0gICAgaWYgKGFjdGl2ZU5vZGUgJiYgIXJlcXVlc3QuYWN0aXZlKSB7
CisgICAgaWYgKGFjdGl2ZU5vZGUgJiYgIXJlcXVlc3QuYWN0aXZlKCkpIHsKICAgICAgICAgLy8g
V2UgYXJlIGNsZWFyaW5nIHRoZSA6YWN0aXZlIGNoYWluIGJlY2F1c2UgdGhlIG1vdXNlIGhhcyBi
ZWVuIHJlbGVhc2VkLgogICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IGFjdGl2ZU5v
ZGUtPnJlbmRlcmVyKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewogICAgICAgICAg
ICAgaWYgKGN1cnItPmVsZW1lbnQoKSAmJiAhY3Vyci0+aXNUZXh0KCkpCkBAIC0yMzIyLDcgKzIz
MjIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UgogICAgICAgICBkb2MtPnNldEFjdGl2ZU5v
ZGUoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTm9kZSogbmV3QWN0aXZlTm9kZSA9IHJlc3Vs
dC5pbm5lck5vZGUoKTsKLSAgICAgICAgaWYgKCFhY3RpdmVOb2RlICYmIG5ld0FjdGl2ZU5vZGUg
JiYgcmVxdWVzdC5hY3RpdmUpIHsKKyAgICAgICAgaWYgKCFhY3RpdmVOb2RlICYmIG5ld0FjdGl2
ZU5vZGUgJiYgcmVxdWVzdC5hY3RpdmUoKSkgewogICAgICAgICAgICAgLy8gV2UgYXJlIHNldHRp
bmcgdGhlIDphY3RpdmUgY2hhaW4gYW5kIGZyZWV6aW5nIGl0LiBJZiBmdXR1cmUgbW92ZXMgaGFw
cGVuLCB0aGV5CiAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gcmVmZXJlbmNlIHRoaXMgY2hh
aW4uCiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IG5ld0FjdGl2ZU5vZGUt
PnJlbmRlcmVyKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewpAQCAtMjMzNyw3ICsy
MzM3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFIKICAgICAvLyBJZiB0aGUgbW91c2UgaXMg
ZG93biBhbmQgaWYgdGhpcyBpcyBhIG1vdXNlIG1vdmUgZXZlbnQsIHdlIHdhbnQgdG8gcmVzdHJp
Y3QgY2hhbmdlcyBpbiAKICAgICAvLyA6aG92ZXIvOmFjdGl2ZSB0byBvbmx5IGFwcGx5IHRvIGVs
ZW1lbnRzIHRoYXQgYXJlIGluIHRoZSA6YWN0aXZlIGNoYWluIHRoYXQgd2UgZnJvemUKICAgICAv
LyBhdCB0aGUgdGltZSB0aGUgbW91c2Ugd2VudCBkb3duLgotICAgIGJvb2wgbXVzdEJlSW5BY3Rp
dmVDaGFpbiA9IHJlcXVlc3QuYWN0aXZlICYmIHJlcXVlc3QubW91c2VNb3ZlOworICAgIGJvb2wg
bXVzdEJlSW5BY3RpdmVDaGFpbiA9IHJlcXVlc3QuYWN0aXZlKCkgJiYgcmVxdWVzdC5tb3VzZU1v
dmUoKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaG92ZXJlZCBub2RlIGhhcyBjaGFu
Z2VkLiAgSWYgbm90LCB0aGVuIHdlIGRvbid0IG5lZWQgdG8KICAgICAvLyBkbyBhbnl0aGluZy4g
IApAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlSG92ZXJBY3Rp
dmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFIKICAgICAvLyBO
b3cgc2V0IHRoZSBob3ZlciBzdGF0ZSBmb3Igb3VyIG5ldyBvYmplY3QgdXAgdG8gdGhlIHJvb3Qu
CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBuZXdIb3Zlck9iajsgY3VycjsgY3VyciA9
IGN1cnItPmhvdmVyQW5jZXN0b3IoKSkgewogICAgICAgICBpZiAoY3Vyci0+ZWxlbWVudCgpICYm
ICFjdXJyLT5pc1RleHQoKSAmJiAoIW11c3RCZUluQWN0aXZlQ2hhaW4gfHwgY3Vyci0+ZWxlbWVu
dCgpLT5pbkFjdGl2ZUNoYWluKCkpKSB7Ci0gICAgICAgICAgICBjdXJyLT5lbGVtZW50KCktPnNl
dEFjdGl2ZShyZXF1ZXN0LmFjdGl2ZSk7CisgICAgICAgICAgICBjdXJyLT5lbGVtZW50KCktPnNl
dEFjdGl2ZShyZXF1ZXN0LmFjdGl2ZSgpKTsKICAgICAgICAgICAgIGN1cnItPmVsZW1lbnQoKS0+
c2V0SG92ZXJlZCh0cnVlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCBm
NmVjM2IzLi43ZTIxZGVlIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC04ODYsNyArODg2LDcgQEAgUVdl
YkhpdFRlc3RSZXN1bHQgUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudChjb25zdCBRUG9pbnQgJnBv
cykgY29uc3QKICAgICBpZiAoIWQtPmZyYW1lLT52aWV3KCkgfHwgIWQtPmZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIFFXZWJIaXRUZXN0UmVzdWx0KCk7CiAKLSAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCAvKmFs
bG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmNsaXBUb1Zpc2libGUqLyBmYWxzZSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGQtPmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyph
bGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpOwogICAg
IHJldHVybiBRV2ViSGl0VGVzdFJlc3VsdChuZXcgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKHJl
c3VsdCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27246</attachid>
            <date>2009-02-02 07:13:12 -0800</date>
            <delta_ts>2009-02-02 07:53:06 -0800</delta_ts>
            <desc>Fixing oops and flip bool</desc>
            <filename>hittest_bools.patch</filename>
            <type>text/plain</type>
            <size>23525</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmMwMWY4ZS4uNDdkYzY1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAwOS0wMi0wMiAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU4NworICAgICAgICBSZWZhY3RvciBIaXRUZXN0UmVxdWVzdCB0byBlbGltaW5hdGUg
YWxsIHRoZSB1Z2x5IGJvb2xlYW4gYXJndW1lbnRzIGFuZAorICAgICAgICB1c2UgYW4gZW51bSBi
aXRmbGFnIGluc3RlYWQuICBDbGVhbnVwIGFsbCB0aGUgY29kZSB0aGF0IGNvbnN0cnVjdHMgdGhl
CisgICAgICAgIHZhcmlvdXMgSGl0VGVzdFJlcXVlc3RzIHRvIG1ha2UgdGhlIGNvZGUgbW9yZSBy
ZWFkYWJsZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZWxlbWVudEZyb21Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJlcGFyZU1vdXNlRXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpjb250YWlu
cyk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZv
clBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRv
QWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJv
cCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVx
dWVzdDo6cmVhZE9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6bW91c2VNb3ZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojptb3VzZVVwKToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXF1ZXN0OjppZ25vcmVDbGlwcGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpub2Rl
QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpoaXRUZXN0TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZUhvdmVyQWN0aXZlU3RhdGUpOgorCiAyMDA5LTAxLTMxICBBZGFtIFRyZWF0ICA8YWRhbS50
cmVhdEB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggMDVhZjY5Ni4uZmYzMGZiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODk4LDcgKzg5
OCw4IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkg
Y29uc3QKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChJbnRQ
b2ludCh4LCB5KSk7CiAgICAgcmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7IAogCkBAIC0yMDE3LDcgKzIwMTgsNyBAQCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIERvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cgogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGRvY3VtZW50UG9pbnQpOwogICAgIHJlbmRlclZp
ZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCi0gICAgaWYgKCFyZXF1
ZXN0LnJlYWRvbmx5KQorICAgIGlmICghcmVxdWVzdC5yZWFkT25seSgpKQogICAgICAgICB1cGRh
dGVSZW5kZXJpbmcoKTsKIAogICAgIHJldHVybiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
KGV2ZW50LCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNv
bnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDliZGNlYTYuLmE1M2E1ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTk5NSw3ICs5OTUsOCBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6OmNvbnRh
aW5zKGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJlcigp
KSAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QodHJ1ZSwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwogICAgIGRvY3VtZW50
LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBO
b2RlKiBpbm5lck5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYmI1Y2U2Ny4uYTVjNmU3MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTc0OCw3ICsxNzQ4LDgg
QEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3Np
dGlvbkZvclBvaW50KGNvbnN0IEludFBvaW4KICNlbHNlCiAgICAgICAgIG91cnBvaW50ID0gcG9p
bnQ7CiAjZW5kaWYKLSAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0cnVlLCB0cnVlKTsK
KyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUp
OwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChvdXJwb2ludCk7CiAgICAgICAgIHJlbmRl
clZpZXctPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgaW5uZXJO
b2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtMTkwOCw3ICsxOTA5LDggQEAgQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnQKICAgICAKICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJv
eChtX3JlbmRlcmVyKS0+bGF5ZXIoKTsKICAgICAgCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dCh0cnVlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpSZWFkT25seSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlKTsKICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0UmVzdWx0
KHBvaW50KTsKICAgICBsYXllci0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKICAg
ICBpZiAoIWhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDQ3YWM0ODEuLjUxZDIyZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC00NDMsNyArNDQzLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKCFESFRNTEZsYWcgJiYgIVVBRmxhZykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHJ1
ZSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX2ZyYW1lLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMoZXZlbnQucG9zKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGJvb2wgc3JjSXNESFRN
TDsKQEAgLTQ2Miw4ICs0NjIsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlv
bkZvck1vdXNlRHJhZygpCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6TW91c2VNb3ZlKTsKICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRp
b24pKTsKLSAgICBsYXllci0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCh0cnVlLCB0cnVlLCB0cnVl
KSwgcmVzdWx0KTsKKyAgICBsYXllci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIHVw
ZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQuaW5uZXJOb2RlKCksIHJlc3VsdC5sb2Nh
bFBvaW50KCkpOwogfQogCkBAIC02OTEsMTIgKzY5NCwxNSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
YWxsb3dESFRNTERyYWcoYm9vbCYgZmxhZ0RIVE1MLCBib29sJiBmbGFnVUEpIGNvbnN0CiAgICAg
ZmxhZ1VBID0gKChtYXNrICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSB8fCAobWFzayAmIERyYWdT
b3VyY2VBY3Rpb25MaW5rKSB8fCAobWFzayAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKTsK
IH0KICAgICAKLUhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2lu
dChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGNs
aXBUb1Zpc2libGUpCitIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0
UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9v
bCBpZ25vcmVDbGlwcGluZykKIHsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CiAg
ICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChIaXRU
ZXN0UmVxdWVzdCh0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGNsaXBUb1Zpc2libGUpLCByZXN1
bHQpOworICAgIGludCBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCisgICAgICAgIGhpdFR5
cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOworICAgIG1fZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCBy
ZXN1bHQpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgTm9kZSogbiA9IHJlc3VsdC5p
bm5lck5vZGUoKTsKQEAgLTcxMyw3ICs3MTksNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxl
cjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIGFsbAog
ICAgICAgICBJbnRQb2ludCB3aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZp
ZXctPnNjcm9sbFgoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0
LT5wYWRkaW5nTGVmdCgpLCAKICAgICAgICAgICAgIHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsg
dmlldy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdl
dC0+cGFkZGluZ1RvcCgpKTsKICAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVz
dWx0KHdpZGdldFBvaW50KTsKLSAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXll
cigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgY2xp
cFRvVmlzaWJsZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHdp
ZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQgPSB3aWRnZXRIaXRUZXN0UmVzdWx0
OwogICAgIH0KICAgICAKQEAgLTcyNCw3ICs3MzAsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFu
ZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIGFs
bAogICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSAmJiByZXN1bHRGcmFtZSAmJiByZXN1bHRG
cmFtZSAhPSBtYWluRnJhbWUgJiYgIXJlc3VsdEZyYW1lLT5lZGl0b3IoKS0+aW5zaWRlVmlzaWJs
ZUFyZWEocmVzdWx0LnBvaW50KCkpKSB7CiAgICAgICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0g
cmVzdWx0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZXN1bHQucG9pbnQoKSk7CiAg
ICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMod2luZG93UG9pbnQpOwotICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dT
aGFkb3dDb250ZW50LCBjbGlwVG9WaXNpYmxlKTsKKyAgICAgICAgcmVzdWx0ID0gbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9pbnQsIGFs
bG93U2hhZG93Q29udGVudCwgaWdub3JlQ2xpcHBpbmcpOwogICAgIH0KIAogICAgIGlmICghYWxs
b3dTaGFkb3dDb250ZW50KQpAQCAtMTAwOCw3ICsxMDE0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZl
bnQpCiAgICAgbV9tb3VzZURvd25Qb3MgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMobW91c2VFdmVudC5wb3MoKSk7CiAgICAgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lID0gZmFs
c2U7CiAKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3Vz
ZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KGZhbHNlLCB0cnVlKSwgbW91c2VFdmVudCk7CisgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1v
dXNlRXZlbnQpOwogCiAgICAgaWYgKCFtZXYudGFyZ2V0Tm9kZSgpKSB7CiAgICAgICAgIGludmFs
aWRhdGVDbGljaygpOwpAQCAtMTA3OSw3ICsxMDg2LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQp
CiAgICAgLy8gaW4gY2FzZSB0aGUgc2Nyb2xsYmFyIHdpZGdldCB3YXMgZGVzdHJveWVkIHdoZW4g
dGhlIG1vdXNlIGV2ZW50IHdhcyBoYW5kbGVkLgogICAgIGlmIChtZXYuc2Nyb2xsYmFyKCkpIHsK
ICAgICAgICAgY29uc3QgYm9vbCB3YXNMYXN0U2Nyb2xsQmFyID0gbWV2LnNjcm9sbGJhcigpID09
IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UuZ2V0KCk7Ci0gICAgICAgIG1ldiA9IHByZXBhcmVN
b3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KHRydWUsIHRydWUpLCBtb3VzZUV2ZW50KTsKKyAgICAg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAg
ICAgICBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZUV2ZW50KTsKIAogICAg
ICAgICBpZiAod2FzTGFzdFNjcm9sbEJhciAmJiBtZXYuc2Nyb2xsYmFyKCkgIT0gbV9sYXN0U2Ny
b2xsYmFyVW5kZXJNb3VzZS5nZXQoKSkKICAgICAgICAgICAgIG1fbGFzdFNjcm9sbGJhclVuZGVy
TW91c2UgPSAwOwpAQCAtMTA5NCw4ICsxMTAzLDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQog
ICAgICAgICAvLyBJZiBhIG1vdXNlIGV2ZW50IGhhbmRsZXIgY2hhbmdlcyB0aGUgaW5wdXQgZWxl
bWVudCB0eXBlIHRvIG9uZSB0aGF0IGhhcyBhIHdpZGdldCBhc3NvY2lhdGVkLAogICAgICAgICAv
LyB3ZSdkIGxpa2UgdG8gRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQgdG8gcGFz
cyB0aGUgZXZlbnQgdG8gdGhlIHdpZGdldCBhbmQgdGh1cyB0aGUKICAgICAgICAgLy8gZXZlbnQg
dGFyZ2V0IG5vZGUgY2FuJ3Qgc3RpbGwgYmUgdGhlIHNoYWRvdyBub2RlLgotICAgICAgICBpZiAo
bWV2LnRhcmdldE5vZGUoKS0+aXNTaGFkb3dOb2RlKCkgJiYgbWV2LnRhcmdldE5vZGUoKS0+c2hh
ZG93UGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgICAgIG1ldiA9
IHByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KHRydWUsIHRydWUpLCBtb3VzZUV2ZW50
KTsKKyAgICAgICAgaWYgKG1ldi50YXJnZXROb2RlKCktPmlzU2hhZG93Tm9kZSgpICYmIG1ldi50
YXJnZXROb2RlKCktPnNoYWRvd1BhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsK
KyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRP
bmx5IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSk7CisgICAgICAgICAgICBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBt
b3VzZUV2ZW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0g
bV9mcmFtZS0+dmlldygpLT5zY3JvbGxiYXJVbmRlck1vdXNlKG1vdXNlRXZlbnQpOwogICAgICAg
ICBpZiAoIXNjcm9sbGJhcikKQEAgLTExMjEsNyArMTEzMyw4IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBt
b3VzZUV2CiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnRNb3VzZVBv
c2l0aW9uID0gbW91c2VFdmVudC5wb3MoKTsKIAotICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QoZmFsc2UsIHRydWUp
LCBtb3VzZUV2ZW50KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFy
ZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7CiAgICAgRnJhbWUqIHN1YmZyYW1lID0g
c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYgKHN1YmZyYW1lICYmIHBhc3NN
b3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpKSB7CiAgICAgICAgIG1fY2Fw
dHVyaW5nTW91c2VFdmVudHNOb2RlID0gMDsKQEAgLTExOTcsNyArMTIxMCwxMiBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBtb3VzZUV2ZW50LCBIaQogICAgIC8vIGlmIHdlIGFyZSBhbGxvd2VkIHRvIHNlbGVjdC4KICAg
ICAvLyBUaGlzIG1lYW5zIHRoYXQgOmhvdmVyIGFuZCA6YWN0aXZlIGZyZWV6ZSBpbiB0aGUgc3Rh
dGUgdGhleSB3ZXJlIGluIHdoZW4gdGhlIG1vdXNlCiAgICAgLy8gd2FzIHByZXNzZWQsIHJhdGhl
ciB0aGFuIHVwZGF0aW5nIGZvciBub2RlcyB0aGUgbW91c2UgbW92ZXMgb3ZlciBhcyB5b3UgaG9s
ZCB0aGUgbW91c2UgZG93bi4KLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KG1fbW91c2VQcmVz
c2VkICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QsIG1fbW91c2VQcmVzc2VkLCB0cnVlKTsK
KyAgICBpbnQgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpNb3VzZU1vdmU7CisgICAgaWYgKG1f
bW91c2VQcmVzc2VkICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QpCisgICAgICAgIGhpdFR5
cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5OworICAgIGlmIChtX21vdXNlUHJlc3NlZCkK
KyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOworICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZUV2ZW50KTsKICAgICBpZiAo
aG92ZXJlZE5vZGUpCiAgICAgICAgICpob3ZlcmVkTm9kZSA9IG1ldi5oaXRUZXN0UmVzdWx0KCk7
CkBAIC0xMjg3LDcgKzEzMDUsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgICAgICBy
ZXR1cm4gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS0+bW91c2VVcCgpOwogICAgIH0KIAotICAg
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQoSGl0
VGVzdFJlcXVlc3QoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSksIG1vdXNlRXZlbnQpOworICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6Ok1vdXNlVXApOworICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgbW91c2VFdmVudCk7CiAgICAgRnJhbWUqIHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUuZ2V0KCkgPyBzdWJmcmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUuZ2V0KCkpIDogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CiAgICAgaWYg
KHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFt
ZSkpIHsKICAgICAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOwpAQCAtMTMzOSw4
ICsxMzU4LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCoKIAogICAgIGlmICghbV9mcmFtZS0+
dmlldygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChIaXRUZXN0UmVxdWVzdCh0cnVl
LCBmYWxzZSksIGV2ZW50KTsKKworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9
IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGV2ZW50KTsKIAogICAgIC8vIERyYWcgZXZlbnRz
IHNob3VsZCBuZXZlciBnbyB0byB0ZXh0IG5vZGVzIChmb2xsb3dpbmcgSUUsIGFuZCBwcm9wZXIg
bW91c2VvdmVyL291dCBkaXNwYXRjaCkKICAgICBOb2RlKiBuZXdUYXJnZXQgPSBtZXYudGFyZ2V0
Tm9kZSgpOwpAQCAtMTU4OSw3ICsxNjA5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogCiAgICAgSW50UG9pbnQgdlBvaW50ID0g
bV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGUucG9zKCkpOwogCi0gICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdCh0cnVlLCBmYWxzZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZQ
b2ludCk7CiAgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwg
cmVzdWx0KTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtMTYzNSw3
ICsxNjU1LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgCiAgICAgYm9vbCBzd2FsbG93RXZlbnQ7
CiAgICAgSW50UG9pbnQgdmlld3BvcnRQb3MgPSB2LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBv
cygpKTsKLSAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFy
ZU1vdXNlRXZlbnQoSGl0VGVzdFJlcXVlc3QoZmFsc2UsIHRydWUpLCB2aWV3cG9ydFBvcywgZXZl
bnQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7
CisgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBkb2MtPnByZXBhcmVNb3Vz
ZUV2ZW50KHJlcXVlc3QsIHZpZXdwb3J0UG9zLCBldmVudCk7CiAKICAgICAvLyBDb250ZXh0IG1l
bnUgZXZlbnRzIHNob3VsZG4ndCBzZWxlY3QgdGV4dCBpbiBHVEsrIGFwcGxpY2F0aW9ucyBvciBp
biBDaHJvbWl1bS4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY29uZmln
dXJhYmxlIGJ5IGVtYmVkZGVycy4gQ29uc2lkZXIgbWFraW5nIGl0IGEgV2ViUHJlZmVyZW5jZXMg
c2V0dGluZy4KQEAgLTE3MTAsOCArMTczMSw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpob3ZlclRp
bWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVyPiopCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3Vt
ZW50KCkpOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlcmVyID0gbV9mcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkpIHsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVx
dWVzdDo6TW91c2VNb3ZlKTsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1fY3VycmVudE1vdXNlUG9zaXRpb24pKTsKLSAgICAg
ICAgcmVuZGVyZXItPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoZmFsc2UsIGZhbHNl
LCB0cnVlKSwgcmVzdWx0KTsKKyAgICAgICAgcmVuZGVyZXItPmxheWVyKCktPmhpdFRlc3QocmVx
dWVzdCwgcmVzdWx0KTsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlUmVuZGVy
aW5nKCk7CiAgICAgfQogfQpAQCAtMTk4Niw3ICsyMDA4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAK
ICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
YykgewogICAgICAgICAvLyB0cnkgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUg
ZHJhZ2dlZAotICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHRydWUsIGZhbHNlKTsKKyAg
ICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwog
ICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7CiAgICAgICAgIG1f
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3Vs
dCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKaW5kZXggOGY5NzA4Mi4uYmE5MGNjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtOTcsNyArOTcs
NyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBhdXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25z
dDsKICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogCi0gICAgSGl0VGVzdFJl
c3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBJbnRQb2ludCYsIGJvb2wgYWxsb3dTaGFk
b3dDb250ZW50LCBib29sIGNsaXBUb1Zpc2libGUgPSB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0
IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiwgYm9vbCBhbGxvd1NoYWRvd0Nv
bnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxzZSk7CiAKICAgICBib29sIG1vdXNlUHJl
c3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VQcmVzc2VkOyB9CiAgICAgdm9pZCBzZXRNb3Vz
ZVByZXNzZWQoYm9vbCBwcmVzc2VkKSB7IG1fbW91c2VQcmVzc2VkID0gcHJlc3NlZDsgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5kZXggOTc0MzY5OC4uNDZkZDdiOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVxdWVzdC5oCkBAIC0yLDYgKzIsNyBAQAogICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEhUTUwgcmVuZGVyaW5nIGVuZ2luZSBmb3IgS0RFLgogICoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRv
cmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xOSwyNiArMjAsMzUgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICoKICovCisKICNpZm5kZWYgSGl0VGVzdFJlcXVlc3RfaAogI2RlZmluZSBIaXRUZXN0UmVx
dWVzdF9oCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEhpdFRlc3RSZXF1ZXN0IHsK
LSAgICBIaXRUZXN0UmVxdWVzdChib29sIHIsIGJvb2wgYSwgYm9vbCBtID0gZmFsc2UsIGJvb2wg
dSA9IGZhbHNlLCBib29sIGMgPSB0cnVlKQotICAgICAgICA6IHJlYWRvbmx5KHIpCi0gICAgICAg
ICwgYWN0aXZlKGEpCi0gICAgICAgICwgbW91c2VNb3ZlKG0pCi0gICAgICAgICwgbW91c2VVcCh1
KQotICAgICAgICAsIGNsaXBUb1Zpc2libGUoYykKLSAgICB7IAorY2xhc3MgSGl0VGVzdFJlcXVl
c3QgeworcHVibGljOgorICAgIGVudW0gUmVxdWVzdFR5cGUgeworICAgICAgICBSZWFkT25seSA9
IDB4MSwKKyAgICAgICAgQWN0aXZlID0gMHgyLAorICAgICAgICBNb3VzZU1vdmUgPSAweDQsCisg
ICAgICAgIE1vdXNlVXAgPSAweDgsCisgICAgICAgIElnbm9yZUNsaXBwaW5nID0gMHgxMAorICAg
IH07CisKKyAgICBIaXRUZXN0UmVxdWVzdChpbnQgcmVxdWVzdFR5cGUpCisgICAgICAgIDogbV9y
ZXF1ZXN0VHlwZShyZXF1ZXN0VHlwZSkKKyAgICB7CiAgICAgfQogCi0gICAgYm9vbCByZWFkb25s
eTsKLSAgICBib29sIGFjdGl2ZTsKLSAgICBib29sIG1vdXNlTW92ZTsKLSAgICBib29sIG1vdXNl
VXA7Ci0gICAgYm9vbCBjbGlwVG9WaXNpYmxlOworICAgIGJvb2wgcmVhZE9ubHkoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3RUeXBlICYgUmVhZE9ubHk7IH0KKyAgICBib29sIGFjdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBY3RpdmU7IH0KKyAgICBib29sIG1vdXNlTW92
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBNb3VzZU1vdmU7IH0KKyAgICBib29s
IG1vdXNlVXAoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgTW91c2VVcDsgfQorICAg
IGJvb2wgaWdub3JlQ2xpcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgSWdu
b3JlQ2xpcHBpbmc7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9yZXF1ZXN0VHlwZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApp
bmRleCAwNzE3Y2Y0Li4zOWNkYmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3Bw
CkBAIC0xNjUsNyArMTY1LDcgQEAgYm9vbCBSZW5kZXJGcmFtZVNldDo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHIKICAgICAgICAgfHwg
bV9pc1Jlc2l6aW5nIHx8IGNhblJlc2l6ZShJbnRQb2ludCh4LCB5KSk7CiAKICAgICBpZiAoaW5z
aWRlICYmIGZyYW1lU2V0KCktPm5vUmVzaXplKCkKLSAgICAgICAgICAgICYmICFyZXF1ZXN0LnJl
YWRvbmx5ICYmICFyZXN1bHQuaW5uZXJOb2RlKCkpIHsKKyAgICAgICAgICAgICYmICFyZXF1ZXN0
LnJlYWRPbmx5KCkgJiYgIXJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICByZXN1bHQuc2V0
SW5uZXJOb2RlKG5vZGUoKSk7CiAgICAgICAgIHJlc3VsdC5zZXRJbm5lck5vblNoYXJlZE5vZGUo
bm9kZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOThiOWY0Zi4u
MDFjNDkyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTg1Nyw3ICsxODU3LDcg
QEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dCgpOwogICAgIAogICAgIEludFJlY3QgYm91bmRzUmVjdChtX3gsIG1feSwgd2lk
dGgoKSwgaGVpZ2h0KCkpOwotICAgIGlmIChyZXF1ZXN0LmNsaXBUb1Zpc2libGUpCisgICAgaWYg
KCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCiAgICAgICAgIGJvdW5kc1JlY3QuaW50ZXJzZWN0
KGZyYW1lVmlzaWJsZVJlY3QocmVuZGVyZXIoKSkpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGluc2lk
ZUxheWVyID0gaGl0VGVzdExheWVyKHRoaXMsIHJlcXVlc3QsIHJlc3VsdCwgYm91bmRzUmVjdCwg
cmVzdWx0LnBvaW50KCkpOwpAQCAtMjAwNiw3ICsyMDA2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRl
ckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVz
dFJlcXUKICAgICAvLyBXZSBkaWRuJ3QgaGl0IGFueSBsYXllci4gSWYgd2UgYXJlIHRoZSByb290
IGxheWVyIGFuZCB0aGUgbW91c2UgaXMgLS0gb3IganVzdCB3YXMgLS0gZG93biwgCiAgICAgLy8g
cmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBldmVudHMgY29udGludWUgZ2V0
dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAvLyBleGl0ZWQgdGhlIFdlYlZp
ZXcsIGFuZCBzbyBoaXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQg
ZG9jdW1lbnQuCi0gICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSB8fCByZXF1ZXN0Lm1vdXNlVXApICYm
IHJlbmRlcmVyKCktPmlzUmVuZGVyVmlldygpKSB7CisgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgp
IHx8IHJlcXVlc3QubW91c2VVcCgpKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlclZpZXcoKSkgewog
ICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgaGl0VGVzdFBv
aW50KTsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQpAQCAtMjMwNiwxNCArMjMwNiwxNCBA
QCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBjb21tb25BbmNlc3RvcihSZW5kZXJPYmplY3QqIG9iajEs
IFJlbmRlck9iamVjdCogb2JqMikKIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlSG92ZXJBY3Rp
dmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0KQogewotICAgIC8vIFdlIGRvbid0IHVwZGF0ZSA6aG92ZXIvOmFjdGl2ZSBzdGF0ZSB3aGVu
IHRoZSByZXN1bHQgaXMgbWFya2VkIGFzIHJlYWRvbmx5LgotICAgIGlmIChyZXF1ZXN0LnJlYWRv
bmx5KQorICAgIC8vIFdlIGRvbid0IHVwZGF0ZSA6aG92ZXIvOmFjdGl2ZSBzdGF0ZSB3aGVuIHRo
ZSByZXN1bHQgaXMgbWFya2VkIGFzIHJlYWRPbmx5LgorICAgIGlmIChyZXF1ZXN0LnJlYWRPbmx5
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERvY3VtZW50KiBkb2MgPSByZW5kZXJlcigpLT5k
b2N1bWVudCgpOwogCiAgICAgTm9kZSogYWN0aXZlTm9kZSA9IGRvYy0+YWN0aXZlTm9kZSgpOwot
ICAgIGlmIChhY3RpdmVOb2RlICYmICFyZXF1ZXN0LmFjdGl2ZSkgeworICAgIGlmIChhY3RpdmVO
b2RlICYmICFyZXF1ZXN0LmFjdGl2ZSgpKSB7CiAgICAgICAgIC8vIFdlIGFyZSBjbGVhcmluZyB0
aGUgOmFjdGl2ZSBjaGFpbiBiZWNhdXNlIHRoZSBtb3VzZSBoYXMgYmVlbiByZWxlYXNlZC4KICAg
ICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBhY3RpdmVOb2RlLT5yZW5kZXJlcigpOyBj
dXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKICAgICAgICAgICAgIGlmIChjdXJyLT5lbGVt
ZW50KCkgJiYgIWN1cnItPmlzVGV4dCgpKQpAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFIKICAgICAgICAgZG9jLT5zZXRBY3RpdmVOb2RlKDApOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIE5vZGUqIG5ld0FjdGl2ZU5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0g
ICAgICAgIGlmICghYWN0aXZlTm9kZSAmJiBuZXdBY3RpdmVOb2RlICYmIHJlcXVlc3QuYWN0aXZl
KSB7CisgICAgICAgIGlmICghYWN0aXZlTm9kZSAmJiBuZXdBY3RpdmVOb2RlICYmIHJlcXVlc3Qu
YWN0aXZlKCkpIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBzZXR0aW5nIHRoZSA6YWN0aXZlIGNo
YWluIGFuZCBmcmVlemluZyBpdC4gSWYgZnV0dXJlIG1vdmVzIGhhcHBlbiwgdGhleQogICAgICAg
ICAgICAgLy8gd2lsbCBuZWVkIHRvIHJlZmVyZW5jZSB0aGlzIGNoYWluLgogICAgICAgICAgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBuZXdBY3RpdmVOb2RlLT5yZW5kZXJlcigpOyBjdXJy
OyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKQEAgLTIzMzcsNyArMjMzNyw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSCiAgICAgLy8gSWYgdGhlIG1vdXNlIGlzIGRvd24gYW5kIGlmIHRoaXMg
aXMgYSBtb3VzZSBtb3ZlIGV2ZW50LCB3ZSB3YW50IHRvIHJlc3RyaWN0IGNoYW5nZXMgaW4gCiAg
ICAgLy8gOmhvdmVyLzphY3RpdmUgdG8gb25seSBhcHBseSB0byBlbGVtZW50cyB0aGF0IGFyZSBp
biB0aGUgOmFjdGl2ZSBjaGFpbiB0aGF0IHdlIGZyb3plCiAgICAgLy8gYXQgdGhlIHRpbWUgdGhl
IG1vdXNlIHdlbnQgZG93bi4KLSAgICBib29sIG11c3RCZUluQWN0aXZlQ2hhaW4gPSByZXF1ZXN0
LmFjdGl2ZSAmJiByZXF1ZXN0Lm1vdXNlTW92ZTsKKyAgICBib29sIG11c3RCZUluQWN0aXZlQ2hh
aW4gPSByZXF1ZXN0LmFjdGl2ZSgpICYmIHJlcXVlc3QubW91c2VNb3ZlKCk7CiAKICAgICAvLyBD
aGVjayB0byBzZWUgaWYgdGhlIGhvdmVyZWQgbm9kZSBoYXMgY2hhbmdlZC4gIElmIG5vdCwgdGhl
biB3ZSBkb24ndCBuZWVkIHRvCiAgICAgLy8gZG8gYW55dGhpbmcuICAKQEAgLTIzNjcsNyArMjM2
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSCiAgICAgLy8gTm93IHNldCB0aGUgaG92ZXIg
c3RhdGUgZm9yIG91ciBuZXcgb2JqZWN0IHVwIHRvIHRoZSByb290LgogICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjdXJyID0gbmV3SG92ZXJPYmo7IGN1cnI7IGN1cnIgPSBjdXJyLT5ob3ZlckFuY2Vz
dG9yKCkpIHsKICAgICAgICAgaWYgKGN1cnItPmVsZW1lbnQoKSAmJiAhY3Vyci0+aXNUZXh0KCkg
JiYgKCFtdXN0QmVJbkFjdGl2ZUNoYWluIHx8IGN1cnItPmVsZW1lbnQoKS0+aW5BY3RpdmVDaGFp
bigpKSkgewotICAgICAgICAgICAgY3Vyci0+ZWxlbWVudCgpLT5zZXRBY3RpdmUocmVxdWVzdC5h
Y3RpdmUpOworICAgICAgICAgICAgY3Vyci0+ZWxlbWVudCgpLT5zZXRBY3RpdmUocmVxdWVzdC5h
Y3RpdmUoKSk7CiAgICAgICAgICAgICBjdXJyLT5lbGVtZW50KCktPnNldEhvdmVyZWQodHJ1ZSk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5j
cHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggZjZlYzNiMy4uN2UyMWRlZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcApAQCAtODg2LDcgKzg4Niw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0IFFX
ZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQoY29uc3QgUVBvaW50ICZwb3MpIGNvbnN0CiAgICAgaWYg
KCFkLT5mcmFtZS0+dmlldygpIHx8ICFkLT5mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBRV2ViSGl0VGVzdFJlc3VsdCgpOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGQtPmZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyphbGxvd1NoYWRvd0NvbnRlbnQq
LyBmYWxzZSwgLypjbGlwVG9WaXNpYmxlKi8gZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5m
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50
Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKICAgICByZXR1cm4gUVdlYkhpdFRl
c3RSZXN1bHQobmV3IFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShyZXN1bHQpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
OWM1MTkyYi4uMDFiNDcwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDItMDIgIEFkYW0gVHJl
YXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1ODcKKyAgICAgICAgUmVmYWN0b3IgSGl0VGVzdFJlcXVlc3QgdG8gZWxpbWlu
YXRlIGFsbCB0aGUgdWdseSBib29sZWFuIGFyZ3VtZW50cyBhbmQKKyAgICAgICAgdXNlIGFuIGVu
dW0gYml0ZmxhZyBpbnN0ZWFkLiAgQ2xlYW51cCBhbGwgdGhlIGNvZGUgdGhhdCBjb25zdHJ1Y3Rz
IHRoZQorICAgICAgICB2YXJpb3VzIEhpdFRlc3RSZXF1ZXN0cyB0byBtYWtlIHRoZSBjb2RlIG1v
cmUgcmVhZGFibGUuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFX
ZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQpOgorCiAyMDA5LTAxLTMwICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4Lgo=
</data>
<flag name="review"
          id="13124"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>