<?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>64644</bug_id>
          
          <creation_ts>2011-07-15 18:02:52 -0700</creation_ts>
          <short_desc>Implement WaveShaperNode for Web Audio API</short_desc>
          <delta_ts>2011-07-19 12:58:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438087</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-15 18:02:52 -0700</bug_when>
    <thetext>Implement WaveShaperNode for Web Audio API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438781</commentid>
    <comment_count>1</comment_count>
      <attachid>101226</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-18 15:42:55 -0700</bug_when>
    <thetext>Created attachment 101226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438783</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-18 15:45:05 -0700</bug_when>
    <thetext>The JSC bindings need a custom setter (similar to AudioBufferSourceNode .buffer attribute) since the &quot;exec&quot; argument is unused (generating compile warning/error).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438908</commentid>
    <comment_count>3</comment_count>
      <attachid>101226</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-18 18:36:58 -0700</bug_when>
    <thetext>Comment on attachment 101226
Patch

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

The patch generally looks good but there are a couple of seemingly unrelated changes that should be split into a separate bug.

&gt; Source/WebCore/bindings/js/JSAudioContextCustom.cpp:96
&gt; -            return jsUndefined();
&gt; +            return throwVMError(exec, createSyntaxError(exec, &quot;Error creating OfflineAudioContext&quot;));

This change looks unrelated to this patch.

&gt; Source/WebCore/bindings/js/JSAudioContextCustom.cpp:147
&gt; -        return throwVMError(exec, createSyntaxError(exec, &quot;Invalid number of channels&quot;));
&gt; +        return throwError(exec, createSyntaxError(exec, &quot;Invalid number of channels&quot;));
&gt;  
&gt;      if (numberOfFrames &lt;= 0)
&gt; -        return throwVMError(exec, createSyntaxError(exec, &quot;Invalid number of frames&quot;));
&gt; +        return throwError(exec, createSyntaxError(exec, &quot;Invalid number of frames&quot;));
&gt;  
&gt;      if (sampleRate &lt;= 0)
&gt; -        return throwVMError(exec, createSyntaxError(exec, &quot;Invalid sample rate&quot;));
&gt; +        return throwError(exec, createSyntaxError(exec, &quot;Invalid sample rate&quot;));

These as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439295</commentid>
    <comment_count>4</comment_count>
      <attachid>101350</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-19 11:36:23 -0700</bug_when>
    <thetext>Created attachment 101350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439297</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-19 11:37:51 -0700</bug_when>
    <thetext>New patch removes unrelated build-fix changes to JSAudioContextCustom.cpp

I&apos;ll land that as a separate unreviewed build-fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439304</commentid>
    <comment_count>6</comment_count>
      <attachid>101350</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-19 11:42:09 -0700</bug_when>
    <thetext>Comment on attachment 101350
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439382</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-07-19 12:58:33 -0700</bug_when>
    <thetext>Committed r91281: &lt;http://trac.webkit.org/changeset/91281&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101226</attachid>
            <date>2011-07-18 15:42:55 -0700</date>
            <delta_ts>2011-07-19 11:36:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64644-20110718154253.patch</filename>
            <type>text/plain</type>
            <size>36916</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMjE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDctMTggIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2F2ZVNoYXBl
