<?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>128930</bug_id>
          
          <creation_ts>2014-02-17 13:20:45 -0800</creation_ts>
          <short_desc>Add history delegate to WKWebView</short_desc>
          <delta_ts>2014-02-17 16:39:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981625</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-17 13:20:45 -0800</bug_when>
    <thetext>Add history delegate to WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981626</commentid>
    <comment_count>1</comment_count>
      <attachid>224416</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-17 13:21:03 -0800</bug_when>
    <thetext>Created attachment 224416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981627</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 13:21:46 -0800</bug_when>
    <thetext>Attachment 224416 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:46:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 10 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>981689</commentid>
    <comment_count>3</comment_count>
      <attachid>224416</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-17 15:50:44 -0800</bug_when>
    <thetext>Comment on attachment 224416
Patch

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

r=me but there is a critical typo

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKHistoryDelegatePrivate.h:40
&gt; +- (void)webView:(WKWebView *)webView didNavigateWithNavigationData:(WKNavigationData *)navigationData;
&gt; +- (void)webView:(WKWebView *)webView didPerformClientRedirectFromURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL;
&gt; +- (void)webView:(WKWebView *)webView didPerformServerRedirectFromURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL;
&gt; +- (void)webView:(WKWebView *)webView didUpdateHistoryTitle:(NSString *)title forURL:(NSURL *)URL;

Let’s prefix all methods in private delegates with _.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:465
&gt; +- (id&lt;WKHistoryDelegatePrivate&gt;)_historyDelegate

Missing space after id

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:470
&gt; +- (void)_setHistoryDelegate:(id&lt;WKHistoryDelegatePrivate&gt;)historyDelegate

Ditto

&gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:174
&gt; +    [historyDelegate webView:m_webView didPerformClientRedirectFromURL:wrapper(*API::URL::create(sourceURL)) toURL:wrapper(*API::URL::create(destinationURL))];

Let’s avoid wrappers here and use +[NSURL _web_URLWithWTFString:].

&gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:186
&gt; +    [historyDelegate webView:m_webView didPerformClientRedirectFromURL:wrapper(*API::URL::create(sourceURL)) toURL:wrapper(*API::URL::create(destinationURL))];

Typo: s/Client/Server/!
Let’s avoid wrappers here and use +[NSURL _web_URLWithWTFString:].

&gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:198
&gt; +    [historyDelegate.get() webView:m_webView didUpdateHistoryTitle:wrapper(*API::String::create(title)) forURL:wrapper(*API::URL::create(url))];

Let’s avoid wrappers here and use the ability of WTF::String to turn into an NSString (and _web_URLWithWTFString:).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981707</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-17 16:39:15 -0800</bug_when>
    <thetext>Committed r164258: &lt;http://trac.webkit.org/changeset/164258&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224416</attachid>
            <date>2014-02-17 13:21:03 -0800</date>
            <delta_ts>2014-02-17 15:50:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128930-20140217132102.patch</filename>
            <type>text/plain</type>
            <size>27610</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjA5YTIyNDRjNGY0ZmMz
ODgyN2QyMDA5ODQ1MGY4ZmM3ZTQ2YzZjMy4uZjNkMzgwY2ZlZDNiZDY4MGQ0MmZmMDEwZmI0ZTJl
OTE5ZjJjZmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE0LTAyLTE3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIGhpc3Rvcnkg
ZGVsZWdhdGUgdG8gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjg5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIaXN0b3J5RGVsZWdhdGVQcml2
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
Q2xhc3MubW06CisgICAgICAgICgtW1dLUHJvY2Vzc0NsYXNzIGluaXRXaXRoQ29uZmlndXJhdGlv
bjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9oaXN0b3J5RGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRIaXN0b3J5RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0hpc3RvcnlDbGll
bnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmguCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0hpc3RvcnlDbGllbnQu
bW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpIaXN0b3J5Q2xpZW50OjpIaXN0b3J5Q2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6SGlzdG9yeUNsaWVudDo6fkhpc3RvcnlDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpIaXN0b3J5Q2xpZW50OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Okhpc3RvcnlDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCk6CisgICAgICAgIChXZWJLaXQ6Okhpc3RvcnlDbGllbnQ6OmRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6Okhpc3RvcnlDbGllbnQ6OmRpZFVwZGF0ZUhpc3Rv
cnlUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6Okhpc3RvcnlDbGllbnQ6OnBvcHVsYXRlVmlzaXRl
ZExpbmtzKToKKyAgICAgICAgKFdlYktpdDo6SGlzdG9yeUNsaWVudDo6c2hvdWxkVHJhY2tWaXNp
dGVkTGlua3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpuYXZpZ2F0aW9uU3RhdGVzKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
On5OYXZpZ2F0aW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmZy
b21XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpoaXN0b3J5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OnNldEhpc3RvcnlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworMjAxNC0wMi0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYktpdEdUSysgc2hvdWxkIHN0b3AgY2FsbGluZyBm
dW5jdGlvbnMgdG8gc2V0IHRoZSB2aWV3IHNvdXJjZSBtb2RlCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg5MTkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIaXN0b3J5RGVsZWdhdGVQcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ0MGFkMGJmMTdhNDhiYjgyNTA1ZGFiOTRlMTM2NGZlMjBlYjg5
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLTmF2aWdhdGlv
bkRhdGE7CitAY2xhc3MgV0tXZWJWaWV3OworCitAcHJvdG9jb2wgV0tIaXN0b3J5RGVsZWdhdGVQ
cml2YXRlIDxOU09iamVjdD4KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOihXS05hdmlnYXRpb25EYXRhICopbmF2aWdh
dGlvbkRhdGE7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0RnJvbVVSTDooTlNVUkwgKilzb3VyY2VVUkwgdG9VUkw6KE5TVVJMICop
ZGVzdGluYXRpb25VUkw7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTDooTlNVUkwgKilzb3VyY2VVUkwgdG9VUkw6KE5T
VVJMICopZGVzdGluYXRpb25VUkw7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkVXBkYXRlSGlzdG9yeVRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGZvclVSTDooTlNVUkwg
KilVUkw7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0NsYXNzLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NDbGFzcy5tbQppbmRleCBiMzc1ZjNjZjViZDEyMGZhOGFi
Mjg4N2UxZjEwYTkxN2RhZmY5ZTBhLi40MTExOGY3YWE3NjY5MTA5NWY4OTgyNzUyYWQ5Y2JkMjM1
ZjUzNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc0NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzQ2xhc3MubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVE
CiAKKyNpbXBvcnQgIkhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1w
b3J0ICJXS1Byb2Nlc3NDbGFzc0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJD
b250ZXh0LmgiCkBAIC02NSw2ICs2Niw3IEBACiAgICAgfQogCiAgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxXZWJLaXQ6OldlYkNvbnRleHQ+KHNlbGYsIGJ1bmRsZVBhdGgpOwor
ICAgIF9jb250ZXh0LT5zZXRIaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpI
aXN0b3J5Q2xpZW50PigpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBkZjNlZjkzOGM3YmNk
Y2YwMmQ5MmJjNDdhNDBlYTljNWRhYmIxOTY0Li5kMjNjMjgzMTFhZmY1NzZmM2I1NzQ5NDFjYjc5
ZDM5NzRhNzhiMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExp
c3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldL
SGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1ByZWZlcmVu
Y2VzSW50ZXJuYWwuaCIKQEAgLTQ2MSw2ICs0NjIsMTYgQEAKICAgICByZXR1cm4gX29ic2VydmVk
UmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM7CiB9CiAKKy0gKGlkPFdLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZT4pX2hpc3RvcnlEZWxlZ2F0ZQoreworICAgIHJldHVybiBbX25hdmlnYXRpb25TdGF0ZS0+
aGlzdG9yeURlbGVnYXRlKCkubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKK30KKworLSAodm9pZClf
c2V0SGlzdG9yeURlbGVnYXRlOihpZDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+KWhpc3RvcnlE
ZWxlZ2F0ZQoreworICAgIF9uYXZpZ2F0aW9uU3RhdGUtPnNldEhpc3RvcnlEZWxlZ2F0ZShoaXN0
b3J5RGVsZWdhdGUpOworfQorCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZXMgbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMpCiB7
CiAgICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
aW5kZXggNjY0ZGExMmRkMjQ5MzcwMDQ2YWRkMjVlMTAyMzFjNWMwZmJjZjMxMS4uZTIzOWE3MzU1
NjBkNjZhNzc1NDZkYTI4NzU3ODZkMmI3YTU2YTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM0LDYgKzM0
LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzKSB7CiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBXS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OworQHByb3RvY29sIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZTsK
IAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKIApAQCAtNDIsNiArNDMsOCBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMp
IHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0T2JzZXJ2ZWRSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50czopIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIF9vYnNlcnZlZFJlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVy
PV9zZXRIaXN0b3J5RGVsZWdhdGU6KSBpZCA8V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlPiBfaGlz
dG9yeURlbGVnYXRlOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0TWluaW11bUxheW91dFNpemVPdmVycmlkZTopIENHU2l6ZSBfbWluaW11
bUxheW91dFNpemVPdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL0hpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9IaXN0b3J5Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIyMzMzNzk2NThlNGE5OTAxZDExYWEzOGRi
Nzg1YzFlMGNlN2QwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9IaXN0b3J5Q2xpZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSGlzdG9yeUNsaWVudF9oCisjZGVmaW5lIEhpc3RvcnlDbGllbnRfaAorCisjaW1wb3J0
ICJXS0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQSUhp
c3RvcnlDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEhpc3RvcnlDbGll
bnQgOiBwdWJsaWMgQVBJOjpIaXN0b3J5Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBIaXN0b3J5Q2xp
ZW50KCk7CisgICAgfkhpc3RvcnlDbGllbnQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBUEk6Okhp
c3RvcnlDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3Rv
cmUmLCBXZWJGcmFtZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdChXZWJDb250ZXh0KiwgV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJG
cmFtZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdChXZWJDb250ZXh0KiwgV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIHNv
dXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJD
b250ZXh0KiwgV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBX
VEY6OlN0cmluZyYgdXJsLCBXZWJGcmFtZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKFdlYkNvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoKSBjb25zdCBvdmVycmlkZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2Vu
ZGlmIC8vIEhpc3RvcnlDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL0hpc3RvcnlDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvSGlzdG9yeUNsaWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YThkZTgxYmFhMjQyNGZhMjhkOTMxNzRh
ZGQ5MGNlNTVhNWY0MTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL0hpc3RvcnlDbGllbnQubW0KQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSGlzdG9yeUNsaWVudC5oIgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCAiTmF2aWdhdGlvblN0YXRlLmgiCisjaW1wb3J0ICJXS0hp
c3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0hpc3RvcnlDbGllbnQ6Okhpc3RvcnlDbGllbnQoKQoreworfQor
CitIaXN0b3J5Q2xpZW50Ojp+SGlzdG9yeUNsaWVudCgpCit7Cit9CisKK3ZvaWQgSGlzdG9yeUNs
aWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViQ29udGV4dCosIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5LCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBuYXZpZ2F0
aW9uRGF0YVN0b3JlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5KQoreworICAgIGF1dG8m
IG5hdmlnYXRpb25TdGF0ZSA9IE5hdmlnYXRpb25TdGF0ZTo6ZnJvbVdlYlBhZ2UoKndlYlBhZ2VQ
cm94eSk7CisKKyAgICBuYXZpZ2F0aW9uU3RhdGUuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEobmF2aWdhdGlvbkRhdGFTdG9yZSk7Cit9CisKK3ZvaWQgSGlzdG9yeUNsaWVudDo6ZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KFdlYkNvbnRleHQqLCBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94
eSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5KQoreworICAgIGF1dG8mIG5h
dmlnYXRpb25TdGF0ZSA9IE5hdmlnYXRpb25TdGF0ZTo6ZnJvbVdlYlBhZ2UoKndlYlBhZ2VQcm94
eSk7CisKKyAgICBuYXZpZ2F0aW9uU3RhdGUuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHNvdXJj
ZVVSTCwgZGVzdGluYXRpb25VUkwpOworfQorCit2b2lkIEhpc3RvcnlDbGllbnQ6OmRpZFBlcmZv
cm1TZXJ2ZXJSZWRpcmVjdChXZWJDb250ZXh0KiwgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHks
IGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5h
dGlvblVSTCwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSkKK3sKKyAgICBhdXRvJiBuYXZp
Z2F0aW9uU3RhdGUgPSBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp3ZWJQYWdlUHJveHkp
OworCisgICAgbmF2aWdhdGlvblN0YXRlLmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChzb3VyY2VV
UkwsIGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBIaXN0b3J5Q2xpZW50OjpkaWRVcGRhdGVI
aXN0b3J5VGl0bGUoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5LCBjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFdlYkZyYW1lUHJv
eHkqIHdlYkZyYW1lUHJveHkpCit7CisgICAgYXV0byYgbmF2aWdhdGlvblN0YXRlID0gTmF2aWdh
dGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqd2ViUGFnZVByb3h5KTsKKworICAgIG5hdmlnYXRpb25T
dGF0ZS5kaWRVcGRhdGVIaXN0b3J5VGl0bGUodGl0bGUsIHVybCk7Cit9CisKK3ZvaWQgSGlzdG9y
eUNsaWVudDo6cG9wdWxhdGVWaXNpdGVkTGlua3MoV2ViQ29udGV4dCopCit7Cit9CisKK2Jvb2wg
SGlzdG9yeUNsaWVudDo6c2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2Ugd2ViS2l0CisKKyNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCmluZGV4IGMxMGNjOTFkM2I5NThiNjhmNDY5ZjExNDVlOTE5MmMzMmZkOTZlNjYu
LmM5NmUzNTM0ZWJlYjc2MTI0YWM1ZTgwNDdjNmQ5NzQ5Zjk2NDg5N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTM5LDIzICsz
OSwzNyBAQAogCiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLV2ViVmlldzsKK0Bwcm90
b2NvbCBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU7CiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFT
dG9yZTsKKwogY2xhc3MgTmF2aWdhdGlvblN0YXRlIDogcHJpdmF0ZSBQYWdlTG9hZFN0YXRlOjpP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvblN0YXRlKFdLV2ViVmll
dyAqKTsKICAgICB+TmF2aWdhdGlvblN0YXRlKCk7CiAKKyAgICBzdGF0aWMgTmF2aWdhdGlvblN0
YXRlJiBmcm9tV2ViUGFnZShXZWJQYWdlUHJveHkmKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OlBvbGljeUNsaWVudD4gY3JlYXRlUG9saWN5Q2xpZW50KCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBjcmVhdGVMb2FkZXJDbGllbnQoKTsKIAogICAgIFJldGFp
blB0cjxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+ID4gbmF2aWdhdGlvbkRlbGVnYXRlKCk7CiAg
ICAgdm9pZCBzZXROYXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPik7
CiAKKyAgICBSZXRhaW5QdHI8aWQgPFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZT4gPiBoaXN0b3J5
RGVsZWdhdGUoKTsKKyAgICB2b2lkIHNldEhpc3RvcnlEZWxlZ2F0ZShpZCA8V0tIaXN0b3J5RGVs
ZWdhdGVQcml2YXRlPik7CisKICAgICBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBjcmVhdGVMb2Fk
UmVxdWVzdE5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklELCBOU1VSTFJlcXVlc3QgKik7
CiAKKyAgICAvLyBDYWxsZWQgYnkgdGhlIGhpc3RvcnkgY2xpZW50LgorICAgIHZvaWQgZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJik7CisgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV1RGOjpTdHJp
bmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKTsKKyAgICB2
b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJM
LCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgZGlkVXBkYXRl
SGlzdG9yeVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHVybCk7CisKIHByaXZhdGU6CiAgICAgY2xhc3MgUG9saWN5Q2xpZW50IDogcHVibGljIEFQSTo6
UG9saWN5Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC0xMjUsNiArMTM5LDE0IEBAIHByaXZhdGU6
CiAgICAgfSBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHM7CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPj4gbV9uYXZpZ2F0aW9uczsKKworICAgIFdlYWtP
YmpDUHRyPGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+ID4gbV9oaXN0b3J5RGVsZWdhdGU7
CisgICAgc3RydWN0IHsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEgOiAxOworICAgICAgICBib29sIHdlYlZpZXdEaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RGcm9tVVJMVG9VUkwgOiAxOworICAgICAgICBib29sIHdlYlZpZXdEaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3RGcm9tVVJMVG9VUkwgOiAxOworICAgICAgICBib29sIHdlYlZpZXdEaWRVcGRhdGVI
aXN0b3J5VGl0bGVGb3JVUkwgOiAxOworICAgIH0gbV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAyYTg5MzNmZmFmYmZlOGFiNmYzN2Ux
MTExNDE1MTQ5Y2M3MmJiMjFiLi43NjAxNGQ2YzA1N2Y4ZmQ2Njk1MDc5NDc4ODM0MTA4NTFjZjIw
NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KQEAgLTI4LDM3ICsyOCw2NSBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2lt
cG9ydCAiQVBJTmF2aWdhdGlvbkRhdGEuaCIKKyNpbXBvcnQgIkFQSVVSTC5oIgorI2ltcG9ydCAi
QVBJU3RyaW5nLmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2ltcG9ydCAi
UGFnZUxvYWRTdGF0ZS5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJh
bWVJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgor
I2ltcG9ydCAiV0tOU1N0cmluZy5oIgorI2ltcG9ydCAiV0tOU1VSTC5oIgogI2ltcG9ydCAiV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJXS05TVVJMUHJvdGVjdGlv
blNwYWNlLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oIgorI2ltcG9y
dCAiV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0
ICJXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViRnJhbWVQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK3N0YXRpYyBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIE5hdmlnYXRpb25TdGF0ZSo+JiBuYXZp
Z2F0aW9uU3RhdGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQ
YWdlUHJveHkqLCBOYXZpZ2F0aW9uU3RhdGUqPj4gbmF2aWdhdGlvblN0YXRlczsKKworICAgIHJl
dHVybiBuYXZpZ2F0aW9uU3RhdGVzOworfQorCiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25T
dGF0ZShXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAs
IG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcygpCisgICAgLCBtX2hpc3RvcnlEZWxlZ2F0ZU1l
dGhvZHMoKQogewogICAgIEFTU0VSVChtX3dlYlZpZXctPl9wYWdlKTsKKyAgICBBU1NFUlQoIW5h
dmlnYXRpb25TdGF0ZXMoKS5jb250YWlucyhtX3dlYlZpZXctPl9wYWdlLmdldCgpKSk7CiAKKyAg
ICBuYXZpZ2F0aW9uU3RhdGVzKCkuYWRkKG1fd2ViVmlldy0+X3BhZ2UuZ2V0KCksIHRoaXMpOwog
ICAgIG1fd2ViVmlldy0+X3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqdGhpcyk7
CiB9CiAKIE5hdmlnYXRpb25TdGF0ZTo6fk5hdmlnYXRpb25TdGF0ZSgpCiB7CisgICAgQVNTRVJU
KG5hdmlnYXRpb25TdGF0ZXMoKS5nZXQobV93ZWJWaWV3LT5fcGFnZS5nZXQoKSkgPT0gdGhpcyk7
CisKKyAgICBuYXZpZ2F0aW9uU3RhdGVzKCkucmVtb3ZlKG1fd2ViVmlldy0+X3BhZ2UuZ2V0KCkp
OwogICAgIG1fd2ViVmlldy0+X3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5yZW1vdmVPYnNlcnZlcigq
dGhpcyk7CiB9CiAKK05hdmlnYXRpb25TdGF0ZSYgTmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKK3sKKyAgICBBU1NFUlQobmF2aWdhdGlvblN0
YXRlcygpLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKKworICAgIHJldHVybiAqbmF2aWdhdGlv
blN0YXRlcygpLmdldCgmd2ViUGFnZVByb3h5KTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPEFQSTo6
TG9hZGVyQ2xpZW50PiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZUxvYWRlckNsaWVudCgpCiB7CiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50PigqdGhpcyk7CkBAIC05NCw2
ICsxMjIsMjEgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6KV07CiB9CiAK
K1JldGFpblB0cjxpZCA8V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlPiA+IE5hdmlnYXRpb25TdGF0
ZTo6aGlzdG9yeURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9oaXN0b3J5RGVsZWdhdGUuZ2V0
KCk7Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXRIaXN0b3J5RGVsZWdhdGUoaWQgPFdL
SGlzdG9yeURlbGVnYXRlUHJpdmF0ZT4gaGlzdG9yeURlbGVnYXRlKQoreworICAgIG1faGlzdG9y
eURlbGVnYXRlID0gaGlzdG9yeURlbGVnYXRlOworCisgICAgbV9oaXN0b3J5RGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IFtoaXN0b3J5RGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhOildOworICAgIG1faGlzdG9yeURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTFRvVVJMID0gW2hpc3RvcnlEZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
RnJvbVVSTDp0b1VSTDopXTsKKyAgICBtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkxUb1VSTCA9IFtoaXN0b3J5RGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dEZyb21VUkw6dG9VUkw6KV07CisgICAgbV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRVcGRhdGVIaXN0b3J5VGl0bGVGb3JVUkwgPSBbaGlzdG9yeURlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRVcGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOild
OworfQorCiBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZUxv
YWRSZXF1ZXN0TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCkKIHsKICAgICBBU1NFUlQoIW1fbmF2aWdhdGlvbnMuY29udGFpbnMobmF2aWdhdGlv
bklEKSk7CkBAIC0xMDcsNiArMTUwLDU0IEBAIFJldGFpblB0cjxXS05hdmlnYXRpb24+IE5hdmln
YXRpb25TdGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKHVpbnQ2NF90IG5hCiAgICAg
cmV0dXJuIG5hdmlnYXRpb247CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUm
IG5hdmlnYXRpb25EYXRhU3RvcmUpCit7CisgICAgaWYgKCFtX2hpc3RvcnlEZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IG1faGlzdG9yeURlbGVnYXRlLmdldCgpOwor
ICAgIGlmICghaGlzdG9yeURlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbaGlzdG9y
eURlbGVnYXRlIHdlYlZpZXc6bV93ZWJWaWV3IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
OndyYXBwZXIoKkFQSTo6TmF2aWdhdGlvbkRhdGE6OmNyZWF0ZShuYXZpZ2F0aW9uRGF0YVN0b3Jl
KSldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5h
dGlvblVSTCkKK3sKKyAgICBpZiAoIW1faGlzdG9yeURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTFRvVVJMKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IG1faGlzdG9yeURlbGVnYXRlLmdldCgpOworICAgIGlm
ICghaGlzdG9yeURlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbaGlzdG9yeURlbGVn
YXRlIHdlYlZpZXc6bV93ZWJWaWV3IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkw6d3Jh
cHBlcigqQVBJOjpVUkw6OmNyZWF0ZShzb3VyY2VVUkwpKSB0b1VSTDp3cmFwcGVyKCpBUEk6OlVS
TDo6Y3JlYXRlKGRlc3RpbmF0aW9uVVJMKSldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNv
bnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKK3sKKyAgICBpZiAoIW1faGlzdG9yeURl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0RnJvbVVSTFRvVVJM
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IG1faGlzdG9y
eURlbGVnYXRlLmdldCgpOworICAgIGlmICghaGlzdG9yeURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBbaGlzdG9yeURlbGVnYXRlIHdlYlZpZXc6bV93ZWJWaWV3IGRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZyb21VUkw6d3JhcHBlcigqQVBJOjpVUkw6OmNyZWF0ZShzb3VyY2VVUkwp
KSB0b1VSTDp3cmFwcGVyKCpBUEk6OlVSTDo6Y3JlYXRlKGRlc3RpbmF0aW9uVVJMKSldOworfQor
Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFdURjo6
U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAoIW1faGlz
dG9yeURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkVXBkYXRlSGlzdG9yeVRpdGxlRm9yVVJMKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IG1faGlzdG9yeURl
bGVnYXRlLmdldCgpOworICAgIGlmICghaGlzdG9yeURlbGVnYXRlKQorICAgICAgICByZXR1cm47
CisKKyAgICBbaGlzdG9yeURlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV93ZWJWaWV3IGRpZFVwZGF0
ZUhpc3RvcnlUaXRsZTp3cmFwcGVyKCpBUEk6OlN0cmluZzo6Y3JlYXRlKHRpdGxlKSkgZm9yVVJM
OndyYXBwZXIoKkFQSTo6VVJMOjpjcmVhdGUodXJsKSldOworfQorCiBOYXZpZ2F0aW9uU3RhdGU6
OlBvbGljeUNsaWVudDo6UG9saWN5Q2xpZW50KE5hdmlnYXRpb25TdGF0ZSYgbmF2aWdhdGlvblN0
YXRlKQogICAgIDogbV9uYXZpZ2F0aW9uU3RhdGUobmF2aWdhdGlvblN0YXRlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2
ODY2NDQ4MjE5ZWNjOTU4YzY3ZTczMDc3NmQwZjFiYjkxYTFmYTcuLjIxNDA1MTBhM2Q3YzU5NDlj
MmFiYjZhODBhM2NiOGFmYWU5MzllOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NCw2ICsxNjQsOSBAQAogCQkxQTNFRUQw
RTE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0VFRDBDMTYxQTUzNTMwMEFFQjRG
NSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovOyB9OwogCQkxQTNFRUQwRjE2MUE1MzU0MDBB
RUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJl
Y2VpdmVyTWFwLmggKi87IH07CiAJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdl
UmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBM0VFRDExMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCAqLzsgfTsKKwkJ
MUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0MjJGOEExOEIy
OUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBNDIyRjhFMThCMjlDNjQwMEQ4
Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE0MjJGOEMxOEIyOUM2NDAwRDhDRDk2IC8qIEhpc3RvcnlDbGllbnQu
bW0gKi87IH07CisJCTFBNDIyRjhGMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQyMkY4RDE4
QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oICovOyB9OwogCQkxQTQzM0YwRDExM0M1
M0REMDBGQUNERTkgLyogV2ViRXJyb3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTQzM0YwQzExM0M1M0REMDBGQUNERTkgLyogV2ViRXJyb3JzLmgg
Ki87IH07CiAJCTFBNDNFODI5MTg4RjNDREMwMDlFNEQzMCAvKiBXS1Byb2Nlc3NDbGFzc0NvbmZp
Z3VyYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTQzRTgyNzE4OEYzQ0RDMDA5RTREMzAgLyogV0tQcm9jZXNzQ2xhc3NDb25maWd1cmF0aW9u
Lm1tICovOyB9OwogCQkxQTQzRTgyQTE4OEYzQ0RDMDA5RTREMzAgLyogV0tQcm9jZXNzQ2xhc3ND
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogV0tQcm9jZXNzQ2xhc3NDb25maWd1cmF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAt
MTgyOSw2ICsxODMyLDkgQEAKIAkJMUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VS
ZWNlaXZlck1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNFRUQw
RDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlck1hcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTNFRUQxMTE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENEOTYgLyog
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQTQyMkY4QzE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpc3RvcnlDbGllbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBNDIyRjhEMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0
b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0MzNGMEMxMTNDNTNERDAwRkFD
REU5IC8qIFdlYkVycm9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJF
cnJvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0M0U4MjcxODhGM0NEQzAw
OUU0RDMwIC8qIFdLUHJvY2Vzc0NsYXNzQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUHJvY2Vzc0NsYXNzQ29uZmlndXJhdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8q
IFdLUHJvY2Vzc0NsYXNzQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1Byb2Nlc3NDbGFzc0NvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQwMzMsNiArNDAzOSw4IEBACiAJCTFBQkMzREYyMTg5OUU0MTUwMDRGMDYy
NiAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMUE0MjJGOEQxOEIyOUM2NDAwRDhDRDk2IC8qIEhpc3RvcnlDbGllbnQuaCAqLywKKwkJCQkx
QTQyMkY4QzE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5tbSAqLywKIAkJCQkxQUJD
M0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJMUFCQzNE
RjMxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSAqLywKIAkJCSk7CkBAIC00
MzY4LDYgKzQzNzYsNyBAQAogCQkJCTFBNEQ2NjRBMThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1l
SW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5t
bSAqLywKIAkJCQkxQTRENjY0RDE4QTMwMzFCMDBEODJFMjEgLyogV0tGcmFtZUluZm9JbnRlcm5h
bC5oICovLAorCQkJCTFBNDIyRjhBMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0
ZVByaXZhdGUuaCAqLywKIAkJCQkxQTVCMUM0RjE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0
aW9uLmggKi8sCiAJCQkJMUE1QjFDNEUxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5t
bSAqLywKIAkJCQkxQTI1NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9u
LmggKi8sCkBAIC02MjkyLDYgKzYzMDEsNyBAQAogCQkJCTM3REZBNzAwMTgxMEJCOTIwMDFGNEE5
RiAvKiBXS0ZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQkMzREYxMTg5OUM2QjYw
MDRGMDYyNiAvKiBXS05hdmlnYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY2
MDRCQTgxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTFBNDIyRjhGMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JBQUNFQjE0NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9j
ZXNzR3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3N0VBRDQ4MTdFMkM3N0IwMDJEMTkzRCAv
KiBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODY5
OUI1MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtNjUzNiw2
ICs2NTQ2LDcgQEAKIAkJCQkxUVE0MTdDQjEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJD
b21wbGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVFNERBNDEyRDNCRDNEMDA5OUEyQkIg
LyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0Mz
OTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxQTQyMkY4QjE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzBGMzRBNzE4MjlDRkYzMDA5MDI3QzggLyogV0tC
cm93c2luZ0NvbnRleHRIaXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjA1
RDg3MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY0MjQ1RTEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRl
SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDM1LDYgKzgwNDYsNyBAQAogCQkJCUNENzNCQTUz
MTMxQjY0NUIwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3NTU0MjJCRDE4MDYyQkIyMDA0NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDczQkE0RTEzMUFDREI3MDBFRURFRDIgLyogV2ViRnVs
bFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE0
MjJGOEUxOEIyOUM2NDAwRDhDRDk2IC8qIEhpc3RvcnlDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxRkIwMEFDODE4NUY3NjQ2MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdy
b3VwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2Rjc1RjQxMzFCNjZEMDAwRDZCMjFFIC8qIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNDcx
MzFBQ0M5QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="248503"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>