<?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>59614</bug_id>
          
          <creation_ts>2011-04-27 09:11:37 -0700</creation_ts>
          <short_desc>WK2 Mac client certificate authentication</short_desc>
          <delta_ts>2011-04-28 12:12:48 -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>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>393592</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-27 09:11:37 -0700</bug_when>
    <thetext>WebKit2 on Mac needs the ability to authenticate with client certificates.

In radar as &lt;rdar://problem/8773946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393594</commentid>
    <comment_count>1</comment_count>
      <attachid>91296</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-27 09:13:58 -0700</bug_when>
    <thetext>Created attachment 91296
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393597</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 09:17:20 -0700</bug_when>
    <thetext>Attachment 91296 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/C/mac/WKCredentialMac.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 13 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>393611</commentid>
    <comment_count>3</comment_count>
      <attachid>91301</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-27 09:42:13 -0700</bug_when>
    <thetext>Created attachment 91301
Patch v2 - Update alphabetization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394412</commentid>
    <comment_count>4</comment_count>
      <attachid>91301</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-04-28 07:08:46 -0700</bug_when>
    <thetext>Comment on attachment 91301
Patch v2 - Update alphabetization

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

&gt; Source/WebKit2/UIProcess/Authentication/WebCredential.cpp:49
&gt; +

