<?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>44910</bug_id>
          
          <creation_ts>2010-08-30 17:18:13 -0700</creation_ts>
          <short_desc>Add URLRequest API for WebKit2</short_desc>
          <delta_ts>2010-08-30 17:52:01 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271788</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-30 17:18:13 -0700</bug_when>
    <thetext>Add URLRequest API for WebKit2 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271800</commentid>
    <comment_count>1</comment_count>
      <attachid>65982</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-30 17:35:28 -0700</bug_when>
    <thetext>Created attachment 65982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271808</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-30 17:43:29 -0700</bug_when>
    <thetext>Attachment 65982 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/Shared/WebURLRequest.cpp:10:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/API/C/cf/WKURLRequestCF.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]
WebKit2/UIProcess/API/C/cf/WKURLRequestCF.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/Shared/WebCoreArgumentCoders.h:36:  &quot;WebCore/IntRect.h&quot; already included at WebKit2/Shared/WebCoreArgumentCoders.h:35  [build/include] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:76:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:77:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:98:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:99:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKURLRequest.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/Shared/win/WebURLRequestWin.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/Shared/win/WebCoreArgumentCodersWin.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/Shared/qt/WebURLRequestQt.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 13 in 31 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>271817</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-30 17:52:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/66436.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65982</attachid>
            <date>2010-08-30 17:35:28 -0700</date>
            <delta_ts>2010-08-30 17:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>53811</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjQzMCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMTAtMDgtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVVJM
UmVxdWVzdCBBUEkgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ0OTEwCisKKyAgICAgICAgQWRkIFdlYlVSTFJlcXVlc3QgY2xhc3Mg
YW5kIFdLVVJMUmVxdWVzdFJlZiBDIEFQSSB0byBnbyB3aXRoIGl0LiBSaWdodCBub3csCisgICAg
ICAgIGluc3RhbmNlIG9mIFdLVVJMUmVxdWVzdFJlZiBhcmUgbWFuaXB1bGF0ZWQgdmlhIHBsYXRm
b3JtIHR5cGVzLCBhIGxhIHRoZQorICAgICAgICBXS1N0cmluZ1JlZiBhbmQgV0tVUkxSZWYgdHlw
ZXMuCisKKyAgICAgICAgLSBQaXBlcyBXS1BhZ2VMb2FkVVJMUmVxdWVzdCB0aHJvdWdoIHRvIHRo
ZSBXZWJQcm9jZXNzLgorCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAq
IFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlTWVzc2FnZUtpbmRzLmg6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJVUkxS
ZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlcXVlc3Q6OldlYlVS
TFJlcXVlc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJVUkxSZXF1ZXN0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXF1ZXN0OjpyZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxS
ZXF1ZXN0Ojp0eXBlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbTogQWRkZWQuCisgICAgICAgIChDb3JlSVBDOjplbmNvZGVSZXNvdXJjZVJlcXVlc3Qp
OgorICAgICAgICAoQ29yZUlQQzo6ZGVjb2RlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBT
aGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXF1ZXN0OjpXZWJVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVx
dWVzdDo6cGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBTaGFyZWQvcXQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzUXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKENvcmVJUEM6OmVuY29kZVJlc291cmNl
UmVxdWVzdCk6CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAqIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMUmVxdWVzdDo6V2ViVVJMUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFJlcXVlc3Q6OnBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJD
b3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKENvcmVJUEM6OmVuY29k
ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGVSZXNvdXJjZVJlcXVl
c3QpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViVVJMUmVxdWVzdFdpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjpXZWJVUkxSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMUmVxdWVzdDo6cGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQmFz
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQ
YWdlTG9hZFVSTFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVUkxSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXS1VSTFJlcXVlc3RHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1VSTFJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvY2YvV0tVUkxSZXF1ZXN0Q0YuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhDRlVSTFJlcXVlc3QpOgorICAgICAg
ICAoV0tVUkxSZXF1ZXN0Q29weUNGVVJMUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2NmL1dLVVJMUmVxdWVzdENGLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9tYWM6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tVUkxSZXF1ZXN0
TlMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1VSTFJlcXVlc3RO
Uy5tbTogQWRkZWQuCisgICAgICAgIChXS1VSTFJlcXVlc3RDcmVhdGVXaXRoTlNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKFdLVVJMUmVxdWVzdENvcHlOU1VSTFJlcXVlc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogd2luL1dlYktp
dDIudmNwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2U6CisKIDIwMTAt
MDgtMzAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYktpdDIv
V2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQCBIRUFERVJTICs9
IFwKICAgICBTaGFyZWQvV2ViRXZlbnQuaCBcCiAgICAgU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRh
U3RvcmUuaCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBcCisgICAgU2hhcmVk
L1dlYlVSTFJlcXVlc3QuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL2NwcC9xdC9XS1VSTFF0LmggXApAQCAtMTgzLDYgKzE4NCw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1N0cmluZy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tU
eXBlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VSTC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tVUkxSZXF1ZXN0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3
LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2VfcC5oIFwKQEAgLTI2Niw4ICsyNjgsMTEgQEAgU09VUkNFUyArPSBcCiAgICAg
U2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJz
aW9uLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwKKyAgICBTaGFy
ZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogICAgIFNoYXJlZC9xdC9VcGRhdGVDaHVuay5jcHAgXAog
ICAgIFNoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAorICAgIFNoYXJlZC9xdC9XZWJD
b3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgXAorICAgIFNoYXJlZC9xdC9XZWJVUkxSZXF1ZXN0UXQu
Y3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLRnJhbWUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcCBcCkBAIC0yNzgsNiArMjgzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLU3RyaW5nLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVHlwZS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VSTC5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1VSTFJlcXVlc3QuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L0NsaWVudEltcGwuY3BwIFwK
ICAgICBVSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZS5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEx
ICszNSwxMiBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgLy8gQmFzZSB0eXBl
cwogICAgICAgICBUeXBlQXJyYXksCi0gICAgICAgIFR5cGVEaWN0aW9uYXJ5LAogICAgICAgICBU
eXBlRGF0YSwKKyAgICAgICAgVHlwZURpY3Rpb25hcnksCiAgICAgICAgIFR5cGVFcnJvciwKICAg
ICAgICAgVHlwZVN0cmluZywKICAgICAgICAgVHlwZVVSTCwKKyAgICAgICAgVHlwZVVSTFJlcXVl
c3QsCiAgICAgICAgIAogICAgICAgICAvLyBVSVByb2Nlc3MgdHlwZXMKICAgICAgICAgVHlwZUJh
Y2tGb3J3YXJkTGlzdCwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsdWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC0xMzcsNiArMTQwLDIx
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAjZW5kaWYK
IAordm9pZCBlbmNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Citib29sIGRlY29kZVJlc291cmNlUmVxdWVzdChBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKKyAgICB7CisgICAgICAgIGVuY29kZVJl
c291cmNlUmVxdWVzdChlbmNvZGVyLCByZXNvdXJjZVJlcXVlc3QpOworICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBk
ZWNvZGVSZXNvdXJjZVJlcXVlc3QoZGVjb2RlciwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICB9Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCiAKICNlbmRpZiAvLyBXZWJDb3JlQXJndW1lbnRD
b2RlcnNfaApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OSBAQAorLyoKKyAqICBXZWJVUkxSZXF1ZXN0LmNwcAorICogIFdlYktpdDIKKyAqCisgKiAgQ3Jl
YXRlZCBieSBTYW0gV2VpbmlnIG9uIDgvMzAvMTAuCisgKiAgQ29weXJpZ2h0IDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaW5jbHVkZSAiV2ViVVJMUmVx
dWVzdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVVJMUmVxdWVzdDo6V2ViVVJMUmVx
dWVzdChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCisgICAgOiBtX3JlcXVlc3QodXJsKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlVSTFJl
cXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAor
I2RlZmluZSBXZWJVUkxSZXF1ZXN0X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworI2lmIFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgTlNVUkxSZXF1ZXN0KiBQbGF0Zm9ybVJlcXVl
c3Q7CisjZWxpZiBQTEFURk9STShXSU4pCit0eXBlZGVmIENGVVJMUmVxdWVzdFJlZiBQbGF0Zm9y
bVJlcXVlc3Q7CisjZWxzZQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVJlcXVlc3Q7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFJlcXVlc3QgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVVS
TFJlcXVlc3Q7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVUkxSZXF1ZXN0PiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJVUkxSZXF1ZXN0KHVybCkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShQbGF0Zm9ybVJlcXVlc3QgcGxhdGZvcm1SZXF1ZXN0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkxSZXF1ZXN0KHBsYXRmb3Jt
UmVxdWVzdCkpOworICAgIH0KKworICAgIFBsYXRmb3JtUmVxdWVzdCBwbGF0Zm9ybVJlcXVlc3Qo
KSBjb25zdDsKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorCitwcml2YXRlOgorICAgIFdlYlVS
TFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIFdlYlVSTFJlcXVlc3QoUGxhdGZv
cm1SZXF1ZXN0KTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJ
VHlwZTsgfQorCisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVVJMUmVxdWVzdF9oCkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlTWVzc2FnZUtpbmRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3NhZ2VL
aW5kcy5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0
L1dlYlBhZ2VNZXNzYWdlS2luZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBl
bnVtIEtpbmQgewogICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0sCiAgICAgS2V5RXZlbnQsCiAgICAg
TG9hZFVSTCwKKyAgICBMb2FkVVJMUmVxdWVzdCwKICAgICBNb3VzZUV2ZW50LAogICAgIFByZWZl
cmVuY2VzRGlkQ2hhbmdlLAogICAgIFJlbG9hZCwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwordm9pZCBlbmNvZGVSZXNvdXJjZVJlcXVlc3Qo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKK3sKKyAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHJl
c291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoKTsKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNLZXll
ZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om5zVVJMUmVxdWVzdF07CisKKyAg
ICBlbmNvZGVyLT5lbmNvZGVCeXRlcyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEg
Ynl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7Cit9CisKK2Jvb2wgZGVjb2RlUmVzb3VyY2VSZXF1ZXN0
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlQnl0ZXMoYnl0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBO
U0RhdGEgKm5zRGF0YSA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmJ5dGVz
LmRhdGEoKSBsZW5ndGg6Ynl0ZXMuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT107CisgICAgTlNVUkxS
ZXF1ZXN0ICpuc1VSTFJlcXVlc3QgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0
V2l0aERhdGE6bnNEYXRhXTsKKyAgICBpZiAoIW5zVVJMUmVxdWVzdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmVzb3VyY2VSZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
KG5zVVJMUmVxdWVzdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
Q29yZUlQQwpJbmRleDogV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0JKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9tYWMvV2ViVVJMUmVxdWVzdE1hYy5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJVUkxSZXF1
ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVUkxSZXF1ZXN0OjpXZWJVUkxSZXF1
ZXN0KFBsYXRmb3JtUmVxdWVzdCBwbGF0Zm9ybVJlcXVlc3QpCisgICAgOiBtX3JlcXVlc3QocGxh
dGZvcm1SZXF1ZXN0KQoreworfQorCitQbGF0Zm9ybVJlcXVlc3QgV2ViVVJMUmVxdWVzdDo6cGxh
dGZvcm1SZXF1ZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0Lm5zVVJMUmVxdWVz
dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL3F0
L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJl
ZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIENvcmVJUEMgewor
Cit2b2lkIGVuY29kZVJlc291cmNlUmVxdWVzdChBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgZGVjb2RlUmVzb3VyY2VSZXF1ZXN0KEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIENvcmVJUEMKSW5kZXg6IFdlYktpdDIvU2hhcmVkL3F0L1dlYlVSTFJlcXVl
c3RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvcXQvV2ViVVJMUmVxdWVzdFF0
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL3F0L1dlYlVSTFJlcXVlc3RRdC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
V2ViVVJMUmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVVJMUmVxdWVzdDo6
V2ViVVJMUmVxdWVzdChQbGF0Zm9ybVJlcXVlc3QpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK1BsYXRmb3JtUmVxdWVzdCBXZWJVUkxSZXF1ZXN0OjpwbGF0Zm9ybVJlcXVlc3Qo
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFy
ZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisK
K3ZvaWQgZW5jb2RlUmVzb3VyY2VSZXF1ZXN0KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBkZWNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgQ29yZUlQQwpJbmRleDogV2ViS2l0Mi9TaGFyZWQvd2luL1dlYlVSTFJlcXVl
c3RXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL3dpbi9XZWJVUkxSZXF1ZXN0
V2luLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL3dpbi9XZWJVUkxSZXF1ZXN0
V2luLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJXZWJVUkxSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVUkxSZXF1
ZXN0OjpXZWJVUkxSZXF1ZXN0KFBsYXRmb3JtUmVxdWVzdCBwbGF0Zm9ybVJlcXVlc3QpCisgICAg
OiBtX3JlcXVlc3QocGxhdGZvcm1SZXF1ZXN0KQoreworfQorCitQbGF0Zm9ybVJlcXVlc3QgV2Vi
VVJMUmVxdWVzdDo6cGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXF1
ZXN0LmNmVVJMUmVxdWVzdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vi
VVJMUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC0yMTIsOSArMjEzLDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkVVJM
KGNvbnN0IFN0cmluZyYKICAgICAgICAgcHV0cygibG9hZFVSTCBjYWxsZWQgd2l0aCBhIGRlYWQg
V2ViUHJvY2VzcyIpOwogICAgICAgICByZXZpdmUoKTsKICAgICB9CisKICAgICBwcm9jZXNzKCkt
PnNlbmQoV2ViUGFnZU1lc3NhZ2U6OkxvYWRVUkwsIG1fcGFnZUlELCBDb3JlSVBDOjpJbih1cmwp
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVlc3Qq
IHVybFJlcXVlc3QpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgcHV0cygibG9h
ZFVSTFJlcXVlc3QgY2FsbGVkIHdpdGggYSBkZWFkIFdlYlByb2Nlc3MiKTsKKyAgICAgICAgcmV2
aXZlKCk7CisgICAgfQorCisgICAgcHJvY2VzcygpLT5zZW5kKFdlYlBhZ2VNZXNzYWdlOjpMb2Fk
VVJMUmVxdWVzdCwgbV9wYWdlSUQsIENvcmVJUEM6OkluKHVybFJlcXVlc3QtPnJlc291cmNlUmVx
dWVzdCgpKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiB7CiAgICAg
aWYgKCFpc1ZhbGlkKCkpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
NjYzOTEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksNyBAQCBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91
c2VFdmVudDsKIGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CitjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0cnVjdCBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlOwogCkBAIC0xMDcsNiArMTA4LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZDsgfQogCiAgICAgdm9pZCBsb2Fk
VVJMKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBsb2FkVVJMUmVxdWVzdChXZWJVUkxS
ZXF1ZXN0Kik7CisKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgdm9pZCByZWxvYWQoYm9v
bCByZWxvYWRGcm9tT3JpZ2luKTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgY2xhc3MgV2ViTmF2aWdhdGlvbkRh
dGE7CiBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViUHJlZmVyZW5jZXM7Ci1jbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkxSZXF1ZXN0Owor
Y2xhc3MgV2ViVVJMUmVzcG9uc2U7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFQSVR5cGU+IHN0cnVj
dCBBUElUeXBlSW5mbyB7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS1R5cGVS
ZWY+ICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIEFQSU9iamVjdCogSW1wbFR5cGU7
IH07CkBAIC03Miw2ICs3Myw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLUGFn
ZVJlZj4KIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLUHJlZmVyZW5jZXNSZWY+ICAg
ICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViUHJlZmVyZW5jZXMqIEltcGxUeXBlOyB9OwogdGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tTdHJpbmdSZWY+ICAgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZWRlZiBXZWJTdHJpbmcqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QVBJVHlwZUluZm88V0tVUkxSZWY+ICAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBX
ZWJVUkwqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tVUkxS
ZXF1ZXN0UmVmPiAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJVUkxSZXF1ZXN0KiBJbXBs
VHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLVVJMUmVzcG9uc2VSZWY+
ICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViVVJMUmVzcG9uc2UqIEltcGxUeXBlOyB9Owog
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEltcGxUeXBlPiBzdHJ1Y3QgSW1wbFR5cGVJbmZvIHsgfTsK
QEAgLTkyLDYgKzk1LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYlBhZ2VQ
cgogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYlByZWZlcmVuY2VzKj4gICAgICAg
ICAgICAgICAgIHsgdHlwZWRlZiBXS1ByZWZlcmVuY2VzUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViU3RyaW5nKj4gICAgICAgICAgICAgICAgICAgICAg
eyB0eXBlZGVmIFdLU3RyaW5nUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBs
VHlwZUluZm88V2ViVVJMKj4gICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLVVJM
UmVmIEFQSVR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViVVJMUmVx
dWVzdCo+ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLVVJMUmVxdWVzdFJlZiBBUElUeXBl
OyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYlVSTFJlc3BvbnNlKj4gICAg
ICAgICAgICAgICAgIHsgdHlwZWRlZiBXS1VSTFJlc3BvbnNlUmVmIEFQSVR5cGU7IH07CiAKIAog
dGVtcGxhdGU8dHlwZW5hbWUgSW1wbFR5cGUsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJ
bXBsVHlwZUluZm88SW1wbFR5cGUqPjo6QVBJVHlwZT4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QmFzZS5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBAIHR5cGVkZWYgc3RydWN0IE9wYXF1
ZVdLUGFnZU5hbWVzcGFjZSogV0sKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMq
IFdLUHJlZmVyZW5jZXNSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS1N0cmluZyogV0tTdHJp
bmdSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS1VSTCogV0tVUkxSZWY7Cit0eXBlZGVmIHN0
cnVjdCBPcGFxdWVXS1VSTFJlcXVlc3QqIFdLVVJMUmVxdWVzdFJlZjsKK3R5cGVkZWYgc3RydWN0
IE9wYXF1ZVdLVVJMUmVzcG9uc2UqIFdLVVJMUmVzcG9uc2VSZWY7CiAKICN1bmRlZiBXS19FWFBP
UlQKICNpZiBkZWZpbmVkKFdLX05PX0VYUE9SVCkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMSBAQCB2b2lkIFdLUGFnZUxvYWRV
UkwoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLCiAgICAgdG9XSyhwYWdlUmVmKS0+bG9hZFVSTCh0b1dL
KFVSTFJlZiktPnN0cmluZygpKTsKIH0KIAordm9pZCBXS1BhZ2VMb2FkVVJMUmVxdWVzdChXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZWYpCit7CisgICAgdG9X
SyhwYWdlUmVmKS0+bG9hZFVSTFJlcXVlc3QodG9XSyh1cmxSZXF1ZXN0UmVmKSk7ICAgIAorfQor
CiB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHRvV0so
cGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAko
cmV2aXNpb24gNjYzOTEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw4IEBAIFdLX0VYUE9SVCBXS1R5cGVJRCBXS1BhZ2VH
ZXRUeXBlSUQoKTsKIFdLX0VYUE9SVCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5h
bWVzcGFjZShXS1BhZ2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkwo
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2Fk
VVJMUmVxdWVzdChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QpOwor
CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZSk7CiBXS19F
WFBPUlQgdm9pZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQg
V0tQYWdlUmVsb2FkRnJvbU9yaWdpbihXS1BhZ2VSZWYgcGFnZSk7CkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1VSTFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1VSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLVVJMUmVxdWVzdC5oIgorCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1VSTFJlcXVlc3RHZXRUeXBlSUQoKQoreworICAgIHJl
dHVybiB0b1JlZihXZWJVUkxSZXF1ZXN0OjpBUElUeXBlKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLVVJMUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLVVJMUmVxdWVzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdLVVJMUmVxdWVzdF9oCisjZGVmaW5lIFdLVVJMUmVxdWVzdF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1VSTFJlcXVlc3RHZXRU
eXBlSUQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdL
VVJMUmVxdWVzdF9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oCShyZXZpc2lv
biA2NjM5MSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLVVJM
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTFJlcXVlc3QuaD4KIAogI2lmICFfX0FQUExFX18g
fHwgX19PQkpDX18KICNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2YvV0tVUkxSZXF1ZXN0Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2NmL1dLVVJMUmVxdWVzdENGLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NmL1dLVVJMUmVxdWVzdENGLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS1VSTFJlcXVlc3RO
Uy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1VSTFJlcXVlc3RSZWYgV0tVUkxSZXF1
ZXN0Q3JlYXRlV2l0aENGVVJMUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCkKK3sK
KyAgICBDRlVSTFJlcXVlc3RSZWYgY29waWVkVVJMUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0
ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVxdWVzdCk7CisgICAgUmVmUHRyPFdlYlVS
TFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0OjpjcmVhdGUoY29waWVkVVJMUmVxdWVz
dCk7CisgICAgcmV0dXJuIHRvUmVmKHJlcXVlc3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7Cit9
CisKK0NGVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDb3B5Q0ZVUkxSZXF1ZXN0KENGQWxsb2Nh
dG9yUmVmIGFsbG9jLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCkKK3sKKyAgICByZXR1cm4g
Q0ZVUkxSZXF1ZXN0Q3JlYXRlQ29weShhbGxvYywgdG9XSyh1cmxSZXF1ZXN0KS0+cGxhdGZvcm1S
ZXF1ZXN0KCkpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tVUkxSZXF1
ZXN0Q0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZi9XS1VSTFJl
cXVlc3RDRi5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tV
UkxSZXF1ZXN0Q0YuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tVUkxSZXF1ZXN0Q0ZfaAorI2RlZmluZSBXS1VSTFJlcXVlc3RDRl9oCisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tVUkxSZXF1ZXN0Q3Jl
YXRlV2l0aENGVVJMUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCk7CitXS19FWFBP
UlQgQ0ZVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENvcHlDRlVSTFJlcXVlc3QoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2MsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0KTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLVVJMUmVxdWVzdENGX2ggKi8KSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1VSTFJlcXVlc3ROUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1VSTFJlcXVlc3ROUy5oCShyZXZpc2lv
biAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLVVJMUmVxdWVzdE5TLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLVVJMUmVx
dWVzdE5TX2gKKyNkZWZpbmUgV0tVUkxSZXF1ZXN0TlNfaAorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tVUkxSZXF1ZXN0
UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhOU1VSTFJlcXVlc3QoTlNVUkxSZXF1ZXN0KiB1cmxS
ZXF1ZXN0KTsKK1dLX0VYUE9SVCBOU1VSTFJlcXVlc3QqIFdLVVJMUmVxdWVzdENvcHlOU1VSTFJl
cXVlc3QoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0KTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLVVJMUmVxdWVz
dE5TX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1VSTFJlcXVlc3RO
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tVUkxSZXF1
ZXN0TlMubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tV
UkxSZXF1ZXN0TlMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0TlMuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
V0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhOU1VSTFJlcXVlc3QoTlNVUkxS
ZXF1ZXN0KiB1cmxSZXF1ZXN0KQoreworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IGNvcGll
ZFVSTFJlcXVlc3QoQWRvcHROUywgW3VybFJlcXVlc3QgY29weV0pOworICAgIFJlZlB0cjxXZWJV
UkxSZXF1ZXN0PiByZXF1ZXN0ID0gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvcGllZFVSTFJlcXVl
c3QuZ2V0KCkpOworICAgIHJldHVybiB0b1JlZihyZXF1ZXN0LnJlbGVhc2UoKS5yZWxlYXNlUmVm
KCkpOworfQorCitOU1VSTFJlcXVlc3QqIFdLVVJMUmVxdWVzdENvcHlOU1VSTFJlcXVlc3QoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2MsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0KQoreworICAgIHJl
dHVybiBbdG9XSyh1cmxSZXF1ZXN0KS0+cGxhdGZvcm1SZXF1ZXN0KCkgY29weV07Cit9CkluZGV4
OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjYz
OTEpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjgyLDYgKzI4MiwxNCBAQAogCQlCQ0RCODZDMTEyMDBGQjk3MDA3MjU0QkUg
LyogV2ViVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyogV2ViVVJMLmggKi87IH07CiAJCUJDREUwNTlC
MTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREUwNTk5MTFDREE4
QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJ
QkNERTA1OUMxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RF
MDU5QTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cCAqLzsgfTsKKwkJQkNFMjMxNUQxMjJDMzBDQTAwRDVDMzVBIC8qIFdlYlVSTFJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTIzMTVCMTIy
QzMwQ0EwMEQ1QzM1QSAvKiBXZWJVUkxSZXF1ZXN0LmggKi87IH07CisJCUJDRTIzMTVFMTIyQzMw
Q0EwMEQ1QzM1QSAvKiBXZWJVUkxSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTIzMTVDMTIyQzMwQ0EwMEQ1QzM1QSAvKiBXZWJVUkxS
ZXF1ZXN0LmNwcCAqLzsgfTsKKwkJQkNFMjMxQzIxMjJDNDY2RTAwRDVDMzVBIC8qIFdlYlVSTFJl
cXVlc3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0UyMzFDMDEyMkM0NjZFMDBENUMzNUEgLyogV2ViVVJMUmVxdWVzdE1hYy5tbSAqLzsgfTsK
KwkJQkNFMjMxQzcxMjJDNDkyMzAwRDVDMzVBIC8qIFdLVVJMUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFMjMxQzUxMjJDNDkyMzAwRDVD
MzVBIC8qIFdLVVJMUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKKwkJQkNFMjMxQzgxMjJDNDkyMzAwRDVDMzVBIC8qIFdLVVJMUmVxdWVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UyMzFD
NjEyMkM0OTIzMDBENUMzNUEgLyogV0tVUkxSZXF1ZXN0LmNwcCAqLzsgfTsKKwkJQkNFMjMyNjMx
MjJDNkNGMzAwRDVDMzVBIC8qIFdlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTIzMjYyMTIyQzZDRjMwMEQ1
QzM1QSAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gKi87IH07CisJCUJDRTIzMjc5MTIy
QzcxQUMwMEQ1QzM1QSAvKiBXS1VSTFJlcXVlc3ROUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFMjMyNzcxMjJDNzFBQzAwRDVDMzVBIC8qIFdLVVJM
UmVxdWVzdE5TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OworCQlCQ0UyMzI3QTEyMkM3MUFDMDBENUMzNUEgLyogV0tVUkxSZXF1ZXN0TlMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UyMzI3ODEyMkM3MUFD
MDBENUMzNUEgLyogV0tVUkxSZXF1ZXN0TlMubW0gKi87IH07CiAJCUJDRTQ2OTUzMTIxNEU2Q0Iw
MDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2OTRGMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xp
ZW50LmNwcCAqLzsgfTsKIAkJQkNFNDY5NTQxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2
OTUwMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggKi87IH07CiAJCUJDRTQ2OTU1
MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNDY5NTExMjE0
RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5jcHAgKi87IH07
CkBAIC02MjcsNiArNjM1LDE0IEBACiAJCUJDREI4NkMwMTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJV
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDREUwNTk5MTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDREUwNTlBMTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkNFMjMxNUIxMjJDMzBDQTAwRDVDMzVBIC8qIFdlYlVSTFJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0UyMzE1QzEyMkMzMENBMDBENUMzNUEgLyogV2ViVVJMUmVxdWVz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxSZXF1ZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFMjMxQzAxMjJDNDY2RTAwRDVD
MzVBIC8qIFdlYlVSTFJlcXVlc3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJVUkxSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQ0UyMzFDNTEyMkM0OTIzMDBENUMzNUEgLyogV0tVUkxSZXF1ZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0UyMzFDNjEyMkM0OTIzMDBENUMzNUEgLyogV0tVUkxSZXF1ZXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVVJMUmVxdWVzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTIzMjYyMTIyQzZDRjMwMEQ1QzM1QSAv
KiBXZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDRTIzMjc3MTIyQzcxQUMwMEQ1QzM1QSAvKiBXS1VSTFJlcXVlc3RO
Uy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VSTFJlcXVlc3ROUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0UyMzI3ODEyMkM3MUFDMDBENUMzNUEgLyog
V0tVUkxSZXF1ZXN0TlMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1VSTFJlcXVlc3ROUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNDY5
NEYxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRm9ybUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRTQ2OTUwMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZvcm1DbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNDY5NTExMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZv
cm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODUyLDkgKzg2OCw5IEBACiAJCQkJQkMxMTFCNUYxMTJGNjM1
RTAwMzM3QkFCIC8qIENvcmVJUENTdXBwb3J0ICovLAogCQkJCUJDMTExQjVBMTEyRjYyODIwMDMz
N0JBQiAvKiBtYWMgKi8sCiAJCQkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8qIEFQSU9iamVj
dC5oICovLAorCQkJCTFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oICov
LAogCQkJCTBGQjY1OUE1MTIwOEI5RUUwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUJhc2UuY3BwICov
LAogCQkJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUJhc2UuaCAqLywK
LQkJCQkxQTZGOUY4RTExRTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLywKIAkJCQk3
NjJCNzQ4MTEyMEJCQTAxMDA4MTkzMzkgLyogRm9udFNtb290aGluZ0xldmVsLmggKi8sCiAJCQkJ
QkM2NDY5NkQxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJsZUFycmF5LmNwcCAqLywKIAkJCQlC
QzY0Njk2RTExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuaCAqLywKQEAgLTg3NCw2
ICs4OTAsOCBAQAogCQkJCUJDRDU5OEFBMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNl
c1N0b3JlLmggKi8sCiAJCQkJQkNGMDRDOEUxMUZGOUY2RTAwRjg2QTU4IC8qIFdlYlN0cmluZy5o
ICovLAogCQkJCUJDREI4NkMwMTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJVUkwuaCAqLywKKwkJCQlC
Q0UyMzE1QzEyMkMzMENBMDBENUMzNUEgLyogV2ViVVJMUmVxdWVzdC5jcHAgKi8sCisJCQkJQkNF
MjMxNUIxMjJDMzBDQTAwRDVDMzVBIC8qIFdlYlVSTFJlcXVlc3QuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gU2hhcmVkOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEwNjcsNiArMTA4
NSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMjBFQkQw
MTE2RUY2NjcwMDA5NEE1MCAvKiBjZiAqLywKKwkJCQlCQ0UyMzI3NjEyMkM3MThGMDBENUMzNUEg
LyogbWFjICovLAogCQkJCUJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggKi8s
CiAJCQkJQkMwQzM3NkQxMEY4MDg0NjAwNzZEN0NCIC8qIFdLQVBJQ2FzdC5oICovLAogCQkJCUJD
NjQ2ODBBMTFEQkJENjkwMDY0NTVCMCAvKiBXS0FycmF5LmNwcCAqLywKQEAgLTExMDgsNiArMTEy
Nyw4IEBACiAJCQkJQkNEQjg1ODAxMjAwRUM1NzAwNzI1NEJFIC8qIFdLVHlwZS5oICovLAogCQkJ
CUJDMjBFQkIzMTE2RUVGN0EwMDA5NEE1MCAvKiBXS1VSTC5jcHAgKi8sCiAJCQkJQkMyMEVCQjIx
MTZFRUY3QTAwMDk0QTUwIC8qIFdLVVJMLmggKi8sCisJCQkJQkNFMjMxQzYxMjJDNDkyMzAwRDVD
MzVBIC8qIFdLVVJMUmVxdWVzdC5jcHAgKi8sCisJCQkJQkNFMjMxQzUxMjJDNDkyMzAwRDVDMzVB
IC8qIFdLVVJMUmVxdWVzdC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTExNjAsOCArMTE4MSwxMCBAQAogCQkJCTFBNkY5RkI2MTFFMTQw
ODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi8sCiAJCQkJQkM5RTk1RDIxMTQ0OUIw
MzAwODcwRTcxIC8qIFVwZGF0ZUNodW5rLmNwcCAqLywKIAkJCQlCQzlFOTVEMTExNDQ5QjAzMDA4
NzBFNzEgLyogVXBkYXRlQ2h1bmsuaCAqLywKKwkJCQlCQ0UyMzI2MjEyMkM2Q0YzMDBENUMzNUEg
LyogV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tICovLAogCQkJCUJDMTExQjVCMTEyRjYyOTgw
MDMzN0JBQiAvKiBXZWJFdmVudEZhY3RvcnkuaCAqLywKIAkJCQlCQzExMUI1QzExMkY2Mjk4MDAz
MzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5Lm1tICovLAorCQkJCUJDRTIzMUMwMTIyQzQ2NkUwMEQ1
QzM1QSAvKiBXZWJVUkxSZXF1ZXN0TWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTMzOCw2ICsxMzYxLDE1IEBACiAJCQlwYXRo
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkNFMjMyNzYxMjJD
NzE4RjAwRDVDMzVBIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQkNFMjMyNzcxMjJDNzFBQzAwRDVDMzVBIC8qIFdLVVJMUmVxdWVzdE5TLmgg
Ki8sCisJCQkJQkNFMjMyNzgxMjJDNzFBQzAwRDVDMzVBIC8qIFdLVVJMUmVxdWVzdE5TLm1tICov
LAorCQkJKTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTQ5Nyw2ICsxNTI5LDkgQEAKIAkJCQlCQ0JDQjBDQjEyMTVF
MzIxMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCQ0IwRTMxMjE1RTU0RDAwREU1OUNBIC8qIFdLRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRTIzMTVEMTIyQzMwQ0EwMEQ1QzM1QSAvKiBXZWJV
UkxSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0UyMzFDNzEyMkM0OTIzMDBENUMzNUEg
LyogV0tVUkxSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0UyMzI3OTEyMkM3MUFDMDBE
NUMzNUEgLyogV0tVUkxSZXF1ZXN0TlMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTcyMCw2ICsxNzU1
LDExIEBACiAJCQkJQkNCQ0IwQ0QxMjE1RTMzQTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25h
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCQ0IwRTQxMjE1RTU0RDAwREU1OUNBIC8qIFdL
RGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkxRjJDQTEyMUI2NzlBMDBFQkY3
RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJD
RTIzMTVFMTIyQzMwQ0EwMEQ1QzM1QSAvKiBXZWJVUkxSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDRTIzMUMyMTIyQzQ2NkUwMEQ1QzM1QSAvKiBXZWJVUkxSZXF1ZXN0TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkNFMjMxQzgxMjJDNDkyMzAwRDVDMzVBIC8qIFdLVVJMUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0UyMzI2MzEyMkM2Q0YzMDBENUMzNUEgLyogV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFMjMyN0ExMjJD
NzFBQzAwRDVDMzVBIC8qIFdLVVJMUmVxdWVzdE5TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM3LDcgKzIzNywxMiBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDbG9zZSgpCiAKIHZvaWQgV2ViUGFn
ZTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdChLVVJMKEtVUkwoKSwgdXJsKSks
IGZhbHNlKTsKKyAgICBsb2FkVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoS1VSTChLVVJMKCks
IHVybCkpKTsKK30KKwordm9pZCBXZWJQYWdlOjpsb2FkVVJMUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS0+bG9hZChyZXF1ZXN0LCBmYWxzZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRp
bmcoKQpAQCAtNjA0LDYgKzYwOSwxNCBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6CiAgICAgICAgICAgICBsb2FkVVJMKHVybCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlTWVzc2FnZTo6TG9hZFVSTFJlcXVlc3Q6
IHsKKyAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYg
KCFhcmd1bWVudHMtPmRlY29kZShyZXF1ZXN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGxvYWRVUkxSZXF1ZXN0KHJlcXVlc3QpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViUGFnZU1lc3NhZ2U6OlN0
b3BMb2FkaW5nOgogICAgICAgICAgICAgc3RvcExvYWRpbmcoKTsKICAgICAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKICAgICBjbGFzcyBQYWdlOworICAg
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDQs
NyArMTQ1LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3Nl
KCk7Ci0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBsb2Fk
VVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgbG9hZFVSTFJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3Jp
Z2luKTsKICAgICB2b2lkIGdvRm9yd2FyZCh1aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2sodWlu
dDY0X3QpOwpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3Miw2ICs0NzIsMTQgQEAKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJVUkwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJVUkxSZXF1ZXN0LmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJVUkxSZXF1ZXN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRl
cg0KIAkJCQlOYW1lPSJDb3JlSVBDU3VwcG9ydCINCiAJCQkJPg0KQEAgLTUyMCw2ICs1MjgsMTAg
QEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFNoYXJlZFx3aW5cV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcd2lu
XFdlYkV2ZW50RmFjdG9yeS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC01MjcsNiAr
NTM5LDEwIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXHdpblxXZWJFdmVudEZhY3Rv
cnkuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcd2luXFdlYlVSTFJlcXVlc3RXaW4uY3BwIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCkBAIC0xMzYy
LDYgKzEzNzgsMTQgQEAKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdL
VVJMLmgiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1VSTFJlcXVlc3QuY3BwIg0KKwkJCQkJCT4N
CisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVBy
b2Nlc3NcQVBJXENcV0tVUkxSZXF1ZXN0LmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KIAkJ
CQkJPEZpbHRlcg0KIAkJCQkJCU5hbWU9ImNmIg0KIAkJCQkJCT4NCkBAIC0xMzgxLDYgKzE0MDUs
MTQgQEAKIAkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xjZlxXS1VSTENG
LmgiDQogCQkJCQkJCT4NCiAJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCisJCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcY2ZcV0tVUkxSZXF1ZXN0Q0YuY3BwIg0KKwkJ
CQkJCQk+DQorCQkJCQkJPC9GaWxlPg0KKwkJCQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cVUlQcm9jZXNzXEFQSVxDXGNmXFdLVVJMUmVxdWVzdENGLmgiDQorCQkJCQkJCT4NCisJ
CQkJCQk8L0ZpbGU+DQogCQkJCQk8L0ZpbHRlcj4NCiAJCQkJPC9GaWx0ZXI+DQogCQkJCTxGaWx0
ZXINCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjIs
OCArMjIsMTAgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tT
dHJpbmcuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1R5cGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1VS
TC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAv
ZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLVVJMUmVxdWVzdC5oIiAiJChXRUJLSVRPVVRQVVRESVIp
XGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXGNm
XFdLU3RyaW5nQ0YuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAg
eGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xjZlxXS1VSTENGLmgiICIkKFdFQktJVE9V
VFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3Nc
QVBJXENcY2ZcV0tVUkxSZXF1ZXN0Q0YuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdl
YktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1x3aW5cV0tDb250ZXh0
UHJpdmF0ZVdpbi5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4
Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxjcHBcV0tSZXRhaW5QdHIuaCIgIiQoV0VCS0lU
T1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vz
c1xBUElcd2luXFdLQmFzZVdpbi5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0
MiIK
</data>
<flag name="review"
          id="54874"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>