<?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>137673</bug_id>
          
          <creation_ts>2014-10-13 14:27:22 -0700</creation_ts>
          <short_desc>[Win] Implement a page load profiling tool</short_desc>
          <delta_ts>2019-07-26 00:38:19 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=200155</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041362</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-13 14:27:22 -0700</bug_when>
    <thetext>Implement a page load profiling tool for Windows, based on the PLT tool and WinLauncher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041368</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-13 14:52:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/18639562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041378</commentid>
    <comment_count>2</comment_count>
      <attachid>239751</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-13 15:26:56 -0700</bug_when>
    <thetext>Created attachment 239751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041380</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-13 15:29:47 -0700</bug_when>
    <thetext>Attachment 239751 did not pass style-queue:


ERROR: Tools/WinLauncher/PageLoadTestClient.cpp:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WinLauncher/PageLoadTestClient.cpp:27:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WinLauncher/PageLoadTestClient.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/WinLauncher/ResourceLoadDelegate.cpp:25:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WinLauncher/ResourceLoadDelegate.cpp:26:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 5 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041381</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-13 15:30:39 -0700</bug_when>
    <thetext>Note: These style errors are due to required include ordering on Windows. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041384</commentid>
    <comment_count>5</comment_count>
      <attachid>239751</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-10-13 15:36:02 -0700</bug_when>
    <thetext>Comment on attachment 239751
Patch

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

&gt; Tools/WinLauncher/PageLoadTestClient.cpp:197
&gt; +#if PLATFORM(WIN)

Do you need this? Isn&apos;t WinLauncher windows only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041392</commentid>
    <comment_count>6</comment_count>
      <attachid>239751</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-13 15:47:13 -0700</bug_when>
    <thetext>Comment on attachment 239751
Patch

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

&gt;&gt; Tools/WinLauncher/PageLoadTestClient.cpp:197
&gt;&gt; +#if PLATFORM(WIN)
&gt; 
&gt; Do you need this? Isn&apos;t WinLauncher windows only?

I&apos;m also making some changes in MiniBrowser that will use this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041397</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-13 16:10:45 -0700</bug_when>
    <thetext>Committed r174664: &lt;http://trac.webkit.org/changeset/174664&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239751</attachid>
            <date>2014-10-13 15:26:56 -0700</date>
            <delta_ts>2014-10-13 15:47:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137673-20141013153028.patch</filename>
            <type>text/plain</type>
            <size>48109</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDY1OCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE0LTEwLTEz
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIElt
cGxlbWVudCBhIHBhZ2UgbG9hZCBwcm9maWxpbmcgdG9vbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHByZWRpY2F0ZSAoaXNNYWluRnJh
bWUpIHRvIHRoZSBJV2ViRnJhbWUgaW50ZXJmYWNlIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIG1h
a2UgZGVjaXNpb25zIGFib3V0IGEgZnJhbWVzIHBvc2l0aW9uIGluIHRoZSBwYWdlCisgICAgICAg
IGxvYWQgaGllcmFyY2h5IGluIGNsaWVudCBwcm9ncmFtcy4KKworICAgICAgICAqIEludGVyZmFj
ZXMvSVdlYkZyYW1lLmlkbDogQWRkZWQgbmV3IGlzTWFpbkZyYW1lCisgICAgICAgIHByZWRpY2F0
ZSB0byBpbnRlcmZhY2UgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6aXNNYWluRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJGcmFtZS5o
OgorCiAyMDE0LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUGxhdGZvcm1DQUxheWVyIHN1YmNsYXNz
ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE3NDQ3OSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxMSwgMjAx
My0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTIwOTcsMyArMjA5NywxMyBAQCB2b2lkIFdlYkZyYW1lOjp1cGRh
dGVCYWNrZ3JvdW5kKCkKICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvciwgd2ViVmlldygpLT50cmFuc3BhcmVudCgpKTsKIH0K
IAorSFJFU1VMVCBXZWJGcmFtZTo6aXNNYWluRnJhbWUoQk9PTCogdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKHRoaXMpOworICAgICp2YWx1ZSA9IGNvcmVGcmFtZS0+aXNNYWluRnJhbWUoKTsK
KworICAgIHJldHVybiBTX09LOworfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiAx
NzQ0NzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMTEsIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4Nyw2ICsyODcsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNlbGVjdEFsbCgpOwogICAg
IAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZXNlbGVjdEFsbCgpOwor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzTWFpbkZyYW1lKEJPT0wq
KTsKICAgICAKICAgICAvLyBGcmFtZUxvYWRlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBmcmFt
ZUxvYWRlckRlc3Ryb3llZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRnJhbWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkZyYW1lLmlkbAkocmV2aXNpb24gMTc0NDc5KQorKysgU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViRnJhbWUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE0IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2OCw0ICsyNjgsMTAgQEAgaW50ZXJmYWNlIElXZWJGcmFtZSA6IElVbmtub3duCiAg
ICAgICAgIC0gKERPTVdpbmRvdyAqKURPTVdpbmRvdzsKICAgICAqLwogICAgIEhSRVNVTFQgRE9N
V2luZG93KFtvdXQsIHJldHZhbF0gSURPTVdpbmRvdyoqIHdpbmRvdyk7CisKKyAgICAvKiEKKyAg
ICBAbWV0aG9kIGlzTWFpbkZyYW1lCisgICAgQGRlc2NyaXB0aW9uIFJldHVybnMgVFJVRSBpZiB0
aGUgZnJhbWUgaXMgdGhlIG1haW4gZnJhbWUuCisgICAgKi8KKyAgICBIUkVTVUxUIGlzTWFpbkZy
YW1lKFtvdXQsIHJldHZhbF0gQk9PTCogZmxhZyk7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzQ2NTgpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MCBAQAorMjAxNC0xMC0xMyAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luXSBJbXBs
ZW1lbnQgYSBwYWdlIGxvYWQgcHJvZmlsaW5nIHRvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRvb2wgdG8gY2FwdHVyZSBhbmQgc3VtbWFy
aXplIHBhZ2UgbG9hZCBzdGF0aXN0aWNzLgorCisgICAgICAgICogV2luTGF1bmNoZXIvQ29tbW9u
LmNwcDoKKyAgICAgICAgKHBhcnNlQ29tbWFuZExpbmUpOiBNb3ZlIGZyb20gV2luTWFpbi5jcHAg
c28gdGhhdCBpdCBjYW4KKyAgICAgICAgYmUgc2hhcmVkIHdpdGggaW50ZXJuYWwgdG9vbHMuCisg
ICAgICAgICogV2luTGF1bmNoZXIvUGFnZUxvYWRUZXN0Q2xpZW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChQYWdlTG9hZFRlc3RDbGllbnQ6OlBhZ2VMb2FkVGVzdENsaWVudCk6CisgICAgICAgIChQ
YWdlTG9hZFRlc3RDbGllbnQ6OnBhZ2VMb2FkU3RhcnRlZEF0VGltZSk6CisgICAgICAgIChQYWdl
TG9hZFRlc3RDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFBhZ2VM
b2FkVGVzdENsaWVudDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChQYWdlTG9hZFRlc3RDbGll
bnQ6OmRpZEZpcnN0TGF5b3V0Rm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFBhZ2VMb2FkVGVzdENs
aWVudDo6ZGlkSGFuZGxlT25Mb2FkRXZlbnRzKToKKyAgICAgICAgKFBhZ2VMb2FkVGVzdENsaWVu
dDo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChQYWdlTG9hZFRlc3RDbGllbnQ6OmRpZEZhaWxM
b2FkKToKKyAgICAgICAgKFBhZ2VMb2FkVGVzdENsaWVudDo6ZGlkSW5pdGlhdGVSZXNvdXJjZUxv
YWQpOgorICAgICAgICAoUGFnZUxvYWRUZXN0Q2xpZW50OjpkaWRFbmRSZXNvdXJjZUxvYWQpOgor
ICAgICAgICAoUGFnZUxvYWRUZXN0Q2xpZW50OjpwYWdlTG9hZEVuZGVkQXRUaW1lKToKKyAgICAg
ICAgKFBhZ2VMb2FkVGVzdENsaWVudDo6ZW5kUGFnZUxvYWQpOgorICAgICAgICAoUGFnZUxvYWRU
ZXN0Q2xpZW50OjpjbGVhclBhZ2VMb2FkU3RhdGUpOgorICAgICAgICAoUGFnZUxvYWRUZXN0Q2xp
ZW50OjpzaG91bGRDb25zaWRlclBhZ2VMb2FkRW5kZWQpOgorICAgICAgICAoUGFnZUxvYWRUZXN0
Q2xpZW50OjptYXliZUVuZFBhZ2VMb2FkU29vbik6CisgICAgICAgIChQYWdlTG9hZFRlc3RDbGll
bnQ6OnNldFBhZ2VVUkwpOgorICAgICAgICAoUGFnZUxvYWRUZXN0Q2xpZW50OjpkdW1wUnVuU3Rh
dGlzdGljcyk6CisgICAgICAgICogV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNwcDoK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KTog
SGFuZGxlCisgICAgICAgIG51bGxwdHIgVVJMIHByb3Blcmx5LgorICAgICAgICAqIFdpbkxhdW5j
aGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDogQWRkZWQuCisgICAgICAgIChSZXNvdXJjZUxv
YWREZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdh
dGU6OkFkZFJlZik6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVsZWFzZSk6Cisg
ICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
KToKKyAgICAgICAgKFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgpOgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaExv
YWRpbmdGcm9tRGF0YVNvdXJjZSk6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlk
RmFpbExvYWRpbmdXaXRoRXJyb3IpOgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OnBs
dWdJbkZhaWxlZFdpdGhFcnJvcik6CisgICAgICAgICogV2luTGF1bmNoZXIvUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3Vy
Y2VMb2FkRGVsZWdhdGUpOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcDoK
KyAgICAgICAgKFdpbkxhdW5jaGVyOjpXaW5MYXVuY2hlcik6IEFjY2VwdCBhcmd1bWVudCB0byBp
bmRpY2F0ZSB3ZSB3YW50IHRvIGNhcHR1cmUKKyAgICAgICAgcGFnZSBsb2FkaW5nIHN0YXRpc3Rp
Y3MuCisgICAgICAgIChXaW5MYXVuY2hlcjo6c2V0RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKTog
R2V0IHJpZCBvZiBzdHViIGltcGxlbWVudGF0aW9uCisgICAgICAgIGFuZCBzZXQgcHJpdmF0ZSBs
b2FkIGRlbGVnYXRlIHN0YXRlLgorICAgICAgICAoV2luTGF1bmNoZXI6OnNldFJlc291cmNlTG9h
ZERlbGVnYXRlKTogUmVwbGFjZSBzdHViIHdpdGggYSBmdWxsIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIHRoYXQgc2V0cyB0aGUgdmlldydzIHJlc291cmNlIGxvYWQgZGVsZWdhdGUuCisgICAgICAg
IChXaW5MYXVuY2hlcjo6bG9hZFVSTCk6IElmIG5vIFVSTCBpcyBwYXNzZWQsIGxvYWQgdGhlIHRl
c3QgZG9jdW1lbnQuCisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAgICAg
ICAgKFdpbkxhdW5jaGVyOjpwYWdlTG9hZFRlc3RDbGllbnQpOgorICAgICAgICAqIFdpbkxhdW5j
aGVyL1dpbkxhdW5jaGVyLnZjeHByb2ovV2luTGF1bmNoZXJMaWIudmN4cHJvajogVXBkYXRlZCBm
b3IgbmV3IHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci52
Y3hwcm9qL1dpbkxhdW5jaGVyTGliLnZjeHByb2ouZmlsdGVyczogRGl0dG8uCisgICAgICAgICog
V2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0LmNwcDoKKyAgICAgICAgKFdpbkxhdW5jaGVy
V2ViSG9zdDo6dXBkYXRlQWRkcmVzc0Jhcik6IEhvb2sgaW50byBwYWdlIGxvYWQgc3RhdGlzdGlj
cyByb3V0aW5lLgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0Ojpsb2FkVVJMKTogTW92ZWQg
J1NlbmRNZXNzYWdlJyBjYWxsIHRvIGl0cyBvd24gbWV0aG9kIHNvIHRoYXQKKyAgICAgICAgaXQg
Y291bGQgYmUgdXNlZCBmcm9tIG90aGVyIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKFdpbkxhdW5j
aGVyV2ViSG9zdDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKTogQWRkZWQgb3ZlcmxvYWQgdG8gY2Fw
dHVyZSBzdGF0aXN0aWNzLgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXaW5MYXVuY2hlcldlYkhv
c3Q6OmRpZEZhaWxMb2FkV2l0aEVycm9yKTogRGl0dG8uCisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChX
aW5MYXVuY2hlcldlYkhvc3Q6OmRpZEZpcnN0TGF5b3V0SW5GcmFtZSk6IERpdHRvLgorICAgICAg
ICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6IERp
dHRvLgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRJbkZyYW1lKTogRGl0dG8uCisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAqIFdpbkxh
dW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbk1h
aW4uY3BwOgorICAgICAgICAod1dpbk1haW4pOiBDcmVhdGUgYW5kIHVzZSBuZXcgZGVsZWdhdGVz
IGZvciBnYXRoZXJpbmcgcGFnZSBsb2FkIGRhdGEuCisgICAgICAgICogV2luTGF1bmNoZXIvc3Rk
YWZ4Lmg6IE5lZWQgdG8gYWRkIDx3dGYvUGxhdGZvcm0+IGluY2x1ZGUgZm9yIHZhcmlvdXMgbWFj
cm9zIHVzZWQgaW4gYnVpbGQuCisKIDIwMTQtMTAtMTMgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBl
cmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1h2ZmJEcml2ZXJdIFJlZ3VsYXIg
ZXhwcmVzc2lvbiB1c2VkIHRvIG1hdGNoIHJ1bm5pbmcgWCBzZXJ2ZXJzIGZhaWxzIG9uIEZlZG9y
YSAyMS4KSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL0NvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2luTGF1bmNoZXIvQ29tbW9uLmNwcAkocmV2aXNpb24gMTc0NDc5KQorKysgVG9vbHMv
V2luTGF1bmNoZXIvQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkRPTURlZmF1bHRJ
bXBsLmgiCiAjaW5jbHVkZSAiUHJpbnRXZWJVSURlbGVnYXRlLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaCIKICNpbmNsdWRlICJXaW5MYXVuY2hlci5oIgogI2luY2x1ZGUgIldp
bkxhdW5jaGVyUmVwbGFjZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4KQEAg
LTY4NSw2ICs2ODYsMjYgQEAgc3RhdGljIHZvaWQgdXBkYXRlU3RhdGlzdGljcyhIV05EIGRpYWxv
ZwogICAgICAgICBzZXRXaW5kb3dUZXh0KGRpYWxvZywgSURDX1NJVEVfSUNPTlNfV0lUSF9EQVRB
LCBjb3VudCk7CiB9CiAKK3N0YXRpYyB2b2lkIHBhcnNlQ29tbWFuZExpbmUoYm9vbCYgdXNlc0xh
eWVyZWRXZWJWaWV3LCBib29sJiB1c2VGdWxsRGVza3RvcCwgYm9vbCYgcGFnZUxvYWRUZXN0aW5n
LCBfYnN0cl90JiByZXF1ZXN0ZWRVUkwpCit7CisgICAgdXNlc0xheWVyZWRXZWJWaWV3ID0gZmFs
c2U7CisgICAgdXNlRnVsbERlc2t0b3AgPSBmYWxzZTsKKyAgICBwYWdlTG9hZFRlc3RpbmcgPSBm
YWxzZTsKKworICAgIGludCBhcmdjID0gMDsKKyAgICBXQ0hBUioqIGFyZ3YgPSBDb21tYW5kTGlu
ZVRvQXJndlcoR2V0Q29tbWFuZExpbmVXKCksICZhcmdjKTsKKyAgICBmb3IgKGludCBpID0gMTsg
aSA8IGFyZ2M7ICsraSkgeworICAgICAgICBpZiAoIXdjc2ljbXAoYXJndltpXSwgTCItLXRyYW5z
cGFyZW50IikpCisgICAgICAgICAgICB1c2VzTGF5ZXJlZFdlYlZpZXcgPSB0cnVlOworICAgICAg
ICBlbHNlIGlmICghd2NzaWNtcChhcmd2W2ldLCBMIi0tZGVza3RvcCIpKQorICAgICAgICAgICAg
dXNlRnVsbERlc2t0b3AgPSB0cnVlOworICAgICAgICBlbHNlIGlmICghcmVxdWVzdGVkVVJMKQor
ICAgICAgICAgICAgcmVxdWVzdGVkVVJMID0gYXJndltpXTsKKyAgICAgICAgZWxzZSBpZiAoIXdj
c2ljbXAoYXJndltpXSwgTCItLXBlcmZvcm1hbmNlIikpCisgICAgICAgICAgICBwYWdlTG9hZFRl
c3RpbmcgPSB0cnVlOworICAgIH0KK30KKwogZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgaW50IFdJTkFQSSBkbGxMYXVuY2hlckVudHJ5UG9pbnQoSElOU1RBTkNFIGhJbnN0YW5jZSwg
SElOU1RBTkNFIGhQcmV2SW5zdGFuY2UsIExQV1NUUiBscHN0ckNtZExpbmUsIGludCBuQ21kU2hv
dykKIHsKICAgICByZXR1cm4gd1dpbk1haW4oaEluc3RhbmNlLCBoUHJldkluc3RhbmNlLCBscHN0
ckNtZExpbmUsIG5DbWRTaG93KTsKSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1BhZ2VMb2FkVGVz
dENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvUGFnZUxvYWRUZXN0
Q2xpZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1BhZ2VMb2FkVGVz
dENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDQgQEAKKy8qCisqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbmNsdWRlICJzdGRhZnguaCIKKyNpbmNsdWRlICJQYWdlTG9hZFRlc3RD
bGllbnQuaCIKKworI2luY2x1ZGUgIldpbkxhdW5jaGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybUV4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPGNtYXRoPgorCitzdGF0aWMg
Y29uc3QgQ0ZUaW1lSW50ZXJ2YWwgd2FpdEZvck5ld1Jlc291cmNlTG9hZER1cmF0aW9uID0gMC4x
OworCitQYWdlTG9hZFRlc3RDbGllbnQ6OlBhZ2VMb2FkVGVzdENsaWVudChXaW5MYXVuY2hlciog
aG9zdCwgYm9vbCBwYWdlTG9hZFRlc3RpbmcpCisgICAgOiBtX2hvc3QoaG9zdCkKKyAgICAsIG1f
cGFnZUxvYWRFbmRUaW1lKDApCisgICAgLCBtX3RvdGFsVGltZSgwKQorICAgICwgbV90b3RhbFNx
dWFyZVJvb3RzT2ZUaW1lKDApCisgICAgLCBtX2xvbmdlc3RUaW1lKDApCisgICAgLCBtX2dlb21l
dHJpY01lYW5Qcm9kdWN0U3VtKDEuMCkKKyAgICAsIG1fZnJhbWVzKDApCisgICAgLCBtX29uTG9h
ZEV2ZW50cygwKQorICAgICwgbV9jdXJyZW50VVJMSW5kZXgoMCkKKyAgICAsIG1fY3VycmVudFJl
cGV0aXRpb24oMCkKKyAgICAsIG1fcGFnZXNUaW1lZCgwKQorICAgICwgbV9yZXBldGl0aW9ucyhw
YWdlTG9hZFRlc3RpbmcgPyAyMCA6IDEpCisgICAgLCBtX3dhaXRGb3JMb2FkVG9SZWFsbHlFbmQo
dGhpcywgJlBhZ2VMb2FkVGVzdENsaWVudDo6ZW5kUGFnZUxvYWQpCisgICAgLCBtX2N1cnJlbnRQ
YWdlTG9hZEZpbmlzaGVkKGZhbHNlKQorICAgICwgbV9wYWdlTG9hZFRlc3RpbmcocGFnZUxvYWRU
ZXN0aW5nKQoreworfQorCit2b2lkIFBhZ2VMb2FkVGVzdENsaWVudDo6cGFnZUxvYWRTdGFydGVk
QXRUaW1lKENGQWJzb2x1dGVUaW1lIHN0YXJ0VGltZSkKK3sKKyAgICBtX3N0YXJ0VGltZXMuYXBw
ZW5kKHN0YXJ0VGltZSk7Cit9CisKK3ZvaWQgUGFnZUxvYWRUZXN0Q2xpZW50OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZChJV2ViRnJhbWUmIGZyYW1lKQoreworICAgIEJPT0wgbWFpbkZyYW1lOwor
ICAgIGlmIChGQUlMRUQoZnJhbWUuaXNNYWluRnJhbWUoJm1haW5GcmFtZSkpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobWFpbkZyYW1lKSB7CisgICAgICAgIGNsZWFyUGFnZUxvYWRTdGF0
ZSgpOworICAgICAgICBwYWdlTG9hZFN0YXJ0ZWRBdFRpbWUoQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkpOworICAgIH0KK30KKwordm9pZCBQYWdlTG9hZFRlc3RDbGllbnQ6OmRpZENvbW1pdExv
YWQoKQoreworICAgICsrbV9mcmFtZXM7Cit9CisKK3ZvaWQgUGFnZUxvYWRUZXN0Q2xpZW50Ojpk
aWRGaXJzdExheW91dEZvck1haW5GcmFtZSgpCit7CisgICAgLy8gTm90aGluZyB0byBkbworfQor
Cit2b2lkIFBhZ2VMb2FkVGVzdENsaWVudDo6ZGlkSGFuZGxlT25Mb2FkRXZlbnRzKCkKK3sKKyAg
ICArK21fb25Mb2FkRXZlbnRzOworICAgIG1heWJlRW5kUGFnZUxvYWRTb29uKCk7Cit9CisKK3Zv
aWQgUGFnZUxvYWRUZXN0Q2xpZW50OjpkaWRGaW5pc2hMb2FkKCkKK3sKKyAgICBtX2N1cnJlbnRQ
YWdlTG9hZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICBtYXliZUVuZFBhZ2VMb2FkU29vbigpOworfQor
Cit2b2lkIFBhZ2VMb2FkVGVzdENsaWVudDo6ZGlkRmFpbExvYWQoKQoreworICAgIC0tbV9mcmFt
ZXM7Cit9CisKK3ZvaWQgUGFnZUxvYWRUZXN0Q2xpZW50OjpkaWRJbml0aWF0ZVJlc291cmNlTG9h
ZCh1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFyZXNvdXJjZUlkZW50
aWZpZXIpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJTYXcgcmVzb3VyY2VJZGVudGlmaWVyPTAu
IFRoaXMgbXVzdCBiZSBhIGJ1ZyBpbiB0aGUgbG9hZGVyIGNvZGUuIFRoZSByZXN1bHRzIG1heSBi
ZSBpbnZhbGlkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbG9hZGluZ1N1YnJl
c291cmNlcy5hZGQocmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBQYWdlTG9hZFRlc3RD
bGllbnQ6OmRpZEVuZFJlc291cmNlTG9hZCh1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpCit7
CisgICAgaWYgKCFyZXNvdXJjZUlkZW50aWZpZXIpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJT
YXcgcmVzb3VyY2VJZGVudGlmaWVyPTAuIFRoaXMgbXVzdCBiZSBhIGJ1ZyBpbiB0aGUgbG9hZGVy
IGNvZGUuIFRoZSByZXN1bHRzIG1heSBiZSBpbnZhbGlkLiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGF1dG8gZm91bmQgPSBtX2xvYWRpbmdTdWJyZXNvdXJjZXMuZmluZChyZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIGlmIChmb3VuZCA9PSBtX2xvYWRpbmdTdWJyZXNvdXJjZXMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2xvYWRpbmdTdWJyZXNvdXJjZXMucmVtb3ZlKGZv
dW5kKTsKKyAgICBtYXliZUVuZFBhZ2VMb2FkU29vbigpOworfQorCit2b2lkIFBhZ2VMb2FkVGVz
dENsaWVudDo6cGFnZUxvYWRFbmRlZEF0VGltZShDRkFic29sdXRlVGltZSBlbmRUaW1lKQorewor
ICAgIEFTU0VSVChtX2VuZFRpbWVzLnNpemUoKSA9PSBtX2N1cnJlbnRSZXBldGl0aW9uKTsKKyAg
ICBtX2VuZFRpbWVzLmFwcGVuZChlbmRUaW1lKTsKKworICAgIGlmIChtX2N1cnJlbnRSZXBldGl0
aW9uKSB7CisgICAgICAgIENGVGltZUludGVydmFsIHBhZ2VMb2FkVGltZSA9IChtX2VuZFRpbWVz
W21fY3VycmVudFJlcGV0aXRpb25dIC0gbV9zdGFydFRpbWVzW21fY3VycmVudFJlcGV0aXRpb25d
KTsKKyAgICAgICAgaWYgKHBhZ2VMb2FkVGltZSA+IG1fbG9uZ2VzdFRpbWUpCisgICAgICAgICAg
ICBtX2xvbmdlc3RUaW1lID0gcGFnZUxvYWRUaW1lOworCisgICAgICAgIG1fdG90YWxUaW1lICs9
IHBhZ2VMb2FkVGltZTsKKyAgICAgICAgbV90b3RhbFNxdWFyZVJvb3RzT2ZUaW1lICs9IHN0ZDo6
c3FydChwYWdlTG9hZFRpbWUpOworICAgICAgICBtX3BhZ2VzVGltZWQrKzsKKyAgICAgICAgbV9n
ZW9tZXRyaWNNZWFuUHJvZHVjdFN1bSAqPSBwYWdlTG9hZFRpbWU7CisgICAgfQorCisgICAgaWYg
KG1fcGFnZUxvYWRUZXN0aW5nKSB7CisgICAgICAgICsrbV9jdXJyZW50UmVwZXRpdGlvbjsKKyAg
ICAgICAgaWYgKG1fY3VycmVudFJlcGV0aXRpb24gIT0gbV9yZXBldGl0aW9ucykKKyAgICAgICAg
ICAgIG1faG9zdC0+bG9hZFVSTChtX3VybCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZHVtcFJ1blN0YXRpc3RpY3MoKTsKKyAgICAgICAgICAgIG1faG9zdC0+ZXhpdFByb2dyYW0oKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBQYWdlTG9hZFRlc3RDbGllbnQ6OmVuZFBhZ2VM
b2FkKFRpbWVyPFBhZ2VMb2FkVGVzdENsaWVudD4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVT
RUQodGltZXIsIHRpbWVyID09ICZtX3dhaXRGb3JMb2FkVG9SZWFsbHlFbmQpOworCisgICAgaWYg
KCFzaG91bGRDb25zaWRlclBhZ2VMb2FkRW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBh
Z2VMb2FkRW5kZWRBdFRpbWUobV9wYWdlTG9hZEVuZFRpbWUpOworICAgIGNsZWFyUGFnZUxvYWRT
dGF0ZSgpOworfQorCit2b2lkIFBhZ2VMb2FkVGVzdENsaWVudDo6Y2xlYXJQYWdlTG9hZFN0YXRl
KCkKK3sKKyAgICBtX2N1cnJlbnRQYWdlTG9hZEZpbmlzaGVkID0gZmFsc2U7CisgICAgbV9mcmFt
ZXMgPSAwOworICAgIG1fb25Mb2FkRXZlbnRzID0gMDsKKyAgICBtX3BhZ2VMb2FkRW5kVGltZSA9
IDA7CisgICAgbV9sb2FkaW5nU3VicmVzb3VyY2VzLmNsZWFyKCk7CisgICAgbV93YWl0Rm9yTG9h
ZFRvUmVhbGx5RW5kLmludmFsaWRhdGUoKTsKK30KKworYm9vbCBQYWdlTG9hZFRlc3RDbGllbnQ6
OnNob3VsZENvbnNpZGVyUGFnZUxvYWRFbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3Vy
cmVudFBhZ2VMb2FkRmluaXNoZWQgJiYgbV9vbkxvYWRFdmVudHMgPT0gbV9mcmFtZXMgJiYgbV9s
b2FkaW5nU3VicmVzb3VyY2VzLmlzRW1wdHkoKTsKK30KKwordm9pZCBQYWdlTG9hZFRlc3RDbGll
bnQ6Om1heWJlRW5kUGFnZUxvYWRTb29uKCkKK3sKKyAgICBpZiAoIXNob3VsZENvbnNpZGVyUGFn
ZUxvYWRFbmRlZCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9wYWdlTG9hZEVuZFRpbWUgPSBD
RkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKKyAgICBpZiAobV93YWl0Rm9yTG9hZFRvUmVhbGx5
RW5kLmlzVmFsaWQoKSkKKyAgICAgICAgbV93YWl0Rm9yTG9hZFRvUmVhbGx5RW5kLmludmFsaWRh
dGUoKTsKKyAgICBtX3dhaXRGb3JMb2FkVG9SZWFsbHlFbmQuc2NoZWR1bGUod2FpdEZvck5ld1Jl
c291cmNlTG9hZER1cmF0aW9uLCBmYWxzZSk7Cit9CisKKyNpZiBPUyhXSU5ET1dTKQordm9pZCBQ
YWdlTG9hZFRlc3RDbGllbnQ6OnNldFBhZ2VVUkwoY29uc3QgX2JzdHJfdCYgcGFnZVVSTCkKK3sK
KyAgICBtX3VybCA9IHBhZ2VVUkw7Cit9CisjZW5kaWYKKwordm9pZCBQYWdlTG9hZFRlc3RDbGll
bnQ6OmR1bXBSdW5TdGF0aXN0aWNzKCkKK3sKKyAgICBjb25zdCBsb25nIG1heFBhdGhMZW5ndGgg
PSAxMDI0OworCisgICAgY2hhciBmaWxlbmFtZVN1ZmZpeFttYXhQYXRoTGVuZ3RoICsgMV07CisK
KyNpZiBQTEFURk9STShXSU4pCisgICAgRFdPUkQgcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgp
OworICAgIF9zbnByaW50ZihmaWxlbmFtZVN1ZmZpeCwgc2l6ZW9mKGZpbGVuYW1lU3VmZml4KSwg
Ii4lZC50eHQiLCBwaWQpOworI2Vsc2UKKyAgICBsb25nIHBpZCA9IGdldHBpZCgpOworICAgIHNu
cHJpbnRmKGZpbGVuYW1lU3VmZml4LCBzaXplb2YoZmlsZW5hbWVTdWZmaXgpLCAiLiVkLnR4dCIs
IHBpZCk7CisjZW5kaWYKKworICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gIndlYmtpdF9wZXJm
b3JtYW5jZV9sb2ciOworICAgIGNoYXIgYWN0dWFsRmlsZW5hbWVbbWF4UGF0aExlbmd0aCArIDFd
OworCisjaWYgUExBVEZPUk0oV0lOKQorICAgIF9zbnByaW50ZihhY3R1YWxGaWxlbmFtZSwgc2l6
ZW9mKGFjdHVhbEZpbGVuYW1lKSwgIiVzJXMiLCBmaWxlbmFtZSwgZmlsZW5hbWVTdWZmaXgpOwor
I2Vsc2UKKyAgICBzbnByaW50ZihhY3R1YWxGaWxlbmFtZSwgc2l6ZW9mKGFjdHVhbEZpbGVuYW1l
KSwgIiVzJXMiLCBmaWxlbmFtZSwgZmlsZW5hbWVTdWZmaXgpOworI2VuZGlmCisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V1RGOjpGaWxlUHJpbnRTdHJlYW0+IGZpbGUgPSBXVEY6OkZpbGVQcmludFN0
cmVhbTo6b3BlbihhY3R1YWxGaWxlbmFtZSwgInciKTsKKyAgICBpZiAoIWZpbGUpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiBwYWdlIGxvYWQgcGVyZm9y
bWFuY2UgZGF0YSBmaWxlICVzIGZvciB3cml0aW5nLlxuIiwgYWN0dWFsRmlsZW5hbWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgV1RGTG9nQWx3YXlzKCIqKiogUGFnZSBsb2FkIHBl
cmZvcm1hbmNlIGRhdGEgb3V0cHV0IHRvIFwiJXNcIiAqKipcbiIsIGFjdHVhbEZpbGVuYW1lKTsK
KworICAgIGZpbGUtPnByaW50KCJJTkRJVklEVUFMIFVSTCBMT0FEIFRJTUVTOlxuIik7CisKKyAg
ICBDRlRpbWVJbnRlcnZhbCBwYWdlTG9hZFRpbWUgPSBtX2VuZFRpbWVzLmxhc3QoKSAtIG1fc3Rh
cnRUaW1lcy5sYXN0KCk7CisgICAgZmlsZS0+cHJpbnRmKCJMb2FkIFRpbWUgPSAlLjFmIG1zXHQl
c1xuIiwgcGFnZUxvYWRUaW1lICogMTAwMC4wLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV91
cmwpKTsKKworICAgIGRvdWJsZSBtZWFuVGltZSA9IDA7CisgICAgZG91YmxlIHNxdWFyZU1lYW5S
b290VGltZSA9IDA7CisgICAgZG91YmxlIGdlb21ldHJpY01lYW5UaW1lID0gMDsKKyAgICBpZiAo
bV9wYWdlc1RpbWVkKSB7CisgICAgICAgIG1lYW5UaW1lID0gbV90b3RhbFRpbWUgLyBtX3BhZ2Vz
VGltZWQ7CisgICAgICAgIHNxdWFyZU1lYW5Sb290VGltZSA9IChtX3RvdGFsU3F1YXJlUm9vdHNP
ZlRpbWUgLyBtX3BhZ2VzVGltZWQpICogKG1fdG90YWxTcXVhcmVSb290c09mVGltZSAvIG1fcGFn
ZXNUaW1lZCk7CisgICAgICAgIGdlb21ldHJpY01lYW5UaW1lID0gc3RkOjpwb3cobV9nZW9tZXRy
aWNNZWFuUHJvZHVjdFN1bSwgKDEuMCAvIG1fcGFnZXNUaW1lZCkpOworICAgIH0KKworICAgIGZp
bGUtPnByaW50ZigiRklOSVNIRUQ6ICAgIFRvdGFsIFRpbWUgPSAlLjFmIG1zXG4iLCBtX3RvdGFs
VGltZSAqIDEwMDAuMCk7CisgICAgZmlsZS0+cHJpbnRmKCIgICAgICAgICAgIExvbmdlc3QgVGlt
ZSA9ICUuMWYgbXNcbiIsIG1fbG9uZ2VzdFRpbWUgKiAxMDAwLjApOworICAgIGZpbGUtPnByaW50
ZigiICAgICAgICAgICAgICBNZWFuIFRpbWUgPSAlLjFmIG1zXG4iLCBtZWFuVGltZSAqIDEwMDAu
MCk7CisgICAgZmlsZS0+cHJpbnRmKCIgIFNxdWFyZS1NZWFuLVJvb3QgVGltZSA9ICUuMWYgbXNc
biIsIHNxdWFyZU1lYW5Sb290VGltZSAqIDEwMDAuMCk7CisgICAgZmlsZS0+cHJpbnRmKCIgICAg
R2VvbWV0cmljIE1lYW4gVGltZSA9ICUuMWYgbXNcbiIsIGdlb21ldHJpY01lYW5UaW1lICogMTAw
MC4wKTsKKyAgICBmaWxlLT5wcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxuIik7CisKKyAgICBmaWxlLT5mbHVzaCgpOworfQpJbmRleDogVG9vbHMvV2lu
TGF1bmNoZXIvUGFnZUxvYWRUZXN0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1
bmNoZXIvUGFnZUxvYWRUZXN0Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XaW5MYXVu
Y2hlci9QYWdlTG9hZFRlc3RDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1OCBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFBhZ2VMb2FkVGVzdENsaWVudF9oCisj
ZGVmaW5lIFBhZ2VMb2FkVGVzdENsaWVudF9oCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RkRhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Lmg+CisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit0ZW1wbGF0ZSA8Y2xhc3MgVGlt
ZXJGaXJlZENsYXNzPgorY2xhc3MgVGltZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRp
bWVyKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKFRpbWVyRmlyZWRDbGFzczo6KlRpbWVy
RmlyZWRGdW5jdGlvbikoVGltZXIqKTsKKworICAgIFRpbWVyKFRpbWVyRmlyZWRDbGFzcyogb2Jq
ZWN0LCBUaW1lckZpcmVkRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgICAgIDogbV9vYmplY3Qob2Jq
ZWN0KQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgeworICAgICAgICBBU1NF
UlRfQVJHKG9iamVjdCwgb2JqZWN0KTsKKyAgICAgICAgQVNTRVJUX0FSRyhmdW5jdGlvbiwgZnVu
Y3Rpb24pOworICAgIH0KKworICAgIH5UaW1lcigpIHsgaW52YWxpZGF0ZSgpOyB9CisKKyAgICB2
b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIu
Z2V0KCkpOworICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBib29sIGlz
VmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdGltZXIgJiYgQ0ZSdW5Mb29w
VGltZXJJc1ZhbGlkKG1fdGltZXIuZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgc2NoZWR1bGUo
Q0ZUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFpc1ZhbGlkKCkpOworCisgICAgICAgIENGVGltZUludGVydmFsIHJlcGVhdEludGVy
dmFsID0gcmVwZWF0aW5nID8gaW50ZXJ2YWwgOiAwOworICAgICAgICBDRlJ1bkxvb3BUaW1lckNv
bnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OworICAgICAgICBtX3RpbWVyID0g
YWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsLCByZXBlYXRJbnRlcnZhbCwgMCwgMCwgcnVu
TG9vcFRpbWVyRmlyZWQsICZjb250ZXh0KSk7CisKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIo
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGZpcmUoKSB7IChtX29iamVjdC0+Km1f
ZnVuY3Rpb24pKHRoaXMpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBydW5Mb29wVGltZXJGaXJlZChD
RlJ1bkxvb3BUaW1lclJlZiB0aW1lclJlZiwgdm9pZCogaW5mbykKKyAgICB7CisgICAgICAgIFRp
bWVyKiB0aW1lciA9IHN0YXRpY19jYXN0PFRpbWVyKj4oaW5mbyk7CisgICAgICAgIEFTU0VSVF9B
UkcodGltZXJSZWYsIHRpbWVyLT5tX3RpbWVyID09IHRpbWVyUmVmKTsKKworICAgICAgICBpZiAo
IUNGUnVuTG9vcFRpbWVyRG9lc1JlcGVhdCh0aW1lclJlZikpCisgICAgICAgICAgICBDRlJ1bkxv
b3BUaW1lckludmFsaWRhdGUodGltZXJSZWYpOworCisjaWZkZWYgX19PQkpDX18KKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbAorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVyLT5m
aXJlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUaW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0
OworICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0aW9uOworCisgICAgUmV0YWluUHRyPENG
UnVuTG9vcFRpbWVyUmVmPiBtX3RpbWVyOworfTsKKworY2xhc3MgV2luTGF1bmNoZXI7CisKK2Ns
YXNzIFBhZ2VMb2FkVGVzdENsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUxv
YWRUZXN0Q2xpZW50KTsKK3B1YmxpYzoKKyAgICBQYWdlTG9hZFRlc3RDbGllbnQoV2luTGF1bmNo
ZXIqIGhvc3QsIGJvb2wgcGFnZUxvYWRUZXN0aW5nID0gZmFsc2UpOworCisjaWYgT1MoV0lORE9X
UykKKyAgICB2b2lkIHNldFBhZ2VVUkwoY29uc3QgX2JzdHJfdCYpOworI2VuZGlmCisKKyAgICB2
b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKElXZWJGcmFtZSYpOworICAgIHZvaWQgZGlkQ29t
bWl0TG9hZCgpOworICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JNYWluRnJhbWUoKTsKKyAgICB2
b2lkIGRpZEhhbmRsZU9uTG9hZEV2ZW50cygpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpOwor
ICAgIHZvaWQgZGlkRmFpbExvYWQoKTsKKyAgICB2b2lkIGRpZEluaXRpYXRlUmVzb3VyY2VMb2Fk
KHVpbnQ2NF90KTsKKyAgICB2b2lkIGRpZEVuZFJlc291cmNlTG9hZCh1aW50NjRfdCk7CisKK3By
aXZhdGU6CisgICAgdm9pZCBlbmRQYWdlTG9hZChUaW1lcjxQYWdlTG9hZFRlc3RDbGllbnQ+Kik7
CisgICAgdm9pZCBtYXliZUVuZFBhZ2VMb2FkU29vbigpOworICAgIHZvaWQgY2xlYXJQYWdlTG9h
ZFN0YXRlKCk7CisgICAgYm9vbCBzaG91bGRDb25zaWRlclBhZ2VMb2FkRW5kZWQoKSBjb25zdDsK
KworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZFN0YXJ0ZWRBdFRpbWUoQ0ZBYnNvbHV0ZVRpbWUp
OworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZEVuZGVkQXRUaW1lKENGQWJzb2x1dGVUaW1lKTsK
KyAgICB2b2lkIGR1bXBSdW5TdGF0aXN0aWNzKCk7CisKKyAgICBXaW5MYXVuY2hlciogbV9ob3N0
OworICAgIENGQWJzb2x1dGVUaW1lIG1fcGFnZUxvYWRFbmRUaW1lOworICAgIENGVGltZUludGVy
dmFsIG1fdG90YWxUaW1lOworICAgIENGVGltZUludGVydmFsIG1fdG90YWxTcXVhcmVSb290c09m
VGltZTsKKyAgICBDRlRpbWVJbnRlcnZhbCBtX2xvbmdlc3RUaW1lOworICAgIFZlY3RvcjxDRkFi
c29sdXRlVGltZT4gbV9zdGFydFRpbWVzOworICAgIFZlY3RvcjxDRkFic29sdXRlVGltZT4gbV9l
bmRUaW1lczsKKyAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX2xvYWRpbmdTdWJyZXNvdXJjZXM7Cisg
ICAgVGltZXI8UGFnZUxvYWRUZXN0Q2xpZW50PiBtX3dhaXRGb3JMb2FkVG9SZWFsbHlFbmQ7Cisj
aWYgT1MoV0lORE9XUykKKyAgICBfYnN0cl90IG1fdXJsOworI2VuZGlmCisgICAgZG91YmxlIG1f
Z2VvbWV0cmljTWVhblByb2R1Y3RTdW07CisgICAgdW5zaWduZWQgbV9mcmFtZXM7CisgICAgdW5z
aWduZWQgbV9vbkxvYWRFdmVudHM7CisgICAgdW5zaWduZWQgbV9jdXJyZW50VVJMSW5kZXg7Cisg
ICAgdW5zaWduZWQgbV9jdXJyZW50UmVwZXRpdGlvbjsKKyAgICB1bnNpZ25lZCBtX3BhZ2VzVGlt
ZWQ7CisgICAgdW5zaWduZWQgbV9yZXBldGl0aW9uczsKKworICAgIGJvb2wgbV9jdXJyZW50UGFn
ZUxvYWRGaW5pc2hlZDsKKyAgICBib29sIG1fcGFnZUxvYWRUZXN0aW5nOworfTsKKworI2VuZGlm
IC8vIFBhZ2VMb2FkVGVzdENsaWVudF9oCkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9QcmludFdl
YlVJRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1ByaW50V2Vi
VUlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE3NDQ3OSkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1By
aW50V2ViVUlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBQcmludFdlYlVJRGVsZQogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFByaW50V2ViVUlEZWxlZ2F0ZTo6Y3JlYXRl
V2ViVmlld1dpdGhSZXF1ZXN0KElXZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElX
ZWJWaWV3KiopCitIUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dpdGhS
ZXF1ZXN0KElXZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJWaWV3KiopCiB7
CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNjQsNiAr
NjQsOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFByaW50V2ViVUlEZWxlCiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKKyAgICBpZiAoIXVybCkKKyAg
ICAgICAgcmV0dXJuIFNfT0s7CisKICAgICBzdGQ6OndzdHJpbmcgY29tbWFuZCA9IHN0ZDo6d3N0
cmluZyhMIlwiIikgKyBleGVjdXRhYmxlUGF0aCArIEwiXCIgIiArIChjb25zdCB3Y2hhcl90Kil1
cmw7CiAKICAgICBQUk9DRVNTX0lORk9STUFUSU9OIHByb2Nlc3NJbmZvcm1hdGlvbjsKSW5kZXg6
IFRvb2xzL1dpbkxhdW5jaGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XaW5MYXVuY2hlci9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBUb29scy9XaW5MYXVuY2hlci9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAic3Rk
YWZ4LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKworI2luY2x1ZGUgIlBh
Z2VMb2FkVGVzdENsaWVudC5oIgorI2luY2x1ZGUgIldpbkxhdW5jaGVyLmgiCisjaW5jbHVkZSA8
V2ViS2l0L1dlYktpdENPTUFQSS5oPgorI2luY2x1ZGUgPGNvbWlwLmg+CisjaW5jbHVkZSA8Y29t
bWN0cmwuaD4KKyNpbmNsdWRlIDxjb21tZGxnLmg+CisjaW5jbHVkZSA8b2JqYmFzZS5oPgorI2lu
Y2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDx3aW5pbmV0Lmg+CisKK0hSRVNVTFQgUmVzb3Vy
Y2VMb2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2Jq
ZWN0KQoreworICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmIChJc0VxdWFsSUlEKHJpaWQsIElJ
RF9JVW5rbm93bikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsSUlEKHJpaWQsIElJ
RF9JV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SVdlYlJlc291cmNlTG9hZERlbGVnYXRlKj4odGhpcyk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKKworICAgIEFkZFJlZigpOworICAgIHJldHVybiBTX09L
OworfQorCitVTE9ORyBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6QWRkUmVmKHZvaWQpCit7CisgICAg
cmV0dXJuICsrbV9yZWZDb3VudDsKK30KKworVUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJl
bGVhc2Uodm9pZCkKK3sKKyAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CisgICAgaWYg
KCFuZXdSZWYpCisgICAgICAgIGRlbGV0ZSB0aGlzOworCisgICAgcmV0dXJuIG5ld1JlZjsKK30K
KworSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1
ZXN0KElXZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3QqLCBJV2ViRGF0YVNvdXJjZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4g
RV9GQUlMOworCisgICAgbV9jbGllbnQtPnBhZ2VMb2FkVGVzdENsaWVudCgpLmRpZEluaXRpYXRl
UmVzb3VyY2VMb2FkKGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNV
TFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChJV2ViVmlldyosIHVuc2ln
bmVkIGxvbmcsIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlVSTFJlc3BvbnNlKiwgSVdlYkRhdGFTb3Vy
Y2UqLCBJV2ViVVJMUmVxdWVzdCoqKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hS
RVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShJV2ViVmlldyosIHVuc2lnbmVkIGxvbmcsIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSosIElXZWJEYXRhU291cmNlKikKK3sKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitI
UkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShJV2ViVmlldyosIHVuc2lnbmVkIGxvbmcsIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSosIElXZWJEYXRhU291cmNlKikKK3sKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitI
UkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoSVdlYlZpZXcq
LCB1bnNpZ25lZCBsb25nLCBJV2ViVVJMUmVzcG9uc2UqLCBJV2ViRGF0YVNvdXJjZSopCit7Cisg
ICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6
ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBVSU5ULCBJ
V2ViRGF0YVNvdXJjZSopCit7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBS
ZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZ0Zyb21EYXRhU291cmNlKElXZWJW
aWV3KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJV2ViRGF0YVNvdXJjZSopCit7CisgICAg
aWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIG1fY2xpZW50LT5w
YWdlTG9hZFRlc3RDbGllbnQoKS5kaWRFbmRSZXNvdXJjZUxvYWQoaWRlbnRpZmllcik7CisKKyAg
ICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmFp
bExvYWRpbmdXaXRoRXJyb3IoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIElX
ZWJFcnJvciosIElXZWJEYXRhU291cmNlKikKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAg
ICByZXR1cm4gRV9GQUlMOworCisgICAgbV9jbGllbnQtPnBhZ2VMb2FkVGVzdENsaWVudCgpLmRp
ZEVuZFJlc291cmNlTG9hZChpZGVudGlmaWVyKTsKKworICAgIHJldHVybiBTX09LOworfQorCitI
UkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpwbHVnSW5GYWlsZWRXaXRoRXJyb3IoSVdlYlZp
ZXcqLCBJV2ViRXJyb3IqLCBJV2ViRGF0YVNvdXJjZSopCit7CisgICAgcmV0dXJuIEVfTk9USU1Q
TDsKK30KSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkocmV2
aXNpb24gMCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZu
ZGVmIFJlc291cmNlTG9hZERlbGVnYXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VMb2FkRGVsZWdhdGVf
aAorCisjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgorCitjbGFzcyBXaW5MYXVuY2hlcjsKKwor
Y2xhc3MgUmVzb3VyY2VMb2FkRGVsZWdhdGUgOiBwdWJsaWMgSVdlYlJlc291cmNlTG9hZERlbGVn
YXRlIHsKK3B1YmxpYzoKKyAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZShXaW5MYXVuY2hlciogY2xp
ZW50KQorICAgICAgICA6IG1fcmVmQ291bnQoMSksIG1fY2xpZW50KGNsaWVudCkgeyB9CisKKyAg
ICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7CisgICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworCisgICAgLy8gSVdlYlJlc291cmNlTG9h
ZERlbGVnYXRlCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdChJV2ViVmlldyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYkRhdGFT
b3VyY2UqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3aWxsU2VuZFJlcXVlc3QoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlVSTFJlc3BvbnNlKiByZWRpcmVjdFJl
c3BvbnNlLCBJV2ViRGF0YVNvdXJjZSosIElXZWJVUkxSZXF1ZXN0KiogbmV3UmVxdWVzdCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShJV2ViVmlldyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgSVdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiwgSVdlYkRhdGFTb3VyY2UqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIElXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSosIElXZWJEYXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVSZXNwb25zZShJV2ViVmlldyosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgSVdlYlVSTFJlc3BvbnNlKiwgSVdlYkRhdGFTb3VyY2UqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgo
SVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFVJTlQgbGVuZ3RoLCBJV2ViRGF0
YVNvdXJjZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5p
c2hMb2FkaW5nRnJvbURhdGFTb3VyY2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIElXZWJEYXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKElXZWJWaWV3KiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBJV2ViRXJyb3IqLCBJV2ViRGF0YVNvdXJjZSopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnSW5GYWlsZWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2Vi
RXJyb3IqLCBJV2ViRGF0YVNvdXJjZSopOworCitwcml2YXRlOgorICAgIFdpbkxhdW5jaGVyKiBt
X2NsaWVudDsKKyAgICBpbnQgbV9yZWZDb3VudDsKK307CisKKyNlbmRpZiAvLyBSZXNvdXJjZUxv
YWREZWxlZ2F0ZQpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkocmV2aXNpb24gMTc0
NDc5KQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSwxMCArNTEsMTEgQEAgc3RhdGljIGNvbnN0IGludCBtYXhIaXN0b3J5U2l6ZSA9IDEw
OwogCiB0eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElXZWJNdXRhYmxlVVJMUmVxdWVzdCwg
Jl9fdXVpZG9mKElXZWJNdXRhYmxlVVJMUmVxdWVzdCk+PiBJV2ViTXV0YWJsZVVSTFJlcXVlc3RQ
dHI7CiAKLVdpbkxhdW5jaGVyOjpXaW5MYXVuY2hlcihIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFy
V25kLCBib29sIHVzZUxheWVyZWRXZWJWaWV3KQorV2luTGF1bmNoZXI6OldpbkxhdW5jaGVyKEhX
TkQgbWFpblduZCwgSFdORCB1cmxCYXJXbmQsIGJvb2wgdXNlTGF5ZXJlZFdlYlZpZXcsIGJvb2wg
cGFnZUxvYWRUZXN0aW5nKQogICAgIDogbV9oTWFpblduZChtYWluV25kKQogICAgICwgbV9oVVJM
QmFyV25kKHVybEJhclduZCkKICAgICAsIG1fdXNlTGF5ZXJlZFdlYlZpZXcodXNlTGF5ZXJlZFdl
YlZpZXcpCisgICAgLCBtX3BhZ2VMb2FkVGVzdENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VM
b2FkVGVzdENsaWVudD4odGhpcywgcGFnZUxvYWRUZXN0aW5nKSkKIHsKIH0KIApAQCAtMTIyLDYg
KzEyMywxMSBAQCBIUkVTVUxUIFdpbkxhdW5jaGVyOjpzZXRGcmFtZUxvYWREZWxlZ2F0CiAgICAg
cmV0dXJuIG1fd2ViVmlldy0+c2V0RnJhbWVMb2FkRGVsZWdhdGUoZnJhbWVMb2FkRGVsZWdhdGUp
OwogfQogCitIUkVTVUxUIFdpbkxhdW5jaGVyOjpzZXRGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUo
SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSogZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQor
eworICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5zZXRGcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGUoZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKTsKK30KKwogSFJFU1VMVCBXaW5MYXVuY2hlcjo6
c2V0VUlEZWxlZ2F0ZShJV2ViVUlEZWxlZ2F0ZSogdWlEZWxlZ2F0ZSkKIHsKICAgICBtX3VpRGVs
ZWdhdGUgPSB1aURlbGVnYXRlOwpAQCAtMTM0LDYgKzE0MCwxMyBAQCBIUkVTVUxUIFdpbkxhdW5j
aGVyOjpzZXRBY2Nlc3NpYmlsaXR5RGVsCiAgICAgcmV0dXJuIG1fd2ViVmlldy0+c2V0QWNjZXNz
aWJpbGl0eURlbGVnYXRlKGFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSk7CiB9CiAKKworSFJFU1VMVCBX
aW5MYXVuY2hlcjo6c2V0UmVzb3VyY2VMb2FkRGVsZWdhdGUoSVdlYlJlc291cmNlTG9hZERlbGVn
YXRlKiByZXNvdXJjZUxvYWREZWxlZ2F0ZSkKK3sKKyAgICBtX3Jlc291cmNlTG9hZERlbGVnYXRl
ID0gcmVzb3VyY2VMb2FkRGVsZWdhdGU7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+c2V0UmVzb3Vy
Y2VMb2FkRGVsZWdhdGUocmVzb3VyY2VMb2FkRGVsZWdhdGUpOworfQorCiBJV2ViRnJhbWVQdHIg
V2luTGF1bmNoZXI6Om1haW5GcmFtZSgpCiB7CiAgICAgSVdlYkZyYW1lUHRyIGZyYW1lUHRyOwpA
QCAtMzQ4LDYgKzM2MSw5IEBAIEhSRVNVTFQgV2luTGF1bmNoZXI6OmxvYWRVUkwoY29uc3QgQlNU
UiYKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCisgICAgaWYgKCFw
YXNzZWRVUkwpCisgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoX2JzdHJfdChk
ZWZhdWx0SFRNTCkuR2V0QlNUUigpLCAwKTsKKwogICAgIElXZWJNdXRhYmxlVVJMUmVxdWVzdFB0
ciByZXF1ZXN0OwogICAgIGhyID0gV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViTXV0YWJs
ZVVSTFJlcXVlc3QsIDAsIElJRF9JV2ViTXV0YWJsZVVSTFJlcXVlc3QsICh2b2lkKiopJnJlcXVl
c3QpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtMzY2LDMgKzM4Miw4IEBAIEhSRVNVTFQgV2lu
TGF1bmNoZXI6OmxvYWRVUkwoY29uc3QgQlNUUiYKIAogICAgIHJldHVybiBocjsKIH0KKwordm9p
ZCBXaW5MYXVuY2hlcjo6ZXhpdFByb2dyYW0oKQoreworICAgIDo6UG9zdE1lc3NhZ2UobV9oTWFp
blduZCwgc3RhdGljX2Nhc3Q8VUlOVD4oV01fQ09NTUFORCksIE1BS0VMUEFSQU0oSURNX0VYSVQs
IDApLCAwKTsKK30KSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkocmV2aXNpb24gMTc0NDc5
KQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgIlBhZ2VMb2Fk
VGVzdENsaWVudC5oIgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiB0eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElX
ZWJGcmFtZSwgJl9fdXVpZG9mKElXZWJGcmFtZSk+PiBJV2ViRnJhbWVQdHI7CkBAIC0zOSwxMCAr
NDEsMTEgQEAgdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJQWNjZXNzaWJpbAogdHlwZWRl
ZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViSW5zcGVjdG9yLCAmX191dWlkb2YoSVdlYkluc3Bl
Y3Rvcik+PiBJV2ViSW5zcGVjdG9yUHRyOwogdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJ
V2ViQ29yZVN0YXRpc3RpY3MsICZfX3V1aWRvZihJV2ViQ29yZVN0YXRpc3RpY3MpPj4gSVdlYkNv
cmVTdGF0aXN0aWNzUHRyOwogdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViQ2FjaGUs
ICZfX3V1aWRvZihJV2ViQ2FjaGUpPj4gSVdlYkNhY2hlUHRyOwordHlwZWRlZiBfY29tX3B0cl90
PF9jb21fSUlJRDxJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUsICZfX3V1aWRvZihJV2ViUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUpPj4gSVdlYlJlc291cmNlTG9hZERlbGVnYXRlUHRyOwogCiBjbGFzcyBX
aW5MYXVuY2hlciB7CiBwdWJsaWM6Ci0gICAgV2luTGF1bmNoZXIoSFdORCBtYWluV25kLCBIV05E
IHVybEJhclduZCwgYm9vbCB1c2VMYXllcmVkV2ViVmlldyA9IGZhbHNlKTsKKyAgICBXaW5MYXVu
Y2hlcihIV05EIG1haW5XbmQsIEhXTkQgdXJsQmFyV25kLCBib29sIHVzZUxheWVyZWRXZWJWaWV3
ID0gZmFsc2UsIGJvb2wgcGFnZUxvYWRUZXN0aW5nID0gZmFsc2UpOwogCiAgICAgSFJFU1VMVCBp
bml0KCk7CiAgICAgSFJFU1VMVCBwcmVwYXJlVmlld3MoSFdORCBtYWluV25kLCBjb25zdCBSRUNU
JiBjbGllbnRSZWN0LCBjb25zdCBCU1RSJiByZXF1ZXN0ZWRVUkwsIEhXTkQmIHZpZXdXbmQpOwpA
QCAtNTMsMTIgKzU2LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGxhdW5jaEluc3BlY3RvcigpOwog
ICAgIHZvaWQgbmF2aWdhdGVGb3J3YXJkT3JCYWNrd2FyZChIV05EIGhXbmQsIFVJTlQgbWVudUlE
KTsKICAgICB2b2lkIG5hdmlnYXRlVG9IaXN0b3J5KEhXTkQgaFduZCwgVUlOVCBtZW51SUQpOwor
ICAgIHZvaWQgZXhpdFByb2dyYW0oKTsKICAgICBib29sIHNlZWRJbml0aWFsRGVmYXVsdFByZWZl
cmVuY2VzKCk7CiAgICAgYm9vbCBzZXRUb0RlZmF1bHRQcmVmZXJlbmNlcygpOwogCiAgICAgSFJF
U1VMVCBzZXRGcmFtZUxvYWREZWxlZ2F0ZShJV2ViRnJhbWVMb2FkRGVsZWdhdGUqKTsKKyAgICBI
UkVTVUxUIHNldEZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZShJV2ViRnJhbWVMb2FkRGVsZWdhdGVQ
cml2YXRlKik7CiAgICAgSFJFU1VMVCBzZXRVSURlbGVnYXRlKElXZWJVSURlbGVnYXRlKik7CiAg
ICAgSFJFU1VMVCBzZXRBY2Nlc3NpYmlsaXR5RGVsZWdhdGUoSUFjY2Vzc2liaWxpdHlEZWxlZ2F0
ZSopOworICAgIEhSRVNVTFQgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGUoSVdlYlJlc291cmNlTG9h
ZERlbGVnYXRlKik7CiAKICAgICBJV2ViUHJlZmVyZW5jZXNQdHIgc3RhbmRhcmRQcmVmZXJlbmNl
cygpIHsgcmV0dXJuIG1fc3RhbmRhcmRQcmVmZXJlbmNlczsgIH0KICAgICBJV2ViUHJlZmVyZW5j
ZXNQcml2YXRlUHRyIHByaXZhdGVQcmVmZXJlbmNlcygpIHsgcmV0dXJuIG1fcHJlZnNQcml2YXRl
OyB9CkBAIC03Miw5ICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnb0JhY2soKTsKICAgICBi
b29sIGdvRm9yd2FyZCgpOwogCisgICAgUGFnZUxvYWRUZXN0Q2xpZW50JiBwYWdlTG9hZFRlc3RD
bGllbnQoKSB7IHJldHVybiAqbV9wYWdlTG9hZFRlc3RDbGllbnQ7IH0KKwogcHJpdmF0ZToKICAg
ICBzdGQ6OnZlY3RvcjxJV2ViSGlzdG9yeUl0ZW1QdHI+IG1faGlzdG9yeUl0ZW1zOwogCisgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkVGVzdENsaWVudD4gbV9wYWdlTG9hZFRlc3RDbGllbnQ7
CisKICAgICBJV2ViVmlld1B0ciBtX3dlYlZpZXc7CiAgICAgSVdlYlZpZXdQcml2YXRlUHRyIG1f
d2ViVmlld1ByaXZhdGU7CiAKQEAgLTg2LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBJV2ViRnJh
bWVMb2FkRGVsZWdhdGVQdHIgbV9mcmFtZUxvYWREZWxlZ2F0ZTsKICAgICBJV2ViVUlEZWxlZ2F0
ZVB0ciBtX3VpRGVsZWdhdGU7CiAgICAgSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZVB0ciBtX2FjY2Vz
c2liaWxpdHlEZWxlZ2F0ZTsKKyAgICBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQdHIgbV9yZXNv
dXJjZUxvYWREZWxlZ2F0ZTsKIAogICAgIElXZWJDb3JlU3RhdGlzdGljc1B0ciBtX3N0YXRpc3Rp
Y3M7CiAgICAgSVdlYkNhY2hlUHRyIG1fd2ViQ2FjaGU7CkluZGV4OiBUb29scy9XaW5MYXVuY2hl
ci9XaW5MYXVuY2hlcldlYkhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVy
L1dpbkxhdW5jaGVyV2ViSG9zdC5jcHAJKHJldmlzaW9uIDE3NDQ3OSkKKysrIFRvb2xzL1dpbkxh
dW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMTMtMjAx
NCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDExIEJyZW50IEZ1bGdoYW0uICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDExIEFwcGNlbGVyYXRvciwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFsZXggQ2hyaXN0ZW5zZW4uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2luTGF1bmNoZXJXZWJIb3N0
LmgiCiAKICNpbmNsdWRlICJET01EZWZhdWx0SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VMb2FkVGVz
dENsaWVudC5oIgogI2luY2x1ZGUgIldpbkxhdW5jaGVyLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dl
YktpdC5oPgogCkBAIC04MiwxMSArODMsMjEgQEAgSFJFU1VMVCBXaW5MYXVuY2hlcldlYkhvc3Q6
OnVwZGF0ZUFkZHJlcwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIDo6U2VuZE1lc3NhZ2UobV9oVVJMQmFyV25kLCBzdGF0aWNfY2FzdDxVSU5UPihXTV9TRVRU
RVhUKSwgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KGZyYW1lVVJMLkdldEJTVFIoKSkpOwor
ICAgIGlmIChmcmFtZVVSTC5sZW5ndGgoKSkgeworICAgICAgICBtX2NsaWVudC0+cGFnZUxvYWRU
ZXN0Q2xpZW50KCkuc2V0UGFnZVVSTChmcmFtZVVSTCk7CisgICAgICAgIG1fY2xpZW50LT5wYWdl
TG9hZFRlc3RDbGllbnQoKS5kaWRDb21taXRMb2FkKCk7CisgICAgfQorCisgICAgbG9hZFVSTChm
cmFtZVVSTCk7CiAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBXaW5MYXVuY2hlcldlYkhvc3Q6
OmxvYWRVUkwoX2JzdHJfdCYgdXJsKQoreworICAgIDo6U2VuZE1lc3NhZ2UobV9oVVJMQmFyV25k
LCBzdGF0aWNfY2FzdDxVSU5UPihXTV9TRVRURVhUKSwgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEFS
QU0+KHVybC5HZXRCU1RSKCkpKTsKK30KKwogSFJFU1VMVCBXaW5MYXVuY2hlcldlYkhvc3Q6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2ViRXJyb3IgKmVycm9y
LCBJV2ViRnJhbWUqKQogewogICAgIF9ic3RyX3QgZXJyb3JEZXNjcmlwdGlvbjsKQEAgLTEzNCw2
ICsxNDUsMTUgQEAgdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJRE9NRXZlbnRUYQogCiBI
UkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKElXZWJWaWV3
KiB3ZWJWaWV3LCBJV2ViRnJhbWUqIGZyYW1lKQogeworICAgIGlmICghZnJhbWUgfHwgIXdlYlZp
ZXcpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBCT09MIG1haW5GcmFtZTsKKyAg
ICBpZiAoU1VDQ0VFREVEKGZyYW1lLT5pc01haW5GcmFtZSgmbWFpbkZyYW1lKSkpIHsKKyAgICAg
ICAgaWYgKG1haW5GcmFtZSkKKyAgICAgICAgICAgIG1fY2xpZW50LT5wYWdlTG9hZFRlc3RDbGll
bnQoKS5kaWRGaW5pc2hMb2FkKCk7CisgICAgfQorCiAgICAgSURPTURvY3VtZW50UHRyIGRvYzsK
ICAgICBmcmFtZS0+RE9NRG9jdW1lbnQoJmRvYy5HZXRJbnRlcmZhY2VQdHIoKSk7CiAKQEAgLTE1
OCwzICsxNzgsNTQgQEAgSFJFU1VMVCBXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZEZpbmlzaExvYQog
CiAgICAgcmV0dXJuIGhyOwogfQorCitIUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSogZnJhbWUpCit7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIG1fY2xpZW50
LT5wYWdlTG9hZFRlc3RDbGllbnQoKS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgqZnJhbWUpOwor
ICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFp
bExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2ViRXJyb3IqLCBJV2ViRnJhbWUqKQoreworICAg
IG1fY2xpZW50LT5wYWdlTG9hZFRlc3RDbGllbnQoKS5kaWRGYWlsTG9hZCgpOworICAgIHJldHVy
biBTX09LOworfQorCitIUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWUoSVdlYlZpZXcqIHNlbmRlciwgSVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBJV2ViRGF0YVNvdXJjZVB0ciBkYXRhU291cmNlOworICAgIEhSRVNVTFQgaHIgPSBmcmFtZS0+
ZGF0YVNvdXJjZSgmZGF0YVNvdXJjZS5HZXRJbnRlcmZhY2VQdHIoKSk7CisgICAgaWYgKEZBSUxF
RChocikgfHwgIWRhdGFTb3VyY2UpCisgICAgICAgIGhyID0gZnJhbWUtPnByb3Zpc2lvbmFsRGF0
YVNvdXJjZSgmZGF0YVNvdXJjZS5HZXRJbnRlcmZhY2VQdHIoKSk7CisgICAgaWYgKEZBSUxFRCho
cikgfHwgIWRhdGFTb3VyY2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgSVdlYk11dGFibGVV
UkxSZXF1ZXN0UHRyIHJlcXVlc3Q7CisgICAgaHIgPSBkYXRhU291cmNlLT5yZXF1ZXN0KCZyZXF1
ZXN0LkdldEludGVyZmFjZVB0cigpKTsKKyAgICBpZiAoRkFJTEVEKGhyKSB8fCAhcmVxdWVzdCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBfYnN0cl90IGZyYW1lVVJMOworICAgIGhyID0gcmVx
dWVzdC0+bWFpbkRvY3VtZW50VVJMKGZyYW1lVVJMLkdldEFkZHJlc3MoKSk7CisgICAgaWYgKEZB
SUxFRChocikpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGZyYW1lVVJMLmxlbmd0aCgp
KQorICAgICAgICBtX2NsaWVudC0+cGFnZUxvYWRUZXN0Q2xpZW50KCkuZGlkSGFuZGxlT25Mb2Fk
RXZlbnRzKCk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZEZpcnN0TGF5b3V0SW5GcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSogZnJhbWUp
Cit7CisgICAgQk9PTCBtYWluRnJhbWU7CisgICAgaWYgKFNVQ0NFRURFRChmcmFtZS0+aXNNYWlu
RnJhbWUoJm1haW5GcmFtZSkpKSB7CisgICAgICAgIGlmIChtYWluRnJhbWUpCisgICAgICAgICAg
ICBtX2NsaWVudC0+cGFnZUxvYWRUZXN0Q2xpZW50KCkuZGlkRmlyc3RMYXlvdXRGb3JNYWluRnJh
bWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU19PSzsKK30KSW5kZXg6IFRvb2xzL1dpbkxhdW5j
aGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVy
L1dpbkxhdW5jaGVyV2ViSG9zdC5oCShyZXZpc2lvbiAxNzQ0NzkpCisrKyBUb29scy9XaW5MYXVu
Y2hlci9XaW5MYXVuY2hlcldlYkhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogCiBjbGFzcyBXaW5MYXVuY2hlcjsKIAotY2xhc3MgV2luTGF1bmNoZXJXZWJIb3N0IDogcHVi
bGljIElXZWJGcmFtZUxvYWREZWxlZ2F0ZSB7CitjbGFzcyBXaW5MYXVuY2hlcldlYkhvc3QgOiBw
dWJsaWMgSVdlYkZyYW1lTG9hZERlbGVnYXRlLCBwdWJsaWMgSVdlYkZyYW1lTG9hZERlbGVnYXRl
UHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgV2luTGF1bmNoZXJXZWJIb3N0KFdpbkxhdW5jaGVyKiBj
bGllbnQsIEhXTkQgdXJsQmFyKQogICAgICAgICA6IG1fcmVmQ291bnQoMSksIG1fY2xpZW50KGNs
aWVudCksIG1faFVSTEJhclduZCh1cmxCYXIpIHsgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAv
LyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmlldyosIElXZWJGcmFt
ZSopIHsgcmV0dXJuIFNfT0s7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSop
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSop
IHsgcmV0dXJuIFNfT0s7IH0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcihJV2ViVmlldyosIElXZWJFcnJvciosIElX
ZWJGcmFtZSopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDb21t
aXRMb2FkRm9yRnJhbWUoSVdlYlZpZXcqIHdlYlZpZXcsIElXZWJGcmFtZSopCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
Q2hhbmdlSWNvbnMoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uKElXZWJWaWV3
KiwgSEJJVE1BUCwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoSVdlYlZpZXcqLCBJ
V2ViRnJhbWUqKTsgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
RmFpbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2ViRXJyb3IqLCBJV2ViRnJhbWUqKSB7IHJl
dHVybiBTX09LOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZh
aWxMb2FkV2l0aEVycm9yKElXZWJWaWV3KiwgSVdlYkVycm9yKiwgSVdlYkZyYW1lKik7CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZUZvckZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkwoSVdlYlZpZXcqLCBCU1RSIHVybCwgZG91YmxlIGRlbGF5U2Vjb25kcywgREFURSBm
aXJlRGF0ZSwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKElXZWJW
aWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQpAQCAtNjQsNiArNjQsMTQgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgLyogW2xvY2FsXSAqLyBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZShJV2ViVmlldyosIEpTQ29udGV4dFJlZiwgSlNP
YmplY3RSZWYpICB7IHJldHVybiBTX09LOyB9CiAgICAgdmlydHVhbCAvKiBbbG9jYWxdICovIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2xlYXJXaW5kb3dPYmplY3QoSVdlYlZpZXcqLCBK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBJV2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9CiAK
KyAgICAvLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKElXZWJWaWV3
KiBzZW5kZXIsIElXZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmlyc3RMYXlvdXRJbkZyYW1lKElXZWJWaWV3KiBzZW5k
ZXIsIElXZWJGcmFtZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSopOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRJbkZyYW1lKElXZWJWaWV3KiBzZW5kZXIsIElXZWJGcmFtZSopICB7IHJldHVybiBT
X09LOyB9CisKKyAgICB2b2lkIGxvYWRVUkwoX2JzdHJfdCYpOworCiBwcm90ZWN0ZWQ6CiAgICAg
SFJFU1VMVCB1cGRhdGVBZGRyZXNzQmFyKElXZWJWaWV3Jik7CiAKSW5kZXg6IFRvb2xzL1dpbkxh
dW5jaGVyL1dpbk1haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbk1h
aW4uY3BwCShyZXZpc2lvbiAxNzQ0NzkpCisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5NYWluLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTggKzUzLDEwIEBAIGludCBXSU5BUEkgd1dpbk1haW4o
SElOU1RBTkNFLCBISU5TVEFOQ0UKIAogICAgIGJvb2wgdXNlc0xheWVyZWRXZWJWaWV3ID0gZmFs
c2U7CiAgICAgYm9vbCB1c2VGdWxsRGVza3RvcCA9IGZhbHNlOwotCisgICAgYm9vbCBwYWdlTG9h
ZFRlc3RpbmcgPSBmYWxzZTsKICAgICBfYnN0cl90IHJlcXVlc3RlZFVSTDsKLSAgICBpbnQgYXJn
YyA9IDA7Ci0gICAgV0NIQVIqKiBhcmd2ID0gQ29tbWFuZExpbmVUb0FyZ3ZXKEdldENvbW1hbmRM
aW5lVygpLCAmYXJnYyk7Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyArK2kpIHsKLSAg
ICAgICAgaWYgKCF3Y3NpY21wKGFyZ3ZbaV0sIEwiLS10cmFuc3BhcmVudCIpKQotICAgICAgICAg
ICAgdXNlc0xheWVyZWRXZWJWaWV3ID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoIXdjc2ljbXAo
YXJndltpXSwgTCItLWRlc2t0b3AiKSkKLSAgICAgICAgICAgIHVzZUZ1bGxEZXNrdG9wID0gdHJ1
ZTsKLSAgICAgICAgZWxzZSBpZiAoIXJlcXVlc3RlZFVSTCkKLSAgICAgICAgICAgIHJlcXVlc3Rl
ZFVSTCA9IGFyZ3ZbaV07Ci0gICAgfQorCisgICAgcGFyc2VDb21tYW5kTGluZSh1c2VzTGF5ZXJl
ZFdlYlZpZXcsIHVzZUZ1bGxEZXNrdG9wLCBwYWdlTG9hZFRlc3RpbmcsIHJlcXVlc3RlZFVSTCk7
CiAKICAgICAvLyBJbml0aWFsaXplIGdsb2JhbCBzdHJpbmdzCiAgICAgTG9hZFN0cmluZyhoSW5z
dCwgSURTX0FQUF9USVRMRSwgc3pUaXRsZSwgTUFYX0xPQURTVFJJTkcpOwpAQCAtMTA3LDcgKzk5
LDkgQEAgaW50IFdJTkFQSSB3V2luTWFpbihISU5TVEFOQ0UsIEhJTlNUQU5DRQogCiAgICAgUkVD
VCBjbGllbnRSZWN0ID0geyBzX3dpbmRvd1Bvc2l0aW9uLngsIHNfd2luZG93UG9zaXRpb24ueSwg
c193aW5kb3dQb3NpdGlvbi54ICsgc193aW5kb3dTaXplLmN4LCBzX3dpbmRvd1Bvc2l0aW9uLnkg
KyBzX3dpbmRvd1NpemUuY3kgfTsKIAotICAgIGdXaW5MYXVuY2hlciA9IG5ldyBXaW5MYXVuY2hl
cihoTWFpblduZCwgaFVSTEJhclduZCwgdXNlc0xheWVyZWRXZWJWaWV3KTsKKyAgICBXaW5MYXVu
Y2hlcldlYkhvc3QqIHdlYkhvc3QgPSBudWxscHRyOworCisgICAgZ1dpbkxhdW5jaGVyID0gbmV3
IFdpbkxhdW5jaGVyKGhNYWluV25kLCBoVVJMQmFyV25kLCB1c2VzTGF5ZXJlZFdlYlZpZXcsIHBh
Z2VMb2FkVGVzdGluZyk7CiAgICAgaWYgKCFnV2luTGF1bmNoZXIpCiAgICAgICAgIGdvdG8gZXhp
dDsKIApAQCAtMTI0LDcgKzExOCwxMyBAQCBpbnQgV0lOQVBJIHdXaW5NYWluKEhJTlNUQU5DRSwg
SElOU1RBTkNFCiAgICAgaWYgKCFzZXRDYWNoZUZvbGRlcigpKQogICAgICAgICBnb3RvIGV4aXQ7
CiAKLSAgICBociA9IGdXaW5MYXVuY2hlci0+c2V0RnJhbWVMb2FkRGVsZWdhdGUobmV3IFdpbkxh
dW5jaGVyV2ViSG9zdChnV2luTGF1bmNoZXIsIGhVUkxCYXJXbmQpKTsKKyAgICB3ZWJIb3N0ID0g
bmV3IFdpbkxhdW5jaGVyV2ViSG9zdChnV2luTGF1bmNoZXIsIGhVUkxCYXJXbmQpOworCisgICAg
aHIgPSBnV2luTGF1bmNoZXItPnNldEZyYW1lTG9hZERlbGVnYXRlKHdlYkhvc3QpOworICAgIGlm
IChGQUlMRUQoaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBociA9IGdXaW5MYXVuY2hl
ci0+c2V0RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKHdlYkhvc3QpOwogICAgIGlmIChGQUlMRUQo
aHIpKQogICAgICAgICBnb3RvIGV4aXQ7CiAKQEAgLTEzNiw2ICsxMzYsMTAgQEAgaW50IFdJTkFQ
SSB3V2luTWFpbihISU5TVEFOQ0UsIEhJTlNUQU5DRQogICAgIGlmIChGQUlMRUQgKGhyKSkKICAg
ICAgICAgZ290byBleGl0OwogCisgICAgaHIgPSBnV2luTGF1bmNoZXItPnNldFJlc291cmNlTG9h
ZERlbGVnYXRlKG5ldyBSZXNvdXJjZUxvYWREZWxlZ2F0ZShnV2luTGF1bmNoZXIpKTsKKyAgICBp
ZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgZ290byBleGl0OworCiAgICAgaHIgPSBnV2luTGF1bmNo
ZXItPnByZXBhcmVWaWV3cyhoTWFpblduZCwgY2xpZW50UmVjdCwgcmVxdWVzdGVkVVJMLkdldEJT
VFIoKSwgZ1ZpZXdXaW5kb3cpOwogICAgIGlmIChGQUlMRUQoaHIpIHx8ICFnVmlld1dpbmRvdykK
ICAgICAgICAgZ290byBleGl0OwpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvc3RkYWZ4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvc3RkYWZ4LmgJKHJldmlzaW9uIDE3NDQ3OSkK
KysrIFRvb2xzL1dpbkxhdW5jaGVyL3N0ZGFmeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3
MCw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmluZXQuaD4KICNpbmNs
dWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKICNp
ZiAwCiAvLyBWaXN1YWwgU3R1ZGlvIExlYWsgRGV0ZWN0aW9uCkluZGV4OiBUb29scy9XaW5MYXVu
Y2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyTGliLnZjeHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxp
Yi52Y3hwcm9qCShyZXZpc2lvbiAxNzQ0NzkpCisrKyBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVu
Y2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyTGliLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIx
OCw3ICsyMTgsOSBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxET01EZWZhdWx0SW1wbC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYWdl
TG9hZFRlc3RDbGllbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHJpbnRX
ZWJVSURlbGVnYXRlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFJlc291cmNl
TG9hZERlbGVnYXRlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0ZGFmeC5j
cHAiPgogICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFk
ZXI+CiAgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+
CkBAIC0yNDAsNyArMjQyLDkgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEFjY2Vzc2liaWxpdHlEZWxlZ2F0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRE9NRGVmYXVsdEltcGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBh
Z2VMb2FkVGVzdENsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHJpbnRX
ZWJVSURlbGVnYXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3RkYWZ4LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxXaW5MYXVuY2hlci5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cV2luTGF1bmNoZXJSZXBsYWNlLmgiIC8+CkluZGV4OiBUb29scy9X
aW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9qL1dpbkxhdW5jaGVyTGliLnZjeHByb2ouZmls
dGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3hwcm9q
L1dpbkxhdW5jaGVyTGliLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTc0NDc5KQorKysgVG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmN4cHJvai9XaW5MYXVuY2hlckxpYi52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDEyIEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxDb21tb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5jcHAiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhZ2VMb2Fk
VGVzdENsaWVudC5jcHAiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxET01EZWZhdWx0SW1wbC5oIj4KQEAgLTc1LDYgKzgxLDEyIEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxXaW5MYXVuY2hlcldlYkhvc3QuaCI+CiAgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCI+CisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cUGFnZUxvYWRUZXN0Q2xpZW50LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVt
R3JvdXA+CiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSJXaW5MYXVuY2hlckxpYi5yYyI+
Cg==
</data>
<flag name="review"
          id="264477"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>