I know it&apos;s a pain, but these member functions should really be put into a new mac/WebCredentialMac.cpp file (or mac/WebCredentialMac.mm, I&apos;m not sure what our convention is here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394475</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-28 09:27:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 91301 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91301&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Authentication/WebCredential.cpp:49
&gt; &gt; +
&gt; 
&gt; I know it&apos;s a pain, but these member functions should really be put into a new mac/WebCredentialMac.cpp file (or mac/WebCredentialMac.mm, I&apos;m not sure what our convention is here).

I think what you were trying to say was mac/WebCredential.mac.mm  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394476</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-28 09:28:17 -0700</bug_when>
    <thetext>And, not that much of a pain because it&apos;s just one project file change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394481</commentid>
    <comment_count>7</comment_count>
      <attachid>91504</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-28 09:33:14 -0700</bug_when>
    <thetext>Created attachment 91504
Patch v3 - With WebCredential.mac.mm split off</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394583</commentid>
    <comment_count>8</comment_count>
      <attachid>91524</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-28 11:26:31 -0700</bug_when>
    <thetext>Created attachment 91524
Patch v4 - Removed all the cross platform ifdefness, even if Mac is the only user right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394652</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-04-28 12:12:48 -0700</bug_when>
    <thetext>Landed in r85223</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91296</attachid>
            <date>2011-04-27 09:13:58 -0700</date>
            <delta_ts>2011-04-27 09:42:13 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>22255</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MDU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMjcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzczOTQ2PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjE0CisgICAgICAgIENsaWVudCBjZXJ0
aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBpbiBXZWJLaXQyCisKKyAgICAgICAgUHJvamVjdC1maWxl
IHN0dWZmOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwor
ICAgICAgICBBZGQgYSBmb3JtIG9mIENyZWRlbnRpYWwgdGhhdCBzdG9yZXMgY2VydGlmaWNhdGUg
aW5mbyBpbnN0ZWFkIG9mIGEgdXNlci9wYXNzd29yZCBwYWlyOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q3JlZGVudGlhbDo6V2ViQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRp
YWw6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6Y3JlYXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ3JlZGVudGlhbE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV0tD
cmVkZW50aWFsQ3JlYXRlV2l0aENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL21hYy9XS0NyZWRlbnRpYWxNYWMuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgTWFj
LW9ubHkgbWVzc2FnZSB0byB0ZWxsIHRoZSBXZWJQcm9jZXNzIHRvIGhhbmRsZSBjaGFsbGVuZ2Vz
IHdpdGggYSBjZXJ0aWZpY2F0ZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvQXV0aGVudGljYXRpb24vbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDZXJ0aWZpY2F0ZUZvckNo
YWxsZW5nZSk6CisKKyAgICAgICAgSWYgdGhlIGNyZWRlbnRpYWwgaXMgYSBjZXJ0aWZpY2F0ZSBp
bmZvIGNyZWRlbnRpYWwsIHNlbmQgdGhlIGNlcnRpZmljYXRlIGluZm8gb3ZlciB0byB0aGUgV2Vi
UHJvY2VzczoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OnVzZUNyZWRlbnRpYWwpOgorCisgICAgICAgIEFkZCBhIG5ld2x5IHJlcXVp
cmVkICNpbmNsdWRlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmNwcDoKKwogMjAxMS0wNC0yNiAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiA4NTA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
IAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAkocmV2
aXNpb24gODUwNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50
aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldLQ3JlZGVudGlhbC5oIgogCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NyZWRlbnRpYWxNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFjLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFj
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0NyZWRlbnRpYWxNYWMuaCIKKworI2luY2x1ZGUgIldl
YkNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tDcmVkZW50aWFs
UmVmIFdLQ3JlZGVudGlhbENyZWF0ZVdpdGhDZXJ0aWZpY2F0ZUluZm8oV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgY2VydGlmaWNhdGVJbmZvKQoreworICAgIFJlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVk
ZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3JlYXRlKHRvSW1wbChjZXJ0aWZpY2F0ZUluZm8pKTsK
KyAgICByZXR1cm4gdG9BUEkoY3JlZGVudGlhbC5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Ny
ZWRlbnRpYWxNYWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDcmVkZW50aWFsTWFjLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ3JlZGVudGlhbE1hY19oCisjZGVmaW5lIFdLQ3JlZGVu
dGlhbE1hY19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS0NyZWRlbnRpYWxSZWYg
V0tDcmVkZW50aWFsQ3JlYXRlV2l0aENlcnRpZmljYXRlSW5mbyhXS0NlcnRpZmljYXRlSW5mb1Jl
ZiBjZXJ0aWZpY2F0ZUluZm8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisj
ZW5kaWYgLy8gV0tDcmVkZW50aWFsTWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDg1MDUyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC02
Myw4ICs2NCwxNiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnVzZUNyCiAK
ICAgICBpZiAoIWNyZWRlbnRpYWwpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxl
bmdlKG1fY2hhbGxlbmdlSUQpLCAwKTsKLSAgICBlbHNlIAorICAgIGVsc2UgeworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAgICAgaWYgKFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJbmZv
ID0gY3JlZGVudGlhbC0+Y2VydGlmaWNhdGVJbmZvKCkpIHsKKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpVc2VDZXJ0aWZpY2F0ZUZv
ckNoYWxsZW5nZShtX2NoYWxsZW5nZUlELCBjZXJ0aWZpY2F0ZUluZm8tPnBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvKCkpLCAwKTsKKyAgICAgICAgICAgIG1fY2hhbGxlbmdlSUQgPSAwOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlVzZUNyZWRlbnRpYWxGb3JDaGFsbGVu
Z2UobV9jaGFsbGVuZ2VJRCwgY3JlZGVudGlhbC0+Y29yZSgpKSwgMCk7CisgICAgfQogCiAgICAg
bV9jaGFsbGVuZ2VJRCA9IDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmNwcAkocmV2aXNpb24gODUwNTIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAi
V2ViQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcAkocmV2aXNpb24gODUwNTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlh
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0
ZUluZm8uaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNyZWRlbnRpYWw6OldlYkNyZWRl
bnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKQEAgLTMzLDYgKzM1
LDE4IEBAIFdlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwoY29uc3QgV2ViQ28KIHsKIH0KIAor
I2lmIFBMQVRGT1JNKE1BQykKK1dlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwoV2ViQ2VydGlm
aWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8pCisgICAgOiBtX2NlcnRpZmljYXRlSW5mbyhjZXJ0
aWZpY2F0ZUluZm8pCit7Cit9CisKK1dlYkNlcnRpZmljYXRlSW5mbyogV2ViQ3JlZGVudGlhbDo6
Y2VydGlmaWNhdGVJbmZvKCkKK3sKKyAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm8uZ2V0KCk7
Cit9CisjZW5kaWYKKwogY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgV2ViQ3JlZGVudGlhbDo6
Y29yZSgpCiB7CiAgICAgcmV0dXJuIG1fY29yZUNyZWRlbnRpYWw7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFs
LmgJKHJldmlzaW9uIDg1MDUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOworCiBjbGFz
cyBXZWJDcmVkZW50aWFsIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDcmVkZW50aWFsOwpAQCAtNDgsNyArNTAsMTYgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDcmVkZW50aWFs
KFdlYkNvcmU6OkNyZWRlbnRpYWwodXNlcm5hbWUtPnN0cmluZygpLCBwYXNzd29yZC0+c3RyaW5n
KCksIHBlcnNpc3RlbmNlKSkpOwogICAgIH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVhdGUoV2ViQ2VydGlmaWNhdGVJbmZvKiBj
ZXJ0aWZpY2F0ZUluZm8pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNy
ZWRlbnRpYWwoY2VydGlmaWNhdGVJbmZvKSk7CisgICAgfQogICAgIAorICAgIFdlYkNlcnRpZmlj
YXRlSW5mbyogY2VydGlmaWNhdGVJbmZvKCk7CisjZW5kaWYKKwogICAgIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNvcmUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdXNlcigpIGNvbnN0OwpA
QCAtNTksNiArNzAsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgbV9jb3JlQ3Jl
ZGVudGlhbDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBXZWJDcmVkZW50aWFsKFdlYkNlcnRp
ZmljYXRlSW5mbyopOworICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNh
dGVJbmZvOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDg1MDUyKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNiArMzU1LDkgQEAKIAkJNTFBQ0JCQTExMjdB
OEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkg
LyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMzAwNTAxMjUyOUQwRTAw
MEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJC
YWNrRm9yd2FyZExpc3RDRi5jcHAgKi87IH07CiAJCTUxQjMwMDUxMTI1MjlEMEUwMDBCNUNBMCAv
KiBXZWJQYWdlUHJveHlDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3Bw
ICovOyB9OworCQk1MUM0MDMyNjEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzQwMzI0
MTM2NjI2RUYwMERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuY3BwICovOyB9OworCQk1MUM0MDMy
NzEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM0MDMyNTEzNjYyNkVGMDBEQzk3MkQgLyog
V0tDcmVkZW50aWFsTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OworCQk1MUM0MDMyQzEzNjc0OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRpb25NYW5h
Z2VyLm1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQzQwMzJCMTM2NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1t
ICovOyB9OwogCQk1MUQwMkY2NDEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDAyRjYzMTMyRUM1QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNv
bkRhdGFiYXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNz
YWdlcy5oICovOyB9OwogCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTEyNDksNiArMTI1Miw5IEBA
CiAJCTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMzAwNEUxMjUyOUQw
RTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcDsgcGF0aCA9IGNmL1dl
YkJhY2tGb3J3YXJkTGlzdENGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFC
MzAwNEYxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlBhZ2VQcm94eUNGLmNwcDsgcGF0aCA9IGNmL1dl
YlBhZ2VQcm94eUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDNDAzMjQx
MzY2MjZFRjAwREM5NzJEIC8qIFdLQ3JlZGVudGlhbE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXS0NyZWRlbnRpYWxNYWMuY3BwOyBwYXRoID0gbWFjL1dLQ3Jl
ZGVudGlhbE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzQwMzI1MTM2
NjI2RUYwMERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tDcmVkZW50aWFsTWFjLmg7IHBhdGggPSBtYWMvV0tDcmVkZW50aWFsTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzQwMzJCMTM2NzQ5RDgwMERDOTcy
RCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbTsgcGF0aCA9IG1h
Yy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQwMkY2MzEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkljb25E
YXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRDAyRjY1MTMyRUM2RDMwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdl
cy5pbjsgcGF0aCA9IEljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2
IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzI1LDYgKzIzMzEsNyBAQAogCQk1MTJGNTg4NjEyQTg4MzQ3MDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTUxQzQwMzJBMTM2NzQ5QzQwMERDOTcyRCAvKiBtYWMgKi8sCiAJCQkJNTEyRjU4ODcx
MkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8sCiAJCQkJNTEy
RjU4ODgxMkE4ODM2NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oICovLAogCQkJ
CTUxMkY1ODg5MTJBODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4gKi8sCkBAIC0yMzY3LDYgKzIzNzQsMjMgQEAKIAkJCW5hbWUgPSBjZjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTUxQzQwMzIzMTM2NjI2OTgwMERDOTcyRCAvKiBt
YWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxQzQw
MzI0MTM2NjI2RUYwMERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuY3BwICovLAorCQkJCTUxQzQw
MzI1MTM2NjI2RUYwMERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuaCAqLywKKwkJCSk7CisJCQlu
YW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNTFDNDAzMkEx
MzY3NDlDNDAwREM5NzJEIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJNTFDNDAzMkIxMzY3NDlEODAwREM5NzJEIC8qIEF1dGhlbnRpY2F0aW9u
TWFuYWdlci5tYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTUxRkJCOUMxMTMyRTA3OTIwMEYzMjdCNCAvKiBJY29uRGF0
YWJhc2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjYy
OCw2ICsyNjUyLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
NTEyM0NGMTgxMzNEMjVFNjAwNTZGODAwIC8qIGNnICovLAorCQkJCTUxQzQwMzIzMTM2NjI2OTgw
MERDOTcyRCAvKiBtYWMgKi8sCiAJCQkJQkNCNjM0NzcxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktp
dDIuaCAqLywKIAkJCQlCQ0REQjMyQzEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8s
CiAJCQkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuY3BwICovLApAQCAtMzY4NCw2ICszNzA5LDcgQEAKIAkJCQlFMUEzMTczMjEzNENFQTZDMDA3
QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3OUZEOUMx
MzREMzgwNjAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVl
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFDNDAzMjcxMzY2MjZFRjAwREM5NzJEIC8q
IFdLQ3JlZGVudGlhbE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00MzEzLDYgKzQzMzksOCBAQAog
CQkJCUUxNzlGRDlGMTM0RDM4MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTMxRUEyNUQyMTM0Rjc4QzAwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3Vz
ZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZFMkE4
IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFDNDAzMjYxMzY2MjZFRjAwREM5NzJEIC8qIFdLQ3JlZGVudGlhbE1hYy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MUM0MDMyQzEzNjc0OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRp
b25NYW5hZ2VyLm1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oCShyZXZpc2lvbiA4NTA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIERvd25sb2FkOworY2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFz
cyBXZWJGcmFtZTsKIAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyIHsKQEAgLTU1LDYgKzU2
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWQqLCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHZvaWQgdXNlQ2VydGlmaWNhdGVGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdl
SUQsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJik7CisjZW5kaWYKKwogICAgIHZvaWQg
dXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYpOwogICAgIHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZv
ckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBjYW5jZWxDaGFsbGVu
Z2UodWludDY0X3QgY2hhbGxlbmdlSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDg1MDUyKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gQXV0aGVudGljYXRpb25NYW5hZ2VyIHsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgdm9pZCBVc2VDZXJ0aWZpY2F0ZUZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJ
RCwgV2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSk7CisjZW5kaWYK
ICAgICB2b2lkIFVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQs
IFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCk7CiAgICAgdm9pZCBDb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lk
IENhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
bWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVudGlj
YXRpb24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlv
bk1hbmFnZXIubWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgorCisjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlIDxTZWN1
cml0eS9TZWNJZGVudGl0eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ2VydGlmaWNhdGVGb3JDaGFsbGVu
Z2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8pCit7CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdl
ID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQpOworICAgIEFTU0VSVCghY2hhbGxlbmdl
LmlzTnVsbCgpKTsKKyAgICAKKyAgICBDRkFycmF5UmVmIGNoYWluID0gY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlQ2hhaW4oKTsKKyAgICBBU1NFUlQoY2hhaW4pOworICAgIEFTU0VSVChDRkFy
cmF5R2V0Q291bnQoY2hhaW4pKTsKKyAgICAKKyAgICAvLyBUaGUgcGFzc2VkLWluIGNlcnRpZmlj
YXRlIGNoYWluIGluY2x1ZGVzIHRoZSBpZGVudGl0eSBjZXJ0aWZpY2F0ZSBhdCBpbmRleCAwLCBh
bmQgYWRkaXRpb25hbCBjZXJ0aWZpY2F0ZXMgc3RhcnRpbmcgYXQgaW5kZXggMS4KKyAgICBTZWNJ
ZGVudGl0eVJlZiBpZGVudGl0eTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBTZWNJZGVudGl0eUNy
ZWF0ZVdpdGhDZXJ0aWZpY2F0ZShOVUxMLCAoU2VjQ2VydGlmaWNhdGVSZWYpQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChjaGFpbiwgMCksICZpZGVudGl0eSk7CisgICAgaWYgKHJlc3VsdCAhPSBlcnJT
ZWNTdWNjZXNzKSB7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTZWNJZGVu
dGl0eVJlZiB3aXRoIGNlcnRpZmljYXRlIC0gJWkiLCByZXN1bHQpOworICAgICAgICBbY2hhbGxl
bmdlLnNlbmRlcigpIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5uc1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIENGSW5kZXggY2hhaW5Db3VudCA9IENGQXJyYXlHZXRDb3VudChjaGFpbik7CisgICAg
TlNBcnJheSAqbnNDaGFpbiA9IGNoYWluQ291bnQgPiAxID8gWyhOU0FycmF5ICopY2hhaW4gc3Vi
YXJyYXlXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMSwgY2hhaW5Db3VudCAtIDEpXSA6IG5pbDsKKwor
ICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVu
dGlhbFdpdGhJZGVudGl0eTppZGVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlczpuc0NoYWluCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisKKyAgICBbY2hh
bGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2Via2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91301</attachid>
            <date>2011-04-27 09:42:13 -0700</date>
            <delta_ts>2011-04-28 09:33:14 -0700</delta_ts>
            <desc>Patch v2 - Update alphabetization</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>22227</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MDU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMjcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzczOTQ2PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjE0CisgICAgICAgIENsaWVudCBjZXJ0
aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBpbiBXZWJLaXQyCisKKyAgICAgICAgUHJvamVjdC1maWxl
IHN0dWZmOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwor
ICAgICAgICBBZGQgYSBmb3JtIG9mIENyZWRlbnRpYWwgdGhhdCBzdG9yZXMgY2VydGlmaWNhdGUg
aW5mbyBpbnN0ZWFkIG9mIGEgdXNlci9wYXNzd29yZCBwYWlyOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q3JlZGVudGlhbDo6V2ViQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRp
YWw6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L1dlYkNyZWRlbnRpYWwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6Y3JlYXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ3JlZGVudGlhbE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV0tD
cmVkZW50aWFsQ3JlYXRlV2l0aENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL21hYy9XS0NyZWRlbnRpYWxNYWMuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgTWFj
LW9ubHkgbWVzc2FnZSB0byB0ZWxsIHRoZSBXZWJQcm9jZXNzIHRvIGhhbmRsZSBjaGFsbGVuZ2Vz
IHdpdGggYSBjZXJ0aWZpY2F0ZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvQXV0aGVudGljYXRpb24vbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDZXJ0aWZpY2F0ZUZvckNo
YWxsZW5nZSk6CisKKyAgICAgICAgSWYgdGhlIGNyZWRlbnRpYWwgaXMgYSBjZXJ0aWZpY2F0ZSBp
bmZvIGNyZWRlbnRpYWwsIHNlbmQgdGhlIGNlcnRpZmljYXRlIGluZm8gb3ZlciB0byB0aGUgV2Vi
UHJvY2VzczoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OnVzZUNyZWRlbnRpYWwpOgorCisgICAgICAgIEFkZCBhIG5ld2x5IHJlcXVp
cmVkICNpbmNsdWRlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmNwcDoKKwogMjAxMS0wNC0yNiAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiA4NTA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
IAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAkocmV2
aXNpb24gODUwNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50
aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldLQ3JlZGVudGlhbC5oIgogCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NyZWRlbnRpYWxNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFjLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFj
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0NyZWRlbnRpYWxNYWMuaCIKKworI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldl
YkNyZWRlbnRpYWwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tDcmVkZW50aWFs
UmVmIFdLQ3JlZGVudGlhbENyZWF0ZVdpdGhDZXJ0aWZpY2F0ZUluZm8oV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgY2VydGlmaWNhdGVJbmZvKQoreworICAgIFJlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVk
ZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3JlYXRlKHRvSW1wbChjZXJ0aWZpY2F0ZUluZm8pKTsK
KyAgICByZXR1cm4gdG9BUEkoY3JlZGVudGlhbC5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFj
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Ny
ZWRlbnRpYWxNYWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDcmVkZW50aWFsTWFjLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ3JlZGVudGlhbE1hY19oCisjZGVmaW5lIFdLQ3JlZGVu
dGlhbE1hY19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS0NyZWRlbnRpYWxSZWYg
V0tDcmVkZW50aWFsQ3JlYXRlV2l0aENlcnRpZmljYXRlSW5mbyhXS0NlcnRpZmljYXRlSW5mb1Jl
ZiBjZXJ0aWZpY2F0ZUluZm8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisj
ZW5kaWYgLy8gV0tDcmVkZW50aWFsTWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJKHJldmlzaW9uIDg1MDUyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFn
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTYzLDggKzY0LDE2IEBAIHZvaWQgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eTo6dXNlQ3IKIAogICAgIGlmICghY3JlZGVudGlhbCkKICAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OkNvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UobV9jaGFsbGVuZ2VJRCksIDApOwotICAg
IGVsc2UgCisgICAgZWxzZSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBpZiAoV2ViQ2Vy
dGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8gPSBjcmVkZW50aWFsLT5jZXJ0aWZpY2F0ZUlu
Zm8oKSkgeworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OlVzZUNlcnRpZmljYXRlRm9yQ2hhbGxlbmdlKG1fY2hhbGxlbmdlSUQsIGNl
cnRpZmljYXRlSW5mby0+cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSksIDApOworICAgICAgICAg
ICAgbV9jaGFsbGVuZ2VJRCA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNl
bmRpZgogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6VXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZShtX2NoYWxsZW5nZUlELCBjcmVkZW50aWFs
LT5jb3JlKCkpLCAwKTsKKyAgICB9CiAKICAgICBtX2NoYWxsZW5nZUlEID0gMDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCShyZXZp
c2lvbiA4NTA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJD
ZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNy
ZWRlbnRpYWwuY3BwCShyZXZpc2lvbiA4NTA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwu
aCIKIAorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogV2ViQ3JlZGVudGlhbDo6V2ViQ3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQpAQCAtMzMsNiArMzUsMTggQEAgV2ViQ3JlZGVudGlhbDo6V2ViQ3Jl
ZGVudGlhbChjb25zdCBXZWJDbwogewogfQogCisjaWYgUExBVEZPUk0oTUFDKQorV2ViQ3JlZGVu
dGlhbDo6V2ViQ3JlZGVudGlhbChXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbykK
KyAgICA6IG1fY2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlSW5mbykKK3sKK30KKworV2ViQ2Vy
dGlmaWNhdGVJbmZvKiBXZWJDcmVkZW50aWFsOjpjZXJ0aWZpY2F0ZUluZm8oKQoreworICAgIHJl
dHVybiBtX2NlcnRpZmljYXRlSW5mby5nZXQoKTsKK30KKyNlbmRpZgorCiBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJiBXZWJDcmVkZW50aWFsOjpjb3JlKCkKIHsKICAgICByZXR1cm4gbV9jb3Jl
Q3JlZGVudGlhbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJDcmVkZW50aWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAkocmV2aXNpb24gODUwNTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBXZWJDZXJ0aWZpY2F0ZUluZm87CisKIGNsYXNzIFdlYkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNy
ZWRlbnRpYWw7CkBAIC00OCw3ICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoV2ViQ29yZTo6Q3JlZGVudGlhbCh1c2VybmFt
ZS0+c3RyaW5nKCksIHBhc3N3b3JkLT5zdHJpbmcoKSwgcGVyc2lzdGVuY2UpKSk7CiAgICAgfQor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNyZWRlbnRpYWw+
IGNyZWF0ZShXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3JlZGVudGlhbChjZXJ0aWZpY2F0ZUluZm8pKTsK
KyAgICB9CiAgICAgCisgICAgV2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8oKTsK
KyNlbmRpZgorCiAgICAgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY29yZSgpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiB1c2VyKCkgY29uc3Q7CkBAIC01OSw2ICs3MCwxMSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCiAgICAg
V2ViQ29yZTo6Q3JlZGVudGlhbCBtX2NvcmVDcmVkZW50aWFsOworCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIFdlYkNyZWRlbnRpYWwoV2ViQ2VydGlmaWNhdGVJbmZvKik7CisgICAgUmVmUHRyPFdl
YkNlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODUwNTIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1
NSw2ICszNTUsOSBAQAogCQk1MUFDQkJBMTEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
ICovOyB9OwogCQk1MUIzMDA1MDEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
MzAwNEUxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLzsgfTsK
IAkJNTFCMzAwNTExMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRGMTI1MjlEMEUw
MDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAgKi87IH07CisJCTUxQzQwMzI2MTM2NjI2RUYw
MERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNDAzMjQxMzY2MjZFRjAwREM5NzJEIC8qIFdLQ3JlZGVu
dGlhbE1hYy5jcHAgKi87IH07CisJCTUxQzQwMzI3MTM2NjI2RUYwMERDOTcyRCAvKiBXS0NyZWRl
bnRpYWxNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQzQwMzI1MTM2NjI2RUYwMERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTUxQzQwMzJDMTM2NzQ5RDgw
MERDOTcyRCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNDAzMkIxMzY3NDlEODAwREM5NzJEIC8q
IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0gKi87IH07CiAJCTUxRDAyRjY0MTMyRUM1Qjkw
MEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjMxMzJFQzVCOTAwQkVB
QTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRDAy
RjZBMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjcxMzJFQzczNzAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDAyRjZCMTMy
RUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2ODEz
MkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwpAQCAtMTI0OSw2ICsxMjUyLDkgQEAKIAkJNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRM
aXN0Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQmFja0Zv
cndhcmRMaXN0Q0YuY3BwOyBwYXRoID0gY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2Vi
UGFnZVByb3h5Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
UGFnZVByb3h5Q0YuY3BwOyBwYXRoID0gY2YvV2ViUGFnZVByb3h5Q0YuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUM0MDMyNDEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50
aWFsTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdLQ3JlZGVu
dGlhbE1hYy5jcHA7IHBhdGggPSBtYWMvV0tDcmVkZW50aWFsTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFDNDAzMjUxMzY2MjZFRjAwREM5NzJEIC8qIFdLQ3JlZGVudGlh
bE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NyZWRlbnRpYWxNYWMu
aDsgcGF0aCA9IG1hYy9XS0NyZWRlbnRpYWxNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFDNDAzMkIxMzY3NDlEODAwREM5NzJEIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5t
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBdXRoZW50aWNh
dGlvbk1hbmFnZXIubWFjLm1tOyBwYXRoID0gbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjYzMTMyRUM1QjkwMEJFQUE5
NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjUxMzJFQzZEMzAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IFdlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gSWNvbkRhdGFiYXNlL1dl
Ykljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQwMkY2NzEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMjUsNiArMjMzMSw3IEBACiAJ
CTUxMkY1ODg2MTJBODgzNDcwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFDNDAzMkExMzY3NDlDNDAwREM5
NzJEIC8qIG1hYyAqLywKIAkJCQk1MTJGNTg4NzEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJCQk1MTJGNTg4ODEyQTg4MzY2MDA2Mjk1MzAgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyLmggKi8sCiAJCQkJNTEyRjU4ODkxMkE4ODM2NjAwNjI5NTMwIC8q
IEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKQEAgLTIzNjcsNiArMjM3NCwy
MyBAQAogCQkJbmFtZSA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
NTFDNDAzMjMxMzY2MjY5ODAwREM5NzJEIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFDNDAzMjQxMzY2MjZFRjAwREM5NzJEIC8qIFdLQ3Jl
ZGVudGlhbE1hYy5jcHAgKi8sCisJCQkJNTFDNDAzMjUxMzY2MjZFRjAwREM5NzJEIC8qIFdLQ3Jl
ZGVudGlhbE1hYy5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQk1MUM0MDMyQTEzNjc0OUM0MDBEQzk3MkQgLyogbWFjICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUM0MDMyQjEzNjc0
OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSAqLywKKwkJCSk7CisJ
CQluYW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTFGQkI5
QzExMzJFMDc5MjAwRjMyN0I0IC8qIEljb25EYXRhYmFzZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNjI4LDYgKzI2NTIsNyBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTIzQ0YxODEzM0QyNUU2MDA1NkY4MDAgLyog
Y2cgKi8sCisJCQkJNTFDNDAzMjMxMzY2MjY5ODAwREM5NzJEIC8qIG1hYyAqLywKIAkJCQlCQ0I2
MzQ3NzExNkJGMTA2MDA2MDMyMTUgLyogV2ViS2l0Mi5oICovLAogCQkJCUJDRERCMzJDMTI0RUMy
RTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCAqLywKIAkJCQk1MTdBMzNCMzEzMEIzMDhDMDBGODBD
QjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8sCkBAIC0zNjg0LDYgKzM3MDks
NyBAQAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRD
b2RlcnNNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUM2NkExMTM0QjlEMzgwMDRGRTJBOCAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MUM0MDMyNzEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTQzMTMsNiArNDMzOSw4IEBACiAJCQkJRTE3OUZEOUYxMzREMzgyNTAwMTVCODgz
IC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFFQTI1RDIxMzRG
NzhDMDAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDRDVDNjZBMDEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUM0MDMyNjEzNjYyNkVGMDBEQzk3
MkQgLyogV0tDcmVkZW50aWFsTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQzQwMzJDMTM2
NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDg1MDUy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWQ7CitjbGFzcyBQ
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBBdXRoZW50
aWNhdGlvbk1hbmFnZXIgewpAQCAtNTUsNiArNTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShEb3dubG9hZCosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCB1c2VDZXJ0aWZpY2F0ZUZv
ckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8mKTsKKyNlbmRpZgorCiAgICAgdm9pZCB1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgdm9p
ZCBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKTsKICAgICB2b2lkIGNhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgko
cmV2aXNpb24gODUwNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjEsNiArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBBdXRoZW50aWNhdGlv
bk1hbmFnZXIgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIFVzZUNlcnRpZmljYXRlRm9y
Q2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBXZWJLaXQ6OlBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlKTsKKyNlbmRpZgogICAgIHZvaWQgVXNlQ3JlZGVudGlhbEZvckNo
YWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2ViQ29yZTo6Q3JlZGVudGlhbCBjcmVkZW50
aWFsKTsKICAgICB2b2lkIENvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWlu
dDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQgQ2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNo
YWxsZW5nZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVudGljYXRp
b24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9tYWMvQXV0aGVudGljYXRpb25NYW5h
Z2VyLm1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0
aGVudGljYXRpb24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5oIgorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0lkZW50aXR5Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjp1c2VDZXJ0aWZpY2F0ZUZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29u
c3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKK3sKKyAgICBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVu
Z2VJRCk7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOworICAgIAorICAgIENGQXJy
YXlSZWYgY2hhaW4gPSBjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpOworICAgIEFT
U0VSVChjaGFpbik7CisgICAgQVNTRVJUKENGQXJyYXlHZXRDb3VudChjaGFpbikpOworICAgIAor
ICAgIC8vIFRoZSBwYXNzZWQtaW4gY2VydGlmaWNhdGUgY2hhaW4gaW5jbHVkZXMgdGhlIGlkZW50
aXR5IGNlcnRpZmljYXRlIGF0IGluZGV4IDAsIGFuZCBhZGRpdGlvbmFsIGNlcnRpZmljYXRlcyBz
dGFydGluZyBhdCBpbmRleCAxLgorICAgIFNlY0lkZW50aXR5UmVmIGlkZW50aXR5OworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IFNlY0lkZW50aXR5Q3JlYXRlV2l0aENlcnRpZmljYXRlKE5VTEwsIChT
ZWNDZXJ0aWZpY2F0ZVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNoYWluLCAwKSwgJmlkZW50
aXR5KTsKKyAgICBpZiAocmVzdWx0ICE9IGVyclNlY1N1Y2Nlc3MpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gY3JlYXRlIFNlY0lkZW50aXR5UmVmIHdpdGggY2VydGlmaWNhdGUgLSAl
aSIsIHJlc3VsdCk7CisgICAgICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQ0ZJbmRleCBjaGFpbkNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGNoYWluKTsKKyAgICBOU0FycmF5ICpuc0NoYWluID0gY2hhaW5Db3Vu
dCA+IDEgPyBbKE5TQXJyYXkgKiljaGFpbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5nZSgx
LCBjaGFpbkNvdW50IC0gMSldIDogbmlsOworCisgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50
aWFsID0gW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsV2l0aElkZW50aXR5OmlkZW50aXR5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGVzOm5zQ2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFs
UGVyc2lzdGVuY2VOb25lXTsKKworICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgdXNlQ3JlZGVudGlh
bDpjcmVkZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5uc1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91504</attachid>
            <date>2011-04-28 09:33:14 -0700</date>
            <delta_ts>2011-04-28 11:26:31 -0700</delta_ts>
            <desc>Patch v3 - With WebCredential.mac.mm split off</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>25030</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTkyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMjggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzczOTQ2PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjE0CisgICAgICAgIENsaWVudCBjZXJ0
aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBpbiBXZWJLaXQyCisKKyAgICAgICAgUHJvamVjdC1maWxl
IHN0dWZmOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwor
ICAgICAgICBBZGQgYSBmb3JtIG9mIENyZWRlbnRpYWwgdGhhdCBzdG9yZXMgY2VydGlmaWNhdGUg
aW5mbyBpbnN0ZWFkIG9mIGEgdXNlci9wYXNzd29yZCBwYWlyOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vbWFjOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vbWFjL1dlYkNyZWRlbnRpYWwubWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ3JlZGVudGlhbDo6V2ViQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRl
bnRpYWw6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL1dlYkNyZWRlbnRpYWwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ3JlZGVudGlhbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvbWFjL1dLQ3JlZGVudGlhbE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAo
V0tDcmVkZW50aWFsQ3JlYXRlV2l0aENlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NyZWRlbnRpYWxNYWMuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEg
TWFjLW9ubHkgbWVzc2FnZSB0byB0ZWxsIHRoZSBXZWJQcm9jZXNzIHRvIGhhbmRsZSBjaGFsbGVu
Z2VzIHdpdGggYSBjZXJ0aWZpY2F0ZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQXV0aGVudGljYXRpb24vbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDZXJ0aWZpY2F0ZUZv
ckNoYWxsZW5nZSk6CisKKyAgICAgICAgSWYgdGhlIGNyZWRlbnRpYWwgaXMgYSBjZXJ0aWZpY2F0
ZSBpbmZvIGNyZWRlbnRpYWwsIHNlbmQgdGhlIGNlcnRpZmljYXRlIGluZm8gb3ZlciB0byB0aGUg
V2ViUHJvY2VzczoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHk6OnVzZUNyZWRlbnRpYWwpOgorCisgICAgICAgIEFkZCBhIG5ld2x5IHJl
cXVpcmVkICNpbmNsdWRlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFs
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmNwcDoKKwogMjAxMS0wNC0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmlu
c29uLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gODUxOTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ3Jl
ZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVu
dGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDg1MTkyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0NyZWRlbnRpYWwuaCIKIAorI2lu
Y2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIK
ICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ3JlZGVudGlh
bE1hYy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ3JlZGVudGlhbE1hYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDcmVkZW50aWFsTWFj
LmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCIKKyNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK1dLQ3JlZGVudGlhbFJlZiBXS0NyZWRlbnRpYWxDcmVhdGVXaXRoQ2VydGlmaWNhdGVJ
bmZvKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5mbykKK3sKKyAgICBSZWZQdHI8
V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IFdlYkNyZWRlbnRpYWw6OmNyZWF0ZSh0b0ltcGwo
Y2VydGlmaWNhdGVJbmZvKSk7CisgICAgcmV0dXJuIHRvQVBJKGNyZWRlbnRpYWwucmVsZWFzZSgp
LnJlbGVhc2VSZWYoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ3JlZGVudGlhbE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDcmVkZW50aWFsTWFjLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ3JlZGVudGlhbE1hYy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NyZWRlbnRpYWxNYWNf
aAorI2RlZmluZSBXS0NyZWRlbnRpYWxNYWNfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBP
UlQgV0tDcmVkZW50aWFsUmVmIFdLQ3JlZGVudGlhbENyZWF0ZVdpdGhDZXJ0aWZpY2F0ZUluZm8o
V0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJbmZvKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQ3JlZGVudGlhbE1hY19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCShyZXZpc2lvbiA4NTE5
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC02Myw4ICs2NCwx
NiBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnVzZUNyCiAKICAgICBpZiAo
IWNyZWRlbnRpYWwpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6QXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKG1fY2hh
bGxlbmdlSUQpLCAwKTsKLSAgICBlbHNlIAorICAgIGVsc2UgeworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgaWYgKFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJbmZvID0gY3JlZGVu
dGlhbC0+Y2VydGlmaWNhdGVJbmZvKCkpIHsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpVc2VDZXJ0aWZpY2F0ZUZvckNoYWxsZW5n
ZShtX2NoYWxsZW5nZUlELCBjZXJ0aWZpY2F0ZUluZm8tPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCkpLCAwKTsKKyAgICAgICAgICAgIG1fY2hhbGxlbmdlSUQgPSAwOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UobV9jaGFs
bGVuZ2VJRCwgY3JlZGVudGlhbC0+Y29yZSgpKSwgMCk7CisgICAgfQogCiAgICAgbV9jaGFsbGVu
Z2VJRCA9IDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyLmNwcAkocmV2aXNpb24gODUxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ3JlZGVu
dGlhbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dl
YkNyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcAkocmV2aXNpb24gODUxOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJDcmVkZW50aWFsLmgiCiAKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwoY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaAko
cmV2aXNpb24gODUxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vV2ViQ3JlZGVudGlhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJDZXJ0aWZpY2F0ZUluZm87CisKIGNsYXNzIFdl
YkNyZWRlbnRpYWwgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgVHlwZSBBUElUeXBlID0gVHlwZUNyZWRlbnRpYWw7CkBAIC00OCw3ICs1MCwxNiBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoV2Vi
Q29yZTo6Q3JlZGVudGlhbCh1c2VybmFtZS0+c3RyaW5nKCksIHBhc3N3b3JkLT5zdHJpbmcoKSwg
cGVyc2lzdGVuY2UpKSk7CiAgICAgfQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNyZWRlbnRpYWw+IGNyZWF0ZShXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRp
ZmljYXRlSW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3JlZGVu
dGlhbChjZXJ0aWZpY2F0ZUluZm8pKTsKKyAgICB9CiAgICAgCisgICAgV2ViQ2VydGlmaWNhdGVJ
bmZvKiBjZXJ0aWZpY2F0ZUluZm8oKTsKKyNlbmRpZgorCiAgICAgY29uc3QgV2ViQ29yZTo6Q3Jl
ZGVudGlhbCYgY29yZSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiB1c2VyKCkgY29uc3Q7CkBAIC01
OSw2ICs3MCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gQVBJVHlwZTsgfQogCiAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBtX2NvcmVDcmVkZW50
aWFsOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFdlYkNyZWRlbnRpYWwoV2ViQ2VydGlmaWNh
dGVJbmZvKik7CisgICAgUmVmUHRyPFdlYkNlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUlu
Zm87CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9XZWJDcmVkZW50aWFsLm1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vbWFj
L1dlYkNyZWRlbnRpYWwubWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9XZWJDcmVkZW50aWFsLm1hYy5tbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCisKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8u
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwo
V2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8pCisgICAgOiBtX2NlcnRpZmljYXRl
SW5mbyhjZXJ0aWZpY2F0ZUluZm8pCit7Cit9CisKK1dlYkNlcnRpZmljYXRlSW5mbyogV2ViQ3Jl
ZGVudGlhbDo6Y2VydGlmaWNhdGVJbmZvKCkKK3sKKyAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUlu
Zm8uZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODUx
OTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM1NSw2ICszNTUsMTAgQEAKIAkJNTFBQ0JCQTExMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTFCMzAwNTAxMjUyOUQwRTAwMEI1Q0Ew
IC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9y
d2FyZExpc3RDRi5jcHAgKi87IH07CiAJCTUxQjMwMDUxMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQ
YWdlUHJveHlDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUIzMDA0RjEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwICovOyB9
OworCQk1MUM0MDMyNjEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzQwMzI0MTM2NjI2
RUYwMERDOTcyRCAvKiBXS0NyZWRlbnRpYWxNYWMuY3BwICovOyB9OworCQk1MUM0MDMyNzEzNjYy
NkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM0MDMyNTEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVk
ZW50aWFsTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OworCQk1MUM0MDMyQzEzNjc0OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzQw
MzJCMTM2NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tICovOyB9
OworCQk1MUM5RTQ3MDEzNjlDRDZGMDA3OTAyNUIgLyogV2ViQ3JlZGVudGlhbC5tYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM5RTQ2RjEzNjlD
RDZGMDA3OTAyNUIgLyogV2ViQ3JlZGVudGlhbC5tYWMubW0gKi87IH07CiAJCTUxRDAyRjY0MTMy
RUM1QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjMxMzJFQzVC
OTAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CTUxRDAyRjZBMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjcxMzJF
QzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDAy
RjZCMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQw
MkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwpAQCAtMTI0OSw2ICsxMjUzLDEwIEBACiAJCTUxQUNCQjlGMTI3QThGMkMw
MEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMzAwNEUxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tG
b3J3YXJkTGlzdENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YkJhY2tGb3J3YXJkTGlzdENGLmNwcDsgcGF0aCA9IGNmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMzAwNEYxMjUyOUQwRTAwMEI1Q0Ew
IC8qIFdlYlBhZ2VQcm94eUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYlBhZ2VQcm94eUNGLmNwcDsgcGF0aCA9IGNmL1dlYlBhZ2VQcm94eUNGLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDNDAzMjQxMzY2MjZFRjAwREM5NzJEIC8qIFdL
Q3JlZGVudGlhbE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
S0NyZWRlbnRpYWxNYWMuY3BwOyBwYXRoID0gbWFjL1dLQ3JlZGVudGlhbE1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzQwMzI1MTM2NjI2RUYwMERDOTcyRCAvKiBXS0Ny
ZWRlbnRpYWxNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDcmVkZW50
aWFsTWFjLmg7IHBhdGggPSBtYWMvV0tDcmVkZW50aWFsTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQzQwMzJCMTM2NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50aWNhdGlvbk1h
bmFnZXIubWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXV0
aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbTsgcGF0aCA9IG1hYy9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUM5RTQ2RjEzNjlDRDZG
MDA3OTAyNUIgLyogV2ViQ3JlZGVudGlhbC5tYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJDcmVkZW50aWFsLm1hYy5tbTsgcGF0aCA9IG1hYy9XZWJDcmVk
ZW50aWFsLm1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjMxMzJF
QzVCOTAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQwMkY2NTEzMkVDNkQz
MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW47IHBhdGggPSBJY29u
RGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJh
c2VNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0
YWJhc2VNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMyNSw2ICsy
MzMzLDcgQEAKIAkJNTEyRjU4ODYxMkE4ODM0NzAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUM0MDMyQTEz
Njc0OUM0MDBEQzk3MkQgLyogbWFjICovLAogCQkJCTUxMkY1ODg3MTJBODgzNjYwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxMkY1ODg4MTJBODgzNjYwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCAqLywKIAkJCQk1MTJGNTg4OTEyQTg4MzY2
MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtMjMz
NSw2ICsyMzQ0LDcgQEAKIAkJNTEyRjU4OEQxMkE4ODM2RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0
aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUM5
RTQ2RTEzNjlDRDREMDA3OTAyNUIgLyogbWFjICovLAogCQkJCTUxMkY1ODhFMTJBODgzODgwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCAqLywKIAkJCQk1MTJGNTg4
RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oICovLAog
CQkJCTUxMkY1ODkwMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuY3BwICovLApAQCAtMjM2Nyw2ICsyMzc3LDMxIEBACiAJCQluYW1lID0gY2Y7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MUM0MDMyMzEzNjYyNjk4MDBEQzk3MkQg
LyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MUM0MDMyNDEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmNwcCAqLywKKwkJCQk1
MUM0MDMyNTEzNjYyNkVGMDBEQzk3MkQgLyogV0tDcmVkZW50aWFsTWFjLmggKi8sCisJCQkpOwor
CQkJbmFtZSA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUxQzQw
MzJBMTM2NzQ5QzQwMERDOTcyRCAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTUxQzQwMzJCMTM2NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50aWNh
dGlvbk1hbmFnZXIubWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQk1MUM5RTQ2RTEzNjlDRDREMDA3OTAyNUIgLyogbWFj
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUM5RTQ2
RjEzNjlDRDZGMDA3OTAyNUIgLyogV2ViQ3JlZGVudGlhbC5tYWMubW0gKi8sCisJCQkpOworCQkJ
bmFtZSA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTUxRkJCOUMx
MTMyRTA3OTIwMEYzMjdCNCAvKiBJY29uRGF0YWJhc2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjYyOCw2ICsyNjYzLDcgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTEyM0NGMTgxMzNEMjVFNjAwNTZGODAwIC8qIGNn
ICovLAorCQkJCTUxQzQwMzIzMTM2NjI2OTgwMERDOTcyRCAvKiBtYWMgKi8sCiAJCQkJQkNCNjM0
NzcxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktpdDIuaCAqLywKIAkJCQlCQ0REQjMyQzEyNEVDMkUx
MDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8sCiAJCQkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1
IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwICovLApAQCAtMzY4NCw2ICszNzIwLDcg
QEAKIAkJCQlFMUEzMTczMjEzNENFQTZDMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTE3OUZEOUMxMzREMzgwNjAwMTVCODgzIC8qIEFyZ3VtZW50Q29k
ZXJzTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyog
SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTFDNDAzMjcxMzY2MjZFRjAwREM5NzJEIC8qIFdLQ3JlZGVudGlhbE1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC00MzEzLDYgKzQzNTAsOSBAQAogCQkJCUUxNzlGRDlGMTM0RDM4MjUwMDE1Qjg4MyAv
KiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxRUEyNUQyMTM0Rjc4
QzAwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3Jl
ZW5DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFDNDAzMjYxMzY2MjZFRjAwREM5NzJE
IC8qIFdLQ3JlZGVudGlhbE1hYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUM0MDMyQzEzNjc0
OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTUxQzlFNDcwMTM2OUNENkYwMDc5MDI1QiAvKiBXZWJDcmVkZW50aWFsLm1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZp
c2lvbiA4NTE5MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2Fk
OworY2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBXZWJGcmFtZTsKIAogY2xh
c3MgQXV0aGVudGljYXRpb25NYW5hZ2VyIHsKQEAgLTU1LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJGcmFtZSosIGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWQqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgdXNlQ2Vy
dGlmaWNhdGVGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvJik7CisjZW5kaWYKKwogICAgIHZvaWQgdXNlQ3JlZGVudGlhbEZvckNo
YWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYp
OwogICAgIHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxl
bmdlSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDg1MTkyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDkgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gQXV0
aGVudGljYXRpb25NYW5hZ2VyIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBVc2VDZXJ0
aWZpY2F0ZUZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2ViS2l0OjpQbGF0Zm9y
bUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSk7CisjZW5kaWYKICAgICB2b2lkIFVzZUNyZWRl
bnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYkNvcmU6OkNyZWRlbnRp
YWwgY3JlZGVudGlhbCk7CiAgICAgdm9pZCBDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hh
bGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIENhbmNlbENoYWxsZW5nZSh1
aW50NjRfdCBjaGFsbGVuZ2VJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vbWFjL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5tYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKKyNpbmNsdWRlIDxTZWN1cml0eS9TZWNJZGVudGl0eS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6dXNlQ2VydGlmaWNhdGVGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxl
bmdlSUQsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCit7
CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRh
a2UoY2hhbGxlbmdlSUQpOworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKKyAgICAK
KyAgICBDRkFycmF5UmVmIGNoYWluID0gY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlQ2hhaW4o
KTsKKyAgICBBU1NFUlQoY2hhaW4pOworICAgIEFTU0VSVChDRkFycmF5R2V0Q291bnQoY2hhaW4p
KTsKKyAgICAKKyAgICAvLyBUaGUgcGFzc2VkLWluIGNlcnRpZmljYXRlIGNoYWluIGluY2x1ZGVz
IHRoZSBpZGVudGl0eSBjZXJ0aWZpY2F0ZSBhdCBpbmRleCAwLCBhbmQgYWRkaXRpb25hbCBjZXJ0
aWZpY2F0ZXMgc3RhcnRpbmcgYXQgaW5kZXggMS4KKyAgICBTZWNJZGVudGl0eVJlZiBpZGVudGl0
eTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBTZWNJZGVudGl0eUNyZWF0ZVdpdGhDZXJ0aWZpY2F0
ZShOVUxMLCAoU2VjQ2VydGlmaWNhdGVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjaGFpbiwg
MCksICZpZGVudGl0eSk7CisgICAgaWYgKHJlc3VsdCAhPSBlcnJTZWNTdWNjZXNzKSB7CisgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTZWNJZGVudGl0eVJlZiB3aXRoIGNlcnRp
ZmljYXRlIC0gJWkiLCByZXN1bHQpOworICAgICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIGNhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCldOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIENGSW5kZXggY2hh
aW5Db3VudCA9IENGQXJyYXlHZXRDb3VudChjaGFpbik7CisgICAgTlNBcnJheSAqbnNDaGFpbiA9
IGNoYWluQ291bnQgPiAxID8gWyhOU0FycmF5ICopY2hhaW4gc3ViYXJyYXlXaXRoUmFuZ2U6TlNN
YWtlUmFuZ2UoMSwgY2hhaW5Db3VudCAtIDEpXSA6IG5pbDsKKworICAgIE5TVVJMQ3JlZGVudGlh
bCAqY3JlZGVudGlhbCA9IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTpp
ZGVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlcnRpZmljYXRlczpuc0NoYWluCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOk5TVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CisKKyAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHVz
ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVu
Z2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2Via2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91524</attachid>
            <date>2011-04-28 11:26:31 -0700</date>
            <delta_ts>2011-04-28 11:58:51 -0700</delta_ts>
            <desc>Patch v4 - Removed all the cross platform ifdefness, even if Mac is the only user right now.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19906</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MjEzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDQtMjggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzczOTQ2PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjE0CisgICAgICAgIENsaWVudCBjZXJ0
aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBpbiBXZWJLaXQyCisKKyAgICAgICAgUHJvamVjdC1maWxl
IHN0dWZmOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwor
ICAgICAgICBBbGxvdyBXS0NyZWRlbnRpYWxzIHRvIHN0b3JlIGNlcnRpZmljYXRlczoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDcmVkZW50aWFsOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRl
bnRpYWw6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5j
cHA6CisgICAgICAgIChXS0NyZWRlbnRpYWxDcmVhdGVXaXRoQ2VydGlmaWNhdGVJbmZvKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmg6CisKKyAgICAgICAgUGFzcyB0
aGUgY2VydGlmaWNhdGUgaW5mbyBvdmVyIHRoZSB3aXJlIHRvIHRoZSBXZWJQcm9jZXNzOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6
dXNlQ3JlZGVudGlhbCk6IAorCisgICAgICAgIENoYW5nZSB0aGUgV2ViUHJvY2VzcyB0byBwcmVm
ZXIgY2VydGlmaWNhdGUgaW5mbyBvdmVyIGJhc2ljIGNyZWRlbnRpYWxzIHdoZW4gcmVzcG9uZGlu
ZyB0byBhIGNoYWxsZW5nZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6dHJ5VXNlUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UpOiBTdHVi
IGZvciBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBNYWMsCisgICAgICAgICAgYXMgb25seSBNYWMgY2Fu
IGN1cnJlbnRseSByZXNwb25kIHRvIGNoYWxsZW5nZXMgd2l0aCBjZXJ0aWZpY2F0ZXMuCisgICAg
ICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvckNoYWxs
ZW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL21hYzogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9t
YWMvQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9Gb3JD
aGFsbGVuZ2UpOiBSZWNyZWF0ZSB0aGUgaWRlbnRpdHkgYW5kIGNlcnRpZmljYXRlCisgICAgICAg
ICAgY2hhaW4gYW5kIHJlc3BvbmQgdG8gdGhlIGNoYWxsZW5nZSB3aXRoIGl0LgorCisgICAgICAg
IEFkZCBhIG5ld2x5IHJlcXVpcmVkICNpbmNsdWRlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDoKKwogMjAxMS0w
NC0yOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QnVpbGQgZml4IGFmdGVyIHI4NTE5Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJl
dmlzaW9uIDg1MjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5o
IgogI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3Bh
Y2UuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCShyZXZpc2lvbiA4NTIwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tD
cmVkZW50aWFsLmgiCiAKKyNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRl
ICJXZWJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCkBAIC00Myw2ICs0NCwxMiBAQCBXS0NyZWRlbnRpYWxSZWYgV0tDcmVkZW50aWFs
Q3JlYXRlKFdLU3RyCiAgICAgcmV0dXJuIHRvQVBJKGNyZWRlbnRpYWwucmVsZWFzZSgpLnJlbGVh
c2VSZWYoKSk7CiB9CiAKK1dLQ3JlZGVudGlhbFJlZiBXS0NyZWRlbnRpYWxDcmVhdGVXaXRoQ2Vy
dGlmaWNhdGVJbmZvKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5mbykKK3sKKyAg
ICBSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IFdlYkNyZWRlbnRpYWw6OmNyZWF0
ZSh0b0ltcGwoY2VydGlmaWNhdGVJbmZvKSk7CisgICAgcmV0dXJuIHRvQVBJKGNyZWRlbnRpYWwu
cmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7Cit9CisKIFdLU3RyaW5nUmVmIFdLQ3JlZGVudGlhbENv
cHlVc2VyKFdLQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsUmVmKQogewogICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoY3JlZGVudGlhbFJlZiktPnVzZXIoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCShyZXZpc2lvbiA4NTIwNikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS0NyZWRlbnRpYWxHZXRUeXBlSUQoKTsKIAogV0tfRVhQT1JUIFdLQ3JlZGVudGlhbFJlZiBX
S0NyZWRlbnRpYWxDcmVhdGUoV0tTdHJpbmdSZWYgdXNlcm5hbWUsIFdLU3RyaW5nUmVmIHBhc3N3
b3JkLCBXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CitXS19FWFBPUlQgV0tDcmVkZW50aWFsUmVm
IFdLQ3JlZGVudGlhbENyZWF0ZVdpdGhDZXJ0aWZpY2F0ZUluZm8oV0tDZXJ0aWZpY2F0ZUluZm9S
ZWYgY2VydGlmaWNhdGVJbmZvKTsKKwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQ3JlZGVudGlh
bENvcHlVc2VyKFdLQ3JlZGVudGlhbFJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkocmV2aXNpb24g
ODUyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ2VydGlm
aWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgpAQCAtNjMsOCAr
NjQsMTEgQEAgdm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Ojp1c2VDcgogCiAgICAg
aWYgKCFjcmVkZW50aWFsKQogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6Q29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSht
X2NoYWxsZW5nZUlEKSwgMCk7Ci0gICAgZWxzZSAKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OlVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2Uo
bV9jaGFsbGVuZ2VJRCwgY3JlZGVudGlhbC0+Y29yZSgpKSwgMCk7CisgICAgZWxzZSB7CisgICAg
ICAgIFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJbmZvID0gY3JlZGVudGlhbC0+Y2Vy
dGlmaWNhdGVJbmZvKCk7CisgICAgICAgIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIHBsYXRmb3Jt
SW5mbyA9IGNlcnRpZmljYXRlSW5mbyA/IGNlcnRpZmljYXRlSW5mby0+cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8oKSA6IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpVc2VDcmVkZW50aWFsRm9y
Q2hhbGxlbmdlKG1fY2hhbGxlbmdlSUQsIGNyZWRlbnRpYWwtPmNvcmUoKSwgcGxhdGZvcm1JbmZv
KSwgMCk7CisgICAgfQogCiAgICAgbV9jaGFsbGVuZ2VJRCA9IDA7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxp
c3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAkocmV2aXNpb24gODUy
MDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFs
LmNwcAkocmV2aXNpb24gODUyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCiAKKyNpbmNs
dWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNy
ZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKQEAgLTMzLDYgKzM1LDE2IEBAIFdlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwoY29u
c3QgV2ViQ28KIHsKIH0KIAorV2ViQ3JlZGVudGlhbDo6V2ViQ3JlZGVudGlhbChXZWJDZXJ0aWZp
Y2F0ZUluZm8qIGNlcnRpZmljYXRlSW5mbykKKyAgICA6IG1fY2VydGlmaWNhdGVJbmZvKGNlcnRp
ZmljYXRlSW5mbykKK3sKK30KKworV2ViQ2VydGlmaWNhdGVJbmZvKiBXZWJDcmVkZW50aWFsOjpj
ZXJ0aWZpY2F0ZUluZm8oKQoreworICAgIHJldHVybiBtX2NlcnRpZmljYXRlSW5mby5nZXQoKTsK
K30KKwogY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgV2ViQ3JlZGVudGlhbDo6Y29yZSgpCiB7
CiAgICAgcmV0dXJuIG1fY29yZUNyZWRlbnRpYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmgJKHJldmlz
aW9uIDg1MjA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dl
YkNyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOworCiBjbGFzcyBXZWJDcmVk
ZW50aWFsIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5
cGUgQVBJVHlwZSA9IFR5cGVDcmVkZW50aWFsOwpAQCAtNDgsMTcgKzUwLDI2IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3JlZGVudGlhbChXZWJDb3Jl
OjpDcmVkZW50aWFsKHVzZXJuYW1lLT5zdHJpbmcoKSwgcGFzc3dvcmQtPnN0cmluZygpLCBwZXJz
aXN0ZW5jZSkpKTsKICAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDcmVkZW50aWFs
PiBjcmVhdGUoV2ViQ2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8pCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNyZWRlbnRpYWwoY2VydGlmaWNhdGVJbmZvKSk7
CisgICAgfQogICAgIAorICAgIFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJbmZvKCk7
CisKICAgICBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjb3JlKCk7CiAKICAgICBjb25zdCBT
dHJpbmcmIHVzZXIoKSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAgICAgV2ViQ3JlZGVudGlhbChj
b25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CisgICAgV2ViQ3JlZGVudGlhbChXZWJDZXJ0aWZp
Y2F0ZUluZm8qKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJ
VHlwZTsgfQogCiAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBtX2NvcmVDcmVkZW50aWFsOworICAg
IFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4NTIwNikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzU1LDYgKzM1NSw3IEBACiAJCTUxQUNCQkExMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0
TWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMu
bW0gKi87IH07CiAJCTUxQjMwMDUwMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUIzMDA0RTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwICovOyB9
OwogCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMzAwNEYxMjUyOUQw
RTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCAqLzsgfTsKKwkJNTFDNDAzMkMxMzY3NDlE
ODAwREM5NzJEIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM0MDMyQjEzNjc0OUQ4MDBEQzk3MkQg
LyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSAqLzsgfTsKIAkJNTFEMDJGNjQxMzJFQzVC
OTAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2MzEzMkVDNUI5MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFE
MDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2NzEzMkVDNzM3
MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFEMDJGNkIx
MzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY4
MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CkBAIC0xMjQ5LDYgKzEyNTAsNyBAQAogCQk1MUFDQkI5RjEyN0E4RjJDMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3RDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA7IHBhdGggPSBjZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBX
ZWJQYWdlUHJveHlDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJQYWdlUHJveHlDRi5jcHA7IHBhdGggPSBjZi9XZWJQYWdlUHJveHlDRi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzQwMzJCMTM2NzQ5RDgwMERDOTcyRCAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXIubWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbTsgcGF0aCA9IG1hYy9BdXRoZW50aWNh
dGlvbk1hbmFnZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQwMkY2
MzEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY1MTMy
RUM2RDMwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9
IEljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25E
YXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklj
b25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzI1
LDYgKzIzMjcsNyBAQAogCQk1MTJGNTg4NjEyQTg4MzQ3MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQzQw
MzJBMTM2NzQ5QzQwMERDOTcyRCAvKiBtYWMgKi8sCiAJCQkJNTEyRjU4ODcxMkE4ODM2NjAwNjI5
NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgKi8sCiAJCQkJNTEyRjU4ODgxMkE4ODM2
NjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oICovLAogCQkJCTUxMkY1ODg5MTJB
ODgzNjYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCkBA
IC0yMzY3LDYgKzIzNzAsMTQgQEAKIAkJCW5hbWUgPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTUxQzQwMzJBMTM2NzQ5QzQwMERDOTcyRCAvKiBtYWMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxQzQwMzJCMTM2NzQ5RDgw
MERDOTcyRCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tICovLAorCQkJKTsKKwkJCW5h
bWUgPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MUZCQjlDMTEz
MkUwNzkyMDBGMzI3QjQgLyogSWNvbkRhdGFiYXNlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQzMTMsNiArNDMyNCw3IEBACiAJCQkJRTE3OUZEOUYxMzRE
MzgyNTAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFFQTI1RDIxMzRGNzhDMDAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRDVDNjZBMDEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUM0MDMyQzEz
Njc0OUQ4MDBEQzk3MkQgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLm1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24g
ODUyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSwyMiBAQCB2
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgZG93bmxvYWQtPnNl
bmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCisvLyBDdXJyZW50bHks
IG9ubHkgTWFjIGtub3dzIGhvdyB0byByZXNwb25kIHRvIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5n
ZXMgd2l0aCBjZXJ0aWZpY2F0ZSBpbmZvLgorI2lmICFQTEFURk9STShNQUMpCitib29sIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6dHJ5VXNlUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVu
Z2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBQbGF0Zm9y
bUNlcnRpZmljYXRlSW5mbyYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK3Zv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlELCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQogewogICAgIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSA9IG1fY2hhbGxlbmdlcy50YWtlKGNoYWxsZW5nZUlEKTsK
ICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CisgICAgCisgICAgaWYgKHRyeVVzZVBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgY2VydGlmaWNhdGVJ
bmZvKSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBj
b3JlQ2xpZW50ID0gY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CiAgICAgaWYgKCFj
b3JlQ2xpZW50KSB7CiAgICAgICAgIC8vIFRoaXMgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGNv
bWVzIGZyb20gYSBkb3dubG9hZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAkocmV2aXNpb24gODUyMDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBE
b3dubG9hZDsKK2NsYXNzIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgV2ViRnJhbWU7
CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciB7CkBAIC01NSw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJGcmFtZSos
IGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWQqLCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCi0gICAgdm9pZCB1c2VDcmVkZW50aWFsRm9yQ2hh
bGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7
CisgICAgdm9pZCB1c2VDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlE
LCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8mKTsKICAgICB2b2lkIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWlu
dDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQgY2FuY2VsQ2hhbGxlbmdlKHVpbnQ2NF90IGNo
YWxsZW5nZUlEKTsKIApAQCAtNjQsNiArNjUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAorICAgIGJv
b2wgdHJ5VXNlUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
byYpOworICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U+IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFwOwogICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFwIG1fY2hhbGxlbmdlczsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gODUyMDYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBBdXRoZW50aWNhdGlvbk1hbmFnZXIgewotICAg
IHZvaWQgVXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgV2Vi
Q29yZTo6Q3JlZGVudGlhbCBjcmVkZW50aWFsKTsKKyAgICB2b2lkIFVzZUNyZWRlbnRpYWxGb3JD
aGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVu
dGlhbCwgV2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSk7CiAgICAg
dm9pZCBDb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxs
ZW5nZUlEKTsKICAgICB2b2lkIENhbmNlbENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL21hYy9B
dXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vbWFjL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tYWMu
bW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL21hYy9BdXRoZW50aWNhdGlvbk1hbmFnZXIubWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1
dGhlbnRpY2F0aW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8uaCIKKyNpbmNsdWRlIDxTZWN1cml0eS9TZWNJZGVudGl0eS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dHJ5
VXNlUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbykKK3sKKyAgICBDRkFycmF5UmVmIGNoYWluID0gY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlQ2hhaW4oKTsKKyAgICBpZiAoIWNoYWluKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAorICAgIEFTU0VSVChDRkFycmF5R2V0Q291bnQoY2hhaW4pKTsKKworICAg
IC8vIFRoZSBwYXNzZWQtaW4gY2VydGlmaWNhdGUgY2hhaW4gaW5jbHVkZXMgdGhlIGlkZW50aXR5
IGNlcnRpZmljYXRlIGF0IGluZGV4IDAsIGFuZCBhZGRpdGlvbmFsIGNlcnRpZmljYXRlcyBzdGFy
dGluZyBhdCBpbmRleCAxLgorICAgIFNlY0lkZW50aXR5UmVmIGlkZW50aXR5OworICAgIE9TU3Rh
dHVzIHJlc3VsdCA9IFNlY0lkZW50aXR5Q3JlYXRlV2l0aENlcnRpZmljYXRlKE5VTEwsIChTZWND
ZXJ0aWZpY2F0ZVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNoYWluLCAwKSwgJmlkZW50aXR5
KTsKKyAgICBpZiAocmVzdWx0ICE9IGVyclNlY1N1Y2Nlc3MpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gY3JlYXRlIFNlY0lkZW50aXR5UmVmIHdpdGggY2VydGlmaWNhdGUgLSAlaSIs
IHJlc3VsdCk7CisgICAgICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIENGSW5kZXggY2hhaW5Db3VudCA9IENG
QXJyYXlHZXRDb3VudChjaGFpbik7CisgICAgTlNBcnJheSAqbnNDaGFpbiA9IGNoYWluQ291bnQg
PiAxID8gWyhOU0FycmF5ICopY2hhaW4gc3ViYXJyYXlXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMSwg
Y2hhaW5Db3VudCAtIDEpXSA6IG5pbDsKKworICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCA9IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNlcnRpZmljYXRlczpuc0NoYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZV07CisKKyAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6
Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2UubnNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="84366"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>