ck5vZGUgZm9yIFdlYiBBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY0NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQSSBpcyBub3QgeWV0IGlt
cGxlbWVudGVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTV2F2ZVNoYXBlck5vZGU6OnNldEN1cnZlKToKKyAgICAg
ICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnBy
b2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpXYXZlU2hhcGVyRFNQS2Vy
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OndhdmVTaGFwZXJQcm9jZXNzb3Ip
OgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OnNldEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVT
aGFwZXJOb2RlOjpjdXJ2ZSk6CisgICAgICAgICogd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldhdmVTaGFwZXJOb2RlOjp3YXZlU2hhcGVyUHJvY2Vzc29yKToKKyAgICAg
ICAgKiB3ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGw6IEFkZGVkLgorICAgICAgICAqIHdlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldh
dmVTaGFwZXJQcm9jZXNzb3I6OldhdmVTaGFwZXJQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OldhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6
OldhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJv
Y2Vzc29yOjpjdXJ2ZSk6CisKIDIwMTEtMDctMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBTcGVjaWZ5IGEgY2FzY2FkZSBsaXN0IGNvbnNpc3Rpbmcgb2YgdGhl
IGxhc3QgcmVzb3J0IGZvbnQgZm9yIENvcmUgVGV4dApJbmRleDogU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiA5MTIwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgRE9NX0NMQVNTRVMgPSBc
CiAgICAgTG93UGFzczJGaWx0ZXJOb2RlIFwKICAgICBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQgXAogICAgIFJlYWx0aW1lQW5hbHlzZXJOb2RlIFwKKyAgICBXYXZlU2hhcGVyTm9kZSBcCiAg
ICAgQmFySW5mbyBcCiAgICAgQmVmb3JlTG9hZEV2ZW50IFwKICAgICBCZWZvcmVQcm9jZXNzRXZl
bnQgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTEyMDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE0NDgsNiArMTQ0OCw3IEBACiAg
ICAgICAgICAgICAnd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2RlLmlkbCcsCiAgICAgICAgICAg
ICAnd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmlkbCcsCiAgICAgICAgICAg
ICAnd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaWRsJywKKyAgICAgICAgICAgICd3ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5pZGwnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvQ2xvc2VF
dmVudC5pZGwnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCcsCiAgICAg
ICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwnLApAQCAtNjA1NCw2ICs2MDU1LDEy
IEBACiAgICAgICAgICAgICAnd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oJywKICAgICAgICAg
ICAgICd3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAnLAogICAgICAgICAgICAgJ3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgnLAorICAgICAgICAgICAgJ3dlYmF1ZGlvL1dh
dmVTaGFwZXJEU1BLZXJuZWwuY3BwJywKKyAgICAgICAgICAgICd3ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmgnLAorICAgICAgICAgICAgJ3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCcs
CisgICAgICAgICAgICAnd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCcsCisgICAgICAgICAgICAn
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAnLAorICAgICAgICAgICAgJ3dlYmF1ZGlv
L1dhdmVTaGFwZXJQcm9jZXNzb3IuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9DbG9zZUV2
ZW50LmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gOTEyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU4NTgsNiArNTg1
OCwxNSBAQAogCQlGRDZFRDJDODEzNkI4RTY2MDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDZFRDJD
NjEzNkI4RTY2MDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yLmggKi87IH07CiAJCUZENzg2
OEI5MTM2Qjk5OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ3ODY4QjcxMzZCOTk5
MjAwRDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgKi87IH07CiAJCUZENzg2
OEJBMTM2Qjk5OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENzg2OEI4MTM2Qjk5OTIw
MEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLzsgfTsKKwkJRkQ3RjI5OTEx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ3RjI5OEExM0Q0QzBDQjAwQUQ5NTM1
IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuY3BwICovOyB9OworCQlGRDdGMjk5MjEzRDRDMENCMDBB
RDk1MzUgLyogV2F2ZVNoYXBlckRTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ3RjI5OEIxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFw
ZXJEU1BLZXJuZWwuaCAqLzsgfTsKKwkJRkQ3RjI5OTMxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVT
aGFwZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEN0YyOThDMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5jcHAgKi87IH07
CisJCUZEN0YyOTk0MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ3RjI5OEQxM0Q0QzBDQjAw
QUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmggKi87IH07CisJCUZEN0YyOTk2MTNENEMwQ0IwMEFE
OTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcCAqLzsgfTsKKwkJRkQ3RjI5OTcxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdh
dmVTaGFwZXJQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29y
LmggKi87IH07CisJCUZEODJEN0Y3MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2Rl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEODJE
N0Y1MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmNwcCAqLzsgfTsKKwkJRkQ4
MkQ3RjgxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEODJEN0Y2MTNENEM4QkQwMDRFNDM3
MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggKi87IH07CisJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3
MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAvKiBKU1dhdmVT
aGFwZXJOb2RlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRkRBMTVFOUQxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkRBMTVFODExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuY3BwICov
OyB9OwogCQlGREExNUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFODIxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuaCAqLzsgfTsKIAkJRkRBMTVFOUYxMkIwM0VFMTAw
M0E1ODNBIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTgzMTJCMDNFRTEwMDNBNTgzQSAvKiBK
U0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgKi87IH07CkBAIC0xMjU3Nyw2ICsxMjU4NiwxNiBA
QAogCQlGRDZFRDJDOTEzNkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9kZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENzg2OEI3MTM2Qjk5OTIwMEQ0MDNERiAvKiBK
U0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkQ3ODY4QjgxMzZCOTk5MjAwRDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ3RjI5OEExM0Q0
QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZEN0YyOThCMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVy
RFNQS2VybmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdmVTaGFwZXJE
U1BLZXJuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ3RjI5OEMxM0Q0QzBD
QjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdhdmVTaGFwZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkQ3RjI5OEQxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdmVTaGFwZXJOb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZEN0YyOThFMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVy
Tm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2F2ZVNoYXBlck5vZGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDdGMjk4RjEzRDRDMENCMDBBRDk1MzUgLyogV2F2
ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQ3RjI5OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F2ZVNoYXBlclByb2Nlc3Nvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZl
U2hhcGVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dh
dmVTaGFwZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ4MkQ3RjYx
M0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXYXZlU2hhcGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dhdmVTaGFwZXJO
b2RlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFODExMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZEQTE1RTgyMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFODMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NTI5LDYgKzE4NTQ4LDcgQEAKIAkJCQk0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyogSlNV
aW50MTZBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8q
IEpTVWludDMyQXJyYXlDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc1MTA1MDhEOUMwMDA5OUZB
QiAvKiBKU1VpbnQ4QXJyYXlDdXN0b20uY3BwICovLAorCQkJCUZEOEU5QkRFMTNENENEMkIwMDUw
REM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QzEwNTE5
NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJ
CTMxOUU2ODg2MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAg
Ki8sCiAJCQkJMzE5NDYyMzExMzAyMkY2NTAwNEJCM0Y4IC8qIEpTV2ViS2l0QW5pbWF0aW9uTGlz
dEN1c3RvbS5jcHAgKi8sCkBAIC0xOTk2Nyw2ICsxOTk4NywxMyBAQAogCQkJCUZEMzE1RkYzMTJC
MDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVG
RjQxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2RlLmggKi8sCiAJCQkJRkQz
MTVGRjUxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2RlLmlkbCAqLywKKwkJ
CQlGRDdGMjk4QTEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgKi8s
CisJCQkJRkQ3RjI5OEIxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuaCAq
LywKKwkJCQlGRDdGMjk4QzEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuY3BwICov
LAorCQkJCUZEN0YyOThEMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oICovLAor
CQkJCUZEN0YyOThFMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5pZGwgKi8sCisJ
CQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3BwICov
LAorCQkJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTIwMTA0LDYgKzIwMTMxLDggQEAKIAkJCQlGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAg
LyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLywKIAkJCQlGREExNUVDNzEyQjAz
RjUwMDAzQTU4M0EgLyogSlNSZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgKi8sCiAJCQkJRkRBMTVF
QzgxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTUmVhbHRpbWVBbmFseXNlck5vZGUuaCAqLywKKwkJCQlG
RDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgKi8sCisJCQkJ
RkQ4MkQ3RjYxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuaCAqLywKIAkJCSk7
CiAJCQluYW1lID0gV2ViQXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjMx
MDQsNiArMjMxMzMsMTAgQEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1Bv
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFu
c2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk2OUIwRjMxM0QwQjMzRjAwREYzNTIx
IC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkQ3RjI5
OTIxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZEN0YyOTk0MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkQ3RjI5OTcxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9j
ZXNzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBK
U1dhdmVTaGFwZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODc1LDYgKzI1OTA4LDExIEBA
CiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5NDVCRkQzMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OTY5QjBGMjEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGlu
Z1RyYW5zZm9ybVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZEN0YyOTkxMTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZE
N0YyOTkzMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRDdGMjk5NjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZl
U2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDhFOUJERjEzRDRDRDJCMDA1MERD
NzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5j
cHAJKHJldmlzaW9uIDkxMjAxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnQKICAgICAgICAgYXVkaW9Db250ZXh0
ID0gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZD
aGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUsIGVjKTsKICAgICAgICAgaWYgKGVj
KSB7CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJFcnJvciBjcmVhdGluZyBPZmZsaW5lQXVkaW9D
b250ZXh0IikpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzgsMTMgKzEzOCwxMyBAQCBKU1Zh
bHVlIEpTQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoRXhlCiAgICAgZmxvYXQgc2FtcGxlUmF0
ZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyk7CiAKICAgICBpZiAobnVtYmVyT2ZD
aGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBudW1iZXIg
b2YgY2hhbm5lbHMiKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIG51bWJlciBvZiBjaGFubmVscyIpKTsKIAogICAgIGlm
IChudW1iZXJPZkZyYW1lcyA8PSAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJ
bnZhbGlkIG51bWJlciBvZiBmcmFtZXMiKSk7CiAKICAgICBpZiAoc2FtcGxlUmF0ZSA8PSAwKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMs
ICJJbnZhbGlkIHNhbXBsZSByYXRlIikpOworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBzYW1wbGUgcmF0ZSIpKTsKIAogICAg
IFJlZlB0cjxBdWRpb0J1ZmZlcj4gYXVkaW9CdWZmZXIgPSBhdWRpb0NvbnRleHQtPmNyZWF0ZUJ1
ZmZlcihudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CiAgICAg
aWYgKCFhdWRpb0J1ZmZlci5nZXQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUu
aCIKKworI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgorI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5
LmgiCisjaW5jbHVkZSAiSlNXYXZlU2hhcGVyTm9kZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNXYXZlU2hhcGVyTm9kZTo6c2V0Q3Vy
dmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBXYXZlU2hhcGVyTm9kZSogaW1w
ID0gc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlck5vZGUqPihpbXBsKCkpOworICAgIGltcC0+c2V0Q3Vy
dmUodG9GbG9hdDMyQXJyYXkodmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24gOTEyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBA
CiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZWFsdGltZUFuYWx5c2VyTm9kZS5oIgorI2luY2x1
ZGUgIldhdmVTaGFwZXJOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAKICNp
ZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUwpAQCAtMzI0LDYgKzMyNSwxMyBAQCBQYXNzUmVm
UHRyPEJpcXVhZEZpbHRlck5vZGU+IEF1ZGlvQ29udGV4CiAgICAgcmV0dXJuIEJpcXVhZEZpbHRl
ck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0K
IAorUGFzc1JlZlB0cjxXYXZlU2hhcGVyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hh
cGVyKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUodGhpcyk7Cit9CisKIFBhc3NS
ZWZQdHI8TG93UGFzczJGaWx0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUxvd1Bhc3MyRmls
dGVyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgJKHJldmlzaW9uIDkxMjAxKQorKysgU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcg
QEAgY2xhc3MgSGlnaFBhc3MyRmlsdGVyTm9kZTsKIGNsYXNzIENvbnZvbHZlck5vZGU7CiBjbGFz
cyBEeW5hbWljc0NvbXByZXNzb3JOb2RlOwogY2xhc3MgUmVhbHRpbWVBbmFseXNlck5vZGU7Citj
bGFzcyBXYXZlU2hhcGVyTm9kZTsKIGNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGU7CiAKIC8vIEF1
ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFs
bCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCkBAIC0xMDcsNiArMTA4LDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBjcmVhdGVCdWZmZXJT
b3VyY2UoKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlvR2Fpbk5vZGU+IGNyZWF0ZUdhaW5Ob2RlKCk7
CiAgICAgUGFzc1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsK
KyAgICBQYXNzUmVmUHRyPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7CiAgICAg
UGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZURlbGF5Tm9kZSgpOwogICAgIFBhc3NSZWZQdHI8
TG93UGFzczJGaWx0ZXJOb2RlPiBjcmVhdGVMb3dQYXNzMkZpbHRlcigpOwogICAgIFBhc3NSZWZQ
dHI8SGlnaFBhc3MyRmlsdGVyTm9kZT4gY3JlYXRlSGlnaFBhc3MyRmlsdGVyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDkxMjAxKQor
KysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNiArNjQsNyBAQCBtb2R1bGUgd2ViYXVkaW8gewogICAgICAgICBBdWRpb0dhaW5O
b2RlIGNyZWF0ZUdhaW5Ob2RlKCk7CiAgICAgICAgIERlbGF5Tm9kZSBjcmVhdGVEZWxheU5vZGUo
KTsKICAgICAgICAgQmlxdWFkRmlsdGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKKyAgICAg
ICAgV2F2ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOwogICAgICAgICBMb3dQYXNzMkZp
bHRlck5vZGUgY3JlYXRlTG93UGFzczJGaWx0ZXIoKTsKICAgICAgICAgSGlnaFBhc3MyRmlsdGVy
Tm9kZSBjcmVhdGVIaWdoUGFzczJGaWx0ZXIoKTsKICAgICAgICAgQXVkaW9QYW5uZXJOb2RlIGNy
ZWF0ZVBhbm5lcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgJKHJldmlz
aW9uIDkxMjAxKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgICAgICBOb2RlVHlwZUNoYW5u
ZWxNZXJnZXIsCiAgICAgICAgIE5vZGVUeXBlQW5hbHlzZXIsCiAgICAgICAgIE5vZGVUeXBlRHlu
YW1pY3NDb21wcmVzc29yLAorICAgICAgICBOb2RlVHlwZVdhdmVTaGFwZXIsCiAgICAgICAgIE5v
ZGVUeXBlRW5kCiAgICAgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNo
YXBlckRTUEtlcm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
V2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
QVVESU8pCisKKyNpbmNsdWRlICJXYXZlU2hhcGVyRFNQS2VybmVsLmgiCisKKyNpbmNsdWRlICJX
YXZlU2hhcGVyUHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1l
c3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV2F2ZVNoYXBlckRTUEtl
cm5lbDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQVNTRVJUKHNvdXJjZSAmJiBkZXN0aW5hdGlv
biAmJiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkpOworCisgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSA9
IHdhdmVTaGFwZXJQcm9jZXNzb3IoKS0+Y3VydmUoKTsKKyAgICBpZiAoIWN1cnZlKSB7CisgICAg
ICAgIC8vIEFjdCBhcyAic3RyYWlnaHQgd2lyZSIgcGFzcy10aHJvdWdoIGlmIG5vIGN1cnZlIGlz
IHNldC4KKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNpemVvZihmbG9hdCkg
KiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZmxvYXQq
IGN1cnZlRGF0YSA9IGN1cnZlLT5kYXRhKCk7CisgICAgaW50IGN1cnZlTGVuZ3RoID0gY3VydmUt
Pmxlbmd0aCgpOworCisgICAgQVNTRVJUKGN1cnZlRGF0YSk7CisKKyAgICBpZiAoIWN1cnZlRGF0
YSB8fCAhY3VydmVMZW5ndGgpIHsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gQXBwbHkgd2F2ZXNoYXBpbmcgY3VydmUuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGZyYW1lc1RvUHJvY2VzczsgKytpKSB7CisgICAgICAgIGNvbnN0IGZsb2F0IGlu
cHV0ID0gc291cmNlW2ldOworCisgICAgICAgIC8vIENhbGN1bGF0ZSBhbiBpbmRleCBiYXNlZCBv
biBpbnB1dCAtMSAtPiArMSB3aXRoIDAgYmVpbmcgYXQgdGhlIGNlbnRlciBvZiB0aGUgY3VydmUg
ZGF0YS4KKyAgICAgICAgaW50IGluZGV4ID0gY3VydmVMZW5ndGggKiAwLjUgKiAoaW5wdXQgKyAx
KTsKKworICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3Vy
dmUuCisgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWlu
YWwgcmFuZ2UgLTEgLT4gKzEKKyAgICAgICAgaW5kZXggPSBtYXgoaW5kZXgsIDApOworICAgICAg
ICBpbmRleCA9IG1pbihpbmRleCwgY3VydmVMZW5ndGggLSAxKTsKKyAgICAgICAgZGVzdGluYXRp
b25baV0gPSBjdXJ2ZURhdGFbaW5kZXhdOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdhdmVTaGFwZXJEU1BLZXJuZWxf
aAorI2RlZmluZSBXYXZlU2hhcGVyRFNQS2VybmVsX2gKKworI2luY2x1ZGUgIkF1ZGlvRFNQS2Vy
bmVsLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlclByb2Nlc3Nvci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFdhdmVTaGFwZXJQcm9jZXNzb3I7CisKKy8vIFdhdmVTaGFwZXJEU1BL
ZXJuZWwgaXMgYW4gQXVkaW9EU1BLZXJuZWwgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBub24tbGlu
ZWFyIGRpc3RvcnRpb24gb24gb25lIGNoYW5uZWwuCisKK2NsYXNzIFdhdmVTaGFwZXJEU1BLZXJu
ZWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWwgeworcHVibGljOiAgCisgICAgV2F2ZVNoYXBlckRT
UEtlcm5lbChXYXZlU2hhcGVyUHJvY2Vzc29yKiBwcm9jZXNzb3IpCisgICAgOiBBdWRpb0RTUEtl
cm5lbChwcm9jZXNzb3IpCisgICAgeworICAgIH0KKyAgICAKKyAgICAvLyBBdWRpb0RTUEtlcm5l
bAorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7
IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICBXYXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVy
UHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHBy
b2Nlc3NvcigpKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
V2F2ZVNoYXBlckRTUEtlcm5lbF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZl
U2hhcGVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2F2ZVNo
YXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKKyAgICA6IEF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQtPnNhbXBsZVJhdGUoKSkKK3sK
KyAgICBtX3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBXYXZlU2hhcGVyUHJvY2Vzc29yKGNvbnRl
eHQtPnNhbXBsZVJhdGUoKSwgMSkpOworICAgIHNldFR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsK
K30KKwordm9pZCBXYXZlU2hhcGVyTm9kZTo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBjdXJ2ZSkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKKyAgICB3YXZlU2hhcGVyUHJvY2Vzc29y
KCktPnNldEN1cnZlKGN1cnZlKTsKK30KKworRmxvYXQzMkFycmF5KiBXYXZlU2hhcGVyTm9kZTo6
Y3VydmUoKQoreworICAgIHJldHVybiB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPmN1cnZlKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXZlU2hhcGVyTm9k
ZV9oCisjZGVmaW5lIFdhdmVTaGFwZXJOb2RlX2gKKworI2luY2x1ZGUgIkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiQmlxdWFkUHJvY2Vzc29yLmgiCisjaW5jbHVkZSAiV2F2
ZVNoYXBlclByb2Nlc3Nvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0
MzJBcnJheTsKKyAgICAKK2NsYXNzIFdhdmVTaGFwZXJOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXYXZlU2hhcGVy
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOworICAgIH0KKworICAgIC8v
IHNldEN1cnZlKCkgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB2b2lkIHNldEN1
cnZlKEZsb2F0MzJBcnJheSopOworICAgIEZsb2F0MzJBcnJheSogY3VydmUoKTsKKworcHJpdmF0
ZTogICAgCisgICAgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0Kik7ICAgIAorCisgICAgV2F2
ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdhdmVTaGFwZXJOb2RlX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgYXVkaW8geworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICAgICAgR2VuZXJhdGVUb0pT
CisgICAgXSBXYXZlU2hhcGVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgICAgIGF0dHJpYnV0ZSBb
SlNDQ3VzdG9tU2V0dGVyXSBGbG9hdDMyQXJyYXkgY3VydmU7CisgICAgfTsKK30KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2F2ZVNoYXBl
clByb2Nlc3Nvci5oIgorCisjaW5jbHVkZSAiV2F2ZVNoYXBlckRTUEtlcm5lbC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCitXYXZlU2hhcGVyUHJvY2Vzc29yOjpXYXZlU2hhcGVyUHJv
Y2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKKyAgICA6
IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCit7
Cit9CisKK1dhdmVTaGFwZXJQcm9jZXNzb3I6On5XYXZlU2hhcGVyUHJvY2Vzc29yKCkKK3sKKyAg
ICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICB1bmluaXRpYWxpemUoKTsKK30KKworUGFz
c093blB0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVs
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdhdmVTaGFwZXJEU1BLZXJuZWwodGhpcykp
OworfQorCit2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSog
Y3VydmUpCit7CisgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAg
TXV0ZXhMb2NrZXIgcHJvY2Vzc0xvY2tlcihtX3Byb2Nlc3NMb2NrKTsKKyAgICAKKyAgICBtX2N1
cnZlID0gY3VydmU7Cit9CisKK3ZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6cHJvY2VzcyhBdWRp
b0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCit7CisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24t
Pnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0aHJl
YWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2NrLCBzbyB3ZSBjYWxsIHRyeUxvY2soKSBpbnN0ZWFk
LgorICAgIC8vIENhcmVmdWwgLSB0aGlzIGlzIGEgdHJ5TG9jaygpIGFuZCBub3QgYW4gYXV0b2xv
Y2tlciwgc28gd2UgbXVzdCB1bmxvY2soKSBiZWZvcmUgZXZlcnkgcmV0dXJuLgorICAgIGlmICht
X3Byb2Nlc3NMb2NrLnRyeUxvY2soKSkgeyAgICAgICAgCisgICAgICAgIC8vIEZvciBlYWNoIGNo
YW5uZWwgb2Ygb3VyIGlucHV0LCBwcm9jZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIFdhdmVT
aGFwZXJEU1BLZXJuZWwgaW50byB0aGUgb3V0cHV0IGNoYW5uZWwuCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2tl
cm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9u
LT5jaGFubmVsKGkpLT5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAgICAgbV9wcm9j
ZXNzTG9jay51bmxvY2soKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUb28gYmFkIC0gdGhl
IHRyeUxvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHNldEN1cnZl
KCkgY2FsbC4KKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXZlU2hh
cGVyUHJvY2Vzc29yX2gKKyNkZWZpbmUgV2F2ZVNoYXBlclByb2Nlc3Nvcl9oCisKKyNpbmNsdWRl
ICJBdWRpb0RTUEtlcm5lbC5oIgorI2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgi
CisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBXYXZlU2hhcGVyUHJvY2Vzc29yIGlzIGFuIEF1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yIHdoaWNoIHVzZXMgV2F2ZVNoYXBlckRTUEtlcm5lbCBvYmplY3RzIHRvIGlt
cGxlbWVudCBub24tbGluZWFyIGRpc3RvcnRpb24gZWZmZWN0cy4KKworY2xhc3MgV2F2ZVNoYXBl
clByb2Nlc3NvciA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CitwdWJsaWM6Cisg
ICAgV2F2ZVNoYXBlclByb2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMpOworCisgICAgdmlydHVhbCB+V2F2ZVNoYXBlclByb2Nlc3NvcigpOworCisgICAg
dmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICB2b2lkIHNldEN1cnZlKEZsb2F0
MzJBcnJheSopOworICAgIEZsb2F0MzJBcnJheSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdl
dCgpOyB9CisKK3ByaXZhdGU6CisgICAgLy8gbV9jdXJ2ZSByZXByZXNlbnRzIHRoZSBub24tbGlu
ZWFyIHNoYXBpbmcgY3VydmUuCisgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbV9jdXJ2ZTsKKwor
ICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEN1cnZlKCkuCisgICAg
bXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gV2F2ZVNoYXBlclByb2Nlc3Nvcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101350</attachid>
            <date>2011-07-19 11:36:23 -0700</date>
            <delta_ts>2011-07-19 11:42:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64644-20110719113623.patch</filename>
            <type>text/plain</type>
            <size>35299</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMjczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDctMTkgIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2F2ZVNoYXBl
ck5vZGUgZm9yIFdlYiBBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY0NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQSSBpcyBub3QgeWV0IGlt
cGxlbWVudGVkLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTV2F2ZVNoYXBlck5vZGU6OnNldEN1cnZlKToKKyAgICAg
ICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnBy
b2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpXYXZlU2hhcGVyRFNQS2Vy
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OndhdmVTaGFwZXJQcm9jZXNzb3Ip
OgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OnNldEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVT
aGFwZXJOb2RlOjpjdXJ2ZSk6CisgICAgICAgICogd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldhdmVTaGFwZXJOb2RlOjp3YXZlU2hhcGVyUHJvY2Vzc29yKToKKyAgICAg
ICAgKiB3ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGw6IEFkZGVkLgorICAgICAgICAqIHdlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldh
dmVTaGFwZXJQcm9jZXNzb3I6OldhdmVTaGFwZXJQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OldhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6
OldhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJv
Y2Vzc29yOjpjdXJ2ZSk6CisKIDIwMTEtMDctMTkgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCB3aGVuIHJlbW92aW5nIHVucmVuZGVyZXJlZCBu
b2RlcyBpbiByZXBsYWNlbWVudCBmcmFnbWVudC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gOTEyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIERPTV9DTEFTU0VTID0gXAog
ICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBcCiAgICAgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
IFwKICAgICBSZWFsdGltZUFuYWx5c2VyTm9kZSBcCisgICAgV2F2ZVNoYXBlck5vZGUgXAogICAg
IEJhckluZm8gXAogICAgIEJlZm9yZUxvYWRFdmVudCBcCiAgICAgQmVmb3JlUHJvY2Vzc0V2ZW50
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDkxMjczKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ4LDYgKzE0NDgsNyBAQAogICAg
ICAgICAgICAgJ3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5pZGwnLAogICAgICAgICAgICAg
J3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5pZGwnLAogICAgICAgICAgICAg
J3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmlkbCcsCisgICAgICAgICAgICAnd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuaWRsJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaWRsJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwnLAogICAgICAg
ICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsJywKQEAgLTYwNTYsNiArNjA1NywxMiBA
QAogICAgICAgICAgICAgJ3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaCcsCiAgICAgICAgICAg
ICAnd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwJywKICAgICAgICAgICAgICd3ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oJywKKyAgICAgICAgICAgICd3ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcCcsCisgICAgICAgICAgICAnd2ViYXVkaW8vV2F2ZVNoYXBlckRT
UEtlcm5lbC5oJywKKyAgICAgICAgICAgICd3ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAnLAor
ICAgICAgICAgICAgJ3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgnLAorICAgICAgICAgICAgJ3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwJywKKyAgICAgICAgICAgICd3ZWJhdWRpby9X
YXZlU2hhcGVyUHJvY2Vzc29yLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvQ2xvc2VFdmVu
dC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDkxMjczKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01ODYwLDYgKzU4NjAs
MTUgQEAKIAkJRkQ2RUQyQzgxMzZCOEU2NjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ2RUQyQzYx
MzZCOEU2NjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvci5oICovOyB9OwogCQlGRDc4NjhC
OTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENzg2OEI3MTM2Qjk5OTIw
MEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwICovOyB9OwogCQlGRDc4NjhC
QTEzNkI5OTkyMDBENDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDc4NjhCODEzNkI5OTkyMDBE
NDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi87IH07CisJCUZEN0YyOTkxMTNE
NEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEN0YyOThBMTNENEMwQ0IwMEFEOTUzNSAv
KiBXYXZlU2hhcGVyRFNQS2VybmVsLmNwcCAqLzsgfTsKKwkJRkQ3RjI5OTIxM0Q0QzBDQjAwQUQ5
NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEN0YyOThCMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVy
RFNQS2VybmVsLmggKi87IH07CisJCUZEN0YyOTkzMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hh
cGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDdGMjk4QzEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuY3BwICovOyB9Owor
CQlGRDdGMjk5NDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEN0YyOThEMTNENEMwQ0IwMEFE
OTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oICovOyB9OworCQlGRDdGMjk5NjEzRDRDMENCMDBBRDk1
MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDdGMjk4RjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAgKi87IH07CisJCUZEN0YyOTk3MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZl
U2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5o
ICovOyB9OworCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDgyRDdG
NTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgKi87IH07CisJCUZEODJE
N0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDgyRDdGNjEzRDRDOEJEMDA0RTQzNzIg
LyogSlNXYXZlU2hhcGVyTm9kZS5oICovOyB9OworCQlGRDhFOUJERjEzRDRDRDJCMDA1MERDNzIg
LyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hh
cGVyTm9kZUN1c3RvbS5jcHAgKi87IH07CiAJCUZEQTE1RTlEMTJCMDNFRTEwMDNBNTgzQSAvKiBK
U0F1ZGlvQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEQTE1RTgxMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmNwcCAqLzsg
fTsKIAkJRkRBMTVFOUUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTgyMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggKi87IH07CiAJCUZEQTE1RTlGMTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4MzEyQjAzRUUxMDAzQTU4M0EgLyogSlNB
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwICovOyB9OwpAQCAtMTI1ODEsNiArMTI1OTAsMTYgQEAK
IAkJRkQ2RUQyQzkxMzZCOEU5RDAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDc4NjhCNzEzNkI5OTkyMDBENDAzREYgLyogSlNE
eW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZENzg2OEI4MTM2Qjk5OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEN0YyOThBMTNENEMw
Q0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyRFNQS2VybmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRDdGMjk4QjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlckRT
UEtlcm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXZlU2hhcGVyRFNQ
S2VybmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEN0YyOThDMTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXZlU2hhcGVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZEN0YyOThEMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXZlU2hhcGVyTm9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRDdGMjk4RTEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5v
ZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdhdmVTaGFwZXJOb2RlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVT
aGFwZXJQcm9jZXNzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZE
N0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdmVTaGFwZXJQcm9jZXNzb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ4MkQ3RjUxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNo
YXBlck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXYXZl
U2hhcGVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEODJEN0Y2MTNE
NEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTV2F2ZVNoYXBlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkQ4RTlCREUxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXYXZlU2hhcGVyTm9k
ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1RTgxMTJCMDNF
RTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGREExNUU4MjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZEQTE1RTgzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODUzNSw2ICsxODU1NCw3IEBACiAJCQkJNDlFRUNGNzcxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWlu
dDE2QXJyYXlDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBK
U1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NTEwNTA4RDlDMDAwOTlGQUIg
LyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLywKKwkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERD
NzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcx
QTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkz
MTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICov
LAogCQkJCTMxOTQ2MjMxMTMwMjJGNjUwMDRCQjNGOCAvKiBKU1dlYktpdEFuaW1hdGlvbkxpc3RD
dXN0b20uY3BwICovLApAQCAtMTk5NzMsNiArMTk5OTMsMTMgQEAKIAkJCQlGRDMxNUZGMzEyQjAy
Njc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkY0
MTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5oICovLAogCQkJCUZEMzE1
RkY1MTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwgKi8sCisJCQkJ
RkQ3RjI5OEExM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJEU1BLZXJuZWwuY3BwICovLAor
CQkJCUZEN0YyOThCMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyRFNQS2VybmVsLmggKi8s
CisJCQkJRkQ3RjI5OEMxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmNwcCAqLywK
KwkJCQlGRDdGMjk4RDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaCAqLywKKwkJ
CQlGRDdGMjk4RTEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaWRsICovLAorCQkJ
CUZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAqLywK
KwkJCQlGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oICov
LAogCQkJKTsKIAkJCXBhdGggPSB3ZWJhdWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0yMDExMCw2ICsyMDEzNyw4IEBACiAJCQkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8q
IEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggKi8sCiAJCQkJRkRBMTVFQzcxMkIwM0Y1
MDAwM0E1ODNBIC8qIEpTUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwICovLAogCQkJCUZEQTE1RUM4
MTJCMDNGNTAwMDNBNTgzQSAvKiBKU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggKi8sCisJCQkJRkQ4
MkQ3RjUxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwICovLAorCQkJCUZE
ODJEN0Y2MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggKi8sCiAJCQkpOwog
CQkJbmFtZSA9IFdlYkF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMTEw
LDYgKzIzMTM5LDEwIEBACiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ1QkZENDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNm
b3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NjlCMEYzMTNEMEIzM0YwMERGMzUyMSAv
KiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEN0YyOTky
MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyRFNQS2VybmVsLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRDdGMjk5NDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZEN0YyOTk3MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vz
c29yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRDgyRDdGODEzRDRDOEJEMDA0RTQzNzIgLyogSlNX
YXZlU2hhcGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkxM0EyNDIxM0Q0OUVCQTAwRjVC
MDVDIC8qIElkZW50aWZpZXJzRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0yNTg4Miw2ICsyNTkxNSwx
MSBAQAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OTQ1QkZEMzEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk2OUIwRjIxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRl
c3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDdGMjk5MTEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGRDdGMjk5MzEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkQ3RjI5OTYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNz
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQ4MkQ3RjcxM0Q0QzhCRDAwNEU0MzcyIC8qIEpT
V2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQ4RTlCREYxM0Q0Q0QyQjAw
NTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTkxM0EyNDExM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNo
YXBlck5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVRElPKQorCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKworI2luY2x1ZGUgIkZsb2F0
MzJBcnJheS5oIgorI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCisjaW5jbHVkZSAiSlNXYXZl
U2hhcGVyTm9kZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgSlNXYXZlU2hhcGVyTm9kZTo6c2V0Q3VydmUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBXYXZlU2hhcGVyTm9kZSogaW1wID0gc3RhdGljX2Nhc3Q8V2F2ZVNo
YXBlck5vZGUqPihpbXBsKCkpOworICAgIGltcC0+c2V0Q3VydmUodG9GbG9hdDMyQXJyYXkodmFs
dWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAko
cmV2aXNpb24gOTEyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJSZWFsdGltZUFuYWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAKICNpZiBERUJVR19BVURJT05PREVfUkVG
RVJFTkNFUwpAQCAtMzI0LDYgKzMyNSwxMyBAQCBQYXNzUmVmUHRyPEJpcXVhZEZpbHRlck5vZGU+
IEF1ZGlvQ29udGV4CiAgICAgcmV0dXJuIEJpcXVhZEZpbHRlck5vZGU6OmNyZWF0ZSh0aGlzLCBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0KIAorUGFzc1JlZlB0cjxXYXZlU2hh
cGVyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIFdhdmVT
aGFwZXJOb2RlOjpjcmVhdGUodGhpcyk7Cit9CisKIFBhc3NSZWZQdHI8TG93UGFzczJGaWx0ZXJO
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUxvd1Bhc3MyRmlsdGVyKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgJKHJldmlzaW9uIDkxMjczKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgSGlnaFBhc3MyRmls
dGVyTm9kZTsKIGNsYXNzIENvbnZvbHZlck5vZGU7CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JO
b2RlOwogY2xhc3MgUmVhbHRpbWVBbmFseXNlck5vZGU7CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsK
IGNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGU7CiAKIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29y
bmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVh
dGVkIGZyb20gaXQuCkBAIC0xMDcsNiArMTA4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKICAgICBQYXNzUmVm
UHRyPEF1ZGlvR2Fpbk5vZGU+IGNyZWF0ZUdhaW5Ob2RlKCk7CiAgICAgUGFzc1JlZlB0cjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKKyAgICBQYXNzUmVmUHRyPFdhdmVT
aGFwZXJOb2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7CiAgICAgUGFzc1JlZlB0cjxEZWxheU5vZGU+
IGNyZWF0ZURlbGF5Tm9kZSgpOwogICAgIFBhc3NSZWZQdHI8TG93UGFzczJGaWx0ZXJOb2RlPiBj
cmVhdGVMb3dQYXNzMkZpbHRlcigpOwogICAgIFBhc3NSZWZQdHI8SGlnaFBhc3MyRmlsdGVyTm9k
ZT4gY3JlYXRlSGlnaFBhc3MyRmlsdGVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwJKHJldmlzaW9uIDkxMjczKQorKysgU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBt
b2R1bGUgd2ViYXVkaW8gewogICAgICAgICBBdWRpb0dhaW5Ob2RlIGNyZWF0ZUdhaW5Ob2RlKCk7
CiAgICAgICAgIERlbGF5Tm9kZSBjcmVhdGVEZWxheU5vZGUoKTsKICAgICAgICAgQmlxdWFkRmls
dGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKKyAgICAgICAgV2F2ZVNoYXBlck5vZGUgY3Jl
YXRlV2F2ZVNoYXBlcigpOwogICAgICAgICBMb3dQYXNzMkZpbHRlck5vZGUgY3JlYXRlTG93UGFz
czJGaWx0ZXIoKTsKICAgICAgICAgSGlnaFBhc3MyRmlsdGVyTm9kZSBjcmVhdGVIaWdoUGFzczJG
aWx0ZXIoKTsKICAgICAgICAgQXVkaW9QYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgJKHJldmlzaW9uIDkxMjczKQorKysgU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5
LDcgQEAgcHVibGljOgogICAgICAgICBOb2RlVHlwZUNoYW5uZWxNZXJnZXIsCiAgICAgICAgIE5v
ZGVUeXBlQW5hbHlzZXIsCiAgICAgICAgIE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yLAorICAg
ICAgICBOb2RlVHlwZVdhdmVTaGFwZXIsCiAgICAgICAgIE5vZGVUeXBlRW5kCiAgICAgfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJX
YXZlU2hhcGVyRFNQS2VybmVsLmgiCisKKyNpbmNsdWRlICJXYXZlU2hhcGVyUHJvY2Vzc29yLmgi
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3ZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzcyhjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
Cit7CisgICAgQVNTRVJUKHNvdXJjZSAmJiBkZXN0aW5hdGlvbiAmJiB3YXZlU2hhcGVyUHJvY2Vz
c29yKCkpOworCisgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSA9IHdhdmVTaGFwZXJQcm9jZXNzb3Io
KS0+Y3VydmUoKTsKKyAgICBpZiAoIWN1cnZlKSB7CisgICAgICAgIC8vIEFjdCBhcyAic3RyYWln
aHQgd2lyZSIgcGFzcy10aHJvdWdoIGlmIG5vIGN1cnZlIGlzIHNldC4KKyAgICAgICAgbWVtY3B5
KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZmxvYXQqIGN1cnZlRGF0YSA9IGN1cnZlLT5k
YXRhKCk7CisgICAgaW50IGN1cnZlTGVuZ3RoID0gY3VydmUtPmxlbmd0aCgpOworCisgICAgQVNT
RVJUKGN1cnZlRGF0YSk7CisKKyAgICBpZiAoIWN1cnZlRGF0YSB8fCAhY3VydmVMZW5ndGgpIHsK
KyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFt
ZXNUb1Byb2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQXBwbHkgd2F2
ZXNoYXBpbmcgY3VydmUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1RvUHJv
Y2VzczsgKytpKSB7CisgICAgICAgIGNvbnN0IGZsb2F0IGlucHV0ID0gc291cmNlW2ldOworCisg
ICAgICAgIC8vIENhbGN1bGF0ZSBhbiBpbmRleCBiYXNlZCBvbiBpbnB1dCAtMSAtPiArMSB3aXRo
IDAgYmVpbmcgYXQgdGhlIGNlbnRlciBvZiB0aGUgY3VydmUgZGF0YS4KKyAgICAgICAgaW50IGlu
ZGV4ID0gY3VydmVMZW5ndGggKiAwLjUgKiAoaW5wdXQgKyAxKTsKKworICAgICAgICAvLyBDbGlw
IGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3VydmUuCisgICAgICAgIC8vIFRoaXMg
dGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWluYWwgcmFuZ2UgLTEgLT4gKzEKKyAg
ICAgICAgaW5kZXggPSBtYXgoaW5kZXgsIDApOworICAgICAgICBpbmRleCA9IG1pbihpbmRleCwg
Y3VydmVMZW5ndGggLSAxKTsKKyAgICAgICAgZGVzdGluYXRpb25baV0gPSBjdXJ2ZURhdGFbaW5k
ZXhdOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJE
U1BLZXJuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hh
cGVyRFNQS2VybmVsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9X
YXZlU2hhcGVyRFNQS2VybmVsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdhdmVTaGFwZXJEU1BLZXJuZWxfaAorI2RlZmluZSBXYXZlU2hhcGVy
RFNQS2VybmVsX2gKKworI2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsLmgiCisjaW5jbHVkZSAiV2F2
ZVNoYXBlclByb2Nlc3Nvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdhdmVT
aGFwZXJQcm9jZXNzb3I7CisKKy8vIFdhdmVTaGFwZXJEU1BLZXJuZWwgaXMgYW4gQXVkaW9EU1BL
ZXJuZWwgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBub24tbGluZWFyIGRpc3RvcnRpb24gb24gb25l
IGNoYW5uZWwuCisKK2NsYXNzIFdhdmVTaGFwZXJEU1BLZXJuZWwgOiBwdWJsaWMgQXVkaW9EU1BL
ZXJuZWwgeworcHVibGljOiAgCisgICAgV2F2ZVNoYXBlckRTUEtlcm5lbChXYXZlU2hhcGVyUHJv
Y2Vzc29yKiBwcm9jZXNzb3IpCisgICAgOiBBdWRpb0RTUEtlcm5lbChwcm9jZXNzb3IpCisgICAg
eworICAgIH0KKyAgICAKKyAgICAvLyBBdWRpb0RTUEtlcm5lbAorICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0LCBzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7IH0KKyAgICAKK3Byb3RlY3RlZDoK
KyAgICBXYXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2F2ZVNoYXBlckRTUEtlcm5lbF9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldhdmVTaGFwZXJOb2Rl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJO
b2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKKyAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2Rl
KGNvbnRleHQsIGNvbnRleHQtPnNhbXBsZVJhdGUoKSkKK3sKKyAgICBtX3Byb2Nlc3NvciA9IGFk
b3B0UHRyKG5ldyBXYXZlU2hhcGVyUHJvY2Vzc29yKGNvbnRleHQtPnNhbXBsZVJhdGUoKSwgMSkp
OworICAgIHNldFR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKK30KKwordm9pZCBXYXZlU2hhcGVy
Tm9kZTo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBjdXJ2ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOyAKKyAgICB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPnNldEN1cnZlKGN1cnZlKTsK
K30KKworRmxvYXQzMkFycmF5KiBXYXZlU2hhcGVyTm9kZTo6Y3VydmUoKQoreworICAgIHJldHVy
biB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPmN1cnZlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXZlU2hhcGVyTm9kZV9oCisjZGVmaW5lIFdhdmVTaGFw
ZXJOb2RlX2gKKworI2luY2x1ZGUgIkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVk
ZSAiQmlxdWFkUHJvY2Vzc29yLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlclByb2Nlc3Nvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0MzJBcnJheTsKKyAgICAKK2NsYXNz
IFdhdmVTaGFwZXJOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2F2ZVNo
YXBlck5vZGUoY29udGV4dCkpOworICAgIH0KKworICAgIC8vIHNldEN1cnZlKCkgaXMgY2FsbGVk
IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwor
ICAgIEZsb2F0MzJBcnJheSogY3VydmUoKTsKKworcHJpdmF0ZTogICAgCisgICAgV2F2ZVNoYXBl
ck5vZGUoQXVkaW9Db250ZXh0Kik7ICAgIAorCisgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2
ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNz
b3IqPihwcm9jZXNzb3IoKSk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFdhdmVTaGFwZXJOb2RlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgYXVkaW8geworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPVdFQl9BVURJTywKKyAgICAgICAgR2VuZXJhdGVUb0pTCisgICAgXSBXYXZlU2hhcGVyTm9k
ZSA6IEF1ZGlvTm9kZSB7CisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tU2V0dGVyXSBGbG9h
dDMyQXJyYXkgY3VydmU7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2F2ZVNoYXBlclByb2Nlc3Nvci5oIgorCisjaW5j
bHVkZSAiV2F2ZVNoYXBlckRTUEtlcm5lbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAg
CitXYXZlU2hhcGVyUHJvY2Vzc29yOjpXYXZlU2hhcGVyUHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVS
YXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKKyAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vz
c29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCit7Cit9CisKK1dhdmVTaGFwZXJQcm9j
ZXNzb3I6On5XYXZlU2hhcGVyUHJvY2Vzc29yKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgp
KQorICAgICAgICB1bmluaXRpYWxpemUoKTsKK30KKworUGFzc093blB0cjxBdWRpb0RTUEtlcm5l
bD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdhdmVTaGFwZXJEU1BLZXJuZWwodGhpcykpOworfQorCit2b2lkIFdhdmVTaGFw
ZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCit7CisgICAgLy8gVGhp
cyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgTXV0ZXhMb2NrZXIgcHJvY2Vzc0xv
Y2tlcihtX3Byb2Nlc3NMb2NrKTsKKyAgICAKKyAgICBtX2N1cnZlID0gY3VydmU7Cit9CisKK3Zv
aWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1
cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgY2FuJ3QgYmxvY2sgb24gdGhp
cyBsb2NrLCBzbyB3ZSBjYWxsIHRyeUxvY2soKSBpbnN0ZWFkLgorICAgIC8vIENhcmVmdWwgLSB0
aGlzIGlzIGEgdHJ5TG9jaygpIGFuZCBub3QgYW4gYXV0b2xvY2tlciwgc28gd2UgbXVzdCB1bmxv
Y2soKSBiZWZvcmUgZXZlcnkgcmV0dXJuLgorICAgIGlmIChtX3Byb2Nlc3NMb2NrLnRyeUxvY2so
KSkgeyAgICAgICAgCisgICAgICAgIC8vIEZvciBlYWNoIGNoYW5uZWwgb2Ygb3VyIGlucHV0LCBw
cm9jZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIFdhdmVTaGFwZXJEU1BLZXJuZWwgaW50byB0
aGUgb3V0cHV0IGNoYW5uZWwuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tl
cm5lbHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291
cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCks
IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAgICAgbV9wcm9jZXNzTG9jay51bmxvY2soKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBUb28gYmFkIC0gdGhlIHRyeUxvY2soKSBmYWlsZWQuIFdl
IG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHNldEN1cnZlKCkgY2FsbC4KKyAgICAgICAgZGVz
dGluYXRpb24tPnplcm8oKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXYXZlU2hhcGVyUHJvY2Vzc29yX2gKKyNkZWZp
bmUgV2F2ZVNoYXBlclByb2Nlc3Nvcl9oCisKKyNpbmNsdWRlICJBdWRpb0RTUEtlcm5lbC5oIgor
I2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2Rl
LmgiCisjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBX
YXZlU2hhcGVyUHJvY2Vzc29yIGlzIGFuIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHdoaWNoIHVz
ZXMgV2F2ZVNoYXBlckRTUEtlcm5lbCBvYmplY3RzIHRvIGltcGxlbWVudCBub24tbGluZWFyIGRp
c3RvcnRpb24gZWZmZWN0cy4KKworY2xhc3MgV2F2ZVNoYXBlclByb2Nlc3NvciA6IHB1YmxpYyBB
dWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CitwdWJsaWM6CisgICAgV2F2ZVNoYXBlclByb2Nlc3Nv
cihkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgdmly
dHVhbCB+V2F2ZVNoYXBlclByb2Nlc3NvcigpOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1
ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
KEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CisKKyAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOworICAgIEZsb2F0
MzJBcnJheSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gbV9jdXJ2ZSByZXByZXNlbnRzIHRoZSBub24tbGluZWFyIHNoYXBpbmcgY3VydmUuCisg
ICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbV9jdXJ2ZTsKKworICAgIC8vIFRoaXMgc3luY2hyb25p
emVzIHByb2Nlc3MoKSB3aXRoIHNldEN1cnZlKCkuCisgICAgbXV0YWJsZSBNdXRleCBtX3Byb2Nl
c3NMb2NrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2F2ZVNo
YXBlclByb2Nlc3Nvcl9oCg==
</data>
<flag name="review"
          id="96234"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>