<?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>163508</bug_id>
          
          <creation_ts>2016-10-16 12:53:09 -0700</creation_ts>
          <short_desc>Move user agent quirks to cross-platform location</short_desc>
          <delta_ts>2023-10-24 15:30:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=263619</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>olivier.blin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240782</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-16 12:53:09 -0700</bug_when>
    <thetext>A downstream port wants to use GTK&apos;s list of user agent quirks. It would surely be beneficial for EFL as well, and actually probably for pretty much any port except macOS and iOS (which are big enough that hopefully UA quirks are not needed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240821</commentid>
    <comment_count>1</comment_count>
      <attachid>291787</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-16 17:20:53 -0700</bug_when>
    <thetext>Created attachment 291787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240823</commentid>
    <comment_count>2</comment_count>
      <attachid>291788</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-16 17:49:04 -0700</bug_when>
    <thetext>Created attachment 291788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240827</commentid>
    <comment_count>3</comment_count>
      <attachid>291789</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-16 18:16:57 -0700</bug_when>
    <thetext>Created attachment 291789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240873</commentid>
    <comment_count>4</comment_count>
      <attachid>291789</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-16 22:53:08 -0700</bug_when>
    <thetext>Comment on attachment 291789
Patch

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

Please don&apos;t do the &quot;Standard&quot; rename.

&gt; Source/WebCore/ChangeLog:13
&gt; +        * platform/StandardUserAgent.h: Renamed from Source/WebCore/platform/gtk/UserAgentGtk.h.
&gt; +        Why not UserAgent.h? Because it clashes with a Cocoa-specific header, and would require
&gt; +        editing XCode build files. Maybe a bad reason to rename a bunch of files, but there you go!

I know adding new files for mac is a pain, but I really think this should be called UserAgent.h. The cocoa file is in page/cocoa/ dir, and I don&apos;t think we have that in our include dir list, so it&apos;s probably safe to add it in platform. We can then file a sepàrate bug for the cocoa implementation to be merged in the new one, and we don&apos;t need to deal with Xcode in this bug.

&gt; Source/WebCore/ChangeLog:29
&gt; +        * platform/efl/StandardUserAgentEfl.cpp: Renamed from Source/WebCore/platform/efl/UserAgentEfl.cpp.
&gt; +        (WebCore::standardUserAgentForURL):
&gt; +        * platform/gtk/StandardUserAgentGtk.cpp: Renamed from Source/WebCore/platform/gtk/UserAgentGtk.cpp.

And then we don&apos;t need to rename these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240909</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-17 02:58:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Please don&apos;t do the &quot;Standard&quot; rename.

Yeah, this was dumb.

&gt; I know adding new files for mac is a pain, but I really think this should be
&gt; called UserAgent.h. The cocoa file is in page/cocoa/ dir, and I don&apos;t think
&gt; we have that in our include dir list, so it&apos;s probably safe to add it in
&gt; platform. We can then file a sepàrate bug for the cocoa implementation to be
&gt; merged in the new one, and we don&apos;t need to deal with Xcode in this bug.

But cocoa ports do include Source/WebCore/platform. And the header files do get tracked in the XCode project files in several places unfortunately.

I should just make the necessary changes (remove page/cocoa/UserAgentCocoa.h and move page/cocoa/UserAgentCocoa.cpp to platform/cocoa) without touching the XCode files, and then we can ask someone on IRC into fixing up the XCode project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240918</commentid>
    <comment_count>6</comment_count>
      <attachid>291808</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-17 03:45:00 -0700</bug_when>
    <thetext>Created attachment 291808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240925</commentid>
    <comment_count>7</comment_count>
      <attachid>291808</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-17 04:31:33 -0700</bug_when>
    <thetext>Comment on attachment 291808
Patch

I played a trick with #include_next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240927</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-17 04:32:03 -0700</bug_when>
    <thetext>Let&apos;s land this manually, EWS is choking on unrelated tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240928</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-17 04:33:02 -0700</bug_when>
    <thetext>Committed r207406: &lt;http://trac.webkit.org/changeset/207406&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291787</attachid>
            <date>2016-10-16 17:20:53 -0700</date>
            <delta_ts>2016-10-17 03:44:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163508-20161016191721.patch</filename>
            <type>text/plain</type>
            <size>36897</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVjN2Y1M2UxMmQ0ZmY4
YTAwZDQ2NTU2ZTQwZTc2ZjgyYmQ0ODM2Ny4uYjZhYTdlMTcwZjE1ODNmZjU4NmViNTZmMjk5Njgw
N2MzY2I5NGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE2LTEwLTE2ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHVz
ZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgYnkgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwYWdlL2NvY29hL1VzZXJBZ2VudC5oOiBSZW1v
dmVkLiBNb3ZlZCBkZWNsYXJhdGlvbnMgdG8gbmV3IFVzZXJBZ2VudC5oLgorICAgICAgICAqIHBs
YXRmb3JtL1VzZXJBZ2VudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1VzZXJBZ2VudEd0ay5oLgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5j
cHA6IEFkZGVkLiBNb3ZlZCBmcm9tIFVzZXJBZ2VudEd0ay5jcHAuCisgICAgICAgIChXZWJDb3Jl
Ojp1cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIpOiBTbmVha2lseSB0aWdodGVuIHVwIEdvb2dsZSBk
b21haW4gZGV0ZWN0aW9uLCBpdCBzaG91bGQKKyAgICAgICAgb25seSBhcHBseSB0byBzaXRlcyBp
ZiB0aGUgYmFzZSBkb21haW4gbWF0Y2hlcyBnb29nbGUuKiwgbm90IGFueSBiYXNlIGRvbWFpbiB0
aGF0IHN0YXJ0cworICAgICAgICB3aXRoIGdvb2dsZS4KKyAgICAgICAgKFdlYkNvcmU6OnVybFJl
cXVpcmVzTWFjaW50b3NoUGxhdGZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFnZW50UXVp
cmtzOjpxdWlya3NGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFnZW50UXVpcmtzOjpz
dHJpbmdGb3JRdWlyayk6CisgICAgICAgICogcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmg6IE1v
dmVkIGZyb20gVXNlckFnZW50R3RrLmNwcC4gcHJlcGFyZS1DaGFuZ2VMb2cgdGhpbmtzIGl0IHdh
cworICAgICAgICByZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJB
Z2VudEVmbC5oLCBidXQgcHJlcGFyZS1DaGFuZ2VMb2cgaXMgZHVtYi4KKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJBZ2VudFF1aXJrczo6VXNlckFnZW50UXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJBZ2VudFF1aXJrczo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJr
czo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckFnZW50UXVpcmtzOjppc0VtcHR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVXNlckFnZW50RWZsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
VXNlckFnZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkVXNlckFnZW50U3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OlVzZXJBZ2Vu
dFF1aXJrcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmFk
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmNvbnRhaW5z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJrczo6aXNFbXB0eSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSk6
IERlbGV0ZWQuCisKIDIwMTYtMTAtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHNlcmlhbGl6ZXIgPSB7IGF0dHJpYnV0ZSB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZDIwZDI1ODJkMmI0NzQ3ZGMyNjFmZjM3YWQyM2Y3Zjc0MTM1YTg1Yy4uNDI3
YTRkNWM0ZjBhNjdkYjNkZjg4NmJmNmE1ZDUyMGIyNDRhMDA5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE2LTEwLTE2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KKworICAgICAgICBNb3ZlIHVzZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRm
b3JtIGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjM1MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4gaW5zdGVhZCBvZiA8V2ViQ29yZS9V
c2VyQWdlbnRHdGsuaD4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0
aW5ncy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorCiAyMDE2LTEwLTE2ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBE
ZWZhdWx0IFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciBpcyBhbHdheXMgbGVha2VkIGluIFdlYktp
dFdlYkNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOTEyNTM5MDRkYzFmNjVm
MTc0YWI5ZGU0YzY0MjYzMzllOGM4MmVlOS4uNmRiOTdmNjM0OWU1ZjEzNzQ5Yzc4YjcxNzMxMWEz
YWY2NDE4NzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTg0LDYgKzg0LDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL3NvdXAvU3VicmVzb3VyY2VM
b2FkZXJTb3VwLmNwcAogCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcAorICAgIHBsYXRm
b3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2dsaWIvQXVkaW9C
dXNHTGliLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9Vc2VyQWdlbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwMWEyOWFlY2MzOTgwOGNkYTdlYTYxMzk0M2IyMTdlNDZm
NTUwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVXNlckFnZW50X2gKLSNkZWZpbmUgVXNlckFn
ZW50X2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBs
aWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
d2Via2l0VmVyc2lvblN0cmluZyk7Ci0KLVN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9y
VXNlckFnZW50U3RyaW5nKCk7Ci1TdHJpbmcgdXNlckFnZW50QnVuZGxlVmVyc2lvbkZyb21GdWxs
VmVyc2lvblN0cmluZyhjb25zdCBTdHJpbmcmKTsKLQotfQotCi0jZW5kaWYgLy8gVXNlckFnZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZjN2NmZDgzZTJm
OGE2OTE5ZWM2ODZhMTgzZmI1NGRiNGVkOTVmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVSTDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShj
b25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB3ZWJraXRWZXJzaW9u
U3RyaW5nKTsKK1N0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5n
KCk7CitTdHJpbmcgdXNlckFnZW50QnVuZGxlVmVyc2lvbkZyb21GdWxsVmVyc2lvblN0cmluZyhj
b25zdCBTdHJpbmcmKTsKKyNlbHNlCitTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOworU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKGNvbnN0IFVSTCYpOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Vc2VyQWdlbnRRdWlya3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNjUyNmZmODBhMzZlNTkwYWRkMGUw
MjU5Y2I5MjFiY2JkMDdmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDE0LCAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJV
c2VyQWdlbnRRdWlya3MuaCIKKworI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgorI2luY2x1ZGUg
IlVSTC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFdoZW4gZWRpdGluZyB0aGUgcXVp
cmtzIGluIHRoaXMgZmlsZSwgYmUgc3VyZSB0byB1cGRhdGUKKy8vIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwLgorCisvLyBCZSBjYXJlZnVsIHdp
dGggdGhpcyBxdWlyazogaXQncyBhbiBpbnZpdGF0aW9uIGZvciBzaXRlcyB0byB1c2UgSmF2YVNj
cmlwdAorLy8gdGhhdCB3b3JrcyBpbiBDaHJvbWUgdGhhdCBXZWJLaXQgY2Fubm90IGhhbmRsZS4g
UHJlZmVyIG90aGVyIHF1aXJrcyBpbnN0ZWFkLgorc3RhdGljIGJvb2wgdXJsUmVxdWlyZXNDaHJv
bWVCcm93c2VyKGNvbnN0IFVSTCYgdXJsKQoreworICAgIFN0cmluZyBiYXNlRG9tYWluID0gdG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgpKTsKKworICAgIC8vIE5lZWRlZCBm
b3IgZm9udHMgb24gbWFueSBzaXRlcyB0byB3b3JrIHdpdGggV2ViS2l0LgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTYKKyAgICBpZiAoYmFzZURv
bWFpbiA9PSAidHlwZWtpdC5uZXQiIHx8IGJhc2VEb21haW4gPT0gInR5cGVraXQuY29tIikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBTaHV0IG9mZiBDaHJvbWUgYWRzLiBBdm9pZCBt
aXNzaW5nIGZlYXR1cmVzIG9uIG1hcHMuZ29vZ2xlLmNvbS4gQXZvaWQKKyAgICAvLyByZWNlaXZp
bmcgYSB0ZXJyaWJsZSBmYWxsYmFjayB2ZXJzaW9uIG9mIGNhbGVuZGFyLmdvb2dsZS5jb20uIFJl
Y2VpdmUgYQorICAgIC8vIGZhbmNpZXIgcGx1cy5nb29nbGUuY29tLgorICAgIGlmIChiYXNlRG9t
YWluLnN0YXJ0c1dpdGgoImdvb2dsZS4iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBOZWVkZWQgZm9yIFlvdVR1YmUgMzYwIHdpdGggV2ViS2l0R1RLKyBhbmQgV1BFIChyZXF1aXJl
cyBFTkFCTEVfTUVESUFfU09VUkNFKS4KKyAgICBpZiAoYmFzZURvbWFpbiA9PSAieW91dHViZS5j
b20iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFNsYWNrIGNvbXBsZXRlbHkgYmxv
Y2tzIHVzZXJzIHdpdGggV2ViS2l0R1RLKydzIHN0YW5kYXJkIHVzZXIgYWdlbnQuCisgICAgaWYg
KGJhc2VEb21haW4gPT0gInNsYWNrLmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCB1cmxSZXF1aXJlc01hY2ludG9zaFBsYXRm
b3JtKGNvbnN0IFVSTCYgdXJsKQoreworICAgIFN0cmluZyBiYXNlRG9tYWluID0gdG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgpKTsKKworICAgIC8vIEF0IGxlYXN0IGZpbmFu
Y2UueWFob28uY29tIGRpc3BsYXlzIGEgbW9iaWxlIHZlcnNpb24gd2l0aCBXZWJLaXRHVEsrJ3Mg
c3RhbmRhcmQgdXNlciBhZ2VudC4KKyAgICBpZiAoYmFzZURvbWFpbiA9PSAieWFob28uY29tIikK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyB0YW9iYW8uY29tIGRpc3BsYXlzIGEgbW9i
aWxlIHZlcnNpb24gd2l0aCBXZWJLaXRHVEsrJ3Mgc3RhbmRhcmQgdXNlciBhZ2VudC4KKyAgICBp
ZiAoYmFzZURvbWFpbiA9PSAidGFvYmFvLmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgLy8gd2ViLndoYXRzYXBwLmNvbSBjb21wbGV0ZWx5IGJsb2NrcyB1c2VycyB3aXRoIFdlYktp
dEdUSysncyBzdGFuZGFyZCB1c2VyIGFnZW50LgorICAgIGlmIChiYXNlRG9tYWluID09ICJ3aGF0
c2FwcC5jb20iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworVXNlckFnZW50UXVpcmtzIFVzZXJBZ2VudFF1aXJrczo6cXVpcmtzRm9yVVJMKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIEFTU0VSVCghdXJsLmlzTnVsbCgpKTsKKyAgICBVc2VyQWdlbnRRdWly
a3MgcXVpcmtzOworICAgIGlmICh1cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIodXJsKSkKKyAgICAg
ICAgcXVpcmtzLmFkZChVc2VyQWdlbnRRdWlya3M6Ok5lZWRzQ2hyb21lQnJvd3Nlcik7CisgICAg
aWYgKHVybFJlcXVpcmVzTWFjaW50b3NoUGxhdGZvcm0odXJsKSkKKyAgICAgICAgcXVpcmtzLmFk
ZChVc2VyQWdlbnRRdWlya3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pOworICAgIHJldHVybiBx
dWlya3M7Cit9CisKK1N0cmluZyBVc2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKFVzZXJB
Z2VudFF1aXJrIHF1aXJrKQoreworICAgIHN3aXRjaCAocXVpcmspIHsKKyAgICBjYXNlIE5lZWRz
Q2hyb21lQnJvd3NlcjoKKyAgICAgICAgLy8gR2V0IHZlcnNpb25zIGZyb20gaHR0cHM6Ly9jaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy5naXQKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiQ2hyb21lLzU2LjAuMjg5MS40Iik7CisgICAgY2FzZSBOZWVkc01hY2ludG9z
aFBsYXRmb3JtOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJNYWNpbnRvc2g7IEludGVs
IE1hYyBPUyBYIDEwXzEyIik7CisgICAgY2FzZSBOdW1Vc2VyQWdlbnRRdWlya3M6CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIiIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2Vu
dFF1aXJrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZGM5YTFiMDkwOTcyY2U4YzI2NzNlYTg1ZGE0YzVlNTM4
ZmE2MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDE0LCAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBVUkw7CisKK2NsYXNzIFVzZXJBZ2VudFF1aXJrcyB7CitwdWJsaWM6CisgICAgZW51bSBV
c2VyQWdlbnRRdWlyayB7CisgICAgICAgIE5lZWRzQ2hyb21lQnJvd3NlciwKKyAgICAgICAgTmVl
ZHNNYWNpbnRvc2hQbGF0Zm9ybSwKKworICAgICAgICBOdW1Vc2VyQWdlbnRRdWlya3MKKyAgICB9
OworCisgICAgVXNlckFnZW50UXVpcmtzKCkKKyAgICAgICAgOiBtX3F1aXJrcygwKQorICAgIHsK
KyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKG1fcXVpcmtzKSAqIDggPj0gTnVtVXNlckFn
ZW50UXVpcmtzLCBub3RfZW5vdWdoX3Jvb21fZm9yX3F1aXJrcyk7CisgICAgfQorCisgICAgdm9p
ZCBhZGQoVXNlckFnZW50UXVpcmsgcXVpcmspCisgICAgeworICAgICAgICBBU1NFUlQocXVpcmsg
Pj0gMCk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHF1aXJrIDwg
TnVtVXNlckFnZW50UXVpcmtzKTsKKworICAgICAgICBtX3F1aXJrcyB8PSAoMSA8PCBxdWlyayk7
CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhVc2VyQWdlbnRRdWlyayBxdWlyaykgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3F1aXJrcyAmICgxIDw8IHF1aXJrKTsKKyAgICB9CisK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9xdWlya3M7IH0KKworICAgIHN0
YXRpYyBVc2VyQWdlbnRRdWlya3MgcXVpcmtzRm9yVVJMKGNvbnN0IFVSTCYpOworCisgICAgc3Rh
dGljIFN0cmluZyBzdHJpbmdGb3JRdWlyayhVc2VyQWdlbnRRdWlyayk7CisKK3ByaXZhdGU6Cisg
ICAgdWludDMyX3QgbV9xdWlya3M7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvVXNlckFnZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9Vc2VyQWdlbnRFZmwuY3BwCmluZGV4IDBjZGY0ZWQ5ZTI2NzQwNDQxZGNjZmQyNzUwYjg0
MmRjYzEyY2Q4MmUuLmMxNDcyMTEyMTkxNTMzZjk2NDBlYTJlOTU2NjM0NDljNjc4OTczYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3BwCkBAIC0yNCw3
ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVzZXJBZ2Vu
dEVmbC5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudC5oIgogCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTc1LDUgKzc1LDExIEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvCiAg
ICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50U3RyaW5nICsgJyAnICsgYXBwbGljYXRpb25OYW1l
ICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiB9CiAKK1N0cmluZyBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChjb25zdCBVUkwmKQoreworICAgIC8vIERpc2FibGUgdXNlciBhZ2VudCBx
dWlya3MgZm9yIG5vdy4KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJB
Z2VudEVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJBZ2VudEVmbC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRhMGIzMTIyMzg0OTE2YTM4ZjRjZWIwYjZl
ODJlMGQ1ZDEwZDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29y
cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBVc2VyQWdlbnRFZmxfaAotI2RlZmluZSBVc2VyQWdlbnRFZmxf
aAotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25O
YW1lID0gZW1wdHlTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblZlcnNpb24gPSBl
bXB0eVN0cmluZygpKTsKLQotfQotCi0jZW5kaWYgLy8gVXNlckFnZW50RWZsX2gKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAppbmRleCAzOGQ0YWU2YmFh
YTJlYWNmYmI1NmFiMTEwODI1OTAyMGFlZGJmNmU2Li5hMTAyN2MzYzA2ZDMyOWJmMDI3NGM2NjA3
MDc2NzRkMWZjYjE3MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
VXNlckFnZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFn
ZW50R3RrLmNwcApAQCAtMjQsMTAgKzI0LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlVzZXJBZ2VudEd0ay5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudC5oIgogCi0j
aW5jbHVkZSAiUHVibGljU3VmZml4LmgiCiAjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiVXNl
ckFnZW50UXVpcmtzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC00Myw0MCArNDMsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVzZXJBZ2VudFF1aXJrcyB7Ci1wdWJsaWM6Ci0gICAg
ZW51bSBVc2VyQWdlbnRRdWlyayB7Ci0gICAgICAgIE5lZWRzQ2hyb21lQnJvd3NlciwKLSAgICAg
ICAgTmVlZHNNYWNpbnRvc2hQbGF0Zm9ybSwKLQotICAgICAgICBOdW1Vc2VyQWdlbnRRdWlya3MK
LSAgICB9OwotCi0gICAgVXNlckFnZW50UXVpcmtzKCkKLSAgICAgICAgOiBtX3F1aXJrcygwKQot
ICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKG1fcXVpcmtzKSAqIDggPj0gTnVt
VXNlckFnZW50UXVpcmtzLCBub3RfZW5vdWdoX3Jvb21fZm9yX3F1aXJrcyk7Ci0gICAgfQotCi0g
ICAgdm9pZCBhZGQoVXNlckFnZW50UXVpcmsgcXVpcmspCi0gICAgewotICAgICAgICBBU1NFUlQo
cXVpcmsgPj0gMCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHF1
aXJrIDwgTnVtVXNlckFnZW50UXVpcmtzKTsKLQotICAgICAgICBtX3F1aXJrcyB8PSAoMSA8PCBx
dWlyayk7Ci0gICAgfQotCi0gICAgYm9vbCBjb250YWlucyhVc2VyQWdlbnRRdWlyayBxdWlyaykg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3F1aXJrcyAmICgxIDw8IHF1aXJrKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9xdWlya3M7IH0KLQot
cHJpdmF0ZToKLSAgICB1aW50MzJfdCBtX3F1aXJrczsKLX07Ci0KIHN0YXRpYyBjb25zdCBjaGFy
KiBwbGF0Zm9ybUZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhNQUNfT1NfWCkKQEAgLTExNSwyNSAr
ODEsMjIgQEAgc3RhdGljIFN0cmluZyBidWlsZFVzZXJBZ2VudFN0cmluZyhjb25zdCBVc2VyQWdl
bnRRdWlya3MmIHF1aXJrcykKICAgICB1YVN0cmluZy5hcHBlbmQoJygnKTsKIAogICAgIGlmIChx
dWlya3MuY29udGFpbnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc01hY2ludG9zaFBsYXRmb3JtKSkK
LSAgICAgICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiTWFjaW50b3NoIik7Ci0gICAgZWxzZQor
ICAgICAgICB1YVN0cmluZy5hcHBlbmQoVXNlckFnZW50UXVpcmtzOjpzdHJpbmdGb3JRdWlyayhV
c2VyQWdlbnRRdWlya3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pKTsKKyAgICBlbHNlIHsKICAg
ICAgICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRmb3JtRm9yVUFTdHJpbmcoKSk7Ci0KLSAgICB1YVN0
cmluZy5hcHBlbmRMaXRlcmFsKCI7ICIpOwotCi0gICAgaWYgKHF1aXJrcy5jb250YWlucyhVc2Vy
QWdlbnRRdWlya3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pKQotICAgICAgICB1YVN0cmluZy5h
cHBlbmRMaXRlcmFsKCJJbnRlbCBNYWMgT1MgWCAxMF8xMiIpOwotICAgIGVsc2UKKyAgICAgICAg
dWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiOyAiKTsKICAgICAgICAgdWFTdHJpbmcuYXBwZW5kKHBs
YXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkpOworICAgIH0KIAogICAgIHVhU3RyaW5nLmFwcGVu
ZExpdGVyYWwoIikgQXBwbGVXZWJLaXQvIik7CiAgICAgdWFTdHJpbmcuYXBwZW5kKHZlcnNpb25G
b3JVQVN0cmluZygpKTsKICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIgKEtIVE1MLCBsaWtl
IEdlY2tvKSAiKTsKIAogICAgIC8vIE5vdGUgdGhhdCBDaHJvbWUgVUFzIGFkdmVydGlzZSAqYm90
aCogQ2hyb21lIGFuZCBTYWZhcmkuCi0gICAgLy8gV2Ugc2V0IGEgbWVhbmluZ2Z1bCB2YWx1ZSBv
bmx5IGZvciB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBoZXJlLgotICAgIGlmIChxdWlya3MuY29udGFp
bnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIpKQotICAgICAgICB1YVN0cmlu
Zy5hcHBlbmQoIkNocm9tZS81NC4wLjI3MDQuMTA2ICIpOworICAgIGlmIChxdWlya3MuY29udGFp
bnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIpKSB7CisgICAgICAgIHVhU3Ry
aW5nLmFwcGVuZChVc2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1aXJr
czo6TmVlZHNDaHJvbWVCcm93c2VyKSk7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwo
IiAiKTsKKyAgICB9CiAKICAgICAvLyBWZXJzaW9uL1ggaXMgbWFuZGF0b3J5ICpiZWZvcmUqIFNh
ZmFyaS9YIHRvIGJlIGEgdmFsaWQgU2FmYXJpIFVBLiBTZWUKICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDAzIGZvciBkZXRhaWxzLgpAQCAtMTY5LDU4
ICsxMzIsOSBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpbwogICAgIHJldHVybiBzdGFuZGFyZFVz
ZXJBZ2VudFN0YXRpYygpICsgJyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBs
aWNhdGlvblZlcnNpb247CiB9CiAKLS8vIEJlIGNhcmVmdWwgd2l0aCB0aGlzIHF1aXJrOiBpdCdz
IGFuIGludml0YXRpb24gZm9yIHNpdGVzIHRvIHVzZSBKYXZhU2NyaXB0IHdlIGNhbid0IGhhbmRs
ZS4KLXN0YXRpYyBib29sIHVybFJlcXVpcmVzQ2hyb21lQnJvd3Nlcihjb25zdCBVUkwmIHVybCkK
LXsKLSAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4o
dXJsLmhvc3QoKSk7Ci0KLSAgICAvLyBOZWVkZWQgZm9yIGZvbnRzIG9uIG1hbnkgc2l0ZXMsIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTYKLSAgICBpZiAoYmFz
ZURvbWFpbiA9PSAidHlwZWtpdC5uZXQiIHx8IGJhc2VEb21haW4gPT0gInR5cGVraXQuY29tIikK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBTaHV0IG9mZiBDaHJvbWUgYWRzLiBBdm9p
ZCBtaXNzaW5nIGZlYXR1cmVzIG9uIG1hcHMuZ29vZ2xlLmNvbS4KLSAgICBpZiAoYmFzZURvbWFp
bi5zdGFydHNXaXRoKCJnb29nbGUiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBO
ZWVkZWQgZm9yIFlvdVR1YmUgMzYwIChyZXF1aXJlcyBFTkFCTEVfTUVESUFfU09VUkNFKS4KLSAg
ICBpZiAoYmFzZURvbWFpbiA9PSAieW91dHViZS5jb20iKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIC8vIFNsYWNrIGNvbXBsZXRlbHkgYmxvY2tzIHVzZXJzIHdpdGggb3VyIHN0YW5kYXJk
IHVzZXIgYWdlbnQuCi0gICAgaWYgKGJhc2VEb21haW4gPT0gInNsYWNrLmNvbSIpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCB1cmxS
ZXF1aXJlc01hY2ludG9zaFBsYXRmb3JtKGNvbnN0IFVSTCYgdXJsKQotewotICAgIFN0cmluZyBi
YXNlRG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgpKTsKLQot
ICAgIC8vIEF0IGxlYXN0IGZpbmFuY2UueWFob28uY29tIGRpc3BsYXlzIGEgbW9iaWxlIHZlcnNp
b24gd2l0aCBvdXIgc3RhbmRhcmQgdXNlciBhZ2VudC4KLSAgICBpZiAoYmFzZURvbWFpbiA9PSAi
eWFob28uY29tIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyB0YW9iYW8uY29tIGRp
c3BsYXlzIGEgbW9iaWxlIHZlcnNpb24gd2l0aCBvdXIgc3RhbmRhcmQgdXNlciBhZ2VudC4KLSAg
ICBpZiAoYmFzZURvbWFpbiA9PSAidGFvYmFvLmNvbSIpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gd2ViLndoYXRzYXBwLmNvbSBjb21wbGV0ZWx5IGJsb2NrcyB1c2VycyB3aXRoIG91
ciBzdGFuZGFyZCB1c2VyIGFnZW50LgotICAgIGlmIChiYXNlRG9tYWluID09ICJ3aGF0c2FwcC5j
b20iKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogU3Ry
aW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIEFTU0VS
VCghdXJsLmlzTnVsbCgpKTsKLSAgICBVc2VyQWdlbnRRdWlya3MgcXVpcmtzOwotICAgIGlmICh1
cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIodXJsKSkKLSAgICAgICAgcXVpcmtzLmFkZChVc2VyQWdl
bnRRdWlya3M6Ok5lZWRzQ2hyb21lQnJvd3Nlcik7Ci0gICAgaWYgKHVybFJlcXVpcmVzTWFjaW50
b3NoUGxhdGZvcm0odXJsKSkKLSAgICAgICAgcXVpcmtzLmFkZChVc2VyQWdlbnRRdWlya3M6Ok5l
ZWRzTWFjaW50b3NoUGxhdGZvcm0pOwotCisgICAgYXV0byBxdWlya3MgPSBVc2VyQWdlbnRRdWly
a3M6OnF1aXJrc0ZvclVSTCh1cmwpOwogICAgIC8vIFRoZSBudWxsIHN0cmluZyBtZWFucyB3ZSBk
b24ndCBuZWVkIGEgc3BlY2lmaWMgVUEgZm9yIHRoZSBnaXZlbiBVUkwuCiAgICAgcmV0dXJuIHF1
aXJrcy5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGJ1aWxkVXNlckFnZW50U3RyaW5nKHF1aXJrcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3Rr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YWNhMjlmMjkxM2ZmMzFmZDEyNDExNDMxNjk5ODA1NjRm
MWVlOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFVz
ZXJBZ2VudEd0a19oCi0jZGVmaW5lIFVzZXJBZ2VudEd0a19oCi0KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotCi1TdHJp
bmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0
eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5n
KCkpOwotU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwotCi19Ci0K
LSNlbmRpZiAvLyBVc2VyQWdlbnRHdGtfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggNGJhNGFjNjQ4ZjdmNzg0YmJk
MGM4YjIwNzA3ZDk1NzJlMzM5YjE3NC4uZDQ4ZDkyODZhZjVhMTQxOWNiMWExMjg2M2U5MGY3YWMx
NzlkMzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNldHRpbmdzLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYktpdFNldHRp
bmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnRHdGsuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggZWFmOWY1M2RlOWE0NGI5YTk0NTczYjIz
NTA0YjVkMDVmYjA2N2QxMC4uZWYyNDZjMzEyZWM2OTNjNjc3YzVhMWI2MjJlMWQ4NTBkZTNjYjMz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKICNpbmNsdWRlICJO
YXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJVc2VyQWdlbnRFZmwuaCIKKyNpbmNsdWRlICJVc2VyQWdlbnQuaCIKICNpbmNsdWRl
ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJXZWJWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKaW5kZXggZjVhODRiYmFkMGZjOThkMWMyMmQyMDliYzhmYjFlOTBkYmQx
MTNiMi4uZjMyMjg3YjMwOTVjMTRjMjdhZGZjOTU3ZjYxZDkwYzFkODBlMzMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+
CiAjaW5jbHVkZSA8Z3RrL2d0a3guaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHAKaW5kZXggNGE2ZWFkNmM5YWM5OTk1N2UxMWFjNWNhODdhODA2NjEwNzk1MDQ3Ny4u
ZDc2NjY4MDQzMDJlNTI3ZTQ3ZjI0Yjk5ODJkZGVkNjQ5YzBhNWQyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkSGVscGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnRHdGsuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQ4MGU2MTRmNTYzNjUzODA2NTk4ZDZiMmI4ZTRkNjAz
OTBlYzhiMS4uNTAzOGMxYWFlODkyZDExMTNlMWIyNDg1ODZiN2UwZmRlZGNjNGJmZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE2LTEwLTE2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KKworICAgICAgICBNb3ZlIHVzZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxv
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjM1MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIHRoZSB0ZXN0IHRvIGEgY3Jvc3MtcGxhdGZvcm0gbG9jYXRpb24gYW5kIGltcHJvdmUgaXQg
dG8gYmV0dGVyIGNoZWNrIHRoZSBmdWxsIGxpc3Qgb2YKKyAgICAgICAgc2l0ZXMgd2UgaGF2ZSBk
ZWZpbmVkIHF1aXJrcyBmb3IuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRR
dWlya3MuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2d0ay9Vc2VyQWdlbnRRdWlya3MuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmspOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMTAtMTYgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEsr
IHVuaXQgdGVzdCAvd2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0L2xhbmd1YWdlcyBhZnRlciByMjA2
OTQ5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjc5NjIyZmJmNjBh
ZTI5YWZkYzZlZWVmYzI0NjFmNzQ5MTA1NjA2Ny4uOTFhMmM5ZTdiZDMxMzhjYTUwNzhjZjVhODRj
NjcxMDA5ZjM1YTM4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdU
Sy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MjUsMjEgKzEyNSwxNyBAQCBhZGRfdGVzdChUZXN0V2ViS2l0MiAke1RFU1RXRUJLSVRBUElfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfS9XZWJLaXQyL1Rlc3RXZWJLaQogc2V0X3Rlc3RzX3Byb3Bl
cnRpZXMoVGVzdFdlYktpdDIgUFJPUEVSVElFUyBUSU1FT1VUIDYwKQogc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKFRlc3RXZWJLaXQyIFBST1BFUlRJRVMgUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7
VEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdDIpCiAKLXNldChU
ZXN0V2ViQ29yZUd0a19TT1VSQ0VTCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9ndGsvVXNlckFnZW50UXVpcmtzLmNwcAotKQotCiBhZGRfZXhlY3V0YWJsZShUZXN0V2Vi
Q29yZQogICAgICR7dGVzdF9tYWluX1NPVVJDRVN9Ci0gICAgJHtUZXN0V2ViQ29yZUd0a19TT1VS
Q0VTfQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKKyAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKKyAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1B1YmxpY1N1ZmZpeC5jcHAKKyAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKLSAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKLSAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViQ29yZS9QdWJsaWNTdWZmaXguY3BwCisgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCiApCiAKIHRhcmdldF9saW5r
X2xpYnJhcmllcyhUZXN0V2ViQ29yZSAke3Rlc3Rfd2ViY29yZV9MSUJSQVJJRVN9KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZWViM2MwMWUwMmQwODJhN2YyN2MzYzg1Yzc1Y2RmODBmNTlkMjZmCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJB
Z2VudFF1aXJrcy5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRp
YyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhjb25zdCBj
aGFyKiB1cmwpCit7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JV
UkwoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CisKKyNpZiAhT1MoTUFDX09TX1gpCisgICAg
RVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKKyNlbmRpZgorI2lmIE9TKExJ
TlVYKQorICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51eCIpKTsKKyNlbmRp
ZgorI2lmIE9TKFdJTkRPV1MpCisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIldp
bmRvd3MiKSk7CisjZW5kaWYKKworICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJD
aHJvbWUiKSk7CisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIlNhZmFyaSIpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIkNocm9taXVtIikpOworfQorCitz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0
IGNoYXIqIHVybCkKK3sKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZv
clVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKworICAgIEVYUEVDVF9UUlVFKHVhU3Ry
aW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIk1hYyBPUyBYIikpOworICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygi
TGludXgiKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJXaW5kb3dzIikp
OworICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOworfQorCitU
RVNUKFVzZXJBZ2VudFRlc3QsIFF1aXJrcykKK3sKKyAgICAvLyBBIHNpdGUgd2l0aCBub3QgcXVp
cmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBz
dGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3d3dy53
ZWJraXQub3JnLyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwoKSk7CisKKyAg
ICAvLyBHb29nbGUgcXVpcmsgc2hvdWxkIG5vdCBhZmZlY3Qgc2l0ZXMgd2l0aCBzaW1pbGFyIGRv
bWFpbnMuCisgICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2Vk
VVJMU3RyaW5nLCAiaHR0cDovL3d3dy5nb29nbGVibG9nLmNvbS8iKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CisKKyAgICBhc3NlcnRVc2VyQWdlbnRG
b3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0LmNvbS8iKTsKKyAgICBh
c3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0
Lm5ldC8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmso
Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXND
aHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly93d3cuZ29vZ2xlLmVzLyIpOworICAgIGFzc2VydFVz
ZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL2NhbGVuZGFyLmdvb2ds
ZS5jb20vIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJr
KCJodHRwOi8vbWFwcy5nb29nbGUuY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhh
c0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3BsdXMuZ29vZ2xlLmNvbS8iKTsKKyAgICBhc3Nl
cnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly93d3cueW91dHVi
ZS5jb20vIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJr
KCJodHRwOi8vd3d3LnNsYWNrLmNvbS8iKTsKKworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhh
c01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly93d3cueWFob28uY29tLyIpOworICAgIGFzc2VydFVz
ZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly9maW5hbmNlLnlhaG9vLmNv
bS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKCJodHRw
Oi8vaW50bC50YW9iYW8uY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1Bs
YXRmb3JtUXVpcmsoImh0dHA6Ly93d3cud2hhdHNhcHAuY29tLyIpOworICAgIGFzc2VydFVzZXJB
Z2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly93ZWIud2hhdHNhcHAuY29tLyIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmY2U0MTYxOGUzMTkzOTI5NTY5MmMxYTEwMDJl
ZGMzOGIxMGE4NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2d0ay9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50R3RrLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0K
LVRFU1QoV2ViQ29yZSwgVXNlckFnZW50UXVpcmtzVGVzdCkKLXsKLSAgICAvLyBBIHNpdGUgd2l0
aCBub3QgcXVpcmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KLSAgICBTdHJpbmcgdWFT
dHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0
cDovL3d3dy53ZWJraXQub3JnLyIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwo
KSk7Ci0KLSAgICAvLyB3ZWIud2hhdHNhcHAuY29tIHJlcXVpcmVzIE1BQyBPUyBwbGF0Zm9ybSBp
biB0aGUgVUEuCi0gICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiaHR0cDovL3dlYi53aGF0c2FwcC5jb20vIikpOwotICAgIEVYUEVDVF9U
UlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFT
dHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5j
b250YWlucygiTGludXgiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJD
aHJvbWUiKSk7Ci0KLSAgICAvLyBnb29nbGUgZG9tYWlucyByZXF1aXJlIENocm9tZSBpbiB0aGUg
VUEKLSAgICB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxT
dHJpbmcsICJodHRwOi8vd3d3Lmdvb2dsZS5lcy8iKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3Ry
aW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNv
bnRhaW5zKCJNYWMgT1MgWCIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygi
TGludXgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsK
LQotICAgIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0
cmluZy5jb250YWlucygiTWFjaW50b3NoIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5j
b250YWlucygiTWFjIE9TIFgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
IkxpbnV4IikpOwotICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7
Ci0KLSAgICAvLyBTbGFjayByZXF1aXJlcyBDaHJvbWUgaW4gdGhlIFVBCi0gICAgdWFTdHJpbmcg
PSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3d3
dy5zbGFjay5jb20vIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFj
aW50b3NoIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFjIE9TIFgi
KSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkxpbnV4IikpOwotICAgIEVY
UEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291788</attachid>
            <date>2016-10-16 17:49:04 -0700</date>
            <delta_ts>2016-10-16 18:16:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163508-20161016194532.patch</filename>
            <type>text/plain</type>
            <size>48402</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVjN2Y1M2UxMmQ0ZmY4
YTAwZDQ2NTU2ZTQwZTc2ZjgyYmQ0ODM2Ny4uODYwMmQ3NjI1MGE3MTY2Y2FjYjhjMDNjNmYxNDYw
OGUwYzUxOTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTEwLTE2ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHVz
ZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgYnkgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGFuZGFyZFVzZXJBZ2VudC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5o
LgorICAgICAgICBXaHkgbm90IFVzZXJBZ2VudC5oPyBCZWNhdXNlIGl0IGNsYXNoZXMgd2l0aCBh
IENvY29hLXNwZWNpZmljIGhlYWRlciwgYW5kIHdvdWxkIHJlcXVpcmUKKyAgICAgICAgZWRpdGlu
ZyBYQ29kZSBidWlsZCBmaWxlcy4gTWF5YmUgYSBiYWQgcmVhc29uIHRvIHJlbmFtZSBhIGJ1bmNo
IG9mIGZpbGVzLCBidXQgdGhlcmUgeW91IGdvIQorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2Vu
dFF1aXJrcy5jcHA6IEFkZGVkLiBDb250ZW50IG1vdmVkIGZyb20gVXNlckFnZW50R3RrLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OnVybFJlcXVpcmVzQ2hyb21lQnJvd3Nlcik6IFNuZWFraWx5IHRp
Z2h0ZW4gdXAgR29vZ2xlIGRvbWFpbiBkZXRlY3Rpb247IGl0IHNob3VsZAorICAgICAgICBvbmx5
IGFwcGx5IHRvIHNpdGVzIGlmIHRoZSBiYXNlIGRvbWFpbiBtYXRjaGVzIGdvb2dsZS4qLCBub3Qg
YW55IGJhc2UgZG9tYWluIHRoYXQgc3RhcnRzCisgICAgICAgIHdpdGggZ29vZ2xlLgorICAgICAg
ICAoV2ViQ29yZTo6dXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyQWdlbnRRdWlya3M6OnF1aXJrc0ZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2Vy
QWdlbnRRdWlya3MuaDogQWRkZWQuIENvbnRlbnQgbW92ZWQgZnJvbSBVc2VyQWdlbnRHdGsuY3Bw
LiBwcmVwYXJlLUNoYW5nZUxvZworICAgICAgICB0aGlua3MgaXQgd2FzIHJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVXNlckFnZW50RWZsLmgsIGJ1dCBpdCdzIGR1bWIu
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OlVzZXJBZ2VudFF1aXJrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQWdlbnRRdWlya3M6OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBZ2Vu
dFF1aXJrczo6aXNFbXB0eSk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1N0YW5kYXJkVXNlckFn
ZW50RWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2Vy
QWdlbnRFZmwuY3BwLgorICAgICAgICAoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TdGFuZGFyZFVzZXJBZ2VudEd0ay5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkVXNlckFnZW50U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OnN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OlVzZXJBZ2VudFF1aXJrcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmFkZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJrczo6aXNFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSk6IERlbGV0ZWQuCisKIDIwMTYtMTAt
MTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1w
bGVtZW50IHNlcmlhbGl6ZXIgPSB7IGF0dHJpYnV0ZSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDIwZDI1ODJk
MmI0NzQ3ZGMyNjFmZjM3YWQyM2Y3Zjc0MTM1YTg1Yy4uZDY3ZWU2YmYzNGVkOTJjMDk2M2UzNmFi
YjhjM2I1ZDJlZTU5MjMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTE2
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBN
b3ZlIHVzZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1MDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAjaW5jbHVkZSA8V2ViQ29y
ZS9TdGFuZGFyZFVzZXJBZ2VudC5oPiBpbnN0ZWFkIG9mIDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5o
Pi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisKIDIwMTYtMTAtMTYgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERlZmF1bHQgV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyIGlzIGFsd2F5cyBsZWFrZWQgaW4gV2ViS2l0V2ViQ29udGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBhNTZlZTQ3ZDFjZTg2NTM0YWFjOTU2ZjU4OWMx
MjE2OWNhZmUyNmNlLi40YmVkNDdhYmUyMTY4OGJkOTM0OWNjMTlkNTA0ZjE4M2IyOThhY2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTEyLDggKzExMiw4IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwu
Y3BwCiAgICAgcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcAogICAgIHBsYXRmb3Jt
L2VmbC9Tb3VuZEVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvU3RhbmRhcmRVc2VyQWdlbnRFZmwu
Y3BwCiAgICAgcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKLSAgICBwbGF0Zm9y
bS9lZmwvVXNlckFnZW50RWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCiAK
ICAgICBwbGF0Zm9ybS9nYW1lcGFkL2VmbC9HYW1lcGFkc0VmbC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggOTEyNTM5MDRkYzFmNjVmMTc0YWI5ZGU0YzY0MjYzMzllOGM4MmVlOS4u
YmNjODdmZmFlMmY1ZTI0MzBhODY1YjJjNDI0NzliODlkODM2NmQ1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTg0LDYgKzg0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgbG9hZGVyL3NvdXAvU3VicmVzb3VyY2VMb2FkZXJTb3VwLmNwcAogCiAgICAgcGxhdGZv
cm0vS2lsbFJpbmdOb25lLmNwcAorICAgIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIAog
ICAgIHBsYXRmb3JtL2F1ZGlvL2dsaWIvQXVkaW9CdXNHTGliLmNwcAogCkBAIC0xNTYsOCArMTU3
LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAorICAgIHBsYXRmb3JtL2d0ay9TdGFuZGFy
ZFVzZXJBZ2VudEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNw
cAotICAgIHBsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCiAKICAgICBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDY1MjZmZjgw
YTM2ZTU5MGFkZDBlMDI1OWNiOTIxYmNiZDA3ZjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcApAQCAtMCwwICsxLDExMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCisKKyNpbmNsdWRlICJQdWJsaWNTdWZmaXgu
aCIKKyNpbmNsdWRlICJVUkwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBXaGVuIGVk
aXRpbmcgdGhlIHF1aXJrcyBpbiB0aGlzIGZpbGUsIGJlIHN1cmUgdG8gdXBkYXRlCisvLyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcC4KKworLy8g
QmUgY2FyZWZ1bCB3aXRoIHRoaXMgcXVpcms6IGl0J3MgYW4gaW52aXRhdGlvbiBmb3Igc2l0ZXMg
dG8gdXNlIEphdmFTY3JpcHQKKy8vIHRoYXQgd29ya3MgaW4gQ2hyb21lIHRoYXQgV2ViS2l0IGNh
bm5vdCBoYW5kbGUuIFByZWZlciBvdGhlciBxdWlya3MgaW5zdGVhZC4KK3N0YXRpYyBib29sIHVy
bFJlcXVpcmVzQ2hyb21lQnJvd3Nlcihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBTdHJpbmcgYmFz
ZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKSk7CisKKyAg
ICAvLyBOZWVkZWQgZm9yIGZvbnRzIG9uIG1hbnkgc2l0ZXMgdG8gd29yayB3aXRoIFdlYktpdC4K
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Mjk2Cisg
ICAgaWYgKGJhc2VEb21haW4gPT0gInR5cGVraXQubmV0IiB8fCBiYXNlRG9tYWluID09ICJ0eXBl
a2l0LmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gU2h1dCBvZmYgQ2hyb21l
IGFkcy4gQXZvaWQgbWlzc2luZyBmZWF0dXJlcyBvbiBtYXBzLmdvb2dsZS5jb20uIEF2b2lkCisg
ICAgLy8gcmVjZWl2aW5nIGEgdGVycmlibGUgZmFsbGJhY2sgdmVyc2lvbiBvZiBjYWxlbmRhci5n
b29nbGUuY29tLiBSZWNlaXZlIGEKKyAgICAvLyBmYW5jaWVyIHBsdXMuZ29vZ2xlLmNvbS4KKyAg
ICBpZiAoYmFzZURvbWFpbi5zdGFydHNXaXRoKCJnb29nbGUuIikpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gTmVlZGVkIGZvciBZb3VUdWJlIDM2MCB3aXRoIFdlYktpdEdUSysgYW5k
IFdQRSAocmVxdWlyZXMgRU5BQkxFX01FRElBX1NPVVJDRSkuCisgICAgaWYgKGJhc2VEb21haW4g
PT0gInlvdXR1YmUuY29tIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBTbGFjayBj
b21wbGV0ZWx5IGJsb2NrcyB1c2VycyB3aXRoIFdlYktpdEdUSysncyBzdGFuZGFyZCB1c2VyIGFn
ZW50LgorICAgIGlmIChiYXNlRG9tYWluID09ICJzbGFjay5jb20iKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgdXJsUmVxdWlyZXNN
YWNpbnRvc2hQbGF0Zm9ybShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBTdHJpbmcgYmFzZURvbWFp
biA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKSk7CisKKyAgICAvLyBB
dCBsZWFzdCBmaW5hbmNlLnlhaG9vLmNvbSBkaXNwbGF5cyBhIG1vYmlsZSB2ZXJzaW9uIHdpdGgg
V2ViS2l0R1RLKydzIHN0YW5kYXJkIHVzZXIgYWdlbnQuCisgICAgaWYgKGJhc2VEb21haW4gPT0g
InlhaG9vLmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gdGFvYmFvLmNvbSBk
aXNwbGF5cyBhIG1vYmlsZSB2ZXJzaW9uIHdpdGggV2ViS2l0R1RLKydzIHN0YW5kYXJkIHVzZXIg
YWdlbnQuCisgICAgaWYgKGJhc2VEb21haW4gPT0gInRhb2Jhby5jb20iKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIC8vIHdlYi53aGF0c2FwcC5jb20gY29tcGxldGVseSBibG9ja3MgdXNl
cnMgd2l0aCBXZWJLaXRHVEsrJ3Mgc3RhbmRhcmQgdXNlciBhZ2VudC4KKyAgICBpZiAoYmFzZURv
bWFpbiA9PSAid2hhdHNhcHAuY29tIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK1VzZXJBZ2VudFF1aXJrcyBVc2VyQWdlbnRRdWlya3M6OnF1aXJrc0Zv
clVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQoIXVybC5pc051bGwoKSk7CisgICAg
VXNlckFnZW50UXVpcmtzIHF1aXJrczsKKyAgICBpZiAodXJsUmVxdWlyZXNDaHJvbWVCcm93c2Vy
KHVybCkpCisgICAgICAgIHF1aXJrcy5hZGQoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJy
b3dzZXIpOworICAgIGlmICh1cmxSZXF1aXJlc01hY2ludG9zaFBsYXRmb3JtKHVybCkpCisgICAg
ICAgIHF1aXJrcy5hZGQoVXNlckFnZW50UXVpcmtzOjpOZWVkc01hY2ludG9zaFBsYXRmb3JtKTsK
KyAgICByZXR1cm4gcXVpcmtzOworfQorCitTdHJpbmcgVXNlckFnZW50UXVpcmtzOjpzdHJpbmdG
b3JRdWlyayhVc2VyQWdlbnRRdWlyayBxdWlyaykKK3sKKyAgICBzd2l0Y2ggKHF1aXJrKSB7Cisg
ICAgY2FzZSBOZWVkc0Nocm9tZUJyb3dzZXI6CisgICAgICAgIC8vIEdldCB2ZXJzaW9ucyBmcm9t
IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMuZ2l0CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNocm9tZS81Ni4wLjI4OTEuNCIpOworICAgIGNhc2Ug
TmVlZHNNYWNpbnRvc2hQbGF0Zm9ybToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTWFj
aW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xMiIpOworICAgIGNhc2UgTnVtVXNlckFnZW50UXVp
cmtzOgorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIiKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2RjOWExYjA5MDk3MmNlOGMyNjcz
ZWE4NWRhNGM1ZTUzOGZhNjE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxNCwgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVVJMOworCitjbGFzcyBVc2VyQWdlbnRRdWlya3MgeworcHVibGlj
OgorICAgIGVudW0gVXNlckFnZW50UXVpcmsgeworICAgICAgICBOZWVkc0Nocm9tZUJyb3dzZXIs
CisgICAgICAgIE5lZWRzTWFjaW50b3NoUGxhdGZvcm0sCisKKyAgICAgICAgTnVtVXNlckFnZW50
UXVpcmtzCisgICAgfTsKKworICAgIFVzZXJBZ2VudFF1aXJrcygpCisgICAgICAgIDogbV9xdWly
a3MoMCkKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihtX3F1aXJrcykgKiA4
ID49IE51bVVzZXJBZ2VudFF1aXJrcywgbm90X2Vub3VnaF9yb29tX2Zvcl9xdWlya3MpOworICAg
IH0KKworICAgIHZvaWQgYWRkKFVzZXJBZ2VudFF1aXJrIHF1aXJrKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHF1aXJrID49IDApOworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihxdWlyayA8IE51bVVzZXJBZ2VudFF1aXJrcyk7CisKKyAgICAgICAgbV9xdWlya3MgfD0g
KDEgPDwgcXVpcmspOworICAgIH0KKworICAgIGJvb2wgY29udGFpbnMoVXNlckFnZW50UXVpcmsg
cXVpcmspIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9xdWlya3MgJiAoMSA8PCBxdWly
ayk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fcXVpcmtz
OyB9CisKKyAgICBzdGF0aWMgVXNlckFnZW50UXVpcmtzIHF1aXJrc0ZvclVSTChjb25zdCBVUkwm
KTsKKworICAgIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yUXVpcmsoVXNlckFnZW50UXVpcmspOwor
Citwcml2YXRlOgorICAgIHVpbnQzMl90IG1fcXVpcmtzOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1N0YW5kYXJkVXNlckFnZW50RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TdGFuZGFyZFVzZXJBZ2VudEVmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjI4M2Q1YWQyYmE1YWMxMjEyYjM5MDgyZGVmMDcxYjQyZDM0ZTMyOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TdGFuZGFyZFVzZXJBZ2VudEVm
bC5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBOYXZlciBD
b3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RhbmRhcmRVc2Vy
QWdlbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgT1MoVU5J
WCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIGNvbnN0IGNoYXIqIHBsYXRmb3JtRm9yVUFTdHJpbmcoKQoreworI2lmIFBM
QVRGT1JNKFgxMSkKKyAgICByZXR1cm4gIlgxMSI7CisjZWxzZQorICAgIHJldHVybiAiVW5rbm93
biI7CisjZW5kaWYKK30KKworc3RhdGljIFN0cmluZyBwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0cmlu
ZygpCit7CisgICAgU3RyaW5nIHZlcnNpb247CisgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKKyAg
ICBpZiAodW5hbWUoJm5hbWUpICE9IC0xKQorICAgICAgICB2ZXJzaW9uID0gbWFrZVN0cmluZyhu
YW1lLnN5c25hbWUsICcgJywgbmFtZS5tYWNoaW5lKTsKKyAgICBlbHNlCisgICAgICAgIHZlcnNp
b24gPSBBU0NJSUxpdGVyYWwoIlVua25vd24iKTsKKyAgICByZXR1cm4gdmVyc2lvbjsKK30KKwor
c3RhdGljIGNvbnN0IGNoYXIqIHZlcnNpb25Gb3JVQVN0cmluZygpCit7CisgICAgcmV0dXJuIFVT
RVJfQUdFTlRfRUZMX01BSk9SX1ZFUlNJT04gIi4iIFVTRVJfQUdFTlRfRUZMX01JTk9SX1ZFUlNJ
T047Cit9CisKK1N0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblZlcnNpb24pCit7CisgICAgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uID0gQVNDSUlMaXRlcmFsKHZlcnNpb25Gb3JVQVN0cmluZygpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdGFuZGFyZFVzZXJBZ2VudFN0cmluZyA9
IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBwbGF0Zm9ybUZvclVBU3RyaW5nKCksICI7ICIs
IHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCksCisgICAgICAgICIpIEFwcGxlV2ViS2l0LyIs
IHZlcnNpb24sICIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzguMCBTYWZhcmkvNjAxLjIu
NyIpOworCisgICAgaWYgKGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBzdGFuZGFyZFVzZXJBZ2VudFN0cmluZzsKKworICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9u
VmVyc2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKKyAgICBpZiAoZmluYWxBcHBsaWNhdGlvblZl
cnNpb24uaXNFbXB0eSgpKQorICAgICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IEFTQ0lJ
TGl0ZXJhbCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7CisKKyAgICByZXR1cm4gc3RhbmRhcmRVc2Vy
QWdlbnRTdHJpbmcgKyAnICcgKyBhcHBsaWNhdGlvbk5hbWUgKyAnLycgKyBmaW5hbEFwcGxpY2F0
aW9uVmVyc2lvbjsKK30KKworU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVS
TCYpCit7CisgICAgLy8gRGlzYWJsZSB1c2VyIGFnZW50IHF1aXJrcyBmb3Igbm93LgorICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVXNlckFnZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwY2RmNGVkOWUyNjc0MDQ0MWRjY2ZkMjc1MGI4NDJkY2MxMmNkODJlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBOYXZlciBDb3JwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVXNlckFnZW50RWZsLmgiCi0KLSNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIE9TKFVOSVgpCi0jaW5jbHVkZSA8c3lzL3V0c25h
bWUuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBjaGFy
KiBwbGF0Zm9ybUZvclVBU3RyaW5nKCkKLXsKLSNpZiBQTEFURk9STShYMTEpCi0gICAgcmV0dXJu
ICJYMTEiOwotI2Vsc2UKLSAgICByZXR1cm4gIlVua25vd24iOwotI2VuZGlmCi19Ci0KLXN0YXRp
YyBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQotewotICAgIFN0cmluZyB2ZXJz
aW9uOwotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0gICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAt
MSkKLSAgICAgICAgdmVyc2lvbiA9IG1ha2VTdHJpbmcobmFtZS5zeXNuYW1lLCAnICcsIG5hbWUu
bWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAgICB2ZXJzaW9uID0gQVNDSUlMaXRlcmFsKCJVbmtu
b3duIik7Ci0gICAgcmV0dXJuIHZlcnNpb247Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB2ZXJz
aW9uRm9yVUFTdHJpbmcoKQotewotICAgIHJldHVybiBVU0VSX0FHRU5UX0VGTF9NQUpPUl9WRVJT
SU9OICIuIiBVU0VSX0FHRU5UX0VGTF9NSU5PUl9WRVJTSU9OOwotfQotCi1TdHJpbmcgc3RhbmRh
cmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25WZXJzaW9uKQotewotICAgIGNvbnN0IFN0cmluZyYgdmVyc2lvbiA9IEFTQ0lJ
TGl0ZXJhbCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc3RhbmRhcmRVc2VyQWdlbnRTdHJpbmcgPSBtYWtlU3RyaW5nKCJNb3ppbGxhLzUu
MCAoIiwgcGxhdGZvcm1Gb3JVQVN0cmluZygpLCAiOyAiLCBwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0
cmluZygpLAotICAgICAgICAiKSBBcHBsZVdlYktpdC8iLCB2ZXJzaW9uLCAiIChLSFRNTCwgbGlr
ZSBHZWNrbykgVmVyc2lvbi84LjAgU2FmYXJpLzYwMS4yLjciKTsKLQotICAgIGlmIChhcHBsaWNh
dGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRTdHJp
bmc7Ci0KLSAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZl
cnNpb247Ci0gICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAg
ICAgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBBU0NJSUxpdGVyYWwodmVyc2lvbkZvclVBU3Ry
aW5nKCkpOwotCi0gICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50U3RyaW5nICsgJyAnICsgYXBw
bGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1VzZXJBZ2VudEVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJBZ2Vu
dEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRhMGIzMTIyMzg0OTE2YTM4
ZjRjZWIwYjZlODJlMGQ1ZDEwZDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
TmF2ZXIgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVc2VyQWdlbnRFZmxfaAotI2RlZmluZSBVc2Vy
QWdlbnRFZmxfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lID0gZW1wdHlTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblZl
cnNpb24gPSBlbXB0eVN0cmluZygpKTsKLQotfQotCi0jZW5kaWYgLy8gVXNlckFnZW50RWZsX2gK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1N0YW5kYXJkVXNlckFn
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TdGFuZGFyZFVzZXJBZ2Vu
dEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBkZmQ3ZWZiYjI2YThmMmE2Nzc0YjIwNmY2YzQxZjRjMWM1
MTA4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TdGFu
ZGFyZFVzZXJBZ2VudEd0ay5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YW5kYXJkVXNl
ckFnZW50LmgiCisKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3Mu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKKyNpZiBPUyhVTklYKQorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+
CisjZW5kaWYKKworLy8gV0FSTklORyEgV0FSTklORyEgV0FSTklORyEKKy8vCisvLyBUaGUgdXNl
ciBhZ2VudCBpcyBsdWRpY3JvdXNseSBmcmFnaWxlLiBUaGUgbW9zdCBpbm5vY2VudCBjaGFuZ2Ug
Y2FuCisvLyBhbmQgd2lsbCBicmVhayB3ZWJzaXRlcy4gUmVhZCB0aGUgZ2l0IGxvZyBmb3IgdGhp
cyBmaWxlIGNhcmVmdWxseQorLy8gYmVmb3JlIGNoYW5naW5nIHVzZXIgYWdlbnQgY29uc3RydWN0
aW9uLiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgY29uc3QgY2hhciogcGxhdGZvcm1Gb3JVQVN0cmluZygpCit7CisjaWYgT1MoTUFDX09TX1gp
CisgICAgcmV0dXJuICJNYWNpbnRvc2giOworI2Vsc2UKKyAgICByZXR1cm4gIlgxMSI7CisjZW5k
aWYKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygp
Cit7CisjaWYgT1MoVU5JWCkKKyAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOworICAgIHVuYW1lKCZu
YW1lKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1YU9TVmVyc2lv
bihTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSkpOwor
ICAgIHJldHVybiB1YU9TVmVyc2lvbjsKKyNlbHNlCisgICAgLy8gV2Ugd2lsbCBhbHdheXMgY2xh
aW0gdG8gYmUgU2FmYXJpIGluIEludGVsIE1hYyBPUyBYLCBzaW5jZSBTYWZhcmkgd2l0aG91dAor
ICAgIC8vIE9TIFggb3IgYW55dGhpbmcgb24gQVJNIHRyaWdnZXJzIG1vYmlsZSB2ZXJzaW9ucyBv
ZiBzb21lIHdlYnNpdGVzLgorICAgIC8vCisgICAgLy8gRklYTUU6IFRoZSBmaW5hbCByZXN1bHQg
c2hvdWxkIGluY2x1ZGUgT1MgdmVyc2lvbiwgZS5nLiAiSW50ZWwgTWFjIE9TIFggMTBfOF80Ii4K
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1YU9TVmVyc2lvbihBU0NJ
SUxpdGVyYWwoIkludGVsIE1hYyBPUyBYIikpOworICAgIHJldHVybiB1YU9TVmVyc2lvbjsKKyNl
bmRpZgorfQorCitzdGF0aWMgY29uc3QgY2hhciogdmVyc2lvbkZvclVBU3RyaW5nKCkKK3sKKyAg
ICByZXR1cm4gVVNFUl9BR0VOVF9HVEtfTUFKT1JfVkVSU0lPTiAiLiIgVVNFUl9BR0VOVF9HVEtf
TUlOT1JfVkVSU0lPTjsKK30KKworc3RhdGljIFN0cmluZyBidWlsZFVzZXJBZ2VudFN0cmluZyhj
b25zdCBVc2VyQWdlbnRRdWlya3MmIHF1aXJrcykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHVhU3Ry
aW5nOworICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIk1vemlsbGEvNS4wICIpOworICAgIHVh
U3RyaW5nLmFwcGVuZCgnKCcpOworCisgICAgaWYgKHF1aXJrcy5jb250YWlucyhVc2VyQWdlbnRR
dWlya3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pKQorICAgICAgICB1YVN0cmluZy5hcHBlbmQo
VXNlckFnZW50UXVpcmtzOjpzdHJpbmdGb3JRdWlyayhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzTWFj
aW50b3NoUGxhdGZvcm0pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdWFTdHJpbmcuYXBwZW5kKHBs
YXRmb3JtRm9yVUFTdHJpbmcoKSk7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIjsg
Iik7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygp
KTsKKyAgICB9CisKKyAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIpIEFwcGxlV2ViS2l0LyIp
OworICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7CisgICAgdWFTdHJp
bmcuYXBwZW5kTGl0ZXJhbCgiIChLSFRNTCwgbGlrZSBHZWNrbykgIik7CisKKyAgICAvLyBOb3Rl
IHRoYXQgQ2hyb21lIFVBcyBhZHZlcnRpc2UgKmJvdGgqIENocm9tZSBhbmQgU2FmYXJpLgorICAg
IGlmIChxdWlya3MuY29udGFpbnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIp
KSB7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChVc2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1
aXJrKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVCcm93c2VyKSk7CisgICAgICAgIHVhU3Ry
aW5nLmFwcGVuZExpdGVyYWwoIiAiKTsKKyAgICB9CisKKyAgICAvLyBWZXJzaW9uL1ggaXMgbWFu
ZGF0b3J5ICpiZWZvcmUqIFNhZmFyaS9YIHRvIGJlIGEgdmFsaWQgU2FmYXJpIFVBLiBTZWUKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDAzIGZvciBk
ZXRhaWxzLgorICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIiBWZXJzaW9uLzEwLjAgU2FmYXJp
LyIpOworICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7CisKKyAgICBy
ZXR1cm4gdWFTdHJpbmcudG9TdHJpbmcoKTsKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyBzdGFu
ZGFyZFVzZXJBZ2VudFN0YXRpYygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IFN0cmluZz4gdWFTdGF0aWMoYnVpbGRVc2VyQWdlbnRTdHJpbmcoVXNlckFnZW50UXVpcmtzKCkp
KTsKKyAgICByZXR1cm4gdWFTdGF0aWM7Cit9CisKK1N0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblZl
cnNpb24pCit7CisgICAgLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZyB3aXRo
IGEgbGliZXJhbCBpbnRlcnByZXRhdGlvbiBvZgorICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1v
emlsbGEub3JnL2VuLVVTL2RvY3MvVXNlcl9BZ2VudF9TdHJpbmdzX1JlZmVyZW5jZQorICAgIC8v
CisgICAgLy8gRm9ybWluZyBhIGZ1bmN0aW9uYWwgdXNlciBhZ2VudCBpcyByZWFsbHkgZGlmZmlj
dWx0LiBXZSBtdXN0IG1lbnRpb24gU2FmYXJpLCBiZWNhdXNlIHNvbWUKKyAgICAvLyBzaXRlcyBj
aGVjayBmb3IgdGhhdCB3aGVuIGRldGVjdGluZyBXZWJLaXQgYnJvd3NlcnMuIEFkZGl0aW9uYWxs
eSBzb21lIHNpdGVzIGFzc3VtZSB0aGF0CisgICAgLy8gYnJvd3NlcnMgdGhhdCBhcmUgIlNhZmFy
aSIgYnV0IG5vdCBydW5uaW5nIG9uIE9TIFggYXJlIHRoZSBTYWZhcmkgaU9TIGJyb3dzZXIuIEdl
dHRpbmcgdGhpcworICAgIC8vIHdyb25nIGNhbiBjYXVzZSBzaXRlcyB0byBsb2FkIHRoZSB3cm9u
ZyBKYXZhU2NyaXB0LCBDU1MsIG9yIGN1c3RvbSBmb250cy4gSW4gc29tZSBjYXNlcworICAgIC8v
IHNpdGVzIHdvbid0IGxvYWQgcmVzb3VyY2VzIGF0IGFsbC4KKyAgICBpZiAoYXBwbGljYXRpb25O
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCk7
CisKKyAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNp
b247CisgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkKKyAgICAgICAg
ZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSB2ZXJzaW9uRm9yVUFTdHJpbmcoKTsKKworICAgIHJl
dHVybiBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAnICsgYXBwbGljYXRpb25OYW1lICsg
Jy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247Cit9CisKK1N0cmluZyBzdGFuZGFyZFVzZXJB
Z2VudEZvclVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBhdXRvIHF1aXJrcyA9IFVzZXJBZ2Vu
dFF1aXJrczo6cXVpcmtzRm9yVVJMKHVybCk7CisgICAgLy8gVGhlIG51bGwgc3RyaW5nIG1lYW5z
IHdlIGRvbid0IG5lZWQgYSBzcGVjaWZpYyBVQSBmb3IgdGhlIGdpdmVuIFVSTC4KKyAgICByZXR1
cm4gcXVpcmtzLmlzRW1wdHkoKSA/IFN0cmluZygpIDogYnVpbGRVc2VyQWdlbnRTdHJpbmcocXVp
cmtzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzOGQ0YWU2YmFhYTJlYWNmYmI1NmFiMTEwODI1OTAyMGFlZGJmNmU2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Vc2VyQWdlbnRHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlVzZXJBZ2VudEd0ay5oIgotCi0jaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYgT1MoVU5JWCkKLSNpbmNsdWRlIDxzeXMvdXRz
bmFtZS5oPgotI2VuZGlmCi0KLS8vIFdBUk5JTkchIFdBUk5JTkchIFdBUk5JTkchCi0vLwotLy8g
VGhlIHVzZXIgYWdlbnQgaXMgbHVkaWNyb3VzbHkgZnJhZ2lsZS4gVGhlIG1vc3QgaW5ub2NlbnQg
Y2hhbmdlIGNhbgotLy8gYW5kIHdpbGwgYnJlYWsgd2Vic2l0ZXMuIFJlYWQgdGhlIGdpdCBsb2cg
Zm9yIHRoaXMgZmlsZSBjYXJlZnVsbHkKLS8vIGJlZm9yZSBjaGFuZ2luZyB1c2VyIGFnZW50IGNv
bnN0cnVjdGlvbi4gWW91IGhhdmUgYmVlbiB3YXJuZWQuCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKLXB1YmxpYzoKLSAgICBlbnVtIFVzZXJBZ2VudFF1
aXJrIHsKLSAgICAgICAgTmVlZHNDaHJvbWVCcm93c2VyLAotICAgICAgICBOZWVkc01hY2ludG9z
aFBsYXRmb3JtLAotCi0gICAgICAgIE51bVVzZXJBZ2VudFF1aXJrcwotICAgIH07Ci0KLSAgICBV
c2VyQWdlbnRRdWlya3MoKQotICAgICAgICA6IG1fcXVpcmtzKDApCi0gICAgewotICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YobV9xdWlya3MpICogOCA+PSBOdW1Vc2VyQWdlbnRRdWlya3Ms
IG5vdF9lbm91Z2hfcm9vbV9mb3JfcXVpcmtzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZChVc2Vy
QWdlbnRRdWlyayBxdWlyaykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChxdWlyayA+PSAwKTsKLSAg
ICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocXVpcmsgPCBOdW1Vc2VyQWdl
bnRRdWlya3MpOwotCi0gICAgICAgIG1fcXVpcmtzIHw9ICgxIDw8IHF1aXJrKTsKLSAgICB9Ci0K
LSAgICBib29sIGNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrIHF1aXJrKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fcXVpcmtzICYgKDEgPDwgcXVpcmspOwotICAgIH0KLQotICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3F1aXJrczsgfQotCi1wcml2YXRlOgotICAgIHVp
bnQzMl90IG1fcXVpcmtzOwotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHBsYXRmb3JtRm9yVUFT
dHJpbmcoKQotewotI2lmIE9TKE1BQ19PU19YKQotICAgIHJldHVybiAiTWFjaW50b3NoIjsKLSNl
bHNlCi0gICAgcmV0dXJuICJYMTEiOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcg
cGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQotewotI2lmIE9TKFVOSVgpCi0gICAgc3RydWN0
IHV0c25hbWUgbmFtZTsKLSAgICB1bmFtZSgmbmFtZSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gdWFPU1ZlcnNpb24oU3RyaW5nOjpmb3JtYXQoIiVzICVzIiwgbmFt
ZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpKTsKLSAgICByZXR1cm4gdWFPU1ZlcnNpb247Ci0jZWxz
ZQotICAgIC8vIFdlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIFNhZmFyaSBpbiBJbnRlbCBNYWMg
T1MgWCwgc2luY2UgU2FmYXJpIHdpdGhvdXQKLSAgICAvLyBPUyBYIG9yIGFueXRoaW5nIG9uIEFS
TSB0cmlnZ2VycyBtb2JpbGUgdmVyc2lvbnMgb2Ygc29tZSB3ZWJzaXRlcy4KLSAgICAvLwotICAg
IC8vIEZJWE1FOiBUaGUgZmluYWwgcmVzdWx0IHNob3VsZCBpbmNsdWRlIE9TIHZlcnNpb24sIGUu
Zy4gIkludGVsIE1hYyBPUyBYIDEwXzhfNCIuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFN0cmluZz4gdWFPU1ZlcnNpb24oQVNDSUlMaXRlcmFsKCJJbnRlbCBNYWMgT1MgWCIpKTsK
LSAgICByZXR1cm4gdWFPU1ZlcnNpb247Ci0jZW5kaWYKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIq
IHZlcnNpb25Gb3JVQVN0cmluZygpCi17Ci0gICAgcmV0dXJuIFVTRVJfQUdFTlRfR1RLX01BSk9S
X1ZFUlNJT04gIi4iIFVTRVJfQUdFTlRfR1RLX01JTk9SX1ZFUlNJT047Ci19Ci0KLXN0YXRpYyBT
dHJpbmcgYnVpbGRVc2VyQWdlbnRTdHJpbmcoY29uc3QgVXNlckFnZW50UXVpcmtzJiBxdWlya3Mp
Ci17Ci0gICAgU3RyaW5nQnVpbGRlciB1YVN0cmluZzsKLSAgICB1YVN0cmluZy5hcHBlbmRMaXRl
cmFsKCJNb3ppbGxhLzUuMCAiKTsKLSAgICB1YVN0cmluZy5hcHBlbmQoJygnKTsKLQotICAgIGlm
IChxdWlya3MuY29udGFpbnMoVXNlckFnZW50UXVpcmtzOjpOZWVkc01hY2ludG9zaFBsYXRmb3Jt
KSkKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiTWFjaW50b3NoIik7Ci0gICAgZWxz
ZQotICAgICAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1Gb3JVQVN0cmluZygpKTsKLQotICAg
IHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIjsgIik7Ci0KLSAgICBpZiAocXVpcmtzLmNvbnRhaW5z
KFVzZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0Zm9ybSkpCi0gICAgICAgIHVhU3Ry
aW5nLmFwcGVuZExpdGVyYWwoIkludGVsIE1hYyBPUyBYIDEwXzEyIik7Ci0gICAgZWxzZQotICAg
ICAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0KLSAg
ICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIpIEFwcGxlV2ViS2l0LyIpOwotICAgIHVhU3RyaW5n
LmFwcGVuZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiIChLSFRNTCwgbGlrZSBHZWNrbykgIik7Ci0KLSAgICAvLyBOb3RlIHRoYXQgQ2hyb21lIFVB
cyBhZHZlcnRpc2UgKmJvdGgqIENocm9tZSBhbmQgU2FmYXJpLgotICAgIC8vIFdlIHNldCBhIG1l
YW5pbmdmdWwgdmFsdWUgb25seSBmb3IgdGhlIGZpcnN0IHR3byBkaWdpdHMgaGVyZS4KLSAgICBp
ZiAocXVpcmtzLmNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVCcm93c2VyKSkK
LSAgICAgICAgdWFTdHJpbmcuYXBwZW5kKCJDaHJvbWUvNTQuMC4yNzA0LjEwNiAiKTsKLQotICAg
IC8vIFZlcnNpb24vWCBpcyBtYW5kYXRvcnkgKmJlZm9yZSogU2FmYXJpL1ggdG8gYmUgYSB2YWxp
ZCBTYWZhcmkgVUEuIFNlZQotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzM0MDMgZm9yIGRldGFpbHMuCi0gICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
IFZlcnNpb24vMTAuMCBTYWZhcmkvIik7Ci0gICAgdWFTdHJpbmcuYXBwZW5kKHZlcnNpb25Gb3JV
QVN0cmluZygpKTsKLQotICAgIHJldHVybiB1YVN0cmluZy50b1N0cmluZygpOwotfQotCi1zdGF0
aWMgY29uc3QgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1YVN0YXRpYyhidWlsZFVzZXJBZ2VudFN0cmlu
ZyhVc2VyQWdlbnRRdWlya3MoKSkpOwotICAgIHJldHVybiB1YVN0YXRpYzsKLX0KLQotU3RyaW5n
IHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbikKLXsKLSAgICAvLyBDcmVhdGUgYSBkZWZhdWx0IHVz
ZXIgYWdlbnQgc3RyaW5nIHdpdGggYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9mCi0gICAgLy8g
aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Vc2VyX0FnZW50X1N0cmlu
Z3NfUmVmZXJlbmNlCi0gICAgLy8KLSAgICAvLyBGb3JtaW5nIGEgZnVuY3Rpb25hbCB1c2VyIGFn
ZW50IGlzIHJlYWxseSBkaWZmaWN1bHQuIFdlIG11c3QgbWVudGlvbiBTYWZhcmksIGJlY2F1c2Ug
c29tZQotICAgIC8vIHNpdGVzIGNoZWNrIGZvciB0aGF0IHdoZW4gZGV0ZWN0aW5nIFdlYktpdCBi
cm93c2Vycy4gQWRkaXRpb25hbGx5IHNvbWUgc2l0ZXMgYXNzdW1lIHRoYXQKLSAgICAvLyBicm93
c2VycyB0aGF0IGFyZSAiU2FmYXJpIiBidXQgbm90IHJ1bm5pbmcgb24gT1MgWCBhcmUgdGhlIFNh
ZmFyaSBpT1MgYnJvd3Nlci4gR2V0dGluZyB0aGlzCi0gICAgLy8gd3JvbmcgY2FuIGNhdXNlIHNp
dGVzIHRvIGxvYWQgdGhlIHdyb25nIEphdmFTY3JpcHQsIENTUywgb3IgY3VzdG9tIGZvbnRzLiBJ
biBzb21lIGNhc2VzCi0gICAgLy8gc2l0ZXMgd29uJ3QgbG9hZCByZXNvdXJjZXMgYXQgYWxsLgot
ICAgIGlmIChhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RhbmRh
cmRVc2VyQWdlbnRTdGF0aWMoKTsKLQotICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lv
biA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKLSAgICBpZiAoZmluYWxBcHBsaWNhdGlvblZlcnNpb24u
aXNFbXB0eSgpKQotICAgICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IHZlcnNpb25Gb3JV
QVN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkgKyAnICcg
KyBhcHBsaWNhdGlvbk5hbWUgKyAnLycgKyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbjsKLX0KLQot
Ly8gQmUgY2FyZWZ1bCB3aXRoIHRoaXMgcXVpcms6IGl0J3MgYW4gaW52aXRhdGlvbiBmb3Igc2l0
ZXMgdG8gdXNlIEphdmFTY3JpcHQgd2UgY2FuJ3QgaGFuZGxlLgotc3RhdGljIGJvb2wgdXJsUmVx
dWlyZXNDaHJvbWVCcm93c2VyKGNvbnN0IFVSTCYgdXJsKQotewotICAgIFN0cmluZyBiYXNlRG9t
YWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgpKTsKLQotICAgIC8v
IE5lZWRlZCBmb3IgZm9udHMgb24gbWFueSBzaXRlcywgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NzI5NgotICAgIGlmIChiYXNlRG9tYWluID09ICJ0eXBla2l0Lm5l
dCIgfHwgYmFzZURvbWFpbiA9PSAidHlwZWtpdC5jb20iKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIC8vIFNodXQgb2ZmIENocm9tZSBhZHMuIEF2b2lkIG1pc3NpbmcgZmVhdHVyZXMgb24g
bWFwcy5nb29nbGUuY29tLgotICAgIGlmIChiYXNlRG9tYWluLnN0YXJ0c1dpdGgoImdvb2dsZSIp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIE5lZWRlZCBmb3IgWW91VHViZSAzNjAg
KHJlcXVpcmVzIEVOQUJMRV9NRURJQV9TT1VSQ0UpLgotICAgIGlmIChiYXNlRG9tYWluID09ICJ5
b3V0dWJlLmNvbSIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gU2xhY2sgY29tcGxl
dGVseSBibG9ja3MgdXNlcnMgd2l0aCBvdXIgc3RhbmRhcmQgdXNlciBhZ2VudC4KLSAgICBpZiAo
YmFzZURvbWFpbiA9PSAic2xhY2suY29tIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIHVybFJlcXVpcmVzTWFjaW50b3NoUGxhdGZv
cm0oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgU3RyaW5nIGJhc2VEb21haW4gPSB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluKHVybC5ob3N0KCkpOwotCi0gICAgLy8gQXQgbGVhc3QgZmluYW5j
ZS55YWhvby5jb20gZGlzcGxheXMgYSBtb2JpbGUgdmVyc2lvbiB3aXRoIG91ciBzdGFuZGFyZCB1
c2VyIGFnZW50LgotICAgIGlmIChiYXNlRG9tYWluID09ICJ5YWhvby5jb20iKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIC8vIHRhb2Jhby5jb20gZGlzcGxheXMgYSBtb2JpbGUgdmVyc2lv
biB3aXRoIG91ciBzdGFuZGFyZCB1c2VyIGFnZW50LgotICAgIGlmIChiYXNlRG9tYWluID09ICJ0
YW9iYW8uY29tIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyB3ZWIud2hhdHNhcHAu
Y29tIGNvbXBsZXRlbHkgYmxvY2tzIHVzZXJzIHdpdGggb3VyIHN0YW5kYXJkIHVzZXIgYWdlbnQu
Ci0gICAgaWYgKGJhc2VEb21haW4gPT0gIndoYXRzYXBwLmNvbSIpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgQVNTRVJUKCF1cmwuaXNOdWxsKCkpOwotICAg
IFVzZXJBZ2VudFF1aXJrcyBxdWlya3M7Ci0gICAgaWYgKHVybFJlcXVpcmVzQ2hyb21lQnJvd3Nl
cih1cmwpKQotICAgICAgICBxdWlya3MuYWRkKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVC
cm93c2VyKTsKLSAgICBpZiAodXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSh1cmwpKQotICAg
ICAgICBxdWlya3MuYWRkKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0Zm9ybSk7
Ci0KLSAgICAvLyBUaGUgbnVsbCBzdHJpbmcgbWVhbnMgd2UgZG9uJ3QgbmVlZCBhIHNwZWNpZmlj
IFVBIGZvciB0aGUgZ2l2ZW4gVVJMLgotICAgIHJldHVybiBxdWlya3MuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiBidWlsZFVzZXJBZ2VudFN0cmluZyhxdWlya3MpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2Vy
QWdlbnRHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhY2EyOWYyOTEzZmYzMWZkMTI0MTE0MzE2
OTk4MDU2NGYxZWU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgVXNlckFnZW50R3RrX2gKLSNkZWZpbmUgVXNlckFnZW50R3RrX2gKLQotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7
Ci0KLVN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFt
ZSA9IGVtcHR5U3RyaW5nKCksIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25WZXJzaW9uID0gZW1w
dHlTdHJpbmcoKSk7Ci1TdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJik7
Ci0KLX0KLQotI2VuZGlmIC8vIFVzZXJBZ2VudEd0a19oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCA0YmE0YWM2NDhm
N2Y3ODRiYmQwYzhiMjA3MDdkOTU3MmUzMzliMTc0Li4xZWQ3MDExYTJiN2IzMDVjNjZhODgwYTU3
OGMxYzZjYmQ4NTIxMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiV2Vi
S2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU3RhbmRhcmRVc2VyQWdlbnQuaD4KICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IGVhZjlmNTNk
ZTlhNDRiOWE5NDU3M2IyMzUwNGI1ZDA1ZmIwNjdkMTAuLmRiYTBmNjc2ZWQ5ZWNjZDUzZDYxYTUz
MjFkNDFmNDM2YTY0YzU4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJFd2tWaWV3
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlckFnZW50RWZsLmgiCisjaW5jbHVkZSAiU3RhbmRh
cmRVc2VyQWdlbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggZjVhODRiYmFkMGZj
OThkMWMyMmQyMDliYzhmYjFlOTBkYmQxMTNiMi4uMjFhYzE4NzBhZjllZjVlZTZmZjhhNDI0M2Jj
ZDQwMGE0OWE3OTk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldlYlBhc3RlYm9h
cmRQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU3RhbmRhcmRVc2VyQWdlbnQuaD4KICNpbmNsdWRlIDxndGsvZ3RreC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCA0YTZlYWQ2Yzlh
Yzk5OTU3ZTExYWM1Y2E4N2E4MDY2MTA3OTUwNDc3Li42MDk5NzBkN2RjMzEyYWM1NzBiNDdkNjRl
Nzg4ZTRhYTU1Y2UyYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Bhc3RlYm9hcmRIZWxwZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RhbmRhcmRVc2VyQWdl
bnQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc0ODBlNjE0ZjU2MzY1MzgwNjU5OGQ2YjJiOGU0ZDYwMzkwZWM4YjEuLjUwMzhjMWFh
ZTg5MmQxMTEzZTFiMjQ4NTg2YjdlMGZkZWRjYzRiZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0xMC0xNiAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgTW92
ZSB1c2VyIGFnZW50IHF1aXJrcyB0byBjcm9zcy1wbGF0Zm9ybSBsb2NhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgdGVzdCB0byBh
IGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uIGFuZCBpbXByb3ZlIGl0IHRvIGJldHRlciBjaGVjayB0
aGUgZnVsbCBsaXN0IG9mCisgICAgICAgIHNpdGVzIHdlIGhhdmUgZGVmaW5lZCBxdWlya3MgZm9y
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcDogUmVuYW1l
ZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ndGsvVXNlckFnZW50UXVp
cmtzLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVSTEhh
c0Nocm9tZUJyb3dzZXJRdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3NlcnRVc2Vy
QWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDE2LTEwLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLKyB1bml0IHRlc3QgL3dlYmtp
dDIvV2ViS2l0V2ViQ29udGV4dC9sYW5ndWFnZXMgYWZ0ZXIgcjIwNjk0OS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDY3OTYyMmZiZjYwYWUyOWFmZGM2ZWVlZmMyNDYx
Zjc0OTEwNTYwNjcuLjkxYTJjOWU3YmQzMTM4Y2E1MDc4Y2Y1YTg0YzY3MTAwOWYzNWEzODAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTI1LDIxICsxMjUsMTcgQEAg
YWRkX3Rlc3QoVGVzdFdlYktpdDIgJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vV2ViS2l0Mi9UZXN0V2ViS2kKIHNldF90ZXN0c19wcm9wZXJ0aWVzKFRlc3RXZWJLaXQy
IFBST1BFUlRJRVMgVElNRU9VVCA2MCkKIHNldF90YXJnZXRfcHJvcGVydGllcyhUZXN0V2ViS2l0
MiBQUk9QRVJUSUVTIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke1RFU1RXRUJLSVRBUElfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfS9XZWJLaXQyKQogCi1zZXQoVGVzdFdlYkNvcmVHdGtfU09V
UkNFUwotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2Vu
dFF1aXJrcy5jcHAKLSkKLQogYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke3Rlc3Rf
bWFpbl9TT1VSQ0VTfQotICAgICR7VGVzdFdlYkNvcmVHdGtfU09VUkNFU30KICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9QdWJsaWNTdWZmaXguY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9VUkwuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViQ29yZS9VUkxQYXJzZXIuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9GaWxlU3lzdGVtLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvUHVibGljU3VmZml4LmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvVXNlckFnZW50UXVpcmtzLmNwcAogKQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoVGVzdFdl
YkNvcmUgJHt0ZXN0X3dlYmNvcmVfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk3
ZjU3ODYwYjZkYTdmZDBmZGY2YjZmNjk0YTM5NjcyYTBiNDE4OQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBA
IC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9TdGFuZGFy
ZFVzZXJBZ2VudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIGFz
c2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwp
Cit7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsKSk7CisKKyNpZiAhT1MoTUFDX09TX1gpCisgICAgRVhQRUNUX0ZB
TFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVh
U3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAg
IEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51eCIpKTsKKyNlbmRpZgorI2lmIE9T
KFdJTkRPV1MpCisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIldpbmRvd3MiKSk7
CisjZW5kaWYKKworICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7
CisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIlNhZmFyaSIpKTsKKyAgICBFWFBF
Q1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIkNocm9taXVtIikpOworfQorCitzdGF0aWMgdm9p
ZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIqIHVy
bCkKK3sKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKworICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRh
aW5zKCJNYWNpbnRvc2giKSk7CisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1h
YyBPUyBYIikpOworICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTGludXgiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJXaW5kb3dzIikpOworICAgIEVY
UEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOworfQorCitURVNUKFVzZXJB
Z2VudFRlc3QsIFF1aXJrcykKK3sKKyAgICAvLyBBIHNpdGUgd2l0aCBub3QgcXVpcmtzIHNob3Vs
ZCByZXR1cm4gYSBudWxsIFN0cmluZy4KKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3d3dy53ZWJraXQub3Jn
LyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwoKSk7CisKKyAgICAvLyBHb29n
bGUgcXVpcmsgc2hvdWxkIG5vdCBhZmZlY3Qgc2l0ZXMgd2l0aCBzaW1pbGFyIGRvbWFpbnMuCisg
ICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL3d3dy5nb29nbGVibG9nLmNvbS8iKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVhU3Ry
aW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CisKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXND
aHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0LmNvbS8iKTsKKyAgICBhc3NlcnRVc2Vy
QWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0Lm5ldC8iKTsK
KyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93
c2VyUXVpcmsoImh0dHA6Ly93d3cuZ29vZ2xlLmVzLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZv
clVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL2NhbGVuZGFyLmdvb2dsZS5jb20vIik7
CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKCJodHRwOi8v
bWFwcy5nb29nbGUuY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJy
b3dzZXJRdWlyaygiaHR0cDovL3BsdXMuZ29vZ2xlLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdl
bnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly93d3cueW91dHViZS5jb20vIik7
CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKCJodHRwOi8v
d3d3LnNsYWNrLmNvbS8iKTsKKworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRm
b3JtUXVpcmsoImh0dHA6Ly93d3cueWFob28uY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZv
clVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly9maW5hbmNlLnlhaG9vLmNvbS8iKTsKKyAg
ICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKCJodHRwOi8vaW50bC50
YW9iYW8uY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVp
cmsoImh0dHA6Ly93d3cud2hhdHNhcHAuY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVS
TEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly93ZWIud2hhdHNhcHAuY29tLyIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJmY2U0MTYxOGUzMTkzOTI5NTY5MmMxYTEwMDJlZGMzOGIxMGE4
NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2d0ay9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50R3RrLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1QoV2Vi
Q29yZSwgVXNlckFnZW50UXVpcmtzVGVzdCkKLXsKLSAgICAvLyBBIHNpdGUgd2l0aCBub3QgcXVp
cmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBz
dGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3d3dy53
ZWJraXQub3JnLyIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwoKSk7Ci0KLSAg
ICAvLyB3ZWIud2hhdHNhcHAuY29tIHJlcXVpcmVzIE1BQyBPUyBwbGF0Zm9ybSBpbiB0aGUgVUEu
Ci0gICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3Ry
aW5nLCAiaHR0cDovL3dlYi53aGF0c2FwcC5jb20vIikpOwotICAgIEVYUEVDVF9UUlVFKHVhU3Ry
aW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIk1hYyBPUyBYIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygi
TGludXgiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7
Ci0KLSAgICAvLyBnb29nbGUgZG9tYWlucyByZXF1aXJlIENocm9tZSBpbiB0aGUgVUEKLSAgICB1
YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICJo
dHRwOi8vd3d3Lmdvb2dsZS5lcy8iKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRh
aW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJN
YWMgT1MgWCIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiTGludXgiKSk7
Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKLQotICAgIHVh
U3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly9tYXBzLmdvb2dsZS5jb20vIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250
YWlucygiTWFjaW50b3NoIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygi
TWFjIE9TIFgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkxpbnV4Iikp
OwotICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7Ci0KLSAgICAv
LyBTbGFjayByZXF1aXJlcyBDaHJvbWUgaW4gdGhlIFVBCi0gICAgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3d3dy5zbGFjay5j
b20vIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFjaW50b3NoIikp
OwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFjIE9TIFgiKSk7Ci0gICAg
RVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkxpbnV4IikpOwotICAgIEVYUEVDVF9UUlVF
KHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291789</attachid>
            <date>2016-10-16 18:16:57 -0700</date>
            <delta_ts>2016-10-17 03:32:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163508-20161016201325.patch</filename>
            <type>text/plain</type>
            <size>50304</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3NmYxNTY2MTRiMDE5
NTVmMmUxNDE3ZTU4YzZkOGUzNTIyYzQ2My4uMzVhZGI1OWU2ZmRhMjU0YWVkMzlhMWM4NWIxNDYz
Y2E5MDc3ZGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTEwLTE2ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHVz
ZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgYnkgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGFuZGFyZFVzZXJBZ2VudC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5o
LgorICAgICAgICBXaHkgbm90IFVzZXJBZ2VudC5oPyBCZWNhdXNlIGl0IGNsYXNoZXMgd2l0aCBh
IENvY29hLXNwZWNpZmljIGhlYWRlciwgYW5kIHdvdWxkIHJlcXVpcmUKKyAgICAgICAgZWRpdGlu
ZyBYQ29kZSBidWlsZCBmaWxlcy4gTWF5YmUgYSBiYWQgcmVhc29uIHRvIHJlbmFtZSBhIGJ1bmNo
IG9mIGZpbGVzLCBidXQgdGhlcmUgeW91IGdvIQorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2Vu
dFF1aXJrcy5jcHA6IEFkZGVkLiBDb250ZW50IG1vdmVkIGZyb20gVXNlckFnZW50R3RrLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OnVybFJlcXVpcmVzQ2hyb21lQnJvd3Nlcik6IFNuZWFraWx5IHRp
Z2h0ZW4gdXAgR29vZ2xlIGRvbWFpbiBkZXRlY3Rpb247IGl0IHNob3VsZAorICAgICAgICBvbmx5
IGFwcGx5IHRvIHNpdGVzIGlmIHRoZSBiYXNlIGRvbWFpbiBtYXRjaGVzIGdvb2dsZS4qLCBub3Qg
YW55IGJhc2UgZG9tYWluIHRoYXQgc3RhcnRzCisgICAgICAgIHdpdGggZ29vZ2xlLgorICAgICAg
ICAoV2ViQ29yZTo6dXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyQWdlbnRRdWlya3M6OnF1aXJrc0ZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2Vy
QWdlbnRRdWlya3MuaDogQWRkZWQuIENvbnRlbnQgbW92ZWQgZnJvbSBVc2VyQWdlbnRHdGsuY3Bw
LiBwcmVwYXJlLUNoYW5nZUxvZworICAgICAgICB0aGlua3MgaXQgd2FzIHJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVXNlckFnZW50RWZsLmgsIGJ1dCBpdCdzIGR1bWIu
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OlVzZXJBZ2VudFF1aXJrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQWdlbnRRdWlya3M6OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBZ2Vu
dFF1aXJrczo6aXNFbXB0eSk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1N0YW5kYXJkVXNlckFn
ZW50RWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2Vy
QWdlbnRFZmwuY3BwLgorICAgICAgICAoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TdGFuZGFyZFVzZXJBZ2VudEd0ay5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkVXNlckFnZW50U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OnN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OlVzZXJBZ2VudFF1aXJrcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmFkZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJrczo6aXNFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSk6IERlbGV0ZWQuCisKIDIwMTYtMTAt
MTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgQ1NTIGNs
YXNzZXMgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFkOTRi
MzdmNjMwZWI4MGJlMjRkNTI1MTUwMTJjMmM0NWEzNDViMWUuLjRjNjcwYmU0YTdkMzIxMDJiN2M1
ZDI5ODcxMTc1MmRmMDg4YTEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0x
MC0xNiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgTW92ZSB1c2VyIGFnZW50IHF1aXJrcyB0byBjcm9zcy1wbGF0Zm9ybSBsb2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgI2luY2x1ZGUgPFdl
YkNvcmUvU3RhbmRhcmRVc2VyQWdlbnQuaD4gaW5zdGVhZCBvZiA8V2ViQ29yZS9Vc2VyQWdlbnRH
dGsuaD4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorCiAyMDE2LTEwLTE2ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIENTUyBjbGFzc2VzIGZyb20gRXhjZXB0
aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYTU2ZWU0
N2QxY2U4NjUzNGFhYzk1NmY1ODljMTIxNjljYWZlMjZjZS4uNGJlZDQ3YWJlMjE2ODhiZDkzNDlj
YzE5ZDUwNGYxODNiMjk4YWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTExMiw4
ICsxMTIsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwv
UGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVt
ZUVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvU291bmRFZmwuY3BwCisgICAgcGxhdGZvcm0vZWZs
L1N0YW5kYXJkVXNlckFnZW50RWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5r
U3R1YnMuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1VzZXJBZ2VudEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvV2lkZ2V0RWZsLmNwcAogCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9lZmwvR2FtZXBhZHNF
ZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDkxMjUzOTA0ZGMxZjY1ZjE3NGFi
OWRlNGM2NDI2MzM5ZThjODJlZTkuLmJjYzg3ZmZhZTJmNWUyNDMwYTg2NWIyYzQyNDc5Yjg5ZDgz
NjZkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04NCw2ICs4NCw3IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9zb3VwL1N1YnJlc291cmNlTG9hZGVy
U291cC5jcHAKIAogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAKKyAgICBwbGF0Zm9ybS9V
c2VyQWdlbnRRdWlya3MuY3BwCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xp
Yi5jcHAKIApAQCAtMTU2LDggKzE1Nyw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9TY3Jv
bGxBbmltYXRvckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAKKyAg
ICBwbGF0Zm9ybS9ndGsvU3RhbmRhcmRVc2VyQWdlbnRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3Rr
L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNw
cAogCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhbmRhcmRV
c2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YW5kYXJkVXNlckFnZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjI1YmE4MTI5NDFiZThhNjU3NWEzOGE3NTFkMjEzNDI0MzdiYmZkZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YW5kYXJkVXNlckFnZW50
LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAx
NiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
VVJMOworCitTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlv
bk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9
IGVtcHR5U3RyaW5nKCkpOworU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVS
TCYpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRR
dWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDY1MjZmZjgwYTM2ZTU5MGFkZDBlMDI1OWNiOTIxYmNiZDA3ZjczCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNw
cApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAx
NiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCisKKyNp
bmNsdWRlICJQdWJsaWNTdWZmaXguaCIKKyNpbmNsdWRlICJVUkwuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBXaGVuIGVkaXRpbmcgdGhlIHF1aXJrcyBpbiB0aGlzIGZpbGUsIGJlIHN1
cmUgdG8gdXBkYXRlCisvLyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFn
ZW50UXVpcmtzLmNwcC4KKworLy8gQmUgY2FyZWZ1bCB3aXRoIHRoaXMgcXVpcms6IGl0J3MgYW4g
aW52aXRhdGlvbiBmb3Igc2l0ZXMgdG8gdXNlIEphdmFTY3JpcHQKKy8vIHRoYXQgd29ya3MgaW4g
Q2hyb21lIHRoYXQgV2ViS2l0IGNhbm5vdCBoYW5kbGUuIFByZWZlciBvdGhlciBxdWlya3MgaW5z
dGVhZC4KK3N0YXRpYyBib29sIHVybFJlcXVpcmVzQ2hyb21lQnJvd3Nlcihjb25zdCBVUkwmIHVy
bCkKK3sKKyAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4odXJsLmhvc3QoKSk7CisKKyAgICAvLyBOZWVkZWQgZm9yIGZvbnRzIG9uIG1hbnkgc2l0ZXMg
dG8gd29yayB3aXRoIFdlYktpdC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ3Mjk2CisgICAgaWYgKGJhc2VEb21haW4gPT0gInR5cGVraXQubmV0IiB8
fCBiYXNlRG9tYWluID09ICJ0eXBla2l0LmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgLy8gU2h1dCBvZmYgQ2hyb21lIGFkcy4gQXZvaWQgbWlzc2luZyBmZWF0dXJlcyBvbiBtYXBz
Lmdvb2dsZS5jb20uIEF2b2lkCisgICAgLy8gcmVjZWl2aW5nIGEgdGVycmlibGUgZmFsbGJhY2sg
dmVyc2lvbiBvZiBjYWxlbmRhci5nb29nbGUuY29tLiBSZWNlaXZlIGEKKyAgICAvLyBmYW5jaWVy
IHBsdXMuZ29vZ2xlLmNvbS4KKyAgICBpZiAoYmFzZURvbWFpbi5zdGFydHNXaXRoKCJnb29nbGUu
IikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gTmVlZGVkIGZvciBZb3VUdWJlIDM2
MCB3aXRoIFdlYktpdEdUSysgYW5kIFdQRSAocmVxdWlyZXMgRU5BQkxFX01FRElBX1NPVVJDRSku
CisgICAgaWYgKGJhc2VEb21haW4gPT0gInlvdXR1YmUuY29tIikKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAvLyBTbGFjayBjb21wbGV0ZWx5IGJsb2NrcyB1c2VycyB3aXRoIFdlYktpdEdU
SysncyBzdGFuZGFyZCB1c2VyIGFnZW50LgorICAgIGlmIChiYXNlRG9tYWluID09ICJzbGFjay5j
b20iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIGJvb2wgdXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybShjb25zdCBVUkwmIHVybCkKK3sK
KyAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJs
Lmhvc3QoKSk7CisKKyAgICAvLyBBdCBsZWFzdCBmaW5hbmNlLnlhaG9vLmNvbSBkaXNwbGF5cyBh
IG1vYmlsZSB2ZXJzaW9uIHdpdGggV2ViS2l0R1RLKydzIHN0YW5kYXJkIHVzZXIgYWdlbnQuCisg
ICAgaWYgKGJhc2VEb21haW4gPT0gInlhaG9vLmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gdGFvYmFvLmNvbSBkaXNwbGF5cyBhIG1vYmlsZSB2ZXJzaW9uIHdpdGggV2ViS2l0
R1RLKydzIHN0YW5kYXJkIHVzZXIgYWdlbnQuCisgICAgaWYgKGJhc2VEb21haW4gPT0gInRhb2Jh
by5jb20iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIHdlYi53aGF0c2FwcC5jb20g
Y29tcGxldGVseSBibG9ja3MgdXNlcnMgd2l0aCBXZWJLaXRHVEsrJ3Mgc3RhbmRhcmQgdXNlciBh
Z2VudC4KKyAgICBpZiAoYmFzZURvbWFpbiA9PSAid2hhdHNhcHAuY29tIikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1VzZXJBZ2VudFF1aXJrcyBVc2Vy
QWdlbnRRdWlya3M6OnF1aXJrc0ZvclVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQo
IXVybC5pc051bGwoKSk7CisgICAgVXNlckFnZW50UXVpcmtzIHF1aXJrczsKKyAgICBpZiAodXJs
UmVxdWlyZXNDaHJvbWVCcm93c2VyKHVybCkpCisgICAgICAgIHF1aXJrcy5hZGQoVXNlckFnZW50
UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIpOworICAgIGlmICh1cmxSZXF1aXJlc01hY2ludG9z
aFBsYXRmb3JtKHVybCkpCisgICAgICAgIHF1aXJrcy5hZGQoVXNlckFnZW50UXVpcmtzOjpOZWVk
c01hY2ludG9zaFBsYXRmb3JtKTsKKyAgICByZXR1cm4gcXVpcmtzOworfQorCitTdHJpbmcgVXNl
ckFnZW50UXVpcmtzOjpzdHJpbmdGb3JRdWlyayhVc2VyQWdlbnRRdWlyayBxdWlyaykKK3sKKyAg
ICBzd2l0Y2ggKHF1aXJrKSB7CisgICAgY2FzZSBOZWVkc0Nocm9tZUJyb3dzZXI6CisgICAgICAg
IC8vIEdldCB2ZXJzaW9ucyBmcm9tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
aHJvbWl1bS9zcmMuZ2l0CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNocm9tZS81Ni4w
LjI4OTEuNCIpOworICAgIGNhc2UgTmVlZHNNYWNpbnRvc2hQbGF0Zm9ybToKKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xMiIpOworICAg
IGNhc2UgTnVtVXNlckFnZW50UXVpcmtzOgorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIiKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
N2RjOWExYjA5MDk3MmNlOGMyNjczZWE4NWRhNGM1ZTUzOGZhNjE1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVVJMOworCitjbGFzcyBVc2Vy
QWdlbnRRdWlya3MgeworcHVibGljOgorICAgIGVudW0gVXNlckFnZW50UXVpcmsgeworICAgICAg
ICBOZWVkc0Nocm9tZUJyb3dzZXIsCisgICAgICAgIE5lZWRzTWFjaW50b3NoUGxhdGZvcm0sCisK
KyAgICAgICAgTnVtVXNlckFnZW50UXVpcmtzCisgICAgfTsKKworICAgIFVzZXJBZ2VudFF1aXJr
cygpCisgICAgICAgIDogbV9xdWlya3MoMCkKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZihtX3F1aXJrcykgKiA4ID49IE51bVVzZXJBZ2VudFF1aXJrcywgbm90X2Vub3VnaF9y
b29tX2Zvcl9xdWlya3MpOworICAgIH0KKworICAgIHZvaWQgYWRkKFVzZXJBZ2VudFF1aXJrIHF1
aXJrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHF1aXJrID49IDApOworICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihxdWlyayA8IE51bVVzZXJBZ2VudFF1aXJrcyk7CisK
KyAgICAgICAgbV9xdWlya3MgfD0gKDEgPDwgcXVpcmspOworICAgIH0KKworICAgIGJvb2wgY29u
dGFpbnMoVXNlckFnZW50UXVpcmsgcXVpcmspIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9xdWlya3MgJiAoMSA8PCBxdWlyayk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIW1fcXVpcmtzOyB9CisKKyAgICBzdGF0aWMgVXNlckFnZW50UXVpcmtzIHF1
aXJrc0ZvclVSTChjb25zdCBVUkwmKTsKKworICAgIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yUXVp
cmsoVXNlckFnZW50UXVpcmspOworCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1fcXVpcmtzOwor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1N0YW5kYXJk
VXNlckFnZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TdGFuZGFyZFVz
ZXJBZ2VudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4M2Q1YWQyYmE1YWMxMjEyYjM5MDgyZGVmMDcx
YjQyZDM0ZTMyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9TdGFuZGFyZFVzZXJBZ2VudEVmbC5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBOYXZlciBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU3RhbmRhcmRVc2VyQWdlbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCisjaWYgT1MoVU5JWCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGNoYXIqIHBsYXRmb3JtRm9y
VUFTdHJpbmcoKQoreworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICByZXR1cm4gIlgxMSI7CisjZWxz
ZQorICAgIHJldHVybiAiVW5rbm93biI7CisjZW5kaWYKK30KKworc3RhdGljIFN0cmluZyBwbGF0
Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygpCit7CisgICAgU3RyaW5nIHZlcnNpb247CisgICAgc3Ry
dWN0IHV0c25hbWUgbmFtZTsKKyAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0xKQorICAgICAgICB2
ZXJzaW9uID0gbWFrZVN0cmluZyhuYW1lLnN5c25hbWUsICcgJywgbmFtZS5tYWNoaW5lKTsKKyAg
ICBlbHNlCisgICAgICAgIHZlcnNpb24gPSBBU0NJSUxpdGVyYWwoIlVua25vd24iKTsKKyAgICBy
ZXR1cm4gdmVyc2lvbjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIHZlcnNpb25Gb3JVQVN0cmlu
ZygpCit7CisgICAgcmV0dXJuIFVTRVJfQUdFTlRfRUZMX01BSk9SX1ZFUlNJT04gIi4iIFVTRVJf
QUdFTlRfRUZMX01JTk9SX1ZFUlNJT047Cit9CisKK1N0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblZl
cnNpb24pCit7CisgICAgY29uc3QgU3RyaW5nJiB2ZXJzaW9uID0gQVNDSUlMaXRlcmFsKHZlcnNp
b25Gb3JVQVN0cmluZygpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdGFu
ZGFyZFVzZXJBZ2VudFN0cmluZyA9IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBwbGF0Zm9y
bUZvclVBU3RyaW5nKCksICI7ICIsIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCksCisgICAg
ICAgICIpIEFwcGxlV2ViS2l0LyIsIHZlcnNpb24sICIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJz
aW9uLzguMCBTYWZhcmkvNjAxLjIuNyIpOworCisgICAgaWYgKGFwcGxpY2F0aW9uTmFtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFN0cmluZzsKKworICAgIFN0
cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKKyAgICBp
ZiAoZmluYWxBcHBsaWNhdGlvblZlcnNpb24uaXNFbXB0eSgpKQorICAgICAgICBmaW5hbEFwcGxp
Y2F0aW9uVmVyc2lvbiA9IEFTQ0lJTGl0ZXJhbCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7CisKKyAg
ICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRTdHJpbmcgKyAnICcgKyBhcHBsaWNhdGlvbk5hbWUg
KyAnLycgKyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbjsKK30KKworU3RyaW5nIHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpCit7CisgICAgLy8gRGlzYWJsZSB1c2VyIGFnZW50IHF1
aXJrcyBmb3Igbm93LgorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVXNlckFn
ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2RmNGVkOWUyNjc0MDQ0MWRjY2ZkMjc1
MGI4NDJkY2MxMmNkODJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBOYXZl
ciBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVXNlckFnZW50
RWZsLmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIE9TKFVOSVgp
Ci0jaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBwbGF0Zm9ybUZvclVBU3RyaW5nKCkKLXsKLSNpZiBQTEFU
Rk9STShYMTEpCi0gICAgcmV0dXJuICJYMTEiOwotI2Vsc2UKLSAgICByZXR1cm4gIlVua25vd24i
OwotI2VuZGlmCi19Ci0KLXN0YXRpYyBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQotewotICAgIFN0cmluZyB2ZXJzaW9uOwotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0gICAg
aWYgKHVuYW1lKCZuYW1lKSAhPSAtMSkKLSAgICAgICAgdmVyc2lvbiA9IG1ha2VTdHJpbmcobmFt
ZS5zeXNuYW1lLCAnICcsIG5hbWUubWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAgICB2ZXJzaW9u
ID0gQVNDSUlMaXRlcmFsKCJVbmtub3duIik7Ci0gICAgcmV0dXJuIHZlcnNpb247Ci19Ci0KLXN0
YXRpYyBjb25zdCBjaGFyKiB2ZXJzaW9uRm9yVUFTdHJpbmcoKQotewotICAgIHJldHVybiBVU0VS
X0FHRU5UX0VGTF9NQUpPUl9WRVJTSU9OICIuIiBVU0VSX0FHRU5UX0VGTF9NSU5PUl9WRVJTSU9O
OwotfQotCi1TdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlv
bk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25WZXJzaW9uKQotewotICAgIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiA9IEFTQ0lJTGl0ZXJhbCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RhbmRhcmRVc2VyQWdlbnRTdHJpbmcgPSBt
YWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgcGxhdGZvcm1Gb3JVQVN0cmluZygpLCAiOyAiLCBw
bGF0Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygpLAotICAgICAgICAiKSBBcHBsZVdlYktpdC8iLCB2
ZXJzaW9uLCAiIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi84LjAgU2FmYXJpLzYwMS4yLjci
KTsKLQotICAgIGlmIChhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
c3RhbmRhcmRVc2VyQWdlbnRTdHJpbmc7Ci0KLSAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZl
cnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247Ci0gICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJz
aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBBU0NJSUxp
dGVyYWwodmVyc2lvbkZvclVBU3RyaW5nKCkpOwotCi0gICAgcmV0dXJuIHN0YW5kYXJkVXNlckFn
ZW50U3RyaW5nICsgJyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlv
blZlcnNpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJBZ2VudEVmbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1VzZXJBZ2VudEVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4ZGRhMGIzMTIyMzg0OTE2YTM4ZjRjZWIwYjZlODJlMGQ1ZDEwZDRkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9Vc2VyQWdlbnRFZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVc2VyQWdl
bnRFZmxfaAotI2RlZmluZSBVc2VyQWdlbnRFZmxfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RyaW5nIHN0YW5kYXJkVXNlckFn
ZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lID0gZW1wdHlTdHJpbmcoKSwgY29uc3Qg
U3RyaW5nJiBhcHBsaWNhdGlvblZlcnNpb24gPSBlbXB0eVN0cmluZygpKTsKLQotfQotCi0jZW5k
aWYgLy8gVXNlckFnZW50RWZsX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1N0YW5kYXJkVXNlckFnZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TdGFuZGFyZFVzZXJBZ2VudEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBkZmQ3ZWZiYjI2YThm
MmE2Nzc0YjIwNmY2YzQxZjRjMWM1MTA4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TdGFuZGFyZFVzZXJBZ2VudEd0ay5jcHAKQEAgLTAsMCArMSwxNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlN0YW5kYXJkVXNlckFnZW50LmgiCisKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlICJVc2VyQWdlbnRRdWlya3MuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKKyNpZiBPUyhVTklYKQorI2lu
Y2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKKworLy8gV0FSTklORyEgV0FSTklORyEgV0FS
TklORyEKKy8vCisvLyBUaGUgdXNlciBhZ2VudCBpcyBsdWRpY3JvdXNseSBmcmFnaWxlLiBUaGUg
bW9zdCBpbm5vY2VudCBjaGFuZ2UgY2FuCisvLyBhbmQgd2lsbCBicmVhayB3ZWJzaXRlcy4gUmVh
ZCB0aGUgZ2l0IGxvZyBmb3IgdGhpcyBmaWxlIGNhcmVmdWxseQorLy8gYmVmb3JlIGNoYW5naW5n
IHVzZXIgYWdlbnQgY29uc3RydWN0aW9uLiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgY2hhciogcGxhdGZvcm1Gb3JVQVN0cmluZygp
Cit7CisjaWYgT1MoTUFDX09TX1gpCisgICAgcmV0dXJuICJNYWNpbnRvc2giOworI2Vsc2UKKyAg
ICByZXR1cm4gIlgxMSI7CisjZW5kaWYKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9y
bVZlcnNpb25Gb3JVQVN0cmluZygpCit7CisjaWYgT1MoVU5JWCkKKyAgICBzdHJ1Y3QgdXRzbmFt
ZSBuYW1lOworICAgIHVuYW1lKCZuYW1lKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiB1YU9TVmVyc2lvbihTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25h
bWUsIG5hbWUubWFjaGluZSkpOworICAgIHJldHVybiB1YU9TVmVyc2lvbjsKKyNlbHNlCisgICAg
Ly8gV2Ugd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgU2FmYXJpIGluIEludGVsIE1hYyBPUyBYLCBz
aW5jZSBTYWZhcmkgd2l0aG91dAorICAgIC8vIE9TIFggb3IgYW55dGhpbmcgb24gQVJNIHRyaWdn
ZXJzIG1vYmlsZSB2ZXJzaW9ucyBvZiBzb21lIHdlYnNpdGVzLgorICAgIC8vCisgICAgLy8gRklY
TUU6IFRoZSBmaW5hbCByZXN1bHQgc2hvdWxkIGluY2x1ZGUgT1MgdmVyc2lvbiwgZS5nLiAiSW50
ZWwgTWFjIE9TIFggMTBfOF80Ii4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiB1YU9TVmVyc2lvbihBU0NJSUxpdGVyYWwoIkludGVsIE1hYyBPUyBYIikpOworICAgIHJl
dHVybiB1YU9TVmVyc2lvbjsKKyNlbmRpZgorfQorCitzdGF0aWMgY29uc3QgY2hhciogdmVyc2lv
bkZvclVBU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gVVNFUl9BR0VOVF9HVEtfTUFKT1JfVkVSU0lP
TiAiLiIgVVNFUl9BR0VOVF9HVEtfTUlOT1JfVkVSU0lPTjsKK30KKworc3RhdGljIFN0cmluZyBi
dWlsZFVzZXJBZ2VudFN0cmluZyhjb25zdCBVc2VyQWdlbnRRdWlya3MmIHF1aXJrcykKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIHVhU3RyaW5nOworICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIk1v
emlsbGEvNS4wICIpOworICAgIHVhU3RyaW5nLmFwcGVuZCgnKCcpOworCisgICAgaWYgKHF1aXJr
cy5jb250YWlucyhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pKQorICAg
ICAgICB1YVN0cmluZy5hcHBlbmQoVXNlckFnZW50UXVpcmtzOjpzdHJpbmdGb3JRdWlyayhVc2Vy
QWdlbnRRdWlya3M6Ok5lZWRzTWFjaW50b3NoUGxhdGZvcm0pKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgdWFTdHJpbmcuYXBwZW5kKHBsYXRmb3JtRm9yVUFTdHJpbmcoKSk7CisgICAgICAgIHVhU3Ry
aW5nLmFwcGVuZExpdGVyYWwoIjsgIik7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChwbGF0Zm9y
bVZlcnNpb25Gb3JVQVN0cmluZygpKTsKKyAgICB9CisKKyAgICB1YVN0cmluZy5hcHBlbmRMaXRl
cmFsKCIpIEFwcGxlV2ViS2l0LyIpOworICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9yVUFT
dHJpbmcoKSk7CisgICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiIChLSFRNTCwgbGlrZSBHZWNr
bykgIik7CisKKyAgICAvLyBOb3RlIHRoYXQgQ2hyb21lIFVBcyBhZHZlcnRpc2UgKmJvdGgqIENo
cm9tZSBhbmQgU2FmYXJpLgorICAgIGlmIChxdWlya3MuY29udGFpbnMoVXNlckFnZW50UXVpcmtz
OjpOZWVkc0Nocm9tZUJyb3dzZXIpKSB7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChVc2VyQWdl
bnRRdWlya3M6OnN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVCcm93
c2VyKSk7CisgICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIiAiKTsKKyAgICB9CisKKyAg
ICAvLyBWZXJzaW9uL1ggaXMgbWFuZGF0b3J5ICpiZWZvcmUqIFNhZmFyaS9YIHRvIGJlIGEgdmFs
aWQgU2FmYXJpIFVBLiBTZWUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMzNDAzIGZvciBkZXRhaWxzLgorICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwo
IiBWZXJzaW9uLzEwLjAgU2FmYXJpLyIpOworICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9y
VUFTdHJpbmcoKSk7CisKKyAgICByZXR1cm4gdWFTdHJpbmcudG9TdHJpbmcoKTsKK30KKworc3Rh
dGljIGNvbnN0IFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdWFTdGF0aWMoYnVpbGRVc2VyQWdlbnRTdHJp
bmcoVXNlckFnZW50UXVpcmtzKCkpKTsKKyAgICByZXR1cm4gdWFTdGF0aWM7Cit9CisKK1N0cmlu
ZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3Qg
U3RyaW5nJiBhcHBsaWNhdGlvblZlcnNpb24pCit7CisgICAgLy8gQ3JlYXRlIGEgZGVmYXVsdCB1
c2VyIGFnZW50IHN0cmluZyB3aXRoIGEgbGliZXJhbCBpbnRlcnByZXRhdGlvbiBvZgorICAgIC8v
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVXNlcl9BZ2VudF9TdHJp
bmdzX1JlZmVyZW5jZQorICAgIC8vCisgICAgLy8gRm9ybWluZyBhIGZ1bmN0aW9uYWwgdXNlciBh
Z2VudCBpcyByZWFsbHkgZGlmZmljdWx0LiBXZSBtdXN0IG1lbnRpb24gU2FmYXJpLCBiZWNhdXNl
IHNvbWUKKyAgICAvLyBzaXRlcyBjaGVjayBmb3IgdGhhdCB3aGVuIGRldGVjdGluZyBXZWJLaXQg
YnJvd3NlcnMuIEFkZGl0aW9uYWxseSBzb21lIHNpdGVzIGFzc3VtZSB0aGF0CisgICAgLy8gYnJv
d3NlcnMgdGhhdCBhcmUgIlNhZmFyaSIgYnV0IG5vdCBydW5uaW5nIG9uIE9TIFggYXJlIHRoZSBT
YWZhcmkgaU9TIGJyb3dzZXIuIEdldHRpbmcgdGhpcworICAgIC8vIHdyb25nIGNhbiBjYXVzZSBz
aXRlcyB0byBsb2FkIHRoZSB3cm9uZyBKYXZhU2NyaXB0LCBDU1MsIG9yIGN1c3RvbSBmb250cy4g
SW4gc29tZSBjYXNlcworICAgIC8vIHNpdGVzIHdvbid0IGxvYWQgcmVzb3VyY2VzIGF0IGFsbC4K
KyAgICBpZiAoYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0YW5k
YXJkVXNlckFnZW50U3RhdGljKCk7CisKKyAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNp
b24gPSBhcHBsaWNhdGlvblZlcnNpb247CisgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9u
LmlzRW1wdHkoKSkKKyAgICAgICAgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSB2ZXJzaW9uRm9y
VUFTdHJpbmcoKTsKKworICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAn
ICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247Cit9CisK
K1N0cmluZyBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBh
dXRvIHF1aXJrcyA9IFVzZXJBZ2VudFF1aXJrczo6cXVpcmtzRm9yVVJMKHVybCk7CisgICAgLy8g
VGhlIG51bGwgc3RyaW5nIG1lYW5zIHdlIGRvbid0IG5lZWQgYSBzcGVjaWZpYyBVQSBmb3IgdGhl
IGdpdmVuIFVSTC4KKyAgICByZXR1cm4gcXVpcmtzLmlzRW1wdHkoKSA/IFN0cmluZygpIDogYnVp
bGRVc2VyQWdlbnRTdHJpbmcocXVpcmtzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGQ0YWU2YmFhYTJlYWNmYmI1NmFiMTEwODI1OTAyMGFl
ZGJmNmU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVzZXJBZ2VudEd0ay5oIgotCi0jaW5jbHVkZSAiUHVi
bGljU3VmZml4LmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi0jaWYgT1MoVU5J
WCkKLSNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotI2VuZGlmCi0KLS8vIFdBUk5JTkchIFdBUk5J
TkchIFdBUk5JTkchCi0vLwotLy8gVGhlIHVzZXIgYWdlbnQgaXMgbHVkaWNyb3VzbHkgZnJhZ2ls
ZS4gVGhlIG1vc3QgaW5ub2NlbnQgY2hhbmdlIGNhbgotLy8gYW5kIHdpbGwgYnJlYWsgd2Vic2l0
ZXMuIFJlYWQgdGhlIGdpdCBsb2cgZm9yIHRoaXMgZmlsZSBjYXJlZnVsbHkKLS8vIGJlZm9yZSBj
aGFuZ2luZyB1c2VyIGFnZW50IGNvbnN0cnVjdGlvbi4gWW91IGhhdmUgYmVlbiB3YXJuZWQuCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKLXB1YmxpYzoK
LSAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKLSAgICAgICAgTmVlZHNDaHJvbWVCcm93c2VyLAot
ICAgICAgICBOZWVkc01hY2ludG9zaFBsYXRmb3JtLAotCi0gICAgICAgIE51bVVzZXJBZ2VudFF1
aXJrcwotICAgIH07Ci0KLSAgICBVc2VyQWdlbnRRdWlya3MoKQotICAgICAgICA6IG1fcXVpcmtz
KDApCi0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YobV9xdWlya3MpICogOCA+
PSBOdW1Vc2VyQWdlbnRRdWlya3MsIG5vdF9lbm91Z2hfcm9vbV9mb3JfcXVpcmtzKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGFkZChVc2VyQWdlbnRRdWlyayBxdWlyaykKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChxdWlyayA+PSAwKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04ocXVpcmsgPCBOdW1Vc2VyQWdlbnRRdWlya3MpOwotCi0gICAgICAgIG1fcXVpcmtzIHw9ICgx
IDw8IHF1aXJrKTsKLSAgICB9Ci0KLSAgICBib29sIGNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrIHF1
aXJrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcXVpcmtzICYgKDEgPDwgcXVpcmsp
OwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3F1aXJrczsg
fQotCi1wcml2YXRlOgotICAgIHVpbnQzMl90IG1fcXVpcmtzOwotfTsKLQotc3RhdGljIGNvbnN0
IGNoYXIqIHBsYXRmb3JtRm9yVUFTdHJpbmcoKQotewotI2lmIE9TKE1BQ19PU19YKQotICAgIHJl
dHVybiAiTWFjaW50b3NoIjsKLSNlbHNlCi0gICAgcmV0dXJuICJYMTEiOwotI2VuZGlmCi19Ci0K
LXN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQotewotI2lm
IE9TKFVOSVgpCi0gICAgc3RydWN0IHV0c25hbWUgbmFtZTsKLSAgICB1bmFtZSgmbmFtZSk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdWFPU1ZlcnNpb24oU3RyaW5n
Ojpmb3JtYXQoIiVzICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpKTsKLSAgICByZXR1
cm4gdWFPU1ZlcnNpb247Ci0jZWxzZQotICAgIC8vIFdlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJl
IFNhZmFyaSBpbiBJbnRlbCBNYWMgT1MgWCwgc2luY2UgU2FmYXJpIHdpdGhvdXQKLSAgICAvLyBP
UyBYIG9yIGFueXRoaW5nIG9uIEFSTSB0cmlnZ2VycyBtb2JpbGUgdmVyc2lvbnMgb2Ygc29tZSB3
ZWJzaXRlcy4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBUaGUgZmluYWwgcmVzdWx0IHNob3VsZCBp
bmNsdWRlIE9TIHZlcnNpb24sIGUuZy4gIkludGVsIE1hYyBPUyBYIDEwXzhfNCIuCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdWFPU1ZlcnNpb24oQVNDSUlMaXRlcmFs
KCJJbnRlbCBNYWMgT1MgWCIpKTsKLSAgICByZXR1cm4gdWFPU1ZlcnNpb247Ci0jZW5kaWYKLX0K
LQotc3RhdGljIGNvbnN0IGNoYXIqIHZlcnNpb25Gb3JVQVN0cmluZygpCi17Ci0gICAgcmV0dXJu
IFVTRVJfQUdFTlRfR1RLX01BSk9SX1ZFUlNJT04gIi4iIFVTRVJfQUdFTlRfR1RLX01JTk9SX1ZF
UlNJT047Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYnVpbGRVc2VyQWdlbnRTdHJpbmcoY29uc3QgVXNl
ckFnZW50UXVpcmtzJiBxdWlya3MpCi17Ci0gICAgU3RyaW5nQnVpbGRlciB1YVN0cmluZzsKLSAg
ICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJNb3ppbGxhLzUuMCAiKTsKLSAgICB1YVN0cmluZy5h
cHBlbmQoJygnKTsKLQotICAgIGlmIChxdWlya3MuY29udGFpbnMoVXNlckFnZW50UXVpcmtzOjpO
ZWVkc01hY2ludG9zaFBsYXRmb3JtKSkKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
TWFjaW50b3NoIik7Ci0gICAgZWxzZQotICAgICAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1G
b3JVQVN0cmluZygpKTsKLQotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIjsgIik7Ci0KLSAg
ICBpZiAocXVpcmtzLmNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0
Zm9ybSkpCi0gICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIkludGVsIE1hYyBPUyBYIDEw
XzEyIik7Ci0gICAgZWxzZQotICAgICAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1WZXJzaW9u
Rm9yVUFTdHJpbmcoKSk7Ci0KLSAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCIpIEFwcGxlV2Vi
S2l0LyIpOwotICAgIHVhU3RyaW5nLmFwcGVuZCh2ZXJzaW9uRm9yVUFTdHJpbmcoKSk7Ci0gICAg
dWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiIChLSFRNTCwgbGlrZSBHZWNrbykgIik7Ci0KLSAgICAv
LyBOb3RlIHRoYXQgQ2hyb21lIFVBcyBhZHZlcnRpc2UgKmJvdGgqIENocm9tZSBhbmQgU2FmYXJp
LgotICAgIC8vIFdlIHNldCBhIG1lYW5pbmdmdWwgdmFsdWUgb25seSBmb3IgdGhlIGZpcnN0IHR3
byBkaWdpdHMgaGVyZS4KLSAgICBpZiAocXVpcmtzLmNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrczo6
TmVlZHNDaHJvbWVCcm93c2VyKSkKLSAgICAgICAgdWFTdHJpbmcuYXBwZW5kKCJDaHJvbWUvNTQu
MC4yNzA0LjEwNiAiKTsKLQotICAgIC8vIFZlcnNpb24vWCBpcyBtYW5kYXRvcnkgKmJlZm9yZSog
U2FmYXJpL1ggdG8gYmUgYSB2YWxpZCBTYWZhcmkgVUEuIFNlZQotICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0MDMgZm9yIGRldGFpbHMuCi0gICAgdWFT
dHJpbmcuYXBwZW5kTGl0ZXJhbCgiIFZlcnNpb24vMTAuMCBTYWZhcmkvIik7Ci0gICAgdWFTdHJp
bmcuYXBwZW5kKHZlcnNpb25Gb3JVQVN0cmluZygpKTsKLQotICAgIHJldHVybiB1YVN0cmluZy50
b1N0cmluZygpOwotfQotCi1zdGF0aWMgY29uc3QgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50U3Rh
dGljKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB1YVN0YXRp
YyhidWlsZFVzZXJBZ2VudFN0cmluZyhVc2VyQWdlbnRRdWlya3MoKSkpOwotICAgIHJldHVybiB1
YVN0YXRpYzsKLX0KLQotU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbikKLXsKLSAgICAv
LyBDcmVhdGUgYSBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nIHdpdGggYSBsaWJlcmFsIGludGVy
cHJldGF0aW9uIG9mCi0gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9Vc2VyX0FnZW50X1N0cmluZ3NfUmVmZXJlbmNlCi0gICAgLy8KLSAgICAvLyBGb3JtaW5n
IGEgZnVuY3Rpb25hbCB1c2VyIGFnZW50IGlzIHJlYWxseSBkaWZmaWN1bHQuIFdlIG11c3QgbWVu
dGlvbiBTYWZhcmksIGJlY2F1c2Ugc29tZQotICAgIC8vIHNpdGVzIGNoZWNrIGZvciB0aGF0IHdo
ZW4gZGV0ZWN0aW5nIFdlYktpdCBicm93c2Vycy4gQWRkaXRpb25hbGx5IHNvbWUgc2l0ZXMgYXNz
dW1lIHRoYXQKLSAgICAvLyBicm93c2VycyB0aGF0IGFyZSAiU2FmYXJpIiBidXQgbm90IHJ1bm5p
bmcgb24gT1MgWCBhcmUgdGhlIFNhZmFyaSBpT1MgYnJvd3Nlci4gR2V0dGluZyB0aGlzCi0gICAg
Ly8gd3JvbmcgY2FuIGNhdXNlIHNpdGVzIHRvIGxvYWQgdGhlIHdyb25nIEphdmFTY3JpcHQsIENT
Uywgb3IgY3VzdG9tIGZvbnRzLiBJbiBzb21lIGNhc2VzCi0gICAgLy8gc2l0ZXMgd29uJ3QgbG9h
ZCByZXNvdXJjZXMgYXQgYWxsLgotICAgIGlmIChhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKTsKLQotICAgIFN0cmluZyBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKLSAgICBpZiAoZmlu
YWxBcHBsaWNhdGlvblZlcnNpb24uaXNFbXB0eSgpKQotICAgICAgICBmaW5hbEFwcGxpY2F0aW9u
VmVyc2lvbiA9IHZlcnNpb25Gb3JVQVN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0YW5kYXJkVXNl
ckFnZW50U3RhdGljKCkgKyAnICcgKyBhcHBsaWNhdGlvbk5hbWUgKyAnLycgKyBmaW5hbEFwcGxp
Y2F0aW9uVmVyc2lvbjsKLX0KLQotLy8gQmUgY2FyZWZ1bCB3aXRoIHRoaXMgcXVpcms6IGl0J3Mg
YW4gaW52aXRhdGlvbiBmb3Igc2l0ZXMgdG8gdXNlIEphdmFTY3JpcHQgd2UgY2FuJ3QgaGFuZGxl
Lgotc3RhdGljIGJvb2wgdXJsUmVxdWlyZXNDaHJvbWVCcm93c2VyKGNvbnN0IFVSTCYgdXJsKQot
ewotICAgIFN0cmluZyBiYXNlRG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1
cmwuaG9zdCgpKTsKLQotICAgIC8vIE5lZWRlZCBmb3IgZm9udHMgb24gbWFueSBzaXRlcywgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI5NgotICAgIGlmIChiYXNl
RG9tYWluID09ICJ0eXBla2l0Lm5ldCIgfHwgYmFzZURvbWFpbiA9PSAidHlwZWtpdC5jb20iKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFNodXQgb2ZmIENocm9tZSBhZHMuIEF2b2lk
IG1pc3NpbmcgZmVhdHVyZXMgb24gbWFwcy5nb29nbGUuY29tLgotICAgIGlmIChiYXNlRG9tYWlu
LnN0YXJ0c1dpdGgoImdvb2dsZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIE5l
ZWRlZCBmb3IgWW91VHViZSAzNjAgKHJlcXVpcmVzIEVOQUJMRV9NRURJQV9TT1VSQ0UpLgotICAg
IGlmIChiYXNlRG9tYWluID09ICJ5b3V0dWJlLmNvbSIpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gU2xhY2sgY29tcGxldGVseSBibG9ja3MgdXNlcnMgd2l0aCBvdXIgc3RhbmRhcmQg
dXNlciBhZ2VudC4KLSAgICBpZiAoYmFzZURvbWFpbiA9PSAic2xhY2suY29tIikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIHVybFJl
cXVpcmVzTWFjaW50b3NoUGxhdGZvcm0oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgU3RyaW5nIGJh
c2VEb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHVybC5ob3N0KCkpOwotCi0g
ICAgLy8gQXQgbGVhc3QgZmluYW5jZS55YWhvby5jb20gZGlzcGxheXMgYSBtb2JpbGUgdmVyc2lv
biB3aXRoIG91ciBzdGFuZGFyZCB1c2VyIGFnZW50LgotICAgIGlmIChiYXNlRG9tYWluID09ICJ5
YWhvby5jb20iKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIHRhb2Jhby5jb20gZGlz
cGxheXMgYSBtb2JpbGUgdmVyc2lvbiB3aXRoIG91ciBzdGFuZGFyZCB1c2VyIGFnZW50LgotICAg
IGlmIChiYXNlRG9tYWluID09ICJ0YW9iYW8uY29tIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAvLyB3ZWIud2hhdHNhcHAuY29tIGNvbXBsZXRlbHkgYmxvY2tzIHVzZXJzIHdpdGggb3Vy
IHN0YW5kYXJkIHVzZXIgYWdlbnQuCi0gICAgaWYgKGJhc2VEb21haW4gPT0gIndoYXRzYXBwLmNv
bSIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJp
bmcgc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgQVNTRVJU
KCF1cmwuaXNOdWxsKCkpOwotICAgIFVzZXJBZ2VudFF1aXJrcyBxdWlya3M7Ci0gICAgaWYgKHVy
bFJlcXVpcmVzQ2hyb21lQnJvd3Nlcih1cmwpKQotICAgICAgICBxdWlya3MuYWRkKFVzZXJBZ2Vu
dFF1aXJrczo6TmVlZHNDaHJvbWVCcm93c2VyKTsKLSAgICBpZiAodXJsUmVxdWlyZXNNYWNpbnRv
c2hQbGF0Zm9ybSh1cmwpKQotICAgICAgICBxdWlya3MuYWRkKFVzZXJBZ2VudFF1aXJrczo6TmVl
ZHNNYWNpbnRvc2hQbGF0Zm9ybSk7Ci0KLSAgICAvLyBUaGUgbnVsbCBzdHJpbmcgbWVhbnMgd2Ug
ZG9uJ3QgbmVlZCBhIHNwZWNpZmljIFVBIGZvciB0aGUgZ2l2ZW4gVVJMLgotICAgIHJldHVybiBx
dWlya3MuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBidWlsZFVzZXJBZ2VudFN0cmluZyhxdWlya3Mp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Vc2VyQWdlbnRHdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhY2Ey
OWYyOTEzZmYzMWZkMTI0MTE0MzE2OTk4MDU2NGYxZWU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNl
ckFnZW50R3RrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVXNlckFnZW50R3RrX2gKLSNkZWZpbmUgVXNlckFn
ZW50R3RrX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci0KLVN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZSA9IGVtcHR5U3RyaW5nKCksIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25WZXJzaW9uID0gZW1wdHlTdHJpbmcoKSk7Ci1TdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnRGb3JVUkwoY29uc3QgVVJMJik7Ci0KLX0KLQotI2VuZGlmIC8vIFVzZXJBZ2VudEd0a19oCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdz
LmNwcAppbmRleCA0YmE0YWM2NDhmN2Y3ODRiYmQwYzhiMjA3MDdkOTU3MmUzMzliMTc0Li4xZWQ3
MDExYTJiN2IzMDVjNjZhODgwYTU3OGMxYzZjYmQ4NTIxMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJBZ2VudEd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RhbmRhcmRVc2VyQWdlbnQu
aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwCmluZGV4IGVhZjlmNTNkZTlhNDRiOWE5NDU3M2IyMzUwNGI1ZDA1ZmIwNjdkMTAuLmRi
YTBmNjc2ZWQ5ZWNjZDUzZDYxYTUzMjFkNDFmNDM2YTY0YzU4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlckFnZW50RWZs
LmgiCisjaW5jbHVkZSAiU3RhbmRhcmRVc2VyQWdlbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAKaW5kZXggZjVhODRiYmFkMGZjOThkMWMyMmQyMDliYzhmYjFlOTBkYmQxMTNiMi4uMjFhYzE4
NzBhZjllZjVlZTZmZjhhNDI0M2JjZDQwMGE0OWE3OTk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJBZ2VudEd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RhbmRhcmRVc2VyQWdlbnQuaD4KICNp
bmNsdWRlIDxndGsvZ3RreC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3Rr
LmNwcAppbmRleCA0YTZlYWQ2YzlhYzk5OTU3ZTExYWM1Y2E4N2E4MDY2MTA3OTUwNDc3Li42MDk5
NzBkN2RjMzEyYWM1NzBiNDdkNjRlNzg4ZTRhYTU1Y2UyYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRIZWxwZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU3RhbmRhcmRVc2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc0ODBlNjE0ZjU2MzY1MzgwNjU5OGQ2YjJiOGU0
ZDYwMzkwZWM4YjEuLjUwMzhjMWFhZTg5MmQxMTEzZTFiMjQ4NTg2YjdlMGZkZWRjYzRiZmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxNi0xMC0xNiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxp
YS5jb20+CisKKyAgICAgICAgTW92ZSB1c2VyIGFnZW50IHF1aXJrcyB0byBjcm9zcy1wbGF0Zm9y
bSBsb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYzNTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSB0aGUgdGVzdCB0byBhIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uIGFuZCBpbXByb3Zl
IGl0IHRvIGJldHRlciBjaGVjayB0aGUgZnVsbCBsaXN0IG9mCisgICAgICAgIHNpdGVzIHdlIGhh
dmUgZGVmaW5lZCBxdWlya3MgZm9yLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFn
ZW50UXVpcmtzLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9ndGsvVXNlckFnZW50UXVpcmtzLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFz
c2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjphc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE2LTEwLTE2ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
R1RLKyB1bml0IHRlc3QgL3dlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC9sYW5ndWFnZXMgYWZ0ZXIg
cjIwNjk0OS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDY3OTYyMmZi
ZjYwYWUyOWFmZGM2ZWVlZmMyNDYxZjc0OTEwNTYwNjcuLjkxYTJjOWU3YmQzMTM4Y2E1MDc4Y2Y1
YTg0YzY3MTAwOWYzNWEzODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpA
QCAtMTI1LDIxICsxMjUsMTcgQEAgYWRkX3Rlc3QoVGVzdFdlYktpdDIgJHtURVNUV0VCS0lUQVBJ
X1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0Mi9UZXN0V2ViS2kKIHNldF90ZXN0c19w
cm9wZXJ0aWVzKFRlc3RXZWJLaXQyIFBST1BFUlRJRVMgVElNRU9VVCA2MCkKIHNldF90YXJnZXRf
cHJvcGVydGllcyhUZXN0V2ViS2l0MiBQUk9QRVJUSUVTIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9S
WSAke1RFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9XZWJLaXQyKQogCi1z
ZXQoVGVzdFdlYkNvcmVHdGtfU09VUkNFUwotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAKLSkKLQogYWRkX2V4ZWN1dGFibGUoVGVz
dFdlYkNvcmUKICAgICAke3Rlc3RfbWFpbl9TT1VSQ0VTfQotICAgICR7VGVzdFdlYkNvcmVHdGtf
U09VUkNFU30KICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCisg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCisg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9QdWJsaWNTdWZmaXguY3BwCisg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9VUkwuY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCi0gICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCi0gICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAotICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvUHVibGljU3VmZml4LmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAogKQogCiB0YXJnZXRf
bGlua19saWJyYXJpZXMoVGVzdFdlYkNvcmUgJHt0ZXN0X3dlYmNvcmVfTElCUkFSSUVTfSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWly
a3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJr
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzk3ZjU3ODYwYjZkYTdmZDBmZGY2YjZmNjk0YTM5NjcyYTBiNDE4
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9V
c2VyQWdlbnRRdWlya3MuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSA8V2ViQ29yZS9TdGFuZGFyZFVzZXJBZ2VudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK3N0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJR
dWlyayhjb25zdCBjaGFyKiB1cmwpCit7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRV
c2VyQWdlbnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CisKKyNpZiAhT1MoTUFD
X09TX1gpCisgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKKyNlbmRp
ZgorI2lmIE9TKExJTlVYKQorICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51
eCIpKTsKKyNlbmRpZgorI2lmIE9TKFdJTkRPV1MpCisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
Y29udGFpbnMoIldpbmRvd3MiKSk7CisjZW5kaWYKKworICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5n
LmNvbnRhaW5zKCJDaHJvbWUiKSk7CisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
IlNhZmFyaSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIkNocm9taXVt
IikpOworfQorCitzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9y
bVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKK3sKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKworICAgIEVYUEVD
VF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CisgICAgRVhQRUNUX1RSVUUo
dWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOworICAgIEVYUEVDVF9GQUxTRSh1YVN0cmlu
Zy5jb250YWlucygiTGludXgiKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5z
KCJXaW5kb3dzIikpOworICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21l
IikpOworfQorCitURVNUKFVzZXJBZ2VudFRlc3QsIFF1aXJrcykKK3sKKyAgICAvLyBBIHNpdGUg
d2l0aCBub3QgcXVpcmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KKyAgICBTdHJpbmcg
dWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cDovL3d3dy53ZWJraXQub3JnLyIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051
bGwoKSk7CisKKyAgICAvLyBHb29nbGUgcXVpcmsgc2hvdWxkIG5vdCBhZmZlY3Qgc2l0ZXMgd2l0
aCBzaW1pbGFyIGRvbWFpbnMuCisgICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVS
TChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3d3dy5nb29nbGVibG9nLmNvbS8iKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CisKKyAgICBhc3Nl
cnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0LmNv
bS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0
dHA6Ly90eXBla2l0Lm5ldC8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVC
cm93c2VyUXVpcmsoImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdl
bnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly93d3cuZ29vZ2xlLmVzLyIpOwor
ICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL2Nh
bGVuZGFyLmdvb2dsZS5jb20vIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21l
QnJvd3NlclF1aXJrKCJodHRwOi8vbWFwcy5nb29nbGUuY29tLyIpOworICAgIGFzc2VydFVzZXJB
Z2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3BsdXMuZ29vZ2xlLmNvbS8i
KTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6
Ly93d3cueW91dHViZS5jb20vIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21l
QnJvd3NlclF1aXJrKCJodHRwOi8vd3d3LnNsYWNrLmNvbS8iKTsKKworICAgIGFzc2VydFVzZXJB
Z2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly93d3cueWFob28uY29tLyIpOwor
ICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly9maW5h
bmNlLnlhaG9vLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9y
bVF1aXJrKCJodHRwOi8vaW50bC50YW9iYW8uY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZv
clVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly93d3cud2hhdHNhcHAuY29tLyIpOworICAg
IGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly93ZWIud2hh
dHNhcHAuY29tLyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJr
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1
aXJrcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmY2U0MTYxOGUzMTkzOTI5
NTY5MmMxYTEwMDJlZGMzOGIxMGE4NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2d0ay9Vc2Vy
QWdlbnRRdWlya3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFn
ZW50R3RrLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7Ci0KLVRFU1QoV2ViQ29yZSwgVXNlckFnZW50UXVpcmtzVGVzdCkKLXsKLSAgICAv
LyBBIHNpdGUgd2l0aCBub3QgcXVpcmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KLSAg
ICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJM
U3RyaW5nLCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0
cmluZy5pc051bGwoKSk7Ci0KLSAgICAvLyB3ZWIud2hhdHNhcHAuY29tIHJlcXVpcmVzIE1BQyBP
UyBwbGF0Zm9ybSBpbiB0aGUgVUEuCi0gICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZv
clVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3dlYi53aGF0c2FwcC5jb20vIikpOwot
ICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQ
RUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwotICAgIEVYUEVDVF9GQUxT
RSh1YVN0cmluZy5jb250YWlucygiTGludXgiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5n
LmNvbnRhaW5zKCJDaHJvbWUiKSk7Ci0KLSAgICAvLyBnb29nbGUgZG9tYWlucyByZXF1aXJlIENo
cm9tZSBpbiB0aGUgVUEKLSAgICB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vd3d3Lmdvb2dsZS5lcy8iKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmlu
Zy5jb250YWlucygiTGludXgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
IkNocm9tZSIpKTsKLQotICAgIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vIikpOwotICAgIEVYUEVD
VF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFjaW50b3NoIikpOwotICAgIEVYUEVDVF9GQUxT
RSh1YVN0cmluZy5jb250YWlucygiTWFjIE9TIFgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJp
bmcuY29udGFpbnMoIkxpbnV4IikpOwotICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5z
KCJDaHJvbWUiKSk7Ci0KLSAgICAvLyBTbGFjayByZXF1aXJlcyBDaHJvbWUgaW4gdGhlIFVBCi0g
ICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL3d3dy5zbGFjay5jb20vIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5j
b250YWlucygiTWFjaW50b3NoIikpOwotICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlu
cygiTWFjIE9TIFgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkxpbnV4
IikpOwotICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="314892"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="314899"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291808</attachid>
            <date>2016-10-17 03:45:00 -0700</date>
            <delta_ts>2016-10-17 04:32:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163508-20161017054127.patch</filename>
            <type>text/plain</type>
            <size>34583</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU1N2ZiYzI3YjhhODk0
NGFjYjQ3OWQ0MTY5MmQzOTIxOWRhYzhjMC4uOGM0YWI4M2FjZTFmMzhlMDE4NjM4YmM0ZGM1MDc3
ZGY5MThhNmY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTEwLTE3ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHVz
ZXIgYWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBUZXN0ZWQgYnkgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2VyQWdlbnQuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwOiBBZGRlZC4gTW92ZWQgZnJv
bSBVc2VyQWdlbnRHdGsuY3BwLgorICAgICAgICAoV2ViQ29yZTo6dXJsUmVxdWlyZXNDaHJvbWVC
cm93c2VyKTogU25lYWtpbHkgdGlnaHRlbiB1cCBHb29nbGUgZG9tYWluIGRldGVjdGlvbiwgaXQg
c2hvdWxkCisgICAgICAgIG9ubHkgYXBwbHkgdG8gc2l0ZXMgaWYgdGhlIGJhc2UgZG9tYWluIG1h
dGNoZXMgZ29vZ2xlLiosIG5vdCBhbnkgYmFzZSBkb21haW4gdGhhdCBzdGFydHMKKyAgICAgICAg
d2l0aCBnb29nbGUuCisgICAgICAgIChXZWJDb3JlOjp1cmxSZXF1aXJlc01hY2ludG9zaFBsYXRm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJrczo6cXVpcmtzRm9yVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJrczo6c3RyaW5nRm9yUXVpcmspOgorICAg
ICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oOiBNb3ZlZCBmcm9tIFVzZXJBZ2VudEd0
ay5jcHAuIHByZXBhcmUtQ2hhbmdlTG9nIHRoaW5rcyBpdCB3YXMKKyAgICAgICAgcmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuaCwgYnV0IHByZXBh
cmUtQ2hhbmdlTG9nIGlzIGR1bWIuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6
OlVzZXJBZ2VudFF1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmNvbnRhaW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJBZ2VudFF1aXJrczo6aXNFbXB0eSk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1VzZXJBZ2VudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZFVzZXJB
Z2VudEZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZFVzZXJBZ2VudFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpzdGFuZGFyZFVzZXJBZ2VudEZvclVSTCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckFnZW50UXVpcmtzOjpVc2VyQWdlbnRRdWlya3MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckFnZW50UXVpcmtzOjphZGQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckFnZW50UXVpcmtzOjpjb250YWlucyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVc2VyQWdlbnRRdWlya3M6OmlzRW1wdHkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6dXJsUmVxdWlyZXNDaHJvbWVCcm93c2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnVybFJlcXVpcmVzTWFjaW50b3NoUGxhdGZvcm0pOiBEZWxldGVkLgorCiAyMDE2LTEw
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFdl
YktpdCBsb2NhbGl6YWJsZSBzdHJpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWQ5NGIzN2Y2MzBlYjgwYmUy
NGQ1MjUxNTAxMmMyYzQ1YTM0NWIxZS4uOTlhNzliNDU0NjdmMDA0MWVkZmE0NjA4M2JkNGQyYWQ3
ZWZkYTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTE3ICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHVzZXIg
YWdlbnQgcXVpcmtzIHRvIGNyb3NzLXBsYXRmb3JtIGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1MDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyQWdlbnQuaD4gaW5zdGVhZCBvZiA8V2ViQ29yZS9Vc2VyQWdlbnRHdGsuaD4uCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlBhZ2VHdGsuY3BwOgorCiAyMDE2LTEwLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIENTUyBjbGFzc2VzIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNl
cHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOTEyNTM5MDRkYzFmNjVmMTc0YWI5
ZGU0YzY0MjYzMzllOGM4MmVlOS4uNmRiOTdmNjM0OWU1ZjEzNzQ5Yzc4YjcxNzMxMWEzYWY2NDE4
NzRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTg0LDYgKzg0LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL3NvdXAvU3VicmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAogCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcAorICAgIHBsYXRmb3JtL1Vz
ZXJBZ2VudFF1aXJrcy5jcHAKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2dsaWIvQXVkaW9CdXNHTGli
LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNmUwNTRl
MTFjZTNkOTY3MTkzNGU5NDE5MmM3ZWQzMjQ3MjE4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LCAyMDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKENPQ09BKQorLy8gRklYTUU6IFJl
bW92ZSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5oCisjaW5jbHVkZV9uZXh0
ICJVc2VyQWdlbnQuaCIKKyNlbHNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworCitTdHJpbmcgc3RhbmRhcmRVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOworU3RyaW5nIHN0
YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q2NTI2
ZmY4MGEzNmU1OTBhZGQwZTAyNTljYjkyMWJjYmQwN2Y3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKQEAgLTAsMCArMSwxMTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTYgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFF1aXJrcy5oIgorCisjaW5jbHVkZSAiUHVibGljU3Vm
Zml4LmgiCisjaW5jbHVkZSAiVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gV2hl
biBlZGl0aW5nIHRoZSBxdWlya3MgaW4gdGhpcyBmaWxlLCBiZSBzdXJlIHRvIHVwZGF0ZQorLy8g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAuCisK
Ky8vIEJlIGNhcmVmdWwgd2l0aCB0aGlzIHF1aXJrOiBpdCdzIGFuIGludml0YXRpb24gZm9yIHNp
dGVzIHRvIHVzZSBKYXZhU2NyaXB0CisvLyB0aGF0IHdvcmtzIGluIENocm9tZSB0aGF0IFdlYktp
dCBjYW5ub3QgaGFuZGxlLiBQcmVmZXIgb3RoZXIgcXVpcmtzIGluc3RlYWQuCitzdGF0aWMgYm9v
bCB1cmxSZXF1aXJlc0Nocm9tZUJyb3dzZXIoY29uc3QgVVJMJiB1cmwpCit7CisgICAgU3RyaW5n
IGJhc2VEb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHVybC5ob3N0KCkpOwor
CisgICAgLy8gTmVlZGVkIGZvciBmb250cyBvbiBtYW55IHNpdGVzIHRvIHdvcmsgd2l0aCBXZWJL
aXQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI5
NgorICAgIGlmIChiYXNlRG9tYWluID09ICJ0eXBla2l0Lm5ldCIgfHwgYmFzZURvbWFpbiA9PSAi
dHlwZWtpdC5jb20iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFNodXQgb2ZmIENo
cm9tZSBhZHMuIEF2b2lkIG1pc3NpbmcgZmVhdHVyZXMgb24gbWFwcy5nb29nbGUuY29tLiBBdm9p
ZAorICAgIC8vIHJlY2VpdmluZyBhIHRlcnJpYmxlIGZhbGxiYWNrIHZlcnNpb24gb2YgY2FsZW5k
YXIuZ29vZ2xlLmNvbS4gUmVjZWl2ZSBhCisgICAgLy8gZmFuY2llciBwbHVzLmdvb2dsZS5jb20u
CisgICAgaWYgKGJhc2VEb21haW4uc3RhcnRzV2l0aCgiZ29vZ2xlLiIpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIC8vIE5lZWRlZCBmb3IgWW91VHViZSAzNjAgd2l0aCBXZWJLaXRHVEsr
IGFuZCBXUEUgKHJlcXVpcmVzIEVOQUJMRV9NRURJQV9TT1VSQ0UpLgorICAgIGlmIChiYXNlRG9t
YWluID09ICJ5b3V0dWJlLmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gU2xh
Y2sgY29tcGxldGVseSBibG9ja3MgdXNlcnMgd2l0aCBXZWJLaXRHVEsrJ3Mgc3RhbmRhcmQgdXNl
ciBhZ2VudC4KKyAgICBpZiAoYmFzZURvbWFpbiA9PSAic2xhY2suY29tIikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHVybFJlcXVp
cmVzTWFjaW50b3NoUGxhdGZvcm0oY29uc3QgVVJMJiB1cmwpCit7CisgICAgU3RyaW5nIGJhc2VE
b21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHVybC5ob3N0KCkpOworCisgICAg
Ly8gQXQgbGVhc3QgZmluYW5jZS55YWhvby5jb20gZGlzcGxheXMgYSBtb2JpbGUgdmVyc2lvbiB3
aXRoIFdlYktpdEdUSysncyBzdGFuZGFyZCB1c2VyIGFnZW50LgorICAgIGlmIChiYXNlRG9tYWlu
ID09ICJ5YWhvby5jb20iKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIHRhb2Jhby5j
b20gZGlzcGxheXMgYSBtb2JpbGUgdmVyc2lvbiB3aXRoIFdlYktpdEdUSysncyBzdGFuZGFyZCB1
c2VyIGFnZW50LgorICAgIGlmIChiYXNlRG9tYWluID09ICJ0YW9iYW8uY29tIikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyB3ZWIud2hhdHNhcHAuY29tIGNvbXBsZXRlbHkgYmxvY2tz
IHVzZXJzIHdpdGggV2ViS2l0R1RLKydzIHN0YW5kYXJkIHVzZXIgYWdlbnQuCisgICAgaWYgKGJh
c2VEb21haW4gPT0gIndoYXRzYXBwLmNvbSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitVc2VyQWdlbnRRdWlya3MgVXNlckFnZW50UXVpcmtzOjpxdWly
a3NGb3JVUkwoY29uc3QgVVJMJiB1cmwpCit7CisgICAgQVNTRVJUKCF1cmwuaXNOdWxsKCkpOwor
ICAgIFVzZXJBZ2VudFF1aXJrcyBxdWlya3M7CisgICAgaWYgKHVybFJlcXVpcmVzQ2hyb21lQnJv
d3Nlcih1cmwpKQorICAgICAgICBxdWlya3MuYWRkKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJv
bWVCcm93c2VyKTsKKyAgICBpZiAodXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSh1cmwpKQor
ICAgICAgICBxdWlya3MuYWRkKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0Zm9y
bSk7CisgICAgcmV0dXJuIHF1aXJrczsKK30KKworU3RyaW5nIFVzZXJBZ2VudFF1aXJrczo6c3Ry
aW5nRm9yUXVpcmsoVXNlckFnZW50UXVpcmsgcXVpcmspCit7CisgICAgc3dpdGNoIChxdWlyaykg
eworICAgIGNhc2UgTmVlZHNDaHJvbWVCcm93c2VyOgorICAgICAgICAvLyBHZXQgdmVyc2lvbnMg
ZnJvbSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLmdpdAor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJDaHJvbWUvNTYuMC4yODkxLjQiKTsKKyAgICBj
YXNlIE5lZWRzTWFjaW50b3NoUGxhdGZvcm06CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
Ik1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTIiKTsKKyAgICBjYXNlIE51bVVzZXJBZ2Vu
dFF1aXJrczoKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiIik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdkYzlhMWIwOTA5NzJjZThj
MjY3M2VhODVkYTRjNWU1MzhmYTYxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFVSTDsKKworY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKK3B1
YmxpYzoKKyAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKKyAgICAgICAgTmVlZHNDaHJvbWVCcm93
c2VyLAorICAgICAgICBOZWVkc01hY2ludG9zaFBsYXRmb3JtLAorCisgICAgICAgIE51bVVzZXJB
Z2VudFF1aXJrcworICAgIH07CisKKyAgICBVc2VyQWdlbnRRdWlya3MoKQorICAgICAgICA6IG1f
cXVpcmtzKDApCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YobV9xdWlya3Mp
ICogOCA+PSBOdW1Vc2VyQWdlbnRRdWlya3MsIG5vdF9lbm91Z2hfcm9vbV9mb3JfcXVpcmtzKTsK
KyAgICB9CisKKyAgICB2b2lkIGFkZChVc2VyQWdlbnRRdWlyayBxdWlyaykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChxdWlyayA+PSAwKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ocXVpcmsgPCBOdW1Vc2VyQWdlbnRRdWlya3MpOworCisgICAgICAgIG1fcXVpcmtz
IHw9ICgxIDw8IHF1aXJrKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKFVzZXJBZ2VudFF1
aXJrIHF1aXJrKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcXVpcmtzICYgKDEgPDwg
cXVpcmspOworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3F1
aXJrczsgfQorCisgICAgc3RhdGljIFVzZXJBZ2VudFF1aXJrcyBxdWlya3NGb3JVUkwoY29uc3Qg
VVJMJik7CisKKyAgICBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1aXJr
KTsKKworcHJpdmF0ZToKKyAgICB1aW50MzJfdCBtX3F1aXJrczsKK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Vc2VyQWdlbnRFZmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJBZ2VudEVmbC5jcHAKaW5kZXggMGNkZjRlZDllMjY3
NDA0NDFkY2NmZDI3NTBiODQyZGNjMTJjZDgyZS4uYzE0NzIxMTIxOTE1MzNmOTY0MGVhMmU5NTY2
MzQ0OWM2Nzg5NzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Vz
ZXJBZ2VudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJBZ2Vu
dEVmbC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiVXNlckFnZW50RWZsLmgiCisjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNzUsNSArNzUsMTEgQEAgU3RyaW5nIHN0
YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJp
bmcmIGFwcGxpY2F0aW8KICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRTdHJpbmcgKyAnICcg
KyBhcHBsaWNhdGlvbk5hbWUgKyAnLycgKyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbjsKIH0KIAor
U3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpCit7CisgICAgLy8gRGlz
YWJsZSB1c2VyIGFnZW50IHF1aXJrcyBmb3Igbm93LgorICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvVXNlckFnZW50RWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
VXNlckFnZW50RWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZGEwYjMxMjIz
ODQ5MTZhMzhmNGNlYjBiNmU4MmUwZDVkMTBkNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1VzZXJBZ2Vu
dEVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBOYXZlciBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFVzZXJBZ2VudEVmbF9oCi0jZGVm
aW5lIFVzZXJBZ2VudEVmbF9oCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1TdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwotCi19Ci0KLSNlbmRpZiAvLyBVc2VyQWdl
bnRFZmxfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFn
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3Bw
CmluZGV4IDM4ZDRhZTZiYWFhMmVhY2ZiYjU2YWIxMTA4MjU5MDIwYWVkYmY2ZTYuLmExMDI3YzNj
MDZkMzI5YmYwMjc0YzY2MDcwNzY3NGQxZmNiMTcxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Vc2VyQWdlbnRHdGsuY3BwCkBAIC0yNCwxMCArMjQsMTAgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVXNlckFnZW50R3RrLmgiCisjaW5jbHVkZSAi
VXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJQdWJsaWNTdWZmaXguaCIKICNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTQzLDQw
ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVXNlckFnZW50UXVpcmtz
IHsKLXB1YmxpYzoKLSAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKLSAgICAgICAgTmVlZHNDaHJv
bWVCcm93c2VyLAotICAgICAgICBOZWVkc01hY2ludG9zaFBsYXRmb3JtLAotCi0gICAgICAgIE51
bVVzZXJBZ2VudFF1aXJrcwotICAgIH07Ci0KLSAgICBVc2VyQWdlbnRRdWlya3MoKQotICAgICAg
ICA6IG1fcXVpcmtzKDApCi0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YobV9x
dWlya3MpICogOCA+PSBOdW1Vc2VyQWdlbnRRdWlya3MsIG5vdF9lbm91Z2hfcm9vbV9mb3JfcXVp
cmtzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZChVc2VyQWdlbnRRdWlyayBxdWlyaykKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChxdWlyayA+PSAwKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04ocXVpcmsgPCBOdW1Vc2VyQWdlbnRRdWlya3MpOwotCi0gICAgICAgIG1f
cXVpcmtzIHw9ICgxIDw8IHF1aXJrKTsKLSAgICB9Ci0KLSAgICBib29sIGNvbnRhaW5zKFVzZXJB
Z2VudFF1aXJrIHF1aXJrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcXVpcmtzICYg
KDEgPDwgcXVpcmspOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3F1aXJrczsgfQotCi1wcml2YXRlOgotICAgIHVpbnQzMl90IG1fcXVpcmtzOwotfTsKLQog
c3RhdGljIGNvbnN0IGNoYXIqIHBsYXRmb3JtRm9yVUFTdHJpbmcoKQogewogI2lmIE9TKE1BQ19P
U19YKQpAQCAtMTE1LDI1ICs4MSwyMiBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkVXNlckFnZW50U3Ry
aW5nKGNvbnN0IFVzZXJBZ2VudFF1aXJrcyYgcXVpcmtzKQogICAgIHVhU3RyaW5nLmFwcGVuZCgn
KCcpOwogCiAgICAgaWYgKHF1aXJrcy5jb250YWlucyhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzTWFj
aW50b3NoUGxhdGZvcm0pKQotICAgICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCJNYWNpbnRv
c2giKTsKLSAgICBlbHNlCisgICAgICAgIHVhU3RyaW5nLmFwcGVuZChVc2VyQWdlbnRRdWlya3M6
OnN0cmluZ0ZvclF1aXJrKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0Zm9ybSkp
OworICAgIGVsc2UgewogICAgICAgICB1YVN0cmluZy5hcHBlbmQocGxhdGZvcm1Gb3JVQVN0cmlu
ZygpKTsKLQotICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIjsgIik7Ci0KLSAgICBpZiAocXVp
cmtzLmNvbnRhaW5zKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0Zm9ybSkpCi0g
ICAgICAgIHVhU3RyaW5nLmFwcGVuZExpdGVyYWwoIkludGVsIE1hYyBPUyBYIDEwXzEyIik7Ci0g
ICAgZWxzZQorICAgICAgICB1YVN0cmluZy5hcHBlbmRMaXRlcmFsKCI7ICIpOwogICAgICAgICB1
YVN0cmluZy5hcHBlbmQocGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKSk7CisgICAgfQogCiAg
ICAgdWFTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiKSBBcHBsZVdlYktpdC8iKTsKICAgICB1YVN0cmlu
Zy5hcHBlbmQodmVyc2lvbkZvclVBU3RyaW5nKCkpOwogICAgIHVhU3RyaW5nLmFwcGVuZExpdGVy
YWwoIiAoS0hUTUwsIGxpa2UgR2Vja28pICIpOwogCiAgICAgLy8gTm90ZSB0aGF0IENocm9tZSBV
QXMgYWR2ZXJ0aXNlICpib3RoKiBDaHJvbWUgYW5kIFNhZmFyaS4KLSAgICAvLyBXZSBzZXQgYSBt
ZWFuaW5nZnVsIHZhbHVlIG9ubHkgZm9yIHRoZSBmaXJzdCB0d28gZGlnaXRzIGhlcmUuCi0gICAg
aWYgKHF1aXJrcy5jb250YWlucyhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzQ2hyb21lQnJvd3Nlcikp
Ci0gICAgICAgIHVhU3RyaW5nLmFwcGVuZCgiQ2hyb21lLzU0LjAuMjcwNC4xMDYgIik7CisgICAg
aWYgKHF1aXJrcy5jb250YWlucyhVc2VyQWdlbnRRdWlya3M6Ok5lZWRzQ2hyb21lQnJvd3Nlcikp
IHsKKyAgICAgICAgdWFTdHJpbmcuYXBwZW5kKFVzZXJBZ2VudFF1aXJrczo6c3RyaW5nRm9yUXVp
cmsoVXNlckFnZW50UXVpcmtzOjpOZWVkc0Nocm9tZUJyb3dzZXIpKTsKKyAgICAgICAgdWFTdHJp
bmcuYXBwZW5kTGl0ZXJhbCgiICIpOworICAgIH0KIAogICAgIC8vIFZlcnNpb24vWCBpcyBtYW5k
YXRvcnkgKmJlZm9yZSogU2FmYXJpL1ggdG8gYmUgYSB2YWxpZCBTYWZhcmkgVUEuIFNlZQogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0MDMgZm9yIGRl
dGFpbHMuCkBAIC0xNjksNTggKzEzMiw5IEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvCiAgICAg
cmV0dXJuIHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkgKyAnICcgKyBhcHBsaWNhdGlvbk5hbWUg
KyAnLycgKyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbjsKIH0KIAotLy8gQmUgY2FyZWZ1bCB3aXRo
IHRoaXMgcXVpcms6IGl0J3MgYW4gaW52aXRhdGlvbiBmb3Igc2l0ZXMgdG8gdXNlIEphdmFTY3Jp
cHQgd2UgY2FuJ3QgaGFuZGxlLgotc3RhdGljIGJvb2wgdXJsUmVxdWlyZXNDaHJvbWVCcm93c2Vy
KGNvbnN0IFVSTCYgdXJsKQotewotICAgIFN0cmluZyBiYXNlRG9tYWluID0gdG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgpKTsKLQotICAgIC8vIE5lZWRlZCBmb3IgZm9udHMg
b24gbWFueSBzaXRlcywgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NzI5NgotICAgIGlmIChiYXNlRG9tYWluID09ICJ0eXBla2l0Lm5ldCIgfHwgYmFzZURvbWFpbiA9
PSAidHlwZWtpdC5jb20iKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFNodXQgb2Zm
IENocm9tZSBhZHMuIEF2b2lkIG1pc3NpbmcgZmVhdHVyZXMgb24gbWFwcy5nb29nbGUuY29tLgot
ICAgIGlmIChiYXNlRG9tYWluLnN0YXJ0c1dpdGgoImdvb2dsZSIpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIE5lZWRlZCBmb3IgWW91VHViZSAzNjAgKHJlcXVpcmVzIEVOQUJMRV9N
RURJQV9TT1VSQ0UpLgotICAgIGlmIChiYXNlRG9tYWluID09ICJ5b3V0dWJlLmNvbSIpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gU2xhY2sgY29tcGxldGVseSBibG9ja3MgdXNlcnMg
d2l0aCBvdXIgc3RhbmRhcmQgdXNlciBhZ2VudC4KLSAgICBpZiAoYmFzZURvbWFpbiA9PSAic2xh
Y2suY29tIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBib29sIHVybFJlcXVpcmVzTWFjaW50b3NoUGxhdGZvcm0oY29uc3QgVVJMJiB1cmwp
Ci17Ci0gICAgU3RyaW5nIGJhc2VEb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KHVybC5ob3N0KCkpOwotCi0gICAgLy8gQXQgbGVhc3QgZmluYW5jZS55YWhvby5jb20gZGlzcGxh
eXMgYSBtb2JpbGUgdmVyc2lvbiB3aXRoIG91ciBzdGFuZGFyZCB1c2VyIGFnZW50LgotICAgIGlm
IChiYXNlRG9tYWluID09ICJ5YWhvby5jb20iKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IC8vIHRhb2Jhby5jb20gZGlzcGxheXMgYSBtb2JpbGUgdmVyc2lvbiB3aXRoIG91ciBzdGFuZGFy
ZCB1c2VyIGFnZW50LgotICAgIGlmIChiYXNlRG9tYWluID09ICJ0YW9iYW8uY29tIikKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyB3ZWIud2hhdHNhcHAuY29tIGNvbXBsZXRlbHkgYmxv
Y2tzIHVzZXJzIHdpdGggb3VyIHN0YW5kYXJkIHVzZXIgYWdlbnQuCi0gICAgaWYgKGJhc2VEb21h
aW4gPT0gIndoYXRzYXBwLmNvbSIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiB7Ci0gICAgQVNTRVJUKCF1cmwuaXNOdWxsKCkpOwotICAgIFVzZXJBZ2VudFF1aXJrcyBx
dWlya3M7Ci0gICAgaWYgKHVybFJlcXVpcmVzQ2hyb21lQnJvd3Nlcih1cmwpKQotICAgICAgICBx
dWlya3MuYWRkKFVzZXJBZ2VudFF1aXJrczo6TmVlZHNDaHJvbWVCcm93c2VyKTsKLSAgICBpZiAo
dXJsUmVxdWlyZXNNYWNpbnRvc2hQbGF0Zm9ybSh1cmwpKQotICAgICAgICBxdWlya3MuYWRkKFVz
ZXJBZ2VudFF1aXJrczo6TmVlZHNNYWNpbnRvc2hQbGF0Zm9ybSk7Ci0KKyAgICBhdXRvIHF1aXJr
cyA9IFVzZXJBZ2VudFF1aXJrczo6cXVpcmtzRm9yVVJMKHVybCk7CiAgICAgLy8gVGhlIG51bGwg
c3RyaW5nIG1lYW5zIHdlIGRvbid0IG5lZWQgYSBzcGVjaWZpYyBVQSBmb3IgdGhlIGdpdmVuIFVS
TC4KICAgICByZXR1cm4gcXVpcmtzLmlzRW1wdHkoKSA/IFN0cmluZygpIDogYnVpbGRVc2VyQWdl
bnRTdHJpbmcocXVpcmtzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Vc2VyQWdlbnRHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Vc2VyQWdl
bnRHdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhY2EyOWYyOTEzZmYzMWZk
MTI0MTE0MzE2OTk4MDU2NGYxZWU5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgVXNlckFnZW50R3RrX2gKLSNkZWZpbmUgVXNlckFnZW50R3RrX2gKLQot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBVUkw7Ci0KLVN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uTmFtZSA9IGVtcHR5U3RyaW5nKCksIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25WZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSk7Ci1TdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29u
c3QgVVJMJik7Ci0KLX0KLQotI2VuZGlmIC8vIFVzZXJBZ2VudEd0a19oCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCA0
YmE0YWM2NDhmN2Y3ODRiYmQwYzhiMjA3MDdkOTU3MmUzMzliMTc0Li5kNDhkOTI4NmFmNWExNDE5
Y2IxYTEyODYzZTkwZjdhYzE3OWQzMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2Vu
dEd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CiAjaW5jbHVkZSA8Z2xpYi9n
aTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCBlYWY5ZjUz
ZGU5YTQ0YjlhOTQ1NzNiMjM1MDRiNWQwNWZiMDY3ZDEwLi5lZjI0NmMzMTJlYzY5M2M2NzdjNWEx
YjYyMmUxZDg1MGRlM2NiMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRXdrVmll
dy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlVzZXJBZ2VudEVmbC5oIgorI2luY2x1ZGUgIlVzZXJB
Z2VudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCBmNWE4NGJiYWQwZmM5OGQxYzIy
ZDIwOWJjOGZiMWU5MGRiZDExM2IyLi5mMzIyODdiMzA5NWMxNGMyN2FkZmM5NTdmNjFkOTBjMWQ4
MGUzMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50R3RrLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQWdlbnQuaD4KICNpbmNsdWRlIDxndGsvZ3RreC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCA0YTZlYWQ2YzlhYzk5OTU3ZTExYWM1Y2E4
N2E4MDY2MTA3OTUwNDc3Li5kNzY2NjgwNDMwMmU1MjdlNDdmMjRiOTk4MmRkZWQ2NDljMGE1ZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9h
cmRIZWxwZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2Vu
dEd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYjYwOWVjMjBkMDhmMDQ0
YjU3MTk5YmUzYWY2MjcwYWQyNzA5MzgyLi4xZmRhNzQwYmNmYTEwNzE2ZjViMGU0MWIzZTdmYzFi
ODg0ODRjY2Y0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMTcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIE1vdmUgdXNlciBhZ2VudCBxdWlya3MgdG8g
Y3Jvc3MtcGxhdGZvcm0gbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJj
aWEgQ2FtcG9zLgorCisgICAgICAgIE1vdmUgdGhlIHRlc3QgdG8gYSBjcm9zcy1wbGF0Zm9ybSBs
b2NhdGlvbiBhbmQgaW1wcm92ZSBpdCB0byBiZXR0ZXIgY2hlY2sgdGhlIGZ1bGwgbGlzdCBvZgor
ICAgICAgICBzaXRlcyB3ZSBoYXZlIGRlZmluZWQgcXVpcmtzIGZvci4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjphc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVp
cmspOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFj
UGxhdGZvcm1RdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0x
MC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFBl
cmwgd2FybmluZyBhYm91dCBtYXNrZWQgdmFyaWFibGUgZm9sbG93aW5nIDxodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMDczODI+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA2Nzk2MjJmYmY2MGFlMjlhZmRjNmVlZWZjMjQ2MWY3NDkxMDU2MDY3Li45MWEy
YzllN2JkMzEzOGNhNTA3OGNmNWE4NGM2NzEwMDlmMzVhMzgwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTEyNSwyMSArMTI1LDE3IEBAIGFkZF90ZXN0KFRlc3RXZWJL
aXQyICR7VEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dlYktpdDIvVGVz
dFdlYktpCiBzZXRfdGVzdHNfcHJvcGVydGllcyhUZXN0V2ViS2l0MiBQUk9QRVJUSUVTIFRJTUVP
VVQgNjApCiBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoVGVzdFdlYktpdDIgUFJPUEVSVElFUyBSVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vV2ViS2l0MikKIAotc2V0KFRlc3RXZWJDb3JlR3RrX1NPVVJDRVMKLSAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2d0ay9Vc2VyQWdlbnRRdWlya3MuY3BwCi0pCi0K
IGFkZF9leGVjdXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHt0ZXN0X21haW5fU09VUkNFU30KLSAg
ICAke1Rlc3RXZWJDb3JlR3RrX1NPVVJDRVN9CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHNDb250cm9sbGVyLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
RmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0hU
TUxQYXJzZXJJZGlvbXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29y
ZS9MYXlvdXRVbml0LmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
UHVibGljU3VmZml4LmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
VVJMLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2Vy
LmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5j
cHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1B1YmxpY1N1ZmZpeC5j
cHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJr
cy5jcHAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRlc3RXZWJDb3JlICR7dGVzdF93ZWJj
b3JlX0xJQlJBUklFU30pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZWIzYzAxZTAyZDA4MmE3ZjI3
YzNjODVjNzVjZGY4MGY1OWQyNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcApAQCAtMCwwICsxLDkzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyQWdlbnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hy
b21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKK3sKKyAgICBTdHJpbmcgdWFTdHJpbmcg
PSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKwor
I2lmICFPUyhNQUNfT1NfWCkKKyAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIk1h
Y2ludG9zaCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBY
IikpOworI2VuZGlmCisjaWYgT1MoTElOVVgpCisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIkxpbnV4IikpOworI2VuZGlmCisjaWYgT1MoV0lORE9XUykKKyAgICBFWFBFQ1RfVFJV
RSh1YVN0cmluZy5jb250YWlucygiV2luZG93cyIpKTsKKyNlbmRpZgorCisgICAgRVhQRUNUX1RS
VUUodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKKyAgICBFWFBFQ1RfVFJVRSh1YVN0cmlu
Zy5jb250YWlucygiU2FmYXJpIikpOworICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlu
cygiQ2hyb21pdW0iKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhh
c01hY1BsYXRmb3JtUXVpcmsoY29uc3QgY2hhciogdXJsKQoreworICAgIFN0cmluZyB1YVN0cmlu
ZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOwor
CisgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKKyAgICBF
WFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiTWFjIE9TIFgiKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51eCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodWFTdHJp
bmcuY29udGFpbnMoIldpbmRvd3MiKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRh
aW5zKCJDaHJvbWUiKSk7Cit9CisKK1RFU1QoVXNlckFnZW50VGVzdCwgUXVpcmtzKQoreworICAg
IC8vIEEgc2l0ZSB3aXRoIG5vdCBxdWlya3Mgc2hvdWxkIHJldHVybiBhIG51bGwgU3RyaW5nLgor
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRV
UkxTdHJpbmcsICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOworICAgIEVYUEVDVF9UUlVFKHVh
U3RyaW5nLmlzTnVsbCgpKTsKKworICAgIC8vIEdvb2dsZSBxdWlyayBzaG91bGQgbm90IGFmZmVj
dCBzaXRlcyB3aXRoIHNpbWlsYXIgZG9tYWlucy4KKyAgICB1YVN0cmluZyA9IHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vd3d3Lmdvb2dsZWJsb2cu
Y29tLyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsK
KworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDov
L3R5cGVraXQuY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dz
ZXJRdWlyaygiaHR0cDovL3R5cGVraXQubmV0LyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVS
TEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3d3dy5nb29nbGUuY29tLyIpOworICAgIGFz
c2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3d3dy5nb29n
bGUuZXMvIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJr
KCJodHRwOi8vY2FsZW5kYXIuZ29vZ2xlLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JV
UkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vIik7CisgICAg
YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKCJodHRwOi8vcGx1cy5n
b29nbGUuY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJR
dWlyaygiaHR0cDovL3d3dy55b3V0dWJlLmNvbS8iKTsKKyAgICBhc3NlcnRVc2VyQWdlbnRGb3JV
UkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly93d3cuc2xhY2suY29tLyIpOworCisgICAg
YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyaygiaHR0cDovL3d3dy55YWhv
by5jb20vIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyaygi
aHR0cDovL2ZpbmFuY2UueWFob28uY29tLyIpOworICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhh
c01hY1BsYXRmb3JtUXVpcmsoImh0dHA6Ly9pbnRsLnRhb2Jhby5jb20vIik7CisgICAgYXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyaygiaHR0cDovL3d3dy53aGF0c2FwcC5j
b20vIik7CisgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyaygiaHR0
cDovL3dlYi53aGF0c2FwcC5jb20vIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ndGsvVXNl
ckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ndGsv
VXNlckFnZW50UXVpcmtzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjZTQx
NjE4ZTMxOTM5Mjk1NjkyYzFhMTAwMmVkYzM4YjEwYTg1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvZ3RrL1VzZXJBZ2VudFF1aXJrcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQWdlbnRHdGsuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotVEVTVChXZWJDb3JlLCBVc2VyQWdlbnRRdWlya3NUZXN0
KQotewotICAgIC8vIEEgc2l0ZSB3aXRoIG5vdCBxdWlya3Mgc2hvdWxkIHJldHVybiBhIG51bGwg
U3RyaW5nLgotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOwotICAgIEVYUEVD
VF9UUlVFKHVhU3RyaW5nLmlzTnVsbCgpKTsKLQotICAgIC8vIHdlYi53aGF0c2FwcC5jb20gcmVx
dWlyZXMgTUFDIE9TIHBsYXRmb3JtIGluIHRoZSBVQS4KLSAgICB1YVN0cmluZyA9IHN0YW5kYXJk
VXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vd2ViLndoYXRzYXBw
LmNvbS8iKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hY2ludG9zaCIp
KTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiTWFjIE9TIFgiKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51eCIpKTsKLSAgICBFWFBFQ1RfRkFM
U0UodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKLQotICAgIC8vIGdvb2dsZSBkb21haW5z
IHJlcXVpcmUgQ2hyb21lIGluIHRoZSBVQQotICAgIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdl
bnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cuZ29vZ2xlLmVzLyIpKTsK
LSAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwotICAgIEVYUEVDVF9U
UlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51eCIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmlu
Zy5jb250YWlucygiQ2hyb21lIikpOwotCi0gICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2Vu
dEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL21hcHMuZ29vZ2xlLmNvbS8iKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh1YVN0cmluZy5jb250YWlucygiTGludXgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJp
bmcuY29udGFpbnMoIkNocm9tZSIpKTsKLQotICAgIC8vIFNsYWNrIHJlcXVpcmVzIENocm9tZSBp
biB0aGUgVUEKLSAgICB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwOi8vd3d3LnNsYWNrLmNvbS8iKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVhU3Ry
aW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKLSAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250
YWlucygiTGludXgiKSk7Ci0gICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkNocm9t
ZSIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>