<?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>99904</bug_id>
          
          <creation_ts>2012-10-19 21:17:50 -0700</creation_ts>
          <short_desc>[chromium] introduce a public API for the TestRunner library</short_desc>
          <delta_ts>2012-10-21 22:13:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746877</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-10-19 21:17:50 -0700</bug_when>
    <thetext>[chromium] introduce a public API for the TestRunner library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746879</commentid>
    <comment_count>1</comment_count>
      <attachid>169751</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-19 21:19:46 -0700</bug_when>
    <thetext>Created attachment 169751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746907</commentid>
    <comment_count>2</comment_count>
      <attachid>169751</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 23:03:14 -0700</bug_when>
    <thetext>Comment on attachment 169751
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebAccessibilityController.h:40
&gt; +class WebAccessibilityController {

How is this going to work in the component build?  I assume we&apos;re not going to link this into webkit.dll.  Does that means we&apos;re going to link it into content.dll?  Do we need a new TestRunner.dll ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746909</commentid>
    <comment_count>3</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-10-19 23:16:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 169751 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169751&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebAccessibilityController.h:40
&gt; &gt; +class WebAccessibilityController {
&gt; 
&gt; How is this going to work in the component build?  I assume we&apos;re not going to link this into webkit.dll.  Does that means we&apos;re going to link it into content.dll?  Do we need a new TestRunner.dll ?

Since it only depends on symbols exported from webkit.dll, I guess it can be directly linked into the content_shell</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746911</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 23:20:57 -0700</bug_when>
    <thetext>&gt; Since it only depends on symbols exported from webkit.dll, I guess it can be directly linked into the content_shell

I wonder if it would be better as a separate DLL.  That will help make sure the dependencies are clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746912</commentid>
    <comment_count>5</comment_count>
      <attachid>169751</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 23:23:42 -0700</bug_when>
    <thetext>Comment on attachment 169751
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebAccessibilityController.h:36
&gt; +class AccessibilityController;
&gt; +
&gt; +namespace WebKit {

You might want to take this opportunity to introduce a separate namespace for this library.  For example, we could use the namespace TestRunner or WebTestRunner.  Using the WebKit namespace isn&apos;t quite right because this is outside webkit.dll.

Do we want to put the implementation and the API into different namespaces?  My gut says that&apos;s overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746922</commentid>
    <comment_count>6</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-10-19 23:44:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Since it only depends on symbols exported from webkit.dll, I guess it can be directly linked into the content_shell
&gt; 
&gt; I wonder if it would be better as a separate DLL.  That will help make sure the dependencies are clean.

I think long term that&apos;s definitely desirable.

I decided against going there immediately because of Task.h and TestRunner.h that are still directly consumed by DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746929</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 23:55:26 -0700</bug_when>
    <thetext>Makes sense.  However, I think we should set up the API in a way that makes that transition easy.  For the time being, I think that mostly means using a new namespace and deciding which functions can only be called from &quot;inside&quot; the library (e.g., the WebAccessibilityController(AccessibilityController*) constructor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747052</commentid>
    <comment_count>8</comment_count>
      <attachid>169789</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-21 01:47:09 -0700</bug_when>
    <thetext>Created attachment 169789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747053</commentid>
    <comment_count>9</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-10-21 01:49:54 -0700</bug_when>
    <thetext>I&apos;ve moved the public API into the namespace WebTestRunner (but of the implementation only the required pieces yet), added a WEBTESTRUNNER_IMPLEMENTATION define, and removed a WTF header ref (wtf/Vector)

I also verified that this builds with a component build in chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747156</commentid>
    <comment_count>10</comment_count>
      <attachid>169789</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-21 15:31:17 -0700</bug_when>
    <thetext>Comment on attachment 169789
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:128
&gt; +    m_internal = new Internal;

We should use WebPrivateOwnPtr here to help us avoid leaking.  We still need to call reset manually, but at least there will be an ASSERT if we screw up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747202</commentid>
    <comment_count>11</comment_count>
      <attachid>169789</attachid>
    <who name="">jochen</who>
    <bug_when>2012-10-21 19:57:18 -0700</bug_when>
    <thetext>Comment on attachment 169789
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:128
&gt;&gt; +    m_internal = new Internal;
&gt; 
&gt; We should use WebPrivateOwnPtr here to help us avoid leaking.  We still need to call reset manually, but at least there will be an ASSERT if we screw up.

WebPrivateOwnPtr requires WEBKIT_IMPLEMENTATION to be defined in the .cpp file which we don&apos;t want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747213</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-21 21:30:22 -0700</bug_when>
    <thetext>Good point.  We could generalize it, but it&apos;s probably not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747225</commentid>
    <comment_count>13</comment_count>
      <attachid>169789</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-21 22:13:52 -0700</bug_when>
    <thetext>Comment on attachment 169789
Patch

Clearing flags on attachment: 169789

Committed r132029: &lt;http://trac.webkit.org/changeset/132029&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747226</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-21 22:13:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169751</attachid>
            <date>2012-10-19 21:19:46 -0700</date>
            <delta_ts>2012-10-21 01:47:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99904-20121020061828.patch</filename>
            <type>text/plain</type>
            <size>35770</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxODM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NzJiN2Q5OGQ2OWE5YzYwMWY1Y2RkMzgwZTcyZGM2
NWJhZGNkOC4uMzU2NjQyMTljZDhmZWU2NWYxZTUxZDA4ZDdjN2VlZGRhNzdlNmRmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEyLTEwLTE5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gaW50cm9kdWNlIGEgcHVibGljIEFQSSBmb3IgdGhlIFRlc3RS
dW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk5MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQVBJIGRlY291cGxlcyB0aGUgcHVibGljIEFQSSBmcm9tIHRoZSB1bmRlcmx5aW5n
IGltcGxlbWVudGF0aW9uLCBzbworICAgICAgICBlbWJlZGRlcnMgY2FuIGRlcGVuZCBvbiBpdC4g
SSdtIGFsc28gY2hhbmdpbmcgRFJUIHRvIGNvbnN1bWUgdGhlCisgICAgICAgIFRlc3RSdW5uZXIg
QVBJIHRocm91Z2ggdGhlIHB1YmxpYyBBUEksIGV4Y2VwdCBmb3IgRFJUVGVzdFJ1bm5lciBhbmQg
YWxsCisgICAgICAgIHBsYWNlcyB0aGF0IHJlcXVpcmUgVGFzay5oLiBUaGVzZSB0d28gd2lsbCBi
ZSBtaWdyYXRlZCBpbiBsYXRlciBjaGFuZ2VzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVERldlRvb2xzQWdlbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NsaWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmguCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2VuZGVyLmg6IENvcGllZCBm
cm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2su
aC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFdmVudFNlbmRlcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVn
YXRlLmg6IENvcGllZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0RGVs
ZWdhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6IENvcGllZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBDb3Bp
ZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6fldlYkFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNldEZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6Om5vdGlmaWNhdGlvblJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkV2ZW50U2VuZGVyLmNw
cDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlh
Q2xpZW50TW9jay5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZl
bnRTZW5kZXI6OldlYkV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRTZW5k
ZXI6On5XZWJFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50U2VuZGVyOjpk
b0RyYWdEcm9wKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6dGVzdEludGVyZmFjZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpldmVudFNl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6On5J
bnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6
c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJu
YWw6OmNsZWFyQ29udGV4dE1lbnVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGVzdEludGVy
ZmFjZXM6OkludGVybmFsOjpjbGVhckVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VGVzdEludGVyZmFjZXM6OkludGVybmFsOjpmaWxsU3BlbGxpbmdTdWdnZXN0aW9uTGlzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6c2V0RWRpdENvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6Omxhc3RD
b250ZXh0TWVudURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXN0SW50ZXJmYWNlczo6SW50
ZXJuYWw6OnNldEdhbWVwYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGVzdEludGVyZmFj
ZXM6OldlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGVzdEludGVyZmFj
ZXM6On5XZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRlc3RJbnRlcmZh
Y2VzOjpzZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGVzdEludGVyZmFjZXM6OnNl
dERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGVzdEludGVyZmFjZXM6OmJpbmRUbyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRlc3RJbnRlcmZhY2VzOjpyZXNldEFsbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRlc3RJbnRlcmZhY2VzOjphY2Nlc3NpYmlsaXR5Q29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRlc3RJbnRlcmZhY2VzOjpldmVudFNlbmRlcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RT
aGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmg6CisgICAgICAgIChUZXN0U2hlbGw6OmV2ZW50U2VuZGVyKToKKyAgICAgICAgKFRl
c3RTaGVsbDo6YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdFNoZWxsKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIwMTIt
MTAtMTggIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBBZGQgYSB3ZWJraXRfdGVzdF9zdXBwb3J0IHRhcmdldCB0aGF0IFdlYlRlc3Rp
bmdTdXBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAppbmRleCA3MTdjZmQxN2E5MmI3YjM4YjNlMmEx
MmQzODIzYzdlNTRmZjQ2NzBkLi40Y2ZmMjAxYjZmOTRiMGJhMjdmNzU2NDE5YWRiNTM2YzYyZWM0
M2M0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAv
RHVtcFJlbmRlclRyZWUuZ3lwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKQEAgLTg4LDExICs4OCwxMiBAQAogICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2Vf
ZGlyKS9XZWJLaXQvY2hyb21pdW0vcHVibGljJywKICAgICAgICAgICAgICAgICAnPChERVBUSCkn
LAorICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYycsCiAgICAg
ICAgICAgICAgICAgJy4uL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjJywKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKICAgICAgICAgICAg
ICAgICAnaW5jbHVkZV9kaXJzJzogWwotICAgICAgICAgICAgICAgICAgICAnLi4vY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMnLAorICAgICAgICAgICAgICAgICAgICAnLi4vY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMnLAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgJ3NvdXJjZXMnOiBbCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aQppbmRleCBmNDM4NWRkNDFhNjY4NDYxYzE4ZDIwYThiYmZjYWY2MzQ3YjhjM2E2Li43ZTdkNjli
YWRiZjVkNjg0NGY4YjhlMzVmYzE5OGEyYWYyYmMzNDRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTY0LDYgKzY0LDEwIEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vV2ViVmlld0hvc3RTb2Z0d2FyZU91dHB1dERldmljZS5oJywKICAgICAgICAgXSwKICAg
ICAgICAgJ3Rlc3RfcnVubmVyX2ZpbGVzJzogWworICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgnLAorICAgICAgICAgICAg
J2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKKyAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oJywKKyAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwJywKQEAg
LTg0LDYgKzg4LDkgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0
SW5wdXRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICBdLAogICAgICAgICAn
dGVzdF9wbHVnaW5fZmlsZXMnOiBbCiAgICAgICAgICAgICAnVGVzdE5ldHNjYXBlUGx1Z0luL1Bs
dWdpbk9iamVjdC5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJURGV2VG9vbHNBZ2VudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
RGV2VG9vbHNBZ2VudC5oCmluZGV4IGVhNmU1YWVhNmFjMGMyNzc2ZmViOGI5NzBjZjI5Zjc4NmRl
ZDE3MDkuLmQwNjZiN2E3MThmZDI4OGViMzllMjY1YmNjZjE5NjU2ZmQ4NjhlOTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKQEAgLTMx
LDcgKzMxLDcgQEAKICNpZm5kZWYgRFJURGV2VG9vbHNBZ2VudF9oCiAjZGVmaW5lIERSVERldlRv
b2xzQWdlbnRfaAogCi0jaW5jbHVkZSAiVGFzay5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3Jj
L1Rhc2suaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlREZXZUb29sc0NsaWVudC5oCmluZGV4IDk3
YTFlZGMwYmZlMWM2M2U2YmY2ZTU1MjlmNTVmZDFhYzVhODA4ZmMuLmVhZDM5NjM3OWI0YmU3ZTIx
ODkyNzUyYWFhMzhiMTkyNTlkOWY2NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRFJURGV2VG9vbHNDbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBE
UlREZXZUb29sc0NsaWVudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQ2xpZW50X2gKIAotI2luY2x1
ZGUgIlRhc2suaCIKKyNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAi
V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oCmluZGV4IDBlMzQ0OGYyMWM4NjEwNmJlNTNiMGVjYzQ2MmE4ZjMwMDg1N2IwZWMuLjVk
ZGQyZmM0NTVlN2NlYTg5NDY5NTk0ZjE4NTg5Nzc3YjNmZDA2YzMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKLSNpbmNsdWRlICJUYXNrLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMvVGFzay5o
IgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uLmg+CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgKaW5kZXggOGQ3NTE5
NjAzOTNlYjJkZjM5NzZjMDIyNTBkMWM3YzkyOGUwYWRmMi4uNjQ5NGE3ZjI1YmFiYjNjYzNhOTE3
YjU5ZjUwZDhhOWQ4NzljYjEyYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaApAQCAtMjgsNyAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAotI2luY2x1ZGUgIlRhc2suaCIK
KyNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
UmVjdC5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IldlYlNwZWVjaElucHV0UmVzdWx0LmgiCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaAppbmRleCBlYjdjM2U5NWI5YTU5
MDNmN2Y0N2E4ODg4ZTJmYTAzNWZlMTVhMzEzLi40Y2MwNDU2NjlmYWYwMTUyOGE2ZDVmNWI1ZmI1
MmI2ZDFkZTIyYmRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKLSNpbmNsdWRlICJUYXNrLmgiCisjaW5jbHVkZSAiVGVz
dFJ1bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYlNwZWVjaFJlY29nbml6ZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODc4NmY5NTc4Yzc5NzNlNGRkY2I4Y2IwM2FmY2E1YjZhOTFmNDQ4YwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaAorI2RlZmluZSBXZWJBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcl9oCisKK2NsYXNzIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKKworY2xhc3MgV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKik7CisgICAgfldlYkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50KGNvbnN0IFdl
YkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvblJlY2VpdmVkKGNv
bnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIHRhcmdldCwgY29uc3QgY2hhciogbm90aWZpY2F0
aW9uTmFtZSk7CisgICAgYm9vbCBzaG91bGRMb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCk7CisKK3By
aXZhdGU6CisgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIG1fcHJpdmF0ZTsKK307CisKK30K
KworI2VuZGlmIC8vIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2Vu
ZGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJFdmVudFNlbmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZDg4MGNlNDRlYzhlOTE0NmRmMDk5MTVlNDEz
MDg0ODhmNDJjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkV2ZW50U2VuZGVyX2gKKyNkZWZpbmUgV2ViRXZlbnRTZW5kZXJfaAorCisjaW5j
bHVkZSAiV2ViRHJhZ09wZXJhdGlvbi5oIgorCitjbGFzcyBFdmVudFNlbmRlcjsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRyYWdEYXRhOworCitjbGFzcyBXZWJFdmVudFNlbmRl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRXZlbnRTZW5kZXIoRXZlbnRTZW5kZXIqKTsK
KyAgICB+V2ViRXZlbnRTZW5kZXIoKTsKKworICAgIC8vIFNpbXVsYXRlIGRyYWcmZHJvcCBzeXN0
ZW0gY2FsbC4KKyAgICB2b2lkIGRvRHJhZ0Ryb3AoY29uc3QgV2ViRHJhZ0RhdGEmLCBXZWJEcmFn
T3BlcmF0aW9uc01hc2spOworCitwcml2YXRlOgorICAgIEV2ZW50U2VuZGVyKiBtX3ByaXZhdGU7
Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJFdmVudFNlbmRlcl9oCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdh
dGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3REZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ODVkZDVlNGM5OGM1YzBmN2JlNWQzMTgyNjg5
NDJjOTQzODhiNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJUZXN0RGVsZWdhdGVfaAorI2RlZmluZSBXZWJUZXN0RGVsZWdhdGVfaAorCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBXZWJDb250ZXh0TWVudURhdGE7CitjbGFzcyBX
ZWJHYW1lcGFkczsKKworY2xhc3MgV2ViVGVzdERlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDb250ZXh0TWVudURhdGEoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRWRpdENvbW1hbmQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTcGVsbGluZ1N1Z2dl
c3Rpb25MaXN0KGNvbnN0IFdlYlN0cmluZyYgd29yZCwgVmVjdG9yPFdlYlN0cmluZz4qIHN1Z2dl
c3Rpb25zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEVkaXRDb21tYW5kKGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFs
IFdlYkNvbnRleHRNZW51RGF0YSogbGFzdENvbnRleHRNZW51RGF0YSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0R2FtZXBhZERhdGEoY29uc3QgV2ViR2FtZXBhZHMmKSA9IDA7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXN0RGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFj
ZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODEyOWFlOWVkY2JhMDA1ZmYyNWM1OTgyY2Ew
ODg5N2RjMDJlMzMxNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViVGVzdEludGVyZmFjZXNfaAorI2RlZmluZSBXZWJUZXN0SW50ZXJmYWNl
c19oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjsKK2NsYXNzIFdlYkV2ZW50U2VuZGVyOworY2xhc3MgV2ViRnJhbWU7CitjbGFzcyBXZWJU
ZXN0RGVsZWdhdGU7CitjbGFzcyBXZWJWaWV3OworCitjbGFzcyBXZWJUZXN0SW50ZXJmYWNlcyB7
CitwdWJsaWM6CisgICAgV2ViVGVzdEludGVyZmFjZXMoKTsKKyAgICB+V2ViVGVzdEludGVyZmFj
ZXMoKTsKKworICAgIHZvaWQgc2V0V2ViVmlldyhXZWJWaWV3Kik7CisgICAgdm9pZCBzZXREZWxl
Z2F0ZShXZWJUZXN0RGVsZWdhdGUqKTsKKyAgICB2b2lkIGJpbmRUbyhXZWJGcmFtZSopOworICAg
IHZvaWQgcmVzZXRBbGwoKTsKKworICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpOworICAgIFdlYkV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigp
OworCitwcml2YXRlOgorICAgIGNsYXNzIEludGVybmFsOworICAgIEludGVybmFsKiBtX2ludGVy
bmFsOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViVGVzdEludGVyZmFjZXNfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
MzJkODFjMzg2MmI3MjcwM2VjNWExMzE3MTU4ZTZkOGE3YmY0OWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKiBjb250cm9sbGVyKQorICAgIDogbV9wcml2YXRlKGNvbnRy
b2xsZXIpCit7Cit9CisKK1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp+V2ViQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIoKQoreworfQorCit2b2lkIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjpzZXRGb2N1c2VkRWxlbWVudChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
Cit7CisgICAgbV9wcml2YXRlLT5zZXRGb2N1c2VkRWxlbWVudChvYmplY3QpOworfQorCit2b2lk
IFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpub3RpZmljYXRpb25SZWNlaXZlZChjb25zdCBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiB0YXJnZXQsIGNvbnN0IGNoYXIqIG5vdGlmaWNhdGlvbk5h
bWUpCit7CisgICAgbV9wcml2YXRlLT5ub3RpZmljYXRpb25SZWNlaXZlZCh0YXJnZXQsIG5vdGlm
aWNhdGlvbk5hbWUpOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzaG91
bGRMb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKK3sKKyAgICBtX3ByaXZhdGUtPnNob3VsZExvZ0Fj
Y2Vzc2liaWxpdHlFdmVudHMoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY1ODBiZmQ1NzFlMWFkZTMzMzUwMWZiOWE2YjNmYTBmMWY1YzQzYTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJFdmVudFNlbmRlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgorCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkV2ZW50U2VuZGVyOjpXZWJFdmVudFNlbmRl
cihFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCisgICAgOiBtX3ByaXZhdGUoZXZlbnRTZW5kZXIp
Cit7Cit9CisKK1dlYkV2ZW50U2VuZGVyOjp+V2ViRXZlbnRTZW5kZXIoKQoreworfQorCit2b2lk
IFdlYkV2ZW50U2VuZGVyOjpkb0RyYWdEcm9wKGNvbnN0IFdlYkRyYWdEYXRhJiBkYXRhLCBXZWJE
cmFnT3BlcmF0aW9uc01hc2sgbWFzaykKK3sKKyAgICBtX3ByaXZhdGUtPmRvRHJhZ0Ryb3AoZGF0
YSwgbWFzayk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMDVlMmQ5YTJjZTk1NjI1MWY4MTUxYWFkOTNhYjlhZGY1MjI0NTM0Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdEludGVyZmFjZXMuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlRlc3RJbnRlcmZhY2VzLmgiCisKKyNpbmNsdWRlICJUZXN0RGVsZWdh
dGUuaCIKKyNpbmNsdWRlICJUZXN0SW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgIldlYkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRTZW5kZXIuaCIKKyNpbmNsdWRl
ICJXZWJUZXN0RGVsZWdhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRl
c3RJbnRlcmZhY2VzOjpJbnRlcm5hbCA6IHB1YmxpYyBUZXN0RGVsZWdhdGUgeworcHVibGljOgor
ICAgIEludGVybmFsKCk7CisgICAgdmlydHVhbCB+SW50ZXJuYWwoKTsKKworICAgIFRlc3RJbnRl
cmZhY2VzKiB0ZXN0SW50ZXJmYWNlcygpIHsgcmV0dXJuICZtX2ludGVyZmFjZXM7IH0KKyAgICB2
b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOworICAgIFdlYkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIHsgcmV0dXJuICZtX2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyOyB9CisgICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkgeyBy
ZXR1cm4gJm1fZXZlbnRTZW5kZXI7IH0KKworICAgIC8vIFRlc3REZWxlZ2F0ZSBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb250ZXh0TWVudURhdGEoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJFZGl0Q29tbWFuZCgpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsU3BlbGxp
bmdTdWdnZXN0aW9uTGlzdChjb25zdCBXZWJTdHJpbmcmIHdvcmQsIFZlY3RvcjxXZWJTdHJpbmc+
KiBzdWdnZXN0aW9ucyk7CisgICAgdmlydHVhbCB2b2lkIHNldEVkaXRDb21tYW5kKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOworICAgIHZpcnR1YWwg
V2ViQ29udGV4dE1lbnVEYXRhKiBsYXN0Q29udGV4dE1lbnVEYXRhKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldEdhbWVwYWREYXRhKGNvbnN0IFdlYkdhbWVwYWRzJik7CisKK3ByaXZhdGU6
CisgICAgVGVzdEludGVyZmFjZXMgbV9pbnRlcmZhY2VzOworICAgIFdlYkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CisgICAgV2ViRXZlbnRTZW5kZXIg
bV9ldmVudFNlbmRlcjsKKyAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7Cit9OworCitX
ZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OkludGVybmFsKCkKKyAgICA6IG1fYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIobV9pbnRlcmZhY2VzLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpCisg
ICAgLCBtX2V2ZW50U2VuZGVyKG1faW50ZXJmYWNlcy5ldmVudFNlbmRlcigpKQorICAgICwgbV9k
ZWxlZ2F0ZSgwKQoreworfQorCitXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6On5JbnRlcm5h
bCgpCit7Cit9CisKK3ZvaWQgV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpzZXREZWxlZ2F0
ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIGlmIChkZWxlZ2F0ZSkgeworICAg
ICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIG1faW50ZXJmYWNlcy5zZXREZWxl
Z2F0ZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RlbGVnYXRlID0gMDsKKyAgICAg
ICAgbV9pbnRlcmZhY2VzLnNldERlbGVnYXRlKDApOworICAgIH0KK30KKwordm9pZCBXZWJUZXN0
SW50ZXJmYWNlczo6SW50ZXJuYWw6OmNsZWFyQ29udGV4dE1lbnVEYXRhKCkKK3sKKyAgICBtX2Rl
bGVnYXRlLT5jbGVhckNvbnRleHRNZW51RGF0YSgpOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZh
Y2VzOjpJbnRlcm5hbDo6Y2xlYXJFZGl0Q29tbWFuZCgpCit7CisgICAgbV9kZWxlZ2F0ZS0+Y2xl
YXJFZGl0Q29tbWFuZCgpOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6
ZmlsbFNwZWxsaW5nU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViU3RyaW5nJiB3b3JkLCBWZWN0b3I8
V2ViU3RyaW5nPiogc3VnZ2VzdGlvbnMpCit7CisgICAgbV9kZWxlZ2F0ZS0+ZmlsbFNwZWxsaW5n
U3VnZ2VzdGlvbkxpc3Qod29yZCwgc3VnZ2VzdGlvbnMpOworfQorCit2b2lkIFdlYlRlc3RJbnRl
cmZhY2VzOjpJbnRlcm5hbDo6c2V0RWRpdENvbW1hbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
IGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2RlbGVnYXRlLT5zZXRFZGl0Q29t
bWFuZChuYW1lLCB2YWx1ZSk7Cit9CisKK1dlYkNvbnRleHRNZW51RGF0YSogV2ViVGVzdEludGVy
ZmFjZXM6OkludGVybmFsOjpsYXN0Q29udGV4dE1lbnVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9kZWxlZ2F0ZS0+bGFzdENvbnRleHRNZW51RGF0YSgpOworfQorCit2b2lkIFdlYlRlc3RJ
bnRlcmZhY2VzOjpJbnRlcm5hbDo6c2V0R2FtZXBhZERhdGEoY29uc3QgV2ViR2FtZXBhZHMmIHBh
ZHMpCit7CisgICAgbV9kZWxlZ2F0ZS0+c2V0R2FtZXBhZERhdGEocGFkcyk7Cit9CisKK1dlYlRl
c3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcygpCit7CisgICAgbV9pbnRlcm5hbCA9IG5l
dyBJbnRlcm5hbDsKK30KKworV2ViVGVzdEludGVyZmFjZXM6On5XZWJUZXN0SW50ZXJmYWNlcygp
Cit7CisgICAgZGVsZXRlIG1faW50ZXJuYWw7Cit9CisKK3ZvaWQgV2ViVGVzdEludGVyZmFjZXM6
OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldykKK3sKKyAgICBtX2ludGVybmFsLT50ZXN0SW50
ZXJmYWNlcygpLT5zZXRXZWJWaWV3KHdlYlZpZXcpOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZh
Y2VzOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIG1faW50
ZXJuYWwtPnNldERlbGVnYXRlKGRlbGVnYXRlKTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJmYWNl
czo6YmluZFRvKFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBtX2ludGVybmFsLT50ZXN0SW50ZXJm
YWNlcygpLT5iaW5kVG8oZnJhbWUpOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpyZXNl
dEFsbCgpCit7CisgICAgbV9pbnRlcm5hbC0+dGVzdEludGVyZmFjZXMoKS0+cmVzZXRBbGwoKTsK
K30KKworV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjphY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpCit7CisgICAgcmV0dXJuIG1faW50ZXJuYWwtPmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCk7Cit9CisKK1dlYkV2ZW50U2VuZGVyKiBXZWJUZXN0SW50ZXJmYWNl
czo6ZXZlbnRTZW5kZXIoKQoreworICAgIHJldHVybiBtX2ludGVybmFsLT5ldmVudFNlbmRlcigp
OworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApp
bmRleCAzMjU4NWZhYTFiMmQ4YWQ4MWE4M2IxNWU4ZjcxMmJkOGNhNzI0ODliLi5lNzhkZGNiYjc4
M2U2MGQ0ZDMyNDhhZDNmMDlmNzE3MDRjNGNjMTJiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBUZXN0U2hlbGw6OlRl
c3RTaGVsbCgpCiB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgbV93ZWJQZXJt
aXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0aGlzKSk7Ci0gICAgbV90ZXN0
SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBUZXN0SW50ZXJmYWNlcygpKTsKKyAgICBtX3Rlc3RJ
bnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdlYlRlc3RJbnRlcmZhY2VzKCkpOwogICAgIG1fdGVz
dFJ1bm5lciA9IGFkb3B0UHRyKG5ldyBEUlRUZXN0UnVubmVyKHRoaXMpKTsKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIG1fbm90
aWZpY2F0aW9uUHJlc2VudGVyID0gYWRvcHRQdHIobmV3IE5vdGlmaWNhdGlvblByZXNlbnRlcih0
aGlzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IDQ0
YjVhZTM4OGM2OGQ2NWRlODkwZmM4MDBmZWQ1MjI5ZWVjMmEzMjQuLjExMGUzMWIyNmEwYjg4NTc0
ZTkwNmE4Y2E4NTQ5MWQ1ZTBlMmM4NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oCkBAIC0zMSwxMyArMzEsMTEgQEAKICNpZm5kZWYgVGVzdFNoZWxsX2gKICNk
ZWZpbmUgVGVzdFNoZWxsX2gKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJEUlRUZXN0UnVubmVyLmgiCi0jaW5jbHVkZSAiR2FtZXBhZENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRl
ICJUZXN0RXZlbnRQcmludGVyLmgiCi0jaW5jbHVkZSAiVGVzdEludGVyZmFjZXMuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIldlYlRlc3RJbnRlcmZhY2VzLmgiCiAj
aW5jbHVkZSAiV2ViVmlld0hvc3QuaCIKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgpAQCAtODgsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUg
aG9zdCBmb3IgdGhlIG1haW4gV2ViVmlldy4KICAgICBXZWJWaWV3SG9zdCogd2ViVmlld0hvc3Qo
KSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXdIb3N0LmdldCgpOyB9CiAgICAgRFJUVGVzdFJ1bm5l
ciogdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdFJ1bm5lci5nZXQoKTsgfQotICAg
IEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEludGVyZmFj
ZXMtPmV2ZW50U2VuZGVyKCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbnRlcmZhY2VzLT5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpOyB9CisgICAgV2ViS2l0OjpXZWJFdmVudFNlbmRlciogZXZl
bnRTZW5kZXIoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbnRlcmZhY2VzLT5ldmVudFNlbmRlcigp
OyB9CisgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RJbnRlcmZhY2VzLT5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpOyB9CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X25vdGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsgfQogI2VuZGlmCkBAIC0yMTIsNyArMjEwLDcg
QEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7
CiAgICAgT3duUHRyPERSVERldlRvb2xzQWdlbnQ+IG1fZHJ0RGV2VG9vbHNBZ2VudDsKICAgICBP
d25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0RGV2VG9vbHNDbGllbnQ7Ci0gICAgT3duUHRy
PFRlc3RJbnRlcmZhY2VzPiBtX3Rlc3RJbnRlcmZhY2VzOworICAgIE93blB0cjxXZWJLaXQ6Oldl
YlRlc3RJbnRlcmZhY2VzPiBtX3Rlc3RJbnRlcmZhY2VzOwogICAgIE93blB0cjxEUlRUZXN0UnVu
bmVyPiBtX3Rlc3RSdW5uZXI7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBPd25QdHI8Tm90aWZpY2F0aW9uUHJlc2VudGVyPiBt
X25vdGlmaWNhdGlvblByZXNlbnRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAppbmRleCA5ZTFiZWJhNGEzYjBkY2Q3
OTQ5YWQyYTg2ZmI4OWYwYWZmNmM5OTUzLi5mNDM4NzU5NzY2NjFmMmI3ZTA3NmIyNjFmNWYyZTBh
ZmIzNmUyOTg4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJV
c2VyTWVkaWFDbGllbnRNb2NrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGFzay5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIv
c3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKICNpbmNsdWRlICJ3
ZWJraXQvc3VwcG9ydC90ZXN0X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29tbW9uLmg+CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKaW5kZXggYzdhYjQ3NWU3ZmU3OWVmMThkNTI4ODJlMzU3MjZhNDU5NjU2ZDdlOS4u
NDM1OWQxYmQ0Y2E5MTliODBhYmNlNTg5YzdkMDU2NDA5MzE4ZGJjNiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMzIsMTMgKzMyLDE0IEBA
CiAjaW5jbHVkZSAiV2ViVmlld0hvc3QuaCIKIAogI2luY2x1ZGUgIkRSVFRlc3RSdW5uZXIuaCIK
LSNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIk1vY2tHcmFtbWFyQ2hlY2suaCIK
ICNpbmNsdWRlICJNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTW9j
a1dlYlNwZWVjaFJlY29nbml6ZXIuaCIKICNpbmNsdWRlICJUZXN0TmF2aWdhdGlvbkNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKICNpbmNsdWRlICJUZXN0V2ViUGx1Z2luLmgi
CisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZU1lc3NhZ2UuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEuaCIKICNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZl
bnQuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2suaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkVsZW1l
bnQuaCIKKyNpbmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViSGlz
dG9yeUl0ZW0uaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
CmluZGV4IGM5ZTE3YjA3ZmQ4YTQ1MDFhMjkwNDdlM2RlZDk0Y2FmMDZiNDQ4MDUuLmY4N2Y4ODc3
YjMyOTUyOGI3MTZlNzMyNmM4YTMzMTYyY2EwYjM5ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzIsMTUgKzMyLDE1IEBACiAjZGVmaW5lIFdl
YlZpZXdIb3N0X2gKIAogI2luY2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgiCi0jaW5jbHVkZSAiVGFz
ay5oIgotI2luY2x1ZGUgIlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlRlc3ROYXZpZ2F0aW9u
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRl
ICJXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ3Vyc29ySW5m
by5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50UmVx
dWVzdC5oIgogI2luY2x1ZGUgIldlYlByZXJlbmRlcmVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
U3BlbGxDaGVja0NsaWVudC5oIgorI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1
ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFRlc3RNZWRpYVN0cmVhbUNs
aWVudDsKIAogY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50
LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwgcHVibGljIE5hdmlnYXRpb25Ib3N0LAog
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJQcmVyZW5kZXJlckNsaWVudCwg
cHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAg
cHVibGljIFRlc3REZWxlZ2F0ZSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6
OldlYlRlc3REZWxlZ2F0ZSB7CiAgcHVibGljOgogICAgIFdlYlZpZXdIb3N0KFRlc3RTaGVsbCop
OwogICAgIHZpcnR1YWwgfldlYlZpZXdIb3N0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169789</attachid>
            <date>2012-10-21 01:47:09 -0700</date>
            <delta_ts>2012-10-21 22:13:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99904-20121021104549.patch</filename>
            <type>text/plain</type>
            <size>51959</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxODM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NzJiN2Q5OGQ2OWE5YzYwMWY1Y2RkMzgwZTcyZGM2
NWJhZGNkOC4uZjZjYzkzMDc2YzUzMWIyMDUxNWZhZTlmY2RmZDI0YmI1NWEzOGQ2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
MiBAQAorMjAxMi0xMC0yMSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIGludHJvZHVjZSBhIHB1YmxpYyBBUEkgZm9yIHRoZSBUZXN0
UnVubmVyIGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5OTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIEFQSSBkZWNvdXBsZXMgdGhlIHB1YmxpYyBBUEkgZnJvbSB0aGUgdW5kZXJseWlu
ZyBpbXBsZW1lbnRhdGlvbiwgc28KKyAgICAgICAgZW1iZWRkZXJzIGNhbiBkZXBlbmQgb24gaXQu
IEknbSBhbHNvIGNoYW5naW5nIERSVCB0byBjb25zdW1lIHRoZQorICAgICAgICBUZXN0UnVubmVy
IEFQSSB0aHJvdWdoIHRoZSBwdWJsaWMgQVBJLCBleGNlcHQgZm9yIERSVFRlc3RSdW5uZXIgYW5k
IGFsbAorICAgICAgICBwbGFjZXMgdGhhdCByZXF1aXJlIFRhc2suaC4gVGhlc2UgdHdvIHdpbGwg
YmUgbWlncmF0ZWQgaW4gbGF0ZXIgY2hhbmdlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlREZXZUb29sc0FnZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJURGV2VG9vbHNDbGllbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrU3BlbGxDaGVjay5jcHA6CisgICAgICAgIChNb2NrU3BlbGxDaGVjazo6ZmlsbFN1
Z2dlc3Rpb25MaXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3Bl
bGxDaGVjay5oOgorICAgICAgICAoTW9ja1NwZWxsQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdhdGUuaC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYkV2ZW50
U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0RGVsZWdhdGUuaDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdERlbGVnYXRlLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0RGVsZWdhdGUpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RJbnRlcmZhY2VzLmg6IENvcGllZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmguCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckNocm9taXVtLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Om1ha2VN
ZW51SXRlbVN0cmluZ3NGb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVsZWdh
dGUuaDoKKyAgICAgICAgKFRlc3REZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6Cisg
ICAgICAgIChUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBDb3BpZWQg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0RGVs
ZWdhdGUuaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpz
ZXRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6bm90aWZpY2F0aW9uUmVjZWl2ZWQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNob3VsZExvZ0FjY2Vzc2liaWxpdHlF
dmVudHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYkV2ZW50U2VuZGVyLmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdERlbGVnYXRlLmguCisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYkV2ZW50U2VuZGVyOjpXZWJFdmVudFNl
bmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJFdmVudFNlbmRlcjo6ZG9EcmFnRHJv
cCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdEludGVyZmFjZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAg
ICAgICAoV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6dGVzdEludGVyZmFjZXMpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjphY2Nlc3NpYmls
aXR5Q29udHJvbGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNl
czo6SW50ZXJuYWw6OmV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50ZXJuYWwpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjp+SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpzZXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OmNsZWFy
Q29udGV4dE1lbnVEYXRhKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZh
Y2VzOjpJbnRlcm5hbDo6Y2xlYXJFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OmZpbGxTcGVsbGluZ1N1Z2dlc3Rpb25MaXN0
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6
c2V0RWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFj
ZXM6OkludGVybmFsOjpsYXN0Q29udGV4dE1lbnVEYXRhKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6c2V0R2FtZXBhZERhdGEpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OldlYlRlc3RJbnRlcmZhY2VzKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp+V2ViVGVzdEludGVy
ZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OnNldFdl
YlZpZXcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OnNldERl
bGVnYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjpiaW5k
VG8pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OnJlc2V0QWxs
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjphY2Nlc3NpYmls
aXR5Q29udHJvbGxlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNl
czo6ZXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OmluaXRpYWxpemUpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNoZWxsOjpl
dmVudFNlbmRlcik6CisgICAgICAgIChUZXN0U2hlbGw6OmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KToKKyAgICAgICAgKFRlc3RTaGVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpmaW5pc2hMYXN0
VGV4dENoZWNrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpmaWxsU3BlbGxpbmdTdWdnZXN0aW9u
TGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoK
KyAgICAgICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0xMC0xOCAgSm9jaGVuIEVpc2luZ2VyICA8
am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBhIHdlYmtpdF90
ZXN0X3N1cHBvcnQgdGFyZ2V0IHRoYXQgV2ViVGVzdGluZ1N1cHBvcnQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwCmluZGV4IDcxN2NmZDE3YTkyYjdiMzhiM2UyYTEyZDM4MjNjN2U1NGZmNDY3MGQuLmE4MTI4
NGIwYjUzMDQ1NWJlYjljNjVjYzM3MjJjNDIxM2YyNDYwNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5
cApAQCAtNzcsNiArNzcsOSBAQAogICAgICAgICB7CiAgICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnVGVzdFJ1bm5lcicsCiAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisg
ICAgICAgICAgICAnZGVmaW5lcyc6IFsKKyAgICAgICAgICAgICAgICAnV0VCVEVTVFJVTk5FUl9J
TVBMRU1FTlRBVElPTj0xJywKKyAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnZGVwZW5kZW5j
aWVzJzogWwogICAgICAgICAgICAgICAgICdUZXN0UnVubmVyX3Jlc291cmNlcycsCiAgICAgICAg
ICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0
JywKQEAgLTg4LDExICs5MSwxMiBAQAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljJywKICAgICAgICAgICAgICAgICAnPChERVBUSCknLAorICAgICAgICAgICAgICAgICcuLi9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYycsCiAgICAgICAgICAgICAgICAgJy4uL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnZGlyZWN0X2Rl
cGVuZGVudF9zZXR0aW5ncyc6IHsKICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwot
ICAgICAgICAgICAgICAgICAgICAnLi4vY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMnLAorICAgICAg
ICAgICAgICAgICAgICAnLi4vY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMnLAogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCBmNDM4NWRkNDFhNjY4NDYx
YzE4ZDIwYThiYmZjYWY2MzQ3YjhjM2E2Li43ZTdkNjliYWRiZjVkNjg0NGY4YjhlMzVmYzE5OGEy
YWYyYmMzNDRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAg
LTY0LDYgKzY0LDEwIEBACiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3RTb2Z0d2Fy
ZU91dHB1dERldmljZS5oJywKICAgICAgICAgXSwKICAgICAgICAgJ3Rlc3RfcnVubmVyX2ZpbGVz
JzogWworICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJFdmVudFNlbmRlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJD
aHJvbWl1bS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwJywKQEAgLTg0LDYgKzg4LDkgQEAKICAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgnLAorICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIu
Y3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJm
YWNlcy5jcHAnLAogICAgICAgICBdLAogICAgICAgICAndGVzdF9wbHVnaW5fZmlsZXMnOiBbCiAg
ICAgICAgICAgICAnVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5jcHAnLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNBZ2VudC5oCmluZGV4IGVh
NmU1YWVhNmFjMGMyNzc2ZmViOGI5NzBjZjI5Zjc4NmRlZDE3MDkuLmQwNjZiN2E3MThmZDI4OGVi
MzllMjY1YmNjZjE5NjU2ZmQ4NjhlOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQWdlbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlREZXZUb29sc0FnZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgRFJU
RGV2VG9vbHNBZ2VudF9oCiAjZGVmaW5lIERSVERldlRvb2xzQWdlbnRfaAogCi0jaW5jbHVkZSAi
VGFzay5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlICJXZWJE
ZXZUb29sc0FnZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVERldlRvb2xzQ2xpZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlREZXZUb29sc0NsaWVudC5oCmluZGV4IDk3YTFlZGMwYmZlMWM2M2U2YmY2ZTU1Mjlm
NTVmZDFhYzVhODA4ZmMuLmVhZDM5NjM3OWI0YmU3ZTIxODkyNzUyYWFhMzhiMTkyNTlkOWY2NzEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVERldlRvb2xzQ2xp
ZW50LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJURGV2VG9vbHNDbGll
bnQuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBEUlREZXZUb29sc0NsaWVudF9oCiAjZGVm
aW5lIERSVERldlRvb2xzQ2xpZW50X2gKIAotI2luY2x1ZGUgIlRhc2suaCIKKyNpbmNsdWRlICJU
ZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9udGVuZENsaWVu
dC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1NwZWxsQ2hlY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxs
Q2hlY2suY3BwCmluZGV4IDU2YjBmMWVmZmYyZTViMTViNTE2MjIyZmQ5ZmU2ZmYxNzYyN2NjYTgu
Ljc1OTNjNzE5MDQyMzUwZDJjMjFlYWExOWRhYjlmNWE5OTk5MGE4ODEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5oIgog
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtOTksMTAgKzk4LDE1IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxs
Q2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1vY2tTcGVsbENoZWNrOjpmaWxsU3VnZ2VzdGlv
bkxpc3QoY29uc3QgV2ViU3RyaW5nJiB3b3JkLCBWZWN0b3I8V2ViU3RyaW5nPiogc3VnZ2VzdGlv
bnMpCit2b2lkIE1vY2tTcGVsbENoZWNrOjpmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViU3Ry
aW5nJiB3b3JkLCBXZWJWZWN0b3I8V2ViU3RyaW5nPiogc3VnZ2VzdGlvbnMpCiB7Ci0gICAgaWYg
KHdvcmQgPT0gV2ViU3RyaW5nOjpmcm9tVVRGOCgid2VsbGNvbWUiKSkKLSAgICAgICAgc3VnZ2Vz
dGlvbnMtPmFwcGVuZChXZWJTdHJpbmc6OmZyb21VVEY4KCJ3ZWxjb21lIikpOworICAgIGlmICh3
b3JkID09IFdlYlN0cmluZzo6ZnJvbVVURjgoIndlbGxjb21lIikpIHsKKyAgICAgICAgV2ViVmVj
dG9yPFdlYlN0cmluZz4gcmVzdWx0KHN1Z2dlc3Rpb25zLT5zaXplKCkgKyAxKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWdnZXN0aW9ucy0+c2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICByZXN1bHRbaV0gPSAoKnN1Z2dlc3Rpb25zKVtpXTsKKyAgICAgICAgcmVzdWx0W3N1Z2dl
c3Rpb25zLT5zaXplKCldID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgid2VsY29tZSIpOworICAgICAg
ICBzdWdnZXN0aW9ucy0+c3dhcChyZXN1bHQpOworICAgIH0KIH0KIAogYm9vbCBNb2NrU3BlbGxD
aGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrU3BlbGxDaGVjay5oCmluZGV4IGJjZTA1Yzc3MjhhZWNjZjRlMzdmODhjZTJmYWVk
NTRhMjk4YzZiYTQuLmI3ZDA3ODc4ZWVmYzc2ZmRkNzYxNGM5ZmI1MjRiMTg4YjUzNDk3ZWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaApAQCAt
MzEsMTQgKzMxLDEyIEBACiAjaWZuZGVmIE1vY2tTcGVsbENoZWNrX2gKICNkZWZpbmUgTW9ja1Nw
ZWxsQ2hlY2tfaAogCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViU3RyaW5nOwotfQotCiAvLyBBIG1vY2sg
aW1wbGVtZW50YXRpb24gb2YgYSBzcGVsbC1jaGVja2VyIHVzZWQgZm9yIFdlYktpdCB0ZXN0cy4K
IC8vIFRoaXMgY2xhc3Mgb25seSBpbXBsZW1lbnRzIHRoZSBtaW5pbWFsIGZ1bmN0aW9uYXJpdGll
cyByZXF1aXJlZCBieSBXZWJLaXQKIC8vIHRlc3RzLCBpLmUuIHRoaXMgY2xhc3MganVzdCBjb21w
YXJlcyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGgga25vd24gbWlzc3BlbGxlZApAQCAtNjIsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpOwogCi0g
ICAgdm9pZCBmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQs
IFZlY3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICB2b2lkIGZpbGxT
dWdnZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwgV2ViS2l0OjpXZWJW
ZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+KiBzdWdnZXN0aW9ucyk7CiAKIHByaXZhdGU6CiAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8gaW5pdGlh
bGl6ZSBpdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCAwZTM0NDhmMjFjODYx
MDZiZTUzYjBlY2M0NjJhOGYzMDA4NTdiMGVjLi41ZGRkMmZjNDU1ZTdjZWE4OTQ2OTU5NGYxODU4
OTc3N2IzZmQwNmMzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zMyw3ICsz
Myw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiVGFzay5oIgor
I2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
RGF0YUNoYW5uZWwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlci5oCmluZGV4IDhkNzUxOTYwMzkzZWIyZGYzOTc2YzAyMjUwZDFjN2M5
MjhlMGFkZjIuLjY0OTRhN2YyNWJhYmIzY2MzYTkxN2I1OWY1MGQ4YTlkODc5Y2IxMmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCiAKLSNpbmNsdWRlICJUYXNrLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lci9zcmMv
VGFzay5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dFJlc3VsdC5oIgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmgKaW5kZXggZWI3YzNlOTViOWE1OTAzZjdmNDdhODg4OGUyZmEwMzVmZTE1YTMx
My4uNGNjMDQ1NjY5ZmFmMDE1MjhhNmQ1ZjViNWZiNTJiNmQxZGUyMmJkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogCi0j
aW5jbHVkZSAiVGFzay5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIvc3JjL1Rhc2suaCIKICNpbmNs
dWRlICJXZWJTcGVlY2hSZWNvZ25pemVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZWM1MDg2OTMyZGRjMDBhZjg4
Nzk1YjhmMDA4NmMxZTY2MzA1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyX2gK
KyNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaAorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CisKK2NsYXNzIFdlYkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyIHsKK3B1YmxpYzoKKyNpZiBXRUJURVNUUlVOTkVSX0lNUExF
TUVOVEFUSU9OCisgICAgZXhwbGljaXQgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIqKTsKKyNlbmRpZgorCisgICAgdm9pZCBzZXRGb2N1c2VkRWxlbWVu
dChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAgICB2b2lkIG5vdGlm
aWNhdGlvblJlY2VpdmVkKGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgdGFy
Z2V0LCBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1lKTsKKyAgICBib29sIHNob3VsZExvZ0Fj
Y2Vzc2liaWxpdHlFdmVudHMoKTsKKworcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlciogbV9wcml2YXRlOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2VuZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRm
ODhhNzdkMTA1MzYxZjZlZTQ2ZDg5N2YwODkyZWQ1MGFlNzFiNQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50
U2VuZGVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXZlbnRTZW5kZXJfaAorI2RlZmlu
ZSBXZWJFdmVudFNlbmRlcl9oCisKKyNpbmNsdWRlICJXZWJEcmFnT3BlcmF0aW9uLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRHJhZ0RhdGE7Cit9CisKK25hbWVzcGFjZSBXZWJU
ZXN0UnVubmVyIHsKKworY2xhc3MgRXZlbnRTZW5kZXI7CisKK2NsYXNzIFdlYkV2ZW50U2VuZGVy
IHsKK3B1YmxpYzoKKyNpZiBXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCisgICAgZXhwbGlj
aXQgV2ViRXZlbnRTZW5kZXIoRXZlbnRTZW5kZXIqKTsKKyNlbmRpZgorCisgICAgLy8gU2ltdWxh
dGUgZHJhZyZkcm9wIHN5c3RlbSBjYWxsLgorICAgIHZvaWQgZG9EcmFnRHJvcChjb25zdCBXZWJL
aXQ6OldlYkRyYWdEYXRhJiwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uc01hc2spOworCitwcml2
YXRlOgorICAgIEV2ZW50U2VuZGVyKiBtX3ByaXZhdGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBX
ZWJFdmVudFNlbmRlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE0ZjYyMDIxY2VkNmY0YWZlM2Y0ZTBmODBlYTljNDdiY2EwOTdiMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0RGVsZWdhdGUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXN0RGVsZWdhdGVf
aAorI2RlZmluZSBXZWJUZXN0RGVsZWdhdGVfaAorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3Ry
aW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworc3RydWN0IFdlYkNvbnRleHRNZW51RGF0YTsKK2NsYXNzIFdlYkdhbWVwYWRzOworfQor
CituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3REZWxlZ2F0ZSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGV4dE1lbnVEYXRhKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjbGVhckVkaXRDb21tYW5kKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsU3BlbGxpbmdTdWdnZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwg
V2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+KiBzdWdnZXN0aW9ucykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0Q29tbWFuZChjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwg
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYkNv
bnRleHRNZW51RGF0YSogbGFzdENvbnRleHRNZW51RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0R2FtZXBhZERhdGEoY29uc3QgV2ViS2l0OjpXZWJHYW1lcGFkcyYpID0gMDsK
K307CisKK30KKworI2VuZGlmIC8vIFdlYlRlc3REZWxlZ2F0ZV9oCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdEludGVyZmFjZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjUyMGE2YjVhMjE3YTdmMjU2NjgwNzMx
ODFjZTY4N2I0M2QxNTYzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtMCwwICsx
LDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJUZXN0SW50ZXJmYWNlc19oCisjZGVmaW5lIFdlYlRlc3RJbnRlcmZh
Y2VzX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYlZp
ZXc7Cit9CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgV2ViQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI7CitjbGFzcyBXZWJFdmVudFNlbmRlcjsKK2NsYXNzIFdlYlRlc3REZWxl
Z2F0ZTsKKworY2xhc3MgV2ViVGVzdEludGVyZmFjZXMgeworcHVibGljOgorICAgIFdlYlRlc3RJ
bnRlcmZhY2VzKCk7CisgICAgfldlYlRlc3RJbnRlcmZhY2VzKCk7CisKKyAgICB2b2lkIHNldFdl
YlZpZXcoV2ViS2l0OjpXZWJWaWV3Kik7CisgICAgdm9pZCBzZXREZWxlZ2F0ZShXZWJUZXN0RGVs
ZWdhdGUqKTsKKyAgICB2b2lkIGJpbmRUbyhXZWJLaXQ6OldlYkZyYW1lKik7CisgICAgdm9pZCBy
ZXNldEFsbCgpOworCisgICAgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCk7CisgICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCk7CisKK3By
aXZhdGU6CisgICAgY2xhc3MgSW50ZXJuYWw7CisgICAgSW50ZXJuYWwqIG1faW50ZXJuYWw7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXN0SW50ZXJmYWNlc19oCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckNocm9taXVtLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCmluZGV4IDg5ZDVk
NTg3NzBjNjFkMWFhZTkxNjBiYTM0ZTQzNjc2NTE2YjA3YzIuLjMxNTkzMjRiZWYxYzg2NjY5MzVm
YTJlYjA2MzZjNjA1YmJlZWRjNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uY3BwCkBAIC00MCw2ICs0MCw4IEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKwogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKICAgICA6IG1fbG9n
QWNjZXNzaWJpbGl0eUV2ZW50cyhmYWxzZSkKIHsKQEAgLTE5NiwzICsxOTgsNSBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbgogICAgICAgICAgICAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJcbiIp
OwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckNocm9taXVtLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgKaW5kZXggZjBmNWRlZTg1NjJkOTU0
MWYwMGNmMTAyNGQ4NmNmNjYxYzYzN2QxMC4uNGRkN2Y4NzA1ZjlmZjAwZWUwODRmNzY0YjY2N2Zj
ZDQxNDExODhjOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQ2hyb21pdW0uaApAQCAtNDAsNiArNDAsOCBAQCBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYlZpZXc7CiB9CiAKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKwogY2xhc3MgQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CiBwdWJsaWM6CiAgICAg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKQEAgLTg1LDQgKzg3LDYgQEAgcHJpdmF0ZToKICAg
ICBXZWJLaXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAKK30KKwogI2VuZGlmIC8vIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW1faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4
IDIzYjY1ZDA3MTdiNWYzZTU5MzM2ZTJmYzhkMGE1ZWZiMDU5NTFlMzQuLjMxMGFlNmM0OGJkNGU4
ZmYzNjkxN2FmODIzMTBkNjlmZTVmMWE0OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAg
LTY0LDEwICs2NCwxNCBAQAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKwogV2ViUG9pbnQgRXZlbnRTZW5k
ZXI6Omxhc3RNb3VzZVBvczsKIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBFdmVudFNlbmRlcjo6cHJl
c3NlZEJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbk5vbmU7CiBXZWJNb3VzZUV2ZW50OjpC
dXR0b24gRXZlbnRTZW5kZXI6Omxhc3RCdXR0b25UeXBlID0gV2ViTW91c2VFdmVudDo6QnV0dG9u
Tm9uZTsKIAorbmFtZXNwYWNlIHsKKwogc3RydWN0IFNhdmVkRXZlbnQgewogICAgIGVudW0gU2F2
ZWRFdmVudFR5cGUgewogICAgICAgICBVbnNwZWNpZmllZCwKQEAgLTg3LDI3ICs5MSwyNyBAQCBz
dHJ1Y3QgU2F2ZWRFdmVudCB7CiAgICAgICAgICwgbWlsbGlzZWNvbmRzKDApIHsgfQogfTsKIAot
c3RhdGljIFdlYkRyYWdEYXRhIGN1cnJlbnREcmFnRGF0YTsKLXN0YXRpYyBXZWJEcmFnT3BlcmF0
aW9uIGN1cnJlbnREcmFnRWZmZWN0Owotc3RhdGljIFdlYkRyYWdPcGVyYXRpb25zTWFzayBjdXJy
ZW50RHJhZ0VmZmVjdHNBbGxvd2VkOwotc3RhdGljIGJvb2wgcmVwbGF5aW5nU2F2ZWRFdmVudHMg
PSBmYWxzZTsKLXN0YXRpYyBEZXF1ZTxTYXZlZEV2ZW50PiBtb3VzZUV2ZW50UXVldWU7Ci1zdGF0
aWMgaW50IHRvdWNoTW9kaWZpZXJzOwotc3RhdGljIFZlY3RvcjxXZWJUb3VjaFBvaW50PiB0b3Vj
aFBvaW50czsKK1dlYkRyYWdEYXRhIGN1cnJlbnREcmFnRGF0YTsKK1dlYkRyYWdPcGVyYXRpb24g
Y3VycmVudERyYWdFZmZlY3Q7CitXZWJEcmFnT3BlcmF0aW9uc01hc2sgY3VycmVudERyYWdFZmZl
Y3RzQWxsb3dlZDsKK2Jvb2wgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKK0RlcXVlPFNh
dmVkRXZlbnQ+IG1vdXNlRXZlbnRRdWV1ZTsKK2ludCB0b3VjaE1vZGlmaWVyczsKK1ZlY3RvcjxX
ZWJUb3VjaFBvaW50PiB0b3VjaFBvaW50czsKIAogLy8gVGltZSBhbmQgcGxhY2Ugb2YgdGhlIGxh
c3QgbW91c2UgdXAgZXZlbnQuCi1zdGF0aWMgZG91YmxlIGxhc3RDbGlja1RpbWVTZWMgPSAwOwot
c3RhdGljIFdlYlBvaW50IGxhc3RDbGlja1BvczsKLXN0YXRpYyBpbnQgY2xpY2tDb3VudCA9IDA7
Citkb3VibGUgbGFzdENsaWNrVGltZVNlYyA9IDA7CitXZWJQb2ludCBsYXN0Q2xpY2tQb3M7Citp
bnQgY2xpY2tDb3VudCA9IDA7CiAKIC8vIG1heGltdW0gZGlzdGFuY2UgKGluIHNwYWNlIGFuZCB0
aW1lKSBmb3IgYSBtb3VzZSBjbGljawogLy8gdG8gcmVnaXN0ZXIgYXMgYSBkb3VibGUgb3IgdHJp
cGxlIGNsaWNrCi1zdGF0aWMgY29uc3QgZG91YmxlIG11bHRpcGxlQ2xpY2tUaW1lU2VjID0gMTsK
LXN0YXRpYyBjb25zdCBpbnQgbXVsdGlwbGVDbGlja1JhZGl1c1BpeGVscyA9IDU7Citjb25zdCBk
b3VibGUgbXVsdGlwbGVDbGlja1RpbWVTZWMgPSAxOworY29uc3QgaW50IG11bHRpcGxlQ2xpY2tS
YWRpdXNQaXhlbHMgPSA1OwogCiAvLyBIb3cgbXVjaCB3ZSBzaG91bGQgc2Nyb2xsIHBlciBldmVu
dCAtIHRoZSB2YWx1ZSBoZXJlIGlzIGNob3NlbiB0bwogLy8gbWF0Y2ggdGhlIFdlYktpdCBpbXBs
IGFuZCBsYXlvdXQgdGVzdCByZXN1bHRzLgotc3RhdGljIGNvbnN0IGZsb2F0IHNjcm9sbGJhclBp
eGVsc1BlclRpY2sgPSA0MC4wZjsKK2NvbnN0IGZsb2F0IHNjcm9sbGJhclBpeGVsc1BlclRpY2sg
PSA0MC4wZjsKIAogaW5saW5lIGJvb2wgb3V0c2lkZU11bHRpQ2xpY2tSYWRpdXMoY29uc3QgV2Vi
UG9pbnQmIGEsIGNvbnN0IFdlYlBvaW50JiBiKQogewpAQCAtMTE4LDIwICsxMjIsMTkgQEAgaW5s
aW5lIGJvb2wgb3V0c2lkZU11bHRpQ2xpY2tSYWRpdXMoY29uc3QgV2ViUG9pbnQmIGEsIGNvbnN0
IFdlYlBvaW50JiBiKQogLy8gVXNlZCB0byBvZmZzZXQgdGhlIHRpbWUgdGhlIGV2ZW50IGhhbmRl
ciB0aGluZ3MgYW4gZXZlbnQgaGFwcGVuZWQuIFRoaXMgaXMKIC8vIGRvbmUgc28gdGVzdHMgY2Fu
IHJ1biB3aXRob3V0IGEgZGVsYXksIGJ1dCBieXBhc3MgY2hlY2tzIHRoYXQgYXJlIHRpbWUKIC8v
IGRlcGVuZGVudCAoZS5nLiwgZHJhZ2dpbmcgaGFzIGEgdGltZW91dCB2cyBzZWxlY3Rpb24pLgot
c3RhdGljIHVpbnQzMiB0aW1lT2Zmc2V0TXMgPSAwOwordWludDMyIHRpbWVPZmZzZXRNcyA9IDA7
CiAKLXN0YXRpYyBkb3VibGUgZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpCitkb3VibGUgZ2V0Q3Vy
cmVudEV2ZW50VGltZVNlYygpCiB7CiAgICAgcmV0dXJuICh3ZWJraXRfc3VwcG9ydDo6R2V0Q3Vy
cmVudFRpbWVJbk1pbGxpc2Vjb25kKCkgKyB0aW1lT2Zmc2V0TXMpIC8gMTAwMC4wOwogfQogCi1z
dGF0aWMgdm9pZCBhZHZhbmNlRXZlbnRUaW1lKGludDMyX3QgZGVsdGFNcykKK3ZvaWQgYWR2YW5j
ZUV2ZW50VGltZShpbnQzMl90IGRlbHRhTXMpCiB7CiAgICAgdGltZU9mZnNldE1zICs9IGRlbHRh
TXM7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6OlR5cGUg
dCwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJQb2ludCYgcG9zLCBXZWJNb3VzZUV2ZW50KiBlKQordm9pZCBpbml0TW91c2VFdmVu
dChXZWJJbnB1dEV2ZW50OjpUeXBlIHQsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBiLCBjb25zdCBX
ZWJQb2ludCYgcG9zLCBXZWJNb3VzZUV2ZW50KiBlKQogewogICAgIGUtPnR5cGUgPSB0OwogICAg
IGUtPmJ1dHRvbiA9IGI7CkBAIC0xNDUsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW5pdE1vdXNl
RXZlbnQoV2ViSW5wdXRFdmVudDo6VHlwZSB0LCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYiwKIH0K
IAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQga2V5IGlzIHRoZSBzeXN0ZW0ga2V5
Lgotc3RhdGljIGJvb2wgYXBwbHlLZXlNb2RpZmllcihjb25zdCBzdHJpbmcmIG1vZGlmaWVyTmFt
ZSwgV2ViSW5wdXRFdmVudCogZXZlbnQpCitib29sIGFwcGx5S2V5TW9kaWZpZXIoY29uc3Qgc3Ry
aW5nJiBtb2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogewogICAgIGJvb2wgaXNT
eXN0ZW1LZXkgPSBmYWxzZTsKICAgICBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzID0gbW9kaWZpZXJO
YW1lLmNfc3RyKCk7CkBAIC0xODIsNyArMTg1LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlLZXlNb2Rp
Zmllcihjb25zdCBzdHJpbmcmIG1vZGlmaWVyTmFtZSwgV2ViSW5wdXRFdmVudCogZXZlbnQpCiAg
ICAgcmV0dXJuIGlzU3lzdGVtS2V5OwogfQogCi1zdGF0aWMgYm9vbCBhcHBseUtleU1vZGlmaWVy
cyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2ViSW5wdXRFdmVudCogZXZlbnQpCitib29s
IGFwcGx5S2V5TW9kaWZpZXJzKGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50LCBXZWJJbnB1dEV2
ZW50KiBldmVudCkKIHsKICAgICBib29sIGlzU3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgaWYgKGFy
Z3VtZW50LT5pc09iamVjdCgpKSB7CkBAIC0yNDQsNiArMjQ3LDggQEAgZW51bSBLZXlMb2NhdGlv
bkNvZGUgewogICAgIERPTUtleUxvY2F0aW9uTnVtcGFkICAgICAgICA9IDB4MDMKIH07CiAKK30K
KwogRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkKICAgICA6IG1fZGVsZWdhdGUoMCkKIHsKQEAg
LTgxMiw3ICs4MTcsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3Ry
aW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEqIGNvbnRleHRNZW51LAogICAgIGlmIChjb250ZXh0
TWVudS0+aXNFZGl0YWJsZSkgewogICAgICAgICBmb3IgKGNvbnN0IGNoYXIqKiBpdGVtID0gZWRp
dGFibGVNZW51U3RyaW5nczsgKml0ZW07ICsraXRlbSkgCiAgICAgICAgICAgICBzdHJpbmdzLmFw
cGVuZChXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7Ci0gICAgICAgIFZlY3RvcjxXZWJTdHJp
bmc+IHN1Z2dlc3Rpb25zOworICAgICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBzdWdnZXN0aW9u
czsKICAgICAgICAgZGVsZWdhdGUtPmZpbGxTcGVsbGluZ1N1Z2dlc3Rpb25MaXN0KGNvbnRleHRN
ZW51LT5taXNzcGVsbGVkV29yZCwgJnN1Z2dlc3Rpb25zKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7ICsraSkgCiAgICAgICAgICAgICBzdHJpbmdz
LmFwcGVuZChzdWdnZXN0aW9uc1tpXSk7CkBAIC0xMjY5LDMgKzEyNzQsNSBAQCB2b2lkIEV2ZW50
U2VuZGVyOjpjbGVhcktpbGxSaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KKworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmgKaW5kZXggZTY3OTRhMDc3MGJkODhmNzRmZTUwY2EyZjcxNjYyMWQ0MTk4NzljYy4uNjVk
ZmNjYjhjMTU1ZTI1NDg4Mjg2ODYxMmJhODIyYzQwMWRlYTExOSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oCkBAIC01MCw2ICs1MCw4IEBAIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFRlc3REZWxlZ2F0
ZTsKIAorbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCiBjbGFzcyBFdmVudFNlbmRlciA6IHB1
YmxpYyBDcHBCb3VuZENsYXNzIHsKIHB1YmxpYzoKICAgICBFdmVudFNlbmRlcigpOwpAQCAtMTgz
LDQgKzE4NSw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VFdmVudDo6
QnV0dG9uIGxhc3RCdXR0b25UeXBlOwogfTsKIAorfQorCiAjZW5kaWYgLy8gRXZlbnRTZW5kZXJf
aApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0RGVsZWdhdGUuaAppbmRleCA1OTllMTFkNGM2MTM1OTQ5NDhiNzNjOTA2YzEy
MmMzMzZjMTA5ZGNkLi4wYjBkOTYyMmU4ZDhkOTQ0YTAzMWU1NTQwMTE0NzQzOTU4MjQxNmIyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0RGVsZWdhdGUuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBUZXN0RGVs
ZWdhdGVfaAogCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHN0cnVjdCBXZWJDb250ZXh0TWVudURhdGE7CkBAIC00Myw3ICs0Myw3IEBAIGNs
YXNzIFRlc3REZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGV4
dE1lbnVEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckVkaXRDb21tYW5kKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU3BlbGxpbmdTdWdnZXN0aW9uTGlzdChjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgd29yZCwgVmVjdG9yPFdlYktpdDo6V2ViU3RyaW5nPiogc3VnZ2VzdGlv
bnMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNwZWxsaW5nU3VnZ2VzdGlvbkxpc3QoY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQsIFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2Vi
U3RyaW5nPiogc3VnZ2VzdGlvbnMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdENvbW1h
bmQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgPSAw
OwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGEqIGxhc3RDb250ZXh0TWVu
dURhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEdhbWVwYWREYXRhKGNvbnN0
IFdlYktpdDo6V2ViR2FtZXBhZHMmKSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAK
aW5kZXggZTZlNjI1ZmFmZWEzYzgyZTFmNjQ0ZTNhMmZmNjk3OTc1MzIwMDY2My4uY2M4MjEyMTRi
ZjY2ODRmMzgzMTMxMmM4YmIzNTM4Njk0OTMzZWRmZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZh
Y2VzLmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKIAordXNpbmcgV2ViVGVzdFJ1bm5l
cjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7Cit1c2luZyBXZWJUZXN0UnVubmVyOjpFdmVudFNl
bmRlcjsKIHVzaW5nIFdlYktpdDo6V2ViRnJhbWU7CiB1c2luZyBXZWJLaXQ6OldlYlN0cmluZzsK
IHVzaW5nIFdlYktpdDo6V2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCmluZGV4IGQ2
Yjk4YWUzNGYzM2Q0Y2JhZTY2NTA1YjljYTY4NjAwNzAyZGRkZjMuLjIyODY1OGMyMmU0ZjM5ODI1
YTYwYjcwMzgzYzMwZDZlODQ4ODA1MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaApAQCAt
MzgsOCArMzgsMTEgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJWaWV3OwogfQogCituYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lciB7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKIGNs
YXNzIEV2ZW50U2VuZGVyOworfQorCiBjbGFzcyBHYW1lcGFkQ29udHJvbGxlcjsKIGNsYXNzIFRl
c3REZWxlZ2F0ZTsKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CkBAIC01NCwxMiArNTcsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgYmluZFRvKFdlYktpdDo6V2ViRnJhbWUqKTsKICAgICB2b2lk
IHJlc2V0QWxsKCk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKTsKLSAgICBFdmVudFNlbmRlciogZXZlbnRTZW5kZXIoKTsKKyAgICBXZWJU
ZXN0UnVubmVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIoKTsKKyAgICBXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlciogZXZlbnRTZW5kZXIoKTsKIAog
cHJpdmF0ZToKLSAgICBPd25QdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI7Ci0gICAgT3duUHRyPEV2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwor
ICAgIE93blB0cjxXZWJUZXN0UnVubmVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25QdHI8V2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI+IG1fZXZlbnRTZW5kZXI7CiAgICAgT3duUHRyPEdhbWVwYWRDb250cm9sbGVyPiBtX2dhbWVw
YWRDb250cm9sbGVyOwogICAgIE93blB0cjxUZXh0SW5wdXRDb250cm9sbGVyPiBtX3RleHRJbnB1
dENvbnRyb2xsZXI7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmYmUzMDk0NWI5MDdmNTJjYjc1Njc3MjU0ZTRhZGQ4
M2NhYTE2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oIgorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5o
IgorCit1c2luZyBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CisKK25hbWVzcGFjZSBX
ZWJUZXN0UnVubmVyIHsKKworV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OldlYkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBjb250cm9sbGVyKQorICAg
IDogbV9wcml2YXRlKGNvbnRyb2xsZXIpCit7Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEZvY3VzZWRFbGVtZW50KG9iamVjdCk7Cit9
CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Om5vdGlmaWNhdGlvblJlY2VpdmVk
KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIHRhcmdldCwgY29uc3QgY2hhciogbm90aWZp
Y2F0aW9uTmFtZSkKK3sKKyAgICBtX3ByaXZhdGUtPm5vdGlmaWNhdGlvblJlY2VpdmVkKHRhcmdl
dCwgbm90aWZpY2F0aW9uTmFtZSk7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPnNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5k
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
RXZlbnRTZW5kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzYzBiYmE0OThlZTNkMGY2OTYyOGVlMDU1MmMz
Yjg5NDFhMDM3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJFdmVudFNlbmRlci5jcHAKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgorCisjaW5jbHVk
ZSAiRXZlbnRTZW5kZXIuaCIKKwordXNpbmcgV2ViS2l0OjpXZWJEcmFnRGF0YTsKK3VzaW5nIFdl
YktpdDo6V2ViRHJhZ09wZXJhdGlvbnNNYXNrOworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7
CisKK1dlYkV2ZW50U2VuZGVyOjpXZWJFdmVudFNlbmRlcihFdmVudFNlbmRlciogZXZlbnRTZW5k
ZXIpCisgICAgOiBtX3ByaXZhdGUoZXZlbnRTZW5kZXIpCit7Cit9CisKK3ZvaWQgV2ViRXZlbnRT
ZW5kZXI6OmRvRHJhZ0Ryb3AoY29uc3QgV2ViRHJhZ0RhdGEmIGRhdGEsIFdlYkRyYWdPcGVyYXRp
b25zTWFzayBtYXNrKQoreworICAgIG1fcHJpdmF0ZS0+ZG9EcmFnRHJvcChkYXRhLCBtYXNrKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNk
NWIwZGUzZWMwZGYzOTZkODJmMjI0MzAwNWJjYmRjN2NlODFjZjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50
ZXJmYWNlcy5jcHAKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViVGVzdEludGVyZmFjZXMuaCIKKworI2luY2x1ZGUgIlRlc3REZWxlZ2F0ZS5oIgorI2lu
Y2x1ZGUgIlRlc3RJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgorI2luY2x1ZGUgIldlYlRlc3RE
ZWxlZ2F0ZS5oIgorCit1c2luZyBXZWJLaXQ6OldlYkNvbnRleHRNZW51RGF0YTsKK3VzaW5nIFdl
YktpdDo6V2ViRnJhbWU7Cit1c2luZyBXZWJLaXQ6OldlYkdhbWVwYWRzOwordXNpbmcgV2ViS2l0
OjpXZWJTdHJpbmc7Cit1c2luZyBXZWJLaXQ6OldlYlZlY3RvcjsKK3VzaW5nIFdlYktpdDo6V2Vi
VmlldzsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUZXN0SW50ZXJm
YWNlczo6SW50ZXJuYWwgOiBwdWJsaWMgVGVzdERlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBJbnRl
cm5hbCgpOworICAgIHZpcnR1YWwgfkludGVybmFsKCk7CisKKyAgICBUZXN0SW50ZXJmYWNlcyog
dGVzdEludGVyZmFjZXMoKSB7IHJldHVybiAmbV9pbnRlcmZhY2VzOyB9CisgICAgdm9pZCBzZXRE
ZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqKTsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiAmbV9hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjsgfQorICAgIFdlYkV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIHsgcmV0dXJuICZt
X2V2ZW50U2VuZGVyOyB9CisKKyAgICAvLyBUZXN0RGVsZWdhdGUgaW1wbGVtZW50YXRpb24uCisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGV4dE1lbnVEYXRhKCk7CisgICAgdmlydHVhbCB2b2lk
IGNsZWFyRWRpdENvbW1hbmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNwZWxsaW5nU3VnZ2Vz
dGlvbkxpc3QoY29uc3QgV2ViU3RyaW5nJiB3b3JkLCBXZWJWZWN0b3I8V2ViU3RyaW5nPiogc3Vn
Z2VzdGlvbnMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0Q29tbWFuZChjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKKyAgICB2aXJ0dWFsIFdlYkNv
bnRleHRNZW51RGF0YSogbGFzdENvbnRleHRNZW51RGF0YSgpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBzZXRHYW1lcGFkRGF0YShjb25zdCBXZWJHYW1lcGFkcyYpOworCitwcml2YXRlOgorICAg
IFRlc3RJbnRlcmZhY2VzIG1faW50ZXJmYWNlczsKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlciBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOworICAgIFdlYkV2ZW50U2VuZGVyIG1fZXZl
bnRTZW5kZXI7CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOworfTsKKworV2ViVGVz
dEludGVyZmFjZXM6OkludGVybmFsOjpJbnRlcm5hbCgpCisgICAgOiBtX2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyKG1faW50ZXJmYWNlcy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpKQorICAgICwg
bV9ldmVudFNlbmRlcihtX2ludGVyZmFjZXMuZXZlbnRTZW5kZXIoKSkKKyAgICAsIG1fZGVsZWdh
dGUoMCkKK3sKK30KKworV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjp+SW50ZXJuYWwoKQor
eworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6c2V0RGVsZWdhdGUoV2Vi
VGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICBpZiAoZGVsZWdhdGUpIHsKKyAgICAgICAg
bV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBtX2ludGVyZmFjZXMuc2V0RGVsZWdhdGUo
dGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kZWxlZ2F0ZSA9IDA7CisgICAgICAgIG1f
aW50ZXJmYWNlcy5zZXREZWxlZ2F0ZSgwKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViVGVzdEludGVy
ZmFjZXM6OkludGVybmFsOjpjbGVhckNvbnRleHRNZW51RGF0YSgpCit7CisgICAgbV9kZWxlZ2F0
ZS0+Y2xlYXJDb250ZXh0TWVudURhdGEoKTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6
SW50ZXJuYWw6OmNsZWFyRWRpdENvbW1hbmQoKQoreworICAgIG1fZGVsZWdhdGUtPmNsZWFyRWRp
dENvbW1hbmQoKTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OmZpbGxT
cGVsbGluZ1N1Z2dlc3Rpb25MaXN0KGNvbnN0IFdlYlN0cmluZyYgd29yZCwgV2ViVmVjdG9yPFdl
YlN0cmluZz4qIHN1Z2dlc3Rpb25zKQoreworICAgIG1fZGVsZWdhdGUtPmZpbGxTcGVsbGluZ1N1
Z2dlc3Rpb25MaXN0KHdvcmQsIHN1Z2dlc3Rpb25zKTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJm
YWNlczo6SW50ZXJuYWw6OnNldEVkaXRDb21tYW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBj
b25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCit7CisgICAgbV9kZWxlZ2F0ZS0+c2V0RWRpdENvbW1h
bmQobmFtZSwgdmFsdWUpOworfQorCitXZWJDb250ZXh0TWVudURhdGEqIFdlYlRlc3RJbnRlcmZh
Y2VzOjpJbnRlcm5hbDo6bGFzdENvbnRleHRNZW51RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZGVsZWdhdGUtPmxhc3RDb250ZXh0TWVudURhdGEoKTsKK30KKwordm9pZCBXZWJUZXN0SW50
ZXJmYWNlczo6SW50ZXJuYWw6OnNldEdhbWVwYWREYXRhKGNvbnN0IFdlYkdhbWVwYWRzJiBwYWRz
KQoreworICAgIG1fZGVsZWdhdGUtPnNldEdhbWVwYWREYXRhKHBhZHMpOworfQorCitXZWJUZXN0
SW50ZXJmYWNlczo6V2ViVGVzdEludGVyZmFjZXMoKQoreworICAgIG1faW50ZXJuYWwgPSBuZXcg
SW50ZXJuYWw7Cit9CisKK1dlYlRlc3RJbnRlcmZhY2VzOjp+V2ViVGVzdEludGVyZmFjZXMoKQor
eworICAgIGRlbGV0ZSBtX2ludGVybmFsOworfQorCit2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpz
ZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgbV9pbnRlcm5hbC0+dGVzdEludGVy
ZmFjZXMoKS0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJmYWNl
czo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICBtX2ludGVy
bmFsLT5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9CisKK3ZvaWQgV2ViVGVzdEludGVyZmFjZXM6
OmJpbmRUbyhXZWJGcmFtZSogZnJhbWUpCit7CisgICAgbV9pbnRlcm5hbC0+dGVzdEludGVyZmFj
ZXMoKS0+YmluZFRvKGZyYW1lKTsKK30KKwordm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6cmVzZXRB
bGwoKQoreworICAgIG1faW50ZXJuYWwtPnRlc3RJbnRlcmZhY2VzKCktPnJlc2V0QWxsKCk7Cit9
CisKK1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBXZWJUZXN0SW50ZXJmYWNlczo6YWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIoKQoreworICAgIHJldHVybiBtX2ludGVybmFsLT5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpOworfQorCitXZWJFdmVudFNlbmRlciogV2ViVGVzdEludGVyZmFjZXM6
OmV2ZW50U2VuZGVyKCkKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbC0+ZXZlbnRTZW5kZXIoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5k
ZXggMzI1ODVmYWExYjJkOGFkODFhODNiMTVlOGY3MTJiZDhjYTcyNDg5Yi4uYjhiNTljZDk3MmJj
MjE5OTgzYmVmY2QwMWE3NTYyOTA4N2VhNWQ4OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgVGVzdFNoZWxsOjpUZXN0
U2hlbGwoKQogdm9pZCBUZXN0U2hlbGw6OmluaXRpYWxpemUoKQogewogICAgIG1fd2ViUGVybWlz
c2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwotICAgIG1fdGVzdElu
dGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgVGVzdEludGVyZmFjZXMoKSk7CisgICAgbV90ZXN0SW50
ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlcygp
KTsKICAgICBtX3Rlc3RSdW5uZXIgPSBhZG9wdFB0cihuZXcgRFJUVGVzdFJ1bm5lcih0aGlzKSk7
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKICAgICBtX25vdGlmaWNhdGlvblByZXNlbnRlciA9IGFkb3B0UHRyKG5ldyBOb3RpZmljYXRp
b25QcmVzZW50ZXIodGhpcykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuaAppbmRleCA0NGI1YWUzODhjNjhkNjVkZTg5MGZjODAwZmVkNTIyOWVlYzJhMzI0Li5hY2Fh
MzNkMTU0MmY3MjRkYmMxM2ZhZDA0MzY5MTIzY2Q1M2QwODkwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApAQCAtMzEsMTMgKzMxLDExIEBACiAjaWZuZGVmIFRl
c3RTaGVsbF9oCiAjZGVmaW5lIFRlc3RTaGVsbF9oCiAKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRFJUVGVzdFJ1bm5lci5oIgotI2luY2x1
ZGUgIkdhbWVwYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
LmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50UHJpbnRlci5oIgotI2luY2x1ZGUgIlRlc3RJbnRlcmZh
Y2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJXZWJUZXN0SW50
ZXJmYWNlcy5oIgogI2luY2x1ZGUgIldlYlZpZXdIb3N0LmgiCiAjaW5jbHVkZSA8c3RyaW5nPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTg4LDggKzg2LDggQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgdGhlIGhvc3QgZm9yIHRoZSBtYWluIFdlYlZpZXcuCiAgICAgV2ViVmlld0hvc3Qq
IHdlYlZpZXdIb3N0KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3SG9zdC5nZXQoKTsgfQogICAg
IERSVFRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RSdW5uZXIu
Z2V0KCk7IH0KLSAgICBFdmVudFNlbmRlciogZXZlbnRTZW5kZXIoKSBjb25zdCB7IHJldHVybiBt
X3Rlc3RJbnRlcmZhY2VzLT5ldmVudFNlbmRlcigpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIqIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW50
ZXJmYWNlcy0+YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsgfQorICAgIFdlYlRlc3RSdW5uZXI6
OldlYkV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEludGVy
ZmFjZXMtPmV2ZW50U2VuZGVyKCk7IH0KKyAgICBXZWJUZXN0UnVubmVyOjpXZWJBY2Nlc3NpYmls
aXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBt
X3Rlc3RJbnRlcmZhY2VzLT5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOyB9CiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25Q
cmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsg
fQogI2VuZGlmCkBAIC0yMTIsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViUGVy
bWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CiAgICAgT3duUHRyPERSVERldlRvb2xzQWdlbnQ+
IG1fZHJ0RGV2VG9vbHNBZ2VudDsKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0
RGV2VG9vbHNDbGllbnQ7Ci0gICAgT3duUHRyPFRlc3RJbnRlcmZhY2VzPiBtX3Rlc3RJbnRlcmZh
Y2VzOworICAgIE93blB0cjxXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlcz4gbV90ZXN0
SW50ZXJmYWNlczsKICAgICBPd25QdHI8RFJUVGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAg
ICAgT3duUHRyPE5vdGlmaWNhdGlvblByZXNlbnRlcj4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmgKaW5kZXggOWUxYmViYTRhM2IwZGNkNzk0OWFkMmE4NmZiODlmMGFmZjZjOTk1
My4uZjQzODc1OTc2NjYxZjJiN2UwNzZiMjYxZjVmMmUwYWZiMzZlMjk4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2su
aApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1
ZGUgIlRhc2suaCIKKyNpbmNsdWRlICJUZXN0UnVubmVyL3NyYy9UYXNrLmgiCiAjaW5jbHVkZSAi
V2ViVXNlck1lZGlhQ2xpZW50LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRp
YV9zdHJlYW1fY2xpZW50LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbW1vbi5oPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGM3YWI0NzVl
N2ZlNzllZjE4ZDUyODgyZTM1NzI2YTQ1OTY1NmQ3ZTkuLjEwNmNhYTk3ODVmNTNjYjcyMmJjMGY2
YWMxMjFmNDMzYjMzMDg5ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAKQEAgLTMyLDEzICszMiwxNCBAQAogI2luY2x1ZGUgIldlYlZpZXdIb3N0
LmgiCiAKICNpbmNsdWRlICJEUlRUZXN0UnVubmVyLmgiCi0jaW5jbHVkZSAiRXZlbnRTZW5kZXIu
aCIKICNpbmNsdWRlICJNb2NrR3JhbW1hckNoZWNrLmgiCiAjaW5jbHVkZSAiTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmgi
CiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGVzdFNo
ZWxsLmgiCiAjaW5jbHVkZSAiVGVzdFdlYlBsdWdpbi5oIgorI2luY2x1ZGUgIldlYkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgog
I2luY2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVE
YXRhLmgiCiAjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2ZW50LmgiCkBAIC00Niw2ICs0Nyw3IEBA
CiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAi
V2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRXZl
bnRTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCkBAIC01MjUsNyAr
NTI3LDcgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZmluaXNoTGFzdFRleHRDaGVjaygpCiAgICAgICAg
IG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCks
IHRleHQubGVuZ3RoKCkpLCAmbWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7
CiAgICAgICAgIGlmICghbWlzc3BlbGxlZExlbmd0aCkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBWZWN0b3I8V2ViU3RyaW5nPiBzdWdnZXN0aW9uczsKKyAgICAgICAgV2ViVmVjdG9yPFdl
YlN0cmluZz4gc3VnZ2VzdGlvbnM7CiAgICAgICAgIG1fc3BlbGxjaGVjay5maWxsU3VnZ2VzdGlv
bkxpc3QoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpICsgbWlzc3BlbGxlZFBvc2l0aW9uLCBt
aXNzcGVsbGVkTGVuZ3RoKSwgJnN1Z2dlc3Rpb25zKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
V2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgb2Zmc2V0
ICsgbWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMuaXNFbXB0eSgpID8gV2Vi
U3RyaW5nKCkgOiBzdWdnZXN0aW9uc1swXSkpOwpAQCAtNzcyLDcgKzc3NCw3IEBAIE1vY2tTcGVs
bENoZWNrKiBXZWJWaWV3SG9zdDo6bW9ja1NwZWxsQ2hlY2soKQogICAgIHJldHVybiAmbV9zcGVs
bGNoZWNrOwogfQogCi12b2lkIFdlYlZpZXdIb3N0OjpmaWxsU3BlbGxpbmdTdWdnZXN0aW9uTGlz
dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwgVmVjdG9yPFdlYktpdDo6V2ViU3RyaW5n
Piogc3VnZ2VzdGlvbnMpCit2b2lkIFdlYlZpZXdIb3N0OjpmaWxsU3BlbGxpbmdTdWdnZXN0aW9u
TGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwgV2ViS2l0OjpXZWJWZWN0b3I8V2Vi
S2l0OjpXZWJTdHJpbmc+KiBzdWdnZXN0aW9ucykKIHsKICAgICBtb2NrU3BlbGxDaGVjaygpLT5m
aWxsU3VnZ2VzdGlvbkxpc3Qod29yZCwgc3VnZ2VzdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYzllMTdiMDdmZDhhNDUwMWEyOTA0
N2UzZGVkOTRjYWYwNmI0NDgwNS4uYmE3NjM1MDNhYWU2ZDY2ODEwNWE4ZDk1MDllZGFjOTA1YmRl
ZTk0NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBA
IC0zMiwxNSArMzIsMTUgQEAKICNkZWZpbmUgV2ViVmlld0hvc3RfaAogCiAjaW5jbHVkZSAiTW9j
a1NwZWxsQ2hlY2suaCIKLSNpbmNsdWRlICJUYXNrLmgiCi0jaW5jbHVkZSAiVGVzdERlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGVz
dFJ1bm5lci9zcmMvVGFzay5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b24uaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViUHJlcmVu
ZGVyZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTcGVsbENoZWNrQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViVGVzdERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTc5LDcgKzc5
LDcgQEAgY2xhc3MgVGVzdE1lZGlhU3RyZWFtQ2xpZW50OwogCiBjbGFzcyBXZWJWaWV3SG9zdCA6
IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xp
ZW50LCBwdWJsaWMgTmF2aWdhdGlvbkhvc3QsCiAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBX
ZWJLaXQ6OldlYlByZXJlbmRlcmVyQ2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJTcGVsbENoZWNr
Q2xpZW50LAotICAgICAgICAgICAgICAgICAgICBwdWJsaWMgVGVzdERlbGVnYXRlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFdlYlRlc3RSdW5uZXI6OldlYlRlc3REZWxlZ2F0ZSB7CiAg
cHVibGljOgogICAgIFdlYlZpZXdIb3N0KFRlc3RTaGVsbCopOwogICAgIHZpcnR1YWwgfldlYlZp
ZXdIb3N0KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMg
V2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAg
ICAvLyBTcGVsbGNoZWNrIHJlbGF0ZWQgaGVscGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayog
bW9ja1NwZWxsQ2hlY2soKTsKICAgICB2b2lkIGZpbmlzaExhc3RUZXh0Q2hlY2soKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbFNwZWxsaW5nU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmIHdvcmQsIFZlY3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNwZWxsaW5nU3VnZ2VzdGlvbkxpc3QoY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQsIFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3Ry
aW5nPiogc3VnZ2VzdGlvbnMpIE9WRVJSSURFOwogCiAgICAgLy8gR2VvbG9jYXRpb24gY2xpZW50
IG1vY2tzIGZvciBEUlRUZXN0UnVubmVyCiAgICAgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>