<?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>7384</bug_id>
          
          <creation_ts>2006-02-20 06:44:18 -0800</creation_ts>
          <short_desc>Turn off -Wno-unused-param for JavaScriptCore and get rid of unused params</short_desc>
          <delta_ts>2006-02-27 13:55:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          <blocked>7383</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>faure</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>33483</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-20 06:44:18 -0800</bug_when>
    <thetext>Turn off -Wno-unused-param for JavaScriptCore and get rid of unused params. We should to do this because KDE has the warning enabled and we don&apos;t want to make them spew warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33678</commentid>
    <comment_count>1</comment_count>
      <attachid>6659</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-22 00:04:11 -0800</bug_when>
    <thetext>Created attachment 6659
turn on unused param warning, fix warnings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33705</commentid>
    <comment_count>2</comment_count>
      <attachid>6659</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-22 09:33:39 -0800</bug_when>
    <thetext>Comment on attachment 6659
turn on unused param warning, fix warnings

What I don&apos;t like about this pattern:

    (void)other

is that you can then subsequently use the &quot;other&quot; variable; so such a line doesn&apos;t mean that the variable is unused, it just means that someone quieted an unused variable warning at some point.

I much prefer the technique of leaving out the parameter because it really *does* mean that the variable is unused.

I see the (void) technique being used here, presumably in cases where the ifdef would be more complicated without it. I&apos;d prefer not to use it at all.

That having been said, the patch seems fine to land. We can revisit that later.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33748</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-22 22:06:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 6659 [edit])
&gt; What I don&apos;t like about this pattern:
&gt; 
&gt;     (void)other

I don&apos;t like it either. I only used it when the parameter could not be removed, for one of the following reasons:

- it was a plain C file so omitting parameters would be illegal (I think)
- it was an ObjC method parameter, those can&apos;t be omitted
- it was a parameter used in only one branch of an ifdef

Do you have alternate recommendations for any of these cases? For ifdefs I could ifdef the whole function, for the other cases I don&apos;t think there is much I can do.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33769</commentid>
    <comment_count>4</comment_count>
    <who name="David Faure">faure</who>
    <bug_when>2006-02-23 08:31:12 -0800</bug_when>
    <thetext>Qt defines the Q_UNUSED macro for this (and ACE defines a similar ACE_UNUSED),
so that from reading the source it&apos;s clear what the line is for.
Yes it doesn&apos;t mean that the variable is actually unused (e.g. in all cases),
but it simply means &quot;it&apos;s ok if this variable is unused in this method&quot;.
Of course if it&apos;s used that&apos;s ok too.

But I prefer this rather than omitting argument names, since doing that obfuscates the code (in the worst case you could have a foo(int,int,int,int,int) method, e.g. as a virtual method reimplementation so you can&apos;t remove the unused args).

So my suggestion would be to define a macro like KXML_UNUSED or WK_UNUSED.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6659</attachid>
            <date>2006-02-22 00:04:11 -0800</date>
            <delta_ts>2006-02-22 09:33:39 -0800</delta_ts>
            <desc>turn on unused param warning, fix warnings</desc>
            <filename>unused-param.patch.txt</filename>
            <type>text/plain</type>
            <size>56173</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGt4bWxjb3JlL0hhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL0hhc2hU
YWJsZS5oCShyZXZpc2lvbiAxMjkzMCkKKysrIGt4bWxjb3JlL0hhc2hUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKIAogICAgICAg
ICB2b2lkIGNoZWNrVmFsaWRpdHkoY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25zdAog
ICAgICAgICB7CisgICAgICAgICAgICAodm9pZClvdGhlcjsKICNpZiBDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTCiAgICAgICAgICAgICBhc3NlcnQobV90YWJsZSk7CiAgICAgICAgICAgICBhc3Nl
cnQob3RoZXIubV90YWJsZSk7CkBAIC0yNTEsNyArMjUyLDcgQEAgbmFtZXNwYWNlIEtYTUxDb3Jl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYg
a2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KICAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpIHsgcmV0dXJuIEhhc2hGdW5j
dGlvbnM6OmVxdWFsKGEsIGIpOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShWYWx1
ZSYgbG9jYXRpb24sIGNvbnN0IEtleSYga2V5LCBjb25zdCBWYWx1ZSYgdmFsdWUsIHVuc2lnbmVk
KSB7IGxvY2F0aW9uID0gdmFsdWU7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFZh
bHVlJiBsb2NhdGlvbiwgY29uc3QgS2V5JiwgY29uc3QgVmFsdWUmIHZhbHVlLCB1bnNpZ25lZCkg
eyBsb2NhdGlvbiA9IHZhbHVlOyB9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtl
eSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CkluZGV4OiBreG1sY29y
ZS9Bc3NlcnRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL0Fzc2VydGlvbnMubW0JKHJl
dmlzaW9uIDEyOTMwKQorKysga3htbGNvcmUvQXNzZXJ0aW9ucy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGZwcmludGZfb2JqYyhjb25zdCBjaGFyICpm
b3IKIH0KIAogCi12b2lkIEtYQ0xvZyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciAqZnVuY3Rpb24sIEtYQ0xvZ0NoYW5uZWwgKmNoYW5uZWwsIGNvbnN0IGNoYXIgKmZvcm1h
dCwgLi4uKQordm9pZCBLWENMb2coY29uc3QgY2hhciosIGludCwgY29uc3QgY2hhciosIEtYQ0xv
Z0NoYW5uZWwgKmNoYW5uZWwsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGlmIChj
aGFubmVsLT5zdGF0ZSA9PSBLWENMb2dDaGFubmVsVW5pbml0aWFsaXplZCkgewogICAgICAgICBj
aGFubmVsLT5zdGF0ZSA9IEtYQ0xvZ0NoYW5uZWxPZmY7CkluZGV4OiBreG1sY29yZS9GYXN0TWFs
bG9jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBreG1sY29yZS9GYXN0TWFsbG9jLmNwcAkocmV2aXNpb24g
MTI5MzApCisrKyBreG1sY29yZS9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM1
LDYgKzkzNSw4IEBAIGJvb2wgVENNYWxsb2NfUGFnZUhlYXA6OkNoZWNrKCkgewogCiBib29sIFRD
TWFsbG9jX1BhZ2VIZWFwOjpDaGVja0xpc3QoU3BhbiogbGlzdCwgTGVuZ3RoIG1pbl9wYWdlcywg
TGVuZ3RoIG1heF9wYWdlcykgewogICBmb3IgKFNwYW4qIHMgPSBsaXN0LT5uZXh0OyBzICE9IGxp
c3Q7IHMgPSBzLT5uZXh0KSB7CisgICAgKHZvaWQpbWF4X3BhZ2VzOworICAgICh2b2lkKW1pbl9w
YWdlczsKICAgICBDSEVDS19DT05ESVRJT04ocy0+ZnJlZSk7CiAgICAgQ0hFQ0tfQ09ORElUSU9O
KHMtPmxlbmd0aCA+PSBtaW5fcGFnZXMpOwogICAgIENIRUNLX0NPTkRJVElPTihzLT5sZW5ndGgg
PD0gbWF4X3BhZ2VzKTsKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJ
KHJldmlzaW9uIDEyOTMxKQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQ5IEBACisyMDA2LTAyLTIxICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAt
IFR1cm4gb2ZmIC1Xbm8tdW51c2VkLXBhcmFtIGZvciBKYXZhU2NyaXB0Q29yZSBhbmQgZ2V0IHJp
ZCBvZiB1bnVzZWQgcGFyYW1zCisgICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM4NAorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9OUF9qc29iamVjdC5jcHA6
CisgICAgICAgIChqc0FsbG9jYXRlKToKKyAgICAgICAgKF9OUE5fSW52b2tlRGVmYXVsdCk6Cisg
ICAgICAgIChfTlBOX0V2YWx1YXRlKToKKyAgICAgICAgKF9OUE5fR2V0UHJvcGVydHkpOgorICAg
ICAgICAoX05QTl9TZXRQcm9wZXJ0eSk6CisgICAgICAgIChfTlBOX1JlbW92ZVByb3BlcnR5KToK
KyAgICAgICAgKF9OUE5fSGFzUHJvcGVydHkpOgorICAgICAgICAoX05QTl9IYXNNZXRob2QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2MvY19jbGFzcy5oOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6
Q0NsYXNzOjpjb25zdHJ1Y3RvckF0KToKKyAgICAgICAgKiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5j
cHA6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvam5pL2puaV9jbGFzcy5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6
Om1ldGhvZHNOYW1lZCk6CisgICAgICAgIChKYXZhQ2xhc3M6OmZpZWxkTmFtZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2puaS9qbmlfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSmF2YUluc3RhbmNl
OjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qbmkvam5pX2pzb2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qbmkvam5pX29iamMubW06CisgICAgICAgICgt
W05TT2JqZWN0IEtKUzo6QmluZGluZ3M6Ol0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoK1tXZWJVbmRlZmluZWQgYWxsb2NXaXRoWm9uZTpd
KToKKyAgICAgICAgKC1bV2ViVW5kZWZpbmVkIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlVuZGVmaW5lZCBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlVuZGVmaW5l
ZCBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9vYmpjX2NsYXNzLmg6
CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmNvbnN0cnVjdG9yQXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEtKUzo6QmluZGlu
Z3M6Ok9iamNDbGFzczo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6Ok9i
amNDbGFzczo6ZmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvb2JqY19p
bnN0YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZp
ZWxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAg
KE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKE9i
amNGYWxsYmFja09iamVjdEltcDo6cHV0KToKKyAgICAgICAgKE9iamNGYWxsYmFja09iamVjdElt
cDo6Y2FuUHV0KToKKyAgICAgICAgKE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAoT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4pOgorICAgICAg
ICAqIGJpbmRpbmdzL3J1bnRpbWUuY3BwOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6SW5zdGFu
Y2U6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
cnVudGltZS5oOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldFZhbHVlT2ZV
bmRlZmluZWRGaWVsZCk6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpJbnN0YW5jZTo6c2V0VmFs
dWVPZlVuZGVmaW5lZEZpZWxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lX2FycmF5LmNw
cDoKKyAgICAgICAgKFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKFJ1bnRp
bWVBcnJheTo6aW5kZXhHZXR0ZXIpOgorICAgICAgICAoUnVudGltZUFycmF5OjpwdXQpOgorICAg
ICAgICAoUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mv
cnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVy
KToKKyAgICAgICAgKFJ1bnRpbWVNZXRob2Q6OmV4ZWN1dGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OmZhbGxiYWNr
T2JqZWN0R2V0dGVyKToKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OmZpZWxkR2V0dGVyKToK
KyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6Om1ldGhvZEdldHRlcik6CisgICAgICAgIChSdW50
aW1lT2JqZWN0SW1wOjpwdXQpOgorICAgICAgICAoUnVudGltZU9iamVjdEltcDo6Y2FuUHV0KToK
KyAgICAgICAgKFJ1bnRpbWVPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFJ1
bnRpbWVPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChSdW50aW1lT2JqZWN0SW1w
OjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvcnVudGltZV9yb290LmNwcDoK
KyAgICAgICAgKHBlcmZvcm1KYXZhU2NyaXB0QWNjZXNzKToKKyAgICAgICAgKiBranMvYXJyYXlf
b2JqZWN0LmNwcDoKKyAgICAgICAgKEFycmF5SW5zdGFuY2U6Omxlbmd0aEdldHRlcik6CisgICAg
ICAgIChBcnJheUluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoQXJyYXlQ
cm90b3R5cGU6OkFycmF5UHJvdG90eXBlKToKKyAgICAgICAgKEFycmF5UHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9ib29sX29iamVjdC5jcHA6CisgICAgICAg
IChCb29sZWFuT2JqZWN0SW1wOjpCb29sZWFuT2JqZWN0SW1wKToKKyAgICAgICAgKiBranMvZGF0
ZV9vYmplY3QuY3BwOgorICAgICAgICAoS0pTOjpEYXRlT2JqZWN0RnVuY0ltcDo6RGF0ZU9iamVj
dEZ1bmNJbXApOgorICAgICAgICAoS0pTOjpEYXRlT2JqZWN0RnVuY0ltcDo6Y2FsbEFzRnVuY3Rp
b24pOgorICAgICAgICAqIGtqcy9lcnJvcl9vYmplY3QuY3BwOgorICAgICAgICAoRXJyb3JPYmpl
Y3RJbXA6OkVycm9yT2JqZWN0SW1wKToKKyAgICAgICAgKE5hdGl2ZUVycm9yUHJvdG90eXBlOjpO
YXRpdmVFcnJvclByb3RvdHlwZSk6CisgICAgICAgIChOYXRpdmVFcnJvckltcDo6TmF0aXZlRXJy
b3JJbXApOgorICAgICAgICAqIGtqcy9mdW5jdGlvbi5jcHA6CisgICAgICAgIChLSlM6OkZ1bmN0
aW9uSW1wOjphcmd1bWVudHNHZXR0ZXIpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkltcDo6bGVu
Z3RoR2V0dGVyKToKKyAgICAgICAgKEtKUzo6QXJndW1lbnRzOjptYXBwZWRJbmRleEdldHRlcik6
CisgICAgICAgIChLSlM6OkFjdGl2YXRpb25JbXA6OmFyZ3VtZW50c0dldHRlcik6CisgICAgICAg
IChLSlM6OkFjdGl2YXRpb25JbXA6OnB1dCk6CisgICAgICAgICoga2pzL2Z1bmN0aW9uX29iamVj
dC5jcHA6CisgICAgICAgIChGdW5jdGlvbk9iamVjdEltcDo6RnVuY3Rpb25PYmplY3RJbXApOgor
ICAgICAgICAqIGtqcy9pbnRlcm5hbC5jcHA6CisgICAgICAgIChLSlM6OkdldHRlclNldHRlcklt
cDo6dG9QcmltaXRpdmUpOgorICAgICAgICAoS0pTOjpHZXR0ZXJTZXR0ZXJJbXA6OnRvQm9vbGVh
bik6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEtKUzo6SW50ZXJw
cmV0ZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KEtKUzo6SW50ZXJwcmV0ZXI6OmlzR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEtKUzo6SW50ZXJw
cmV0ZXI6OmludGVycHJldGVyRm9yR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEtKUzo6SW50ZXJw
cmV0ZXI6OmlzU2FmZVNjcmlwdCk6CisgICAgICAgICoga2pzL2xleGVyLmNwcDoKKyAgICAgICAg
KExleGVyOjptYWtlSWRlbnRpZmllcik6CisgICAgICAgIChMZXhlcjo6bWFrZVVTdHJpbmcpOgor
ICAgICAgICAqIGtqcy9sb29rdXAuaDoKKyAgICAgICAgKEtKUzo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoS0pTOjpzdGF0aWNWYWx1ZUdldHRlcik6CisgICAgICAgICoga2pzL25v
ZGVzLmNwcDoKKyAgICAgICAgKFN0YXRlbWVudE5vZGU6OnByb2Nlc3NGdW5jRGVjbCk6CisgICAg
ICAgIChQcm9wZXJ0eU5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKFByb3BlcnR5TmFtZU5vZGU6
OmV2YWx1YXRlKToKKyAgICAgICAgKiBranMvbnVtYmVyX29iamVjdC5jcHA6CisgICAgICAgIChO
dW1iZXJPYmplY3RJbXA6Ok51bWJlck9iamVjdEltcCk6CisgICAgICAgIChOdW1iZXJPYmplY3RJ
bXA6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICoga2pzL29iamVjdC5jcHA6CisgICAg
ICAgIChLSlM6OkpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIpOgorICAgICAgICAoS0pTOjpKU09iamVj
dDo6ZGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToK
KyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxlKToKKyAgICAgICAg
KiBranMvb2JqZWN0X29iamVjdC5jcHA6CisgICAgICAgIChPYmplY3RPYmplY3RJbXA6Ok9iamVj
dE9iamVjdEltcCk6CisgICAgICAgICoga2pzL3Byb3BlcnR5X3Nsb3QuY3BwOgorICAgICAgICAo
S0pTOjpQcm9wZXJ0eVNsb3Q6OnVuZGVmaW5lZEdldHRlcik6CisgICAgICAgIChLSlM6OlByb3Bl
cnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAqIGtqcy9yZWZlcmVuY2UuY3BwOgor
ICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OmdldFByb3BlcnR5TmFtZSk6CisgICAgICAgICoga2pz
L3JlZmVyZW5jZV9saXN0LmNwcDoKKyAgICAgICAgKFJlZmVyZW5jZUxpc3RJdGVyYXRvcjo6b3Bl
cmF0b3IrKyk6CisgICAgICAgICoga2pzL3JlZ2V4cF9vYmplY3QuY3BwOgorICAgICAgICAoUmVn
RXhwT2JqZWN0SW1wOjpSZWdFeHBPYmplY3RJbXApOgorICAgICAgICAoUmVnRXhwT2JqZWN0SW1w
OjpnZXRWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKFJlZ0V4cE9iamVjdEltcDo6cHV0VmFsdWVQ
cm9wZXJ0eSk6CisgICAgICAgICoga2pzL3N0cmluZ19vYmplY3QuY3BwOgorICAgICAgICAoU3Ry
aW5nSW5zdGFuY2U6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChTdHJpbmdJbnN0YW5jZTo6aW5k
ZXhHZXR0ZXIpOgorICAgICAgICAoU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUpOgor
ICAgICAgICAqIGt4bWxjb3JlL0Fzc2VydGlvbnMubW06CisgICAgICAgICoga3htbGNvcmUvRmFz
dE1hbGxvYy5jcHA6CisgICAgICAgIChLWE1MQ29yZTo6VENNYWxsb2NfUGFnZUhlYXA6OkNoZWNr
TGlzdCk6CisgICAgICAgICoga3htbGNvcmUvSGFzaFRhYmxlLmg6CisgICAgICAgIChLWE1MQ29y
ZTo6SGFzaFRhYmxlQ29uc3RJdGVyYXRvcjo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChLWE1M
Q29yZTo6SWRlbnRpdHlIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKiBwY3Jl
L3BjcmVfZ2V0LmM6CisgICAgICAgIChwY3JlX2dldF9zdHJpbmdudW1iZXIpOgorCiAyMDA2LTAy
LTIxICBFcmljIFNlaWRlbCAgPGVzZWlkZWxAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IGdnYXJlbi4KSW5kZXg6IGtqcy9pbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L2ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBranMvaW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgYm9vbCBJbnRlcnByZXRlcjo6Y2hl
Y2tTeW50YXgoY29uc3QgVVN0cgogICByZXR1cm4gcmVwLT5jaGVja1N5bnRheChjb2RlKTsKIH0K
IAotQ29tcGxldGlvbiBJbnRlcnByZXRlcjo6ZXZhbHVhdGUoY29uc3QgVVN0cmluZyYgc291cmNl
VVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBjb2RlLCBKU1ZhbHVl
KiB0aGlzVikKK0NvbXBsZXRpb24gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgY29kZSwg
SlNWYWx1ZSopCiB7CiAgICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZVVSTCwgc3RhcnRpbmdMaW5l
TnVtYmVyLCBjb2RlLmRhdGEoKSwgY29kZS5zaXplKCkpOwogfQpJbmRleDoga2pzL2ludGVybmFs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvaW50ZXJuYWwuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysr
IGtqcy9pbnRlcm5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZv
aWQgR2V0dGVyU2V0dGVySW1wOjptYXJrKCkKICAgICAgICAgc2V0dGVyLT5tYXJrKCk7CiB9CiAK
LUpTVmFsdWUgKkdldHRlclNldHRlckltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICpleGVjLCBK
U1R5cGUpIGNvbnN0CitKU1ZhbHVlICpHZXR0ZXJTZXR0ZXJJbXA6OnRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSosIEpTVHlwZSkgY29uc3QKIHsKICAgICBhc3NlcnQoZmFsc2UpOwogICAgIHJldHVybiBq
c051bGwoKTsKIH0KIAotYm9vbCBHZXR0ZXJTZXR0ZXJJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUg
KikgY29uc3QKK2Jvb2wgR2V0dGVyU2V0dGVySW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29u
c3QKIHsKICAgICBhc3NlcnQoZmFsc2UpOwogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IGtqcy9s
ZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2xleGVyLmNwcAkocmV2aXNpb24gMTI5MzApCisr
KyBranMvbGV4ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzMsNyArODczLDggQEAgdm9pZCBM
ZXhlcjo6ZG9uZVBhcnNpbmcoKQogY29uc3QgaW50IGluaXRpYWxDYXBhY2l0eSA9IDY0OwogY29u
c3QgaW50IGdyb3d0aEZhY3RvciA9IDI7CiAKLUlkZW50aWZpZXIgKkxleGVyOjptYWtlSWRlbnRp
ZmllcihLSlM6OlVDaGFyICpidWZmZXIsIHVuc2lnbmVkIGludCBwb3MpCisvLyBGSVhNRTogdGhp
cyBjb21wbGV0ZWx5IGlnbm9yZXMgaXRzIHBhcmFtZXRlcnMsIGluc3RlYWQgdXNpbmcgYnVmZmVy
MTYgYW5kIHBvczE2IC0gd3RmPworSWRlbnRpZmllciAqTGV4ZXI6Om1ha2VJZGVudGlmaWVyKEtK
Uzo6VUNoYXIqLCB1bnNpZ25lZCBpbnQpCiB7CiAgIGlmIChudW1JZGVudGlmaWVycyA9PSBpZGVu
dGlmaWVyc0NhcGFjaXR5KSB7CiAgICAgaWRlbnRpZmllcnNDYXBhY2l0eSA9IChpZGVudGlmaWVy
c0NhcGFjaXR5ID09IDApID8gaW5pdGlhbENhcGFjaXR5IDogaWRlbnRpZmllcnNDYXBhY2l0eSAq
Z3Jvd3RoRmFjdG9yOwpAQCAtODg1LDcgKzg4Niw4IEBAIElkZW50aWZpZXIgKkxleGVyOjptYWtl
SWRlbnRpZmllcihLSlM6OlUKICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAgCi1VU3RyaW5nICpM
ZXhlcjo6bWFrZVVTdHJpbmcoS0pTOjpVQ2hhciAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgcG9zKQor
Ly8gRklYTUU6IHRoaXMgY29tcGxldGVseSBpZ25vcmVzIGl0cyBwYXJhbWV0ZXJzLCBpbnN0ZWFk
IHVzaW5nIGJ1ZmZlcjE2IGFuZCBwb3MxNiAtIHd0Zj8KK1VTdHJpbmcgKkxleGVyOjptYWtlVVN0
cmluZyhLSlM6OlVDaGFyKiwgdW5zaWduZWQgaW50KQogewogICBpZiAobnVtU3RyaW5ncyA9PSBz
dHJpbmdzQ2FwYWNpdHkpIHsKICAgICBzdHJpbmdzQ2FwYWNpdHkgPSAoc3RyaW5nc0NhcGFjaXR5
ID09IDApID8gaW5pdGlhbENhcGFjaXR5IDogc3RyaW5nc0NhcGFjaXR5ICpncm93dGhGYWN0b3I7
CkluZGV4OiBranMvcmVnZXhwX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL3JlZ2V4cF9v
YmplY3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9yZWdleHBfb2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg0LDkgKzE4NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBSZWdFeHBPYmpl
Y3RJbXA6OmluZm8gPSAKIEBlbmQKICovCiAKLVJlZ0V4cE9iamVjdEltcDo6UmVnRXhwT2JqZWN0
SW1wKEV4ZWNTdGF0ZSAqZXhlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1
bmN0aW9uUHJvdG90eXBlICpmdW5jUHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWdFeHBQcm90b3R5cGUgKnJlZ1Byb3RvKQorUmVnRXhwT2JqZWN0SW1wOjpSZWdFeHBP
YmplY3RJbXAoRXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bywgUmVnRXhw
UHJvdG90eXBlKiByZWdQcm90bykKIAogICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3Rv
KSwgbXVsdGlsaW5lKGZhbHNlKSwgbGFzdElucHV0KCIiKSwgbGFzdE51bVN1YlBhdHRlcm5zKDAp
CiB7CkBAIC0zMDQsNyArMzAyLDcgQEAgYm9vbCBSZWdFeHBPYmplY3RJbXA6OmdldE93blByb3Bl
cnR5U2xvdAogICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFJlZ0V4cE9iamVjdEltcCwgSW50
ZXJuYWxGdW5jdGlvbkltcD4oZXhlYywgJlJlZ0V4cFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1KU1ZhbHVlICpSZWdFeHBPYmplY3RJbXA6OmdldFZhbHVlUHJvcGVydHko
RXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4pIGNvbnN0CitKU1ZhbHVlICpSZWdFeHBPYmplY3RJ
bXA6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdAogewogICBz
d2l0Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBEb2xsYXIxOgpAQCAtMzQ5LDcgKzM0Nyw3IEBAIHZv
aWQgUmVnRXhwT2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlICpleGUKICAgbG9va3VwUHV0PFJlZ0V4
cE9iamVjdEltcCwgSW50ZXJuYWxGdW5jdGlvbkltcD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0ciwgJlJlZ0V4cFRhYmxlLCB0aGlzKTsKIH0KIAotdm9pZCBSZWdFeHBPYmplY3RJbXA6
OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZh
bHVlLCBpbnQgYXR0cikKK3ZvaWQgUmVnRXhwT2JqZWN0SW1wOjpwdXRWYWx1ZVByb3BlcnR5KEV4
ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgaW50KQogewogICBzd2l0
Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBJbnB1dDoKSW5kZXg6IGtqcy9vYmplY3Rfb2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvb2JqZWN0X29iamVjdC5jcHAJKHJldmlzaW9uIDEyOTMwKQor
Kysga2pzL29iamVjdF9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsOSArMTU1LDcg
QEAgSlNWYWx1ZSAqT2JqZWN0UHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbgogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2JqZWN0T2JqZWN0SW1wIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLU9iamVjdE9iamVjdEltcDo6T2JqZWN0T2JqZWN0SW1wKEV4ZWNT
dGF0ZSAqZXhlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFByb3Rv
dHlwZSAqb2JqUHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlv
blByb3RvdHlwZSAqZnVuY1Byb3RvKQorT2JqZWN0T2JqZWN0SW1wOjpPYmplY3RPYmplY3RJbXAo
RXhlY1N0YXRlKiwgT2JqZWN0UHJvdG90eXBlKiBvYmpQcm90bywgRnVuY3Rpb25Qcm90b3R5cGUq
IGZ1bmNQcm90bykKICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bykKIHsKICAgLy8g
RUNNQSAxNS4yLjMuMQpJbmRleDoga2pzL3N0cmluZ19vYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtqcy9zdHJpbmdfb2JqZWN0LmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBranMvc3RyaW5nX29i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEyICs1MywxMiBAQCBTdHJpbmdJbnN0YW5j
ZTo6U3RyaW5nSW5zdGFuY2UoSlNPYmplY3QgCiAgIHNldEludGVybmFsVmFsdWUoanNTdHJpbmco
c3RyaW5nKSk7CiB9CiAKLUpTVmFsdWUgKlN0cmluZ0luc3RhbmNlOjpsZW5ndGhHZXR0ZXIoRXhl
Y1N0YXRlICpleGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90ICZzbG90KQorSlNWYWx1ZSAqU3RyaW5n
SW5zdGFuY2U6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCAmc2xvdCkKIHsKLSAgICByZXR1cm4ganNO
dW1iZXIoc3RhdGljX2Nhc3Q8U3RyaW5nSW5zdGFuY2UgKj4oc2xvdC5zbG90QmFzZSgpKS0+aW50
ZXJuYWxWYWx1ZSgpLT50b1N0cmluZyhleGVjKS5zaXplKCkpOworICAgIHJldHVybiBqc051bWJl
cihzdGF0aWNfY2FzdDxTdHJpbmdJbnN0YW5jZSo+KHNsb3Quc2xvdEJhc2UoKSktPmludGVybmFs
VmFsdWUoKS0+dG9TdHJpbmcoZXhlYykuc2l6ZSgpKTsKIH0KIAotSlNWYWx1ZSAqU3RyaW5nSW5z
dGFuY2U6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2Jq
ZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCAm
c2xvdCkKK0pTVmFsdWUgKlN0cmluZ0luc3RhbmNlOjppbmRleEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCAmc2xv
dCkKIHsKICAgICBjb25zdCBVQ2hhciBjID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW5zdGFuY2UgKj4o
c2xvdC5zbG90QmFzZSgpKS0+aW50ZXJuYWxWYWx1ZSgpLT50b1N0cmluZyhleGVjKVtzbG90Lmlu
ZGV4KCldOwogICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKCZjLCAxKSk7CkBAIC0xNTIsOCAr
MTUyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6aW5mbyA9IAogQGVuZAog
Ki8KIC8vIEVDTUEgMTUuNS40Ci1TdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVj
U3RhdGUgKmV4ZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmpl
Y3RQcm90b3R5cGUgKm9ialByb3RvKQorU3RyaW5nUHJvdG90eXBlOjpTdHJpbmdQcm90b3R5cGUo
RXhlY1N0YXRlKiwgT2JqZWN0UHJvdG90eXBlKiBvYmpQcm90bykKICAgOiBTdHJpbmdJbnN0YW5j
ZShvYmpQcm90bykKIHsKICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIs
IGFmdGVyIFN0cmluZ09iamVjdEltcCBoYXMgYmVlbiBidWlsdApJbmRleDoga2pzL29iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2pzL29iamVjdC5jcHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pz
L29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNyBAQCBjb25zdCBIYXNo
RW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlICiAgIHJldHVybiAwOwogfQogCi12b2lkIEpT
T2JqZWN0OjpkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTT2JqZWN0ICpnZXR0ZXJGdW5jKQordm9pZCBKU09iamVjdDo6ZGVmaW5l
R2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIGdldHRlckZ1bmMpCiB7CiAgICAgSlNWYWx1ZSAqbyA9IGdldERpcmVjdChwcm9wZXJ0eU5h
bWUpOwogICAgIEdldHRlclNldHRlckltcCAqZ3M7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBK
U09iamVjdDo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSAqZQogICAgIGdzLT5zZXRHZXR0ZXIoZ2V0
dGVyRnVuYyk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QgKnNldHRlckZ1bmMp
Cit2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYykKIHsKICAgICBKU1ZhbHVlICpv
ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CiAgICAgR2V0dGVyU2V0dGVySW1wICpnczsKQEAg
LTQ0NCwxMyArNDQ0LDEzIEBAIGJvb2wgSlNPYmplY3Q6OmltcGxlbWVudHNIYXNJbnN0YW5jZSgp
IGMKICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVj
U3RhdGUgKi8qZXhlYyovLCBKU1ZhbHVlICovKnZhbHVlKi8pCitib29sIEpTT2JqZWN0OjpoYXNJ
bnN0YW5jZShFeGVjU3RhdGUgKiwgSlNWYWx1ZSAqKQogewogICBhc3NlcnQoZmFsc2UpOwogICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxlKEV4
ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdAorYm9v
bCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAogewogICBpbnQgYXR0cmlidXRlczsKICAKSW5kZXg6
IGtqcy9mdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMTI5MzApCisrKyBranMvZnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyAr
MTk5LDcgQEAgdm9pZCBGdW5jdGlvbkltcDo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdAogewogfQog
Ci1KU1ZhbHVlICpGdW5jdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywg
SlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTVmFsdWUgKkZ1bmN0aW9uSW1wOjphcmd1bWVu
dHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICBGdW5jdGlvbkltcCAq
dGhpc09iaiA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uSW1wICo+KHNsb3Quc2xvdEJhc2UoKSk7CiAg
IENvbnRleHRJbXAgKmNvbnRleHQgPSBleGVjLT5fY29udGV4dDsKQEAgLTIxMiw3ICsyMTIsNyBA
QCBKU1ZhbHVlICpGdW5jdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKEV4CiAgIHJldHVybiBqc051
bGwoKTsKIH0KIAotSlNWYWx1ZSAqRnVuY3Rpb25JbXA6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUg
KmV4ZWMsIEpTT2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitKU1ZhbHVlICpGdW5jdGlvbkltcDo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgRnVuY3Rpb25JbXAgKnRoaXNPYmogPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkltcCAqPihzbG90LnNsb3RCYXNlKCkpOwogICBjb25zdCBQYXJhbWV0
ZXIgKnAgPSB0aGlzT2JqLT5wYXJhbS5nZXQoKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIEFy
Z3VtZW50czo6bWFyaygpIAogICAgIF9hY3RpdmF0aW9uT2JqZWN0LT5tYXJrKCk7CiB9CiAKLUpT
VmFsdWUgKkFyZ3VtZW50czo6bWFwcGVkSW5kZXhHZXR0ZXIoRXhlY1N0YXRlICpleGVjLCBKU09i
amVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlTbG90JiBzbG90KQorSlNWYWx1ZSAqQXJndW1lbnRzOjptYXBwZWRJbmRleEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIEFyZ3VtZW50cyAqdGhpc09i
aiA9IHN0YXRpY19jYXN0PEFyZ3VtZW50cyAqPihzbG90LnNsb3RCYXNlKCkpOwogICByZXR1cm4g
dGhpc09iai0+X2FjdGl2YXRpb25PYmplY3QtPmdldChleGVjLCB0aGlzT2JqLT5pbmRleFRvTmFt
ZU1hcFtwcm9wZXJ0eU5hbWVdKTsKQEAgLTQ4Miw3ICs0ODIsNyBAQCBBY3RpdmF0aW9uSW1wOjpB
Y3RpdmF0aW9uSW1wKEZ1bmN0aW9uSW1wCiAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHN1cHBv
cnQgZW51bWVyYXRpbmcgdGhlIGFyZ3VtZW50cyBwcm9wZXJ0eT8KIH0KIAotSlNWYWx1ZSAqQWN0
aXZhdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9y
aWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCkKK0pTVmFsdWUgKkFjdGl2YXRpb25JbXA6OmFyZ3VtZW50c0dldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgQWN0aXZhdGlvbkltcCAqdGhpc09iaiA9IHN0YXRpY19jYXN0
PEFjdGl2YXRpb25JbXAgKj4oc2xvdC5zbG90QmFzZSgpKTsKIApAQCAtNTI0LDcgKzUyNCw3IEBA
IGJvb2wgQWN0aXZhdGlvbkltcDo6ZGVsZXRlUHJvcGVydHkoRXhlY1MKICAgICByZXR1cm4gSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLXZvaWQgQWN0
aXZhdGlvbkltcDo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIpCit2b2lkIEFjdGl2YXRpb25JbXA6OnB1
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZh
bHVlLCBpbnQgYXR0cikKIHsKICAgLy8gVGhlcmUncyBubyB3YXkgdGhhdCBhbiBhY3RpdmF0aW9u
IG9iamVjdCBjYW4gaGF2ZSBhIHByb3RvdHlwZSBvciBnZXR0ZXIvc2V0dGVyIHByb3BlcnRpZXMK
ICAgYXNzZXJ0KCFfcHJvcC5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwpJbmRleDoga2pz
L25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuY3BwCShyZXZpc2lvbiAxMjkzMCkK
KysrIGtqcy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29s
IFN0YXRlbWVudE5vZGU6OmhpdFN0YXRlbWVudChFeGVjU3RhCiAgICAgcmV0dXJuIHRydWU7IC8v
IGNvbnRpbnVlCiB9CiAKLXZvaWQgU3RhdGVtZW50Tm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNT
dGF0ZSAqZXhlYykKK3ZvaWQgU3RhdGVtZW50Tm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0
ZSopCiB7CiB9CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmJy
ZWFrQ3ljbGUoKSAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnR5
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRUNNQSAxMS4xLjUKLUpTVmFs
dWUgKlByb3BlcnR5Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSAqUHJv
cGVydHlOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqKQogewogICBhc3NlcnQoZmFsc2UpOwogICBy
ZXR1cm4ganNOdWxsKCk7CkBAIC00MjMsNyArNDIzLDcgQEAgSlNWYWx1ZSAqUHJvcGVydHlOb2Rl
OjpldmFsdWF0ZShFeGVjU3RhdAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9w
ZXJ0eU5hbWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAx
MS4xLjUKLUpTVmFsdWUgKlByb3BlcnR5TmFtZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqKQor
SlNWYWx1ZSAqUHJvcGVydHlOYW1lTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKikKIHsKICAgSlNW
YWx1ZSAqczsKIApJbmRleDoga2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2pzL2Z1bmN0aW9uX29iamVjdC5jcHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL2Z1bmN0aW9u
X29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBKU1ZhbHVlICpG
dW5jdGlvblByb3RvRnVuYzo6Y2FsbEFzRnVuY3RpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbk9iamVjdEltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLUZ1bmN0aW9uT2JqZWN0SW1wOjpGdW5jdGlvbk9iamVjdEltcChFeGVjU3RhdGUgKmV4ZWMs
IEZ1bmN0aW9uUHJvdG90eXBlICpmdW5jUHJvdG8pCitGdW5jdGlvbk9iamVjdEltcDo6RnVuY3Rp
b25PYmplY3RJbXAoRXhlY1N0YXRlKiwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bykKICAg
OiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bykKIHsKICAgcHV0RGlyZWN0KHByb3RvdHlw
ZVByb3BlcnR5TmFtZSwgZnVuY1Byb3RvLCBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5KTsK
SW5kZXg6IGtqcy9lcnJvcl9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9lcnJvcl9vYmpl
Y3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9lcnJvcl9vYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw4ICs4NCw3IEBAIEpTVmFsdWUgKkVycm9yUHJvdG9GdW5jOjpjYWxsQXNG
dW5jdGlvbigKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVycm9yT2JqZWN0
SW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRXJyb3JPYmplY3RJbXA6OkVy
cm9yT2JqZWN0SW1wKEV4ZWNTdGF0ZSAqZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUgKmZ1bmNQcm90
bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvclByb3RvdHlwZSAqZXJyb3JQ
cm90bykKK0Vycm9yT2JqZWN0SW1wOjpFcnJvck9iamVjdEltcChFeGVjU3RhdGUqLCBGdW5jdGlv
blByb3RvdHlwZSogZnVuY1Byb3RvLCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90bykKICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bykKIHsKICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJy
b3IucHJvdG90eXBlCkBAIC0xMjEsOCArMTIwLDcgQEAgSlNWYWx1ZSAqRXJyb3JPYmplY3RJbXA6
OmNhbGxBc0Z1bmN0aW9uKAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTmF0
aXZlRXJyb3JQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1OYXRpdmVFcnJvclBy
b3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlICpleGVjLCBFcnJvclByb3Rv
dHlwZSAqZXJyb3JQcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFcnJvclR5cGUgZXQsIFVTdHJpbmcgbmFtZSwgVVN0cmluZyBtZXNzYWdlKQor
TmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEVy
cm9yUHJvdG90eXBlKiBlcnJvclByb3RvLCBFcnJvclR5cGUgZXQsIFVTdHJpbmcgbmFtZSwgVVN0
cmluZyBtZXNzYWdlKQogICA6IEpTT2JqZWN0KGVycm9yUHJvdG8pCiB7CiAgIGVyclR5cGUgPSBl
dDsKQEAgLTEzNCw5ICsxMzIsOSBAQCBOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQ
cm90b3R5CiAKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckltcDo6aW5mbyA9IHsiRnVuY3Rp
b24iLCAmSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgMH07CiAKLU5hdGl2ZUVycm9ySW1w
OjpOYXRpdmVFcnJvckltcChFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlICpmdW5j
UHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKnByb3QpCi0g
IDogSW50ZXJuYWxGdW5jdGlvbkltcChmdW5jUHJvdG8pLCBwcm90byhwcm90KQorTmF0aXZlRXJy
b3JJbXA6Ok5hdGl2ZUVycm9ySW1wKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5j
UHJvdG8sIEpTT2JqZWN0KiBwcm90KQorICA6IEludGVybmFsRnVuY3Rpb25JbXAoZnVuY1Byb3Rv
KQorICAsIHByb3RvKHByb3QpCiB7CiAgIHB1dERpcmVjdChsZW5ndGhQcm9wZXJ0eU5hbWUsIGpz
TnVtYmVyKDEpLCBEb250RGVsZXRlfFJlYWRPbmx5fERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43
LjUKICAgcHV0RGlyZWN0KHByb3RvdHlwZVByb3BlcnR5TmFtZSwgcHJvdG8sIERvbnREZWxldGV8
UmVhZE9ubHl8RG9udEVudW0pOwpJbmRleDoga2pzL2Jvb2xfb2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBranMvYm9vbF9vYmplY3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9ib29sX29i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDcgQEAgSlNWYWx1ZSAqQm9vbGVh
blByb3RvRnVuYzo6Y2FsbEFzRnVuY3RpbwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEJvb2xlYW5PYmplY3RJbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1C
b29sZWFuT2JqZWN0SW1wOjpCb29sZWFuT2JqZWN0SW1wKEV4ZWNTdGF0ZSAqZXhlYywgRnVuY3Rp
b25Qcm90b3R5cGUgKmZ1bmNQcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQm9vbGVhblByb3RvdHlwZSAqYm9vbGVhblByb3RvKQorQm9vbGVhbk9iamVjdEltcDo6Qm9v
bGVhbk9iamVjdEltcChFeGVjU3RhdGUqLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY1Byb3RvLCBC
b29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG8pCiAgIDogSW50ZXJuYWxGdW5jdGlvbkltcChm
dW5jUHJvdG8pCiB7CiAgIHB1dERpcmVjdChwcm90b3R5cGVQcm9wZXJ0eU5hbWUsIGJvb2xlYW5Q
cm90bywgRG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seSk7CkluZGV4OiBranMvcmVmZXJlbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvcmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMTI5MzApCisr
KyBranMvcmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBSZWZl
cmVuY2U6OlJlZmVyZW5jZShKU09iamVjdCAqYiwgdW5zaWduCiB7CiB9CiAKLUlkZW50aWZpZXIg
UmVmZXJlbmNlOjpnZXRQcm9wZXJ0eU5hbWUoRXhlY1N0YXRlICpleGVjKSBjb25zdAorSWRlbnRp
ZmllciBSZWZlcmVuY2U6OmdldFByb3BlcnR5TmFtZShFeGVjU3RhdGUqKSBjb25zdAogewogICBp
ZiAocHJvcGVydHlOYW1lSXNOdW1iZXIgJiYgcHJvcC5pc051bGwoKSkKICAgICBwcm9wID0gSWRl
bnRpZmllcjo6ZnJvbShwcm9wZXJ0eU5hbWVBc051bWJlcik7CkluZGV4OiBranMvZGF0ZV9vYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9kYXRlX29iamVjdC5jcHAJKHJldmlzaW9uIDEyOTMw
KQorKysga2pzL2RhdGVfb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk5LDE0ICs3OTks
MTQgQEAgSlNWYWx1ZSAqRGF0ZU9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24oRQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGF0ZU9iamVjdEZ1bmNJbXAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1EYXRlT2JqZWN0RnVuY0ltcDo6RGF0ZU9iamVjdEZ1bmNJbXAo
RXhlY1N0YXRlICpleGVjLCBGdW5jdGlvblByb3RvdHlwZSAqZnVuY1Byb3RvLCBpbnQgaSwgaW50
IGxlbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK0RhdGVPYmplY3RGdW5jSW1wOjpEYXRlT2Jq
ZWN0RnVuY0ltcChFeGVjU3RhdGUqLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY1Byb3RvLCBpbnQg
aSwgaW50IGxlbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICA6IEludGVybmFsRnVuY3Rp
b25JbXAoZnVuY1Byb3RvLCBuYW1lKSwgaWQoaSkKIHsKICAgICBwdXREaXJlY3QobGVuZ3RoUHJv
cGVydHlOYW1lLCBsZW4sIERvbnREZWxldGV8UmVhZE9ubHl8RG9udEVudW0pOwogfQogCiAvLyBF
Q01BIDE1LjkuNC4yIC0gMwotSlNWYWx1ZSAqRGF0ZU9iamVjdEZ1bmNJbXA6OmNhbGxBc0Z1bmN0
aW9uKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKnRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3Mp
CitKU1ZhbHVlICpEYXRlT2JqZWN0RnVuY0ltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIGNvbnN0IExpc3QmIGFyZ3MpCiB7CiAgIGlmIChpZCA9PSBQYXJzZSkg
ewogICAgIHJldHVybiBqc051bWJlcihwYXJzZURhdGUoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykp
KTsKSW5kZXg6IGtqcy9hcnJheV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9hcnJheV9v
YmplY3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9hcnJheV9vYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSwxMiArNzUsMTIgQEAgQXJyYXlJbnN0YW5jZTo6fkFycmF5SW5zdGFu
Y2UoKQogICBmYXN0RnJlZShzdG9yYWdlKTsKIH0KIAotSlNWYWx1ZSAqQXJyYXlJbnN0YW5jZTo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkK
K0pTVmFsdWUgKkFycmF5SW5zdGFuY2U6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU09iamVj
dCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIHJl
dHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxBcnJheUluc3RhbmNlICo+KHNsb3Quc2xvdEJhc2Uo
KSktPmxlbmd0aCk7CiB9CiAKLWJvb2wgQXJyYXlJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEFycmF5SW5zdGFuY2U6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICBpZiAocHJvcGVydHlOYW1lID09IGxlbmd0aFByb3BlcnR5TmFtZSkgewog
ICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGxlbmd0aEdldHRlcik7CkBAIC00MTksMTQgKzQxOSwx
MyBAQCBjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OmluZm8gPSB7CiAqLwogCiAvLyBF
Q01BIDE1LjQuNAotQXJyYXlQcm90b3R5cGU6OkFycmF5UHJvdG90eXBlKEV4ZWNTdGF0ZSAqZXhl
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RQcm90b3R5cGUg
Km9ialByb3RvKQorQXJyYXlQcm90b3R5cGU6OkFycmF5UHJvdG90eXBlKEV4ZWNTdGF0ZSosIE9i
amVjdFByb3RvdHlwZSogb2JqUHJvdG8pCiAgIDogQXJyYXlJbnN0YW5jZShvYmpQcm90bywgMCkK
IHsKICAgc2V0SW50ZXJuYWxWYWx1ZShqc051bGwoKSk7CiB9CiAKLWJvb2wgQXJyYXlQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorYm9vbCBBcnJheVByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8QXJyYXlQcm90b0Z1bmMsIEFycmF5SW5zdGFuY2U+KGV4ZWMsICZhcnJheVRhYmxl
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpJbmRleDoga2pzL2ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2pzL2ludGVycHJldGVyLmgJKHJldmlzaW9uIDEyOTMwKQorKysga2pz
L2ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgKiBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgdGhl
IFdpbmRvdyBvYmplY3Qgc28gd2UgY2FuIHBlcmZvcm0KICAgICAgKiBzZWN1cml0eSBjaGVja3Mu
CiAgICAgICovCi0gICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KEpTVmFsdWUgKnYpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2JqZWN0KEpTVmFsdWUq
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIC8qKiAKICAgICAgKiBGaW5kIHRoZSBpbnRl
cnByZXRlciBmb3IgYSBwYXJ0aWN1bGFyIGdsb2JhbCBvYmplY3QuICBUaGlzIHNob3VsZCByZWFs
bHkKQEAgLTM4NSw3ICszODUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgKiBjcmVhdGVkIGlu
IGFuIGFwcGxpY2F0aW9uIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcyBtZXRob2QuICBUaGUg
b25seQogICAgICAqIG92ZXJyaWRlIG9mIHRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseSBpbiBXZWJD
b3JlLgogICAgICAqLwotICAgIHZpcnR1YWwgSW50ZXJwcmV0ZXIgKmludGVycHJldGVyRm9yR2xv
YmFsT2JqZWN0IChjb25zdCBKU1ZhbHVlICppbXApIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IEludGVycHJldGVyKiBpbnRlcnByZXRlckZvckdsb2JhbE9iamVjdChjb25zdCBKU1ZhbHVlKikg
eyByZXR1cm4gMDsgfQogICAgIAogICAgIC8qKgogICAgICAqIERldGVybWluZSBpZiB0aGUgaXQg
aXMgJ3NhZmUnIHRvIGV4ZWN1dGUgY29kZSBpbiB0aGUgdGFyZ2V0IGludGVycHJldGVyIGZyb20g
YW4KQEAgLTM5Myw3ICszOTMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgKiBjcm9zcyBmcmFt
ZSBzZWN1cml0eSBydWxlcy4gIEluIHBhcnRpY3VsYXIsIGF0dGVtcHRzIHRvIGFjY2VzcyAnYm91
bmQnIG9iamVjdHMgYXJlCiAgICAgICogbm90IGFsbG93ZWQgdW5sZXNzIGlzU2FmZVNjcmlwdCBy
ZXR1cm5zIHRydWUuCiAgICAgICovCi0gICAgdmlydHVhbCBib29sIGlzU2FmZVNjcmlwdCAoY29u
c3QgSW50ZXJwcmV0ZXIgKnRhcmdldCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1NhZmVTY3JpcHQoY29uc3QgSW50ZXJwcmV0ZXIqKSB7IHJldHVybiB0cnVlOyB9CiAgIAog
I2lmIF9fQVBQTEVfXwogICAgIHZpcnR1YWwgdm9pZCAqY3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZv
clZhbHVlKEV4ZWNTdGF0ZSosIGludCBsYW5ndWFnZSwgSlNPYmplY3QqIHZhbHVlLCBjb25zdCBC
aW5kaW5nczo6Um9vdE9iamVjdCogb3JpZ2luLCBjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCog
Y3VycmVudCk7CkluZGV4OiBranMvbnVtYmVyX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L251bWJlcl9vYmplY3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9udW1iZXJfb2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkxLDkgKzM5MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBO
dW1iZXJPYmplY3RJbXA6OmluZm8gPSAKICAgTUlOX1ZBTFVFICAgICAgICAgICAgIE51bWJlck9i
amVjdEltcDo6TWluVmFsdWUgICAgICAgRG9udEVudW18RG9udERlbGV0ZXxSZWFkT25seQogQGVu
ZAogKi8KLU51bWJlck9iamVjdEltcDo6TnVtYmVyT2JqZWN0SW1wKEV4ZWNTdGF0ZSAqZXhlYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlICpmdW5j
UHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJQcm90b3R5cGUg
Km51bWJlclByb3RvKQorTnVtYmVyT2JqZWN0SW1wOjpOdW1iZXJPYmplY3RJbXAoRXhlY1N0YXRl
KiwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmNQcm90bywgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQ
cm90bykKICAgOiBJbnRlcm5hbEZ1bmN0aW9uSW1wKGZ1bmNQcm90bykKIHsKICAgLy8gTnVtYmVy
LlByb3RvdHlwZQpAQCAtNDAzLDcgKzQwMSw3IEBAIE51bWJlck9iamVjdEltcDo6TnVtYmVyT2Jq
ZWN0SW1wKEV4ZWNTdGEKICAgcHV0RGlyZWN0KGxlbmd0aFByb3BlcnR5TmFtZSwganNOdW1iZXIo
MSksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogfQogCi1ib29sIE51bWJlck9iamVj
dEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIE51bWJlck9iamVjdElt
cDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8TnVtYmVyT2JqZWN0SW1wLCBJbnRlcm5hbEZ1bmN0aW9uSW1wPihleGVjLCAmbnVt
YmVyVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkluZGV4OiBranMvbG9va3Vw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2pzL2xvb2t1cC5oCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9s
b29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgKiBIZWxwZXIgZm9yIGdldFN0YXRpY0Z1bmN0aW9uU2xvdCBhbmQgZ2V0U3RhdGljUHJv
cGVydHlTbG90CiAgICAqLwogICB0ZW1wbGF0ZSA8Y2xhc3MgRnVuY0ltcD4KLSAgaW5saW5lIEpT
VmFsdWUgKnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9y
aWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCkKKyAgaW5saW5lIEpTVmFsdWUgKnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKICAgewogICAgICAgLy8gTG9vayBmb3IgY2FjaGVk
IHZhbHVlIGluIGR5bmFtaWMgbWFwIG9mIHByb3BlcnRpZXMgKGluIEpTT2JqZWN0KQogICAgICAg
SlNPYmplY3QgKnRoaXNPYmogPSBzbG90LnNsb3RCYXNlKCk7CkBAIC0xNDQsMTAgKzE0NCwxMCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICogSGVscGVyIGZvciBnZXRTdGF0aWNWYWx1ZVNsb3QgYW5k
IGdldFN0YXRpY1Byb3BlcnR5U2xvdAogICAgKi8KICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXA+
Ci0gIGlubGluZSBKU1ZhbHVlICpzdGF0aWNWYWx1ZUdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpT
T2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKKyAgaW5saW5lIEpTVmFsdWUgKnN0YXRpY1ZhbHVlR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQogICB7Ci0gICAgICBUaGlzSW1wICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8VGhpc0lt
cCAqPihzbG90LnNsb3RCYXNlKCkpOwotICAgICAgY29uc3QgSGFzaEVudHJ5ICplbnRyeSA9IHNs
b3Quc3RhdGljRW50cnkoKTsKKyAgICAgIFRoaXNJbXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxU
aGlzSW1wKj4oc2xvdC5zbG90QmFzZSgpKTsKKyAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkg
PSBzbG90LnN0YXRpY0VudHJ5KCk7CiAgICAgICByZXR1cm4gdGhpc09iai0+Z2V0VmFsdWVQcm9w
ZXJ0eShleGVjLCBlbnRyeS0+dmFsdWUpOwogICB9CiAKSW5kZXg6IGtqcy9wcm9wZXJ0eV9zbG90
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvcHJvcGVydHlfc2xvdC5jcHAJKHJldmlzaW9uIDEyOTMw
KQorKysga2pzL3Byb3BlcnR5X3Nsb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcs
MTIgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLUpTVmFsdWUgKlByb3BlcnR5U2xvdDo6dW5kZWZp
bmVkR2V0dGVyKEV4ZWNTdGF0ZSAqLCBKU09iamVjdCAqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTVmFsdWUgKlByb3BlcnR5U2xv
dDo6dW5kZWZpbmVkR2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9
CiAKLUpTVmFsdWUgKlByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlICpleGVj
LCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitKU1ZhbHVlICpQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBzbG90Lm1fZGF0YS5n
ZXR0ZXJGdW5jLT5jYWxsKGV4ZWMsIG9yaWdpbmFsT2JqZWN0LCBMaXN0OjplbXB0eSgpKTsKIH0K
SW5kZXg6IGtqcy9yZWZlcmVuY2VfbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL3JlZmVyZW5j
ZV9saXN0LmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBranMvcmVmZXJlbmNlX2xpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgY29uc3QgUmVmZXJlbmNlICpSZWZlcmVu
Y2VMaXN0SXRlcmF0b3I6OgogICByZXR1cm4gJm5vZGUtPnJlZmVyZW5jZTsKIH0KIAotY29uc3Qg
UmVmZXJlbmNlICZSZWZlcmVuY2VMaXN0SXRlcmF0b3I6Om9wZXJhdG9yKysoaW50IGkpIAorY29u
c3QgUmVmZXJlbmNlICZSZWZlcmVuY2VMaXN0SXRlcmF0b3I6Om9wZXJhdG9yKysoaW50KSAKIHsK
ICAgY29uc3QgUmVmZXJlbmNlICZyZWYgPSBub2RlLT5yZWZlcmVuY2U7CiAgIG5vZGUgPSBub2Rl
LT5uZXh0OwpJbmRleDogcGNyZS9wY3JlX2dldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBjcmUvcGNyZV9n
ZXQuYwkocmV2aXNpb24gMTI5MzApCisrKyBwY3JlL3BjcmVfZ2V0LmMJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDYgKzg5LDkgQEAgd2hpbGUgKHRvcCA+IGJvdCkKICAgaWYgKGMgPT0gMCkgcmV0dXJu
IChlbnRyeVswXSA8PCA4KSArIGVudHJ5WzFdOwogICBpZiAoYyA+IDApIGJvdCA9IG1pZCArIDE7
IGVsc2UgdG9wID0gbWlkOwogICB9CisjZWxzZQorKHZvaWQpY29kZTsKKyh2b2lkKXN0cmluZ25h
bWU7CiAjZW5kaWYKIAogcmV0dXJuIFBDUkVfRVJST1JfTk9TVUJTVFJJTkc7CkluZGV4OiBiaW5k
aW5ncy9qbmkvam5pX2pzb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qbmkvam5p
X2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9qbmkvam5pX2pzb2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUwLDcgKzQ1MCw3IEBAIExpc3QgSmF2YUpTT2Jq
ZWN0OjpsaXN0RnJvbUpBcnJheShqb2JqZWMKIAogZXh0ZXJuICJDIiB7CiAKLWpsb25nIEtKU19K
U0NyZWF0ZU5hdGl2ZUpTT2JqZWN0IChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqc3RyaW5n
IGp1cmwsIGpsb25nIG5hdGl2ZUhhbmRsZSwgamJvb2xlYW4gY3R4KQoramxvbmcgS0pTX0pTQ3Jl
YXRlTmF0aXZlSlNPYmplY3QgKEpOSUVudiosIGpjbGFzcywganN0cmluZywgamxvbmcgbmF0aXZl
SGFuZGxlLCBqYm9vbGVhbikKIHsKICAgICBKU09iamVjdENhbGxDb250ZXh0IGNvbnRleHQ7CiAg
ICAgY29udGV4dC50eXBlID0gQ3JlYXRlTmF0aXZlOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIGpsb25n
IEtKU19KU0NyZWF0ZU5hdGl2ZUpTT2JqZWN0IChKTklFbnYKICAgICByZXR1cm4gSmF2YUpTT2Jq
ZWN0OjppbnZva2UgKCZjb250ZXh0KS5qOwogfQogCi12b2lkIEtKU19KU09iamVjdF9KU0ZpbmFs
aXplIChKTklFbnYgKmVudiwgamNsYXNzIGpzQ2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRsZSkKK3Zv
aWQgS0pTX0pTT2JqZWN0X0pTRmluYWxpemUgKEpOSUVudiosIGpjbGFzcywgamxvbmcgbmF0aXZl
SGFuZGxlKQogewogICAgIEpTT2JqZWN0Q2FsbENvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0
LnR5cGUgPSBGaW5hbGl6ZTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIEtKU19KU09iamVjdF9K
U0ZpbmFsaXplIChKTklFbnYgKmVuCiAgICAgSmF2YUpTT2JqZWN0OjppbnZva2UgKCZjb250ZXh0
KTsKIH0KIAotam9iamVjdCBLSlNfSlNPYmplY3RfSlNPYmplY3RDYWxsIChKTklFbnYgKmVudiwg
amNsYXNzIGpzQ2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRsZSwganN0cmluZyBqdXJsLCBqc3RyaW5n
IG1ldGhvZE5hbWUsIGpvYmplY3RBcnJheSBhcmdzLCBqYm9vbGVhbiBjdHgpCitqb2JqZWN0IEtK
U19KU09iamVjdF9KU09iamVjdENhbGwgKEpOSUVudiosIGpjbGFzcywgamxvbmcgbmF0aXZlSGFu
ZGxlLCBqc3RyaW5nLCBqc3RyaW5nIG1ldGhvZE5hbWUsIGpvYmplY3RBcnJheSBhcmdzLCBqYm9v
bGVhbikKIHsKICAgICBKU09iamVjdENhbGxDb250ZXh0IGNvbnRleHQ7CiAgICAgY29udGV4dC50
eXBlID0gQ2FsbDsKQEAgLTQ3Niw3ICs0NzYsNyBAQCBqb2JqZWN0IEtKU19KU09iamVjdF9KU09i
amVjdENhbGwgKEpOSUVuCiAgICAgcmV0dXJuIEphdmFKU09iamVjdDo6aW52b2tlICgmY29udGV4
dCkubDsKIH0KIAotam9iamVjdCBLSlNfSlNPYmplY3RfSlNPYmplY3RFdmFsIChKTklFbnYgKmVu
diwgamNsYXNzIGpzQ2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRsZSwganN0cmluZyBqdXJsLCBqc3Ry
aW5nIGpzY3JpcHQsIGpib29sZWFuIGN0eCkKK2pvYmplY3QgS0pTX0pTT2JqZWN0X0pTT2JqZWN0
RXZhbCAoSk5JRW52KiwgamNsYXNzLCBqbG9uZyBuYXRpdmVIYW5kbGUsIGpzdHJpbmcsIGpzdHJp
bmcganNjcmlwdCwgamJvb2xlYW4pCiB7CiAgICAgSlNPYmplY3RDYWxsQ29udGV4dCBjb250ZXh0
OwogICAgIGNvbnRleHQudHlwZSA9IEV2YWw7CkBAIC00ODUsNyArNDg1LDcgQEAgam9iamVjdCBL
SlNfSlNPYmplY3RfSlNPYmplY3RFdmFsIChKTklFbgogICAgIHJldHVybiBKYXZhSlNPYmplY3Q6
Omludm9rZSAoJmNvbnRleHQpLmw7CiB9CiAKLWpvYmplY3QgS0pTX0pTT2JqZWN0X0pTT2JqZWN0
R2V0TWVtYmVyIChKTklFbnYgKmVudiwgamNsYXNzIGpzQ2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRs
ZSwganN0cmluZyBqdXJsLCBqc3RyaW5nIGpuYW1lLCBqYm9vbGVhbiBjdHgpCitqb2JqZWN0IEtK
U19KU09iamVjdF9KU09iamVjdEdldE1lbWJlciAoSk5JRW52KiwgamNsYXNzLCBqbG9uZyBuYXRp
dmVIYW5kbGUsIGpzdHJpbmcsIGpzdHJpbmcgam5hbWUsIGpib29sZWFuKQogewogICAgIEpTT2Jq
ZWN0Q2FsbENvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0LnR5cGUgPSBHZXRNZW1iZXI7CkBA
IC00OTQsNyArNDk0LDcgQEAgam9iamVjdCBLSlNfSlNPYmplY3RfSlNPYmplY3RHZXRNZW1iZXIg
KAogICAgIHJldHVybiBKYXZhSlNPYmplY3Q6Omludm9rZSAoJmNvbnRleHQpLmw7CiB9CiAKLXZv
aWQgS0pTX0pTT2JqZWN0X0pTT2JqZWN0U2V0TWVtYmVyIChKTklFbnYgKmVudiwgamNsYXNzIGpz
Q2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRsZSwganN0cmluZyBqdXJsLCBqc3RyaW5nIGpuYW1lLCBq
b2JqZWN0IHZhbHVlLCBqYm9vbGVhbiBjdHgpCit2b2lkIEtKU19KU09iamVjdF9KU09iamVjdFNl
dE1lbWJlciAoSk5JRW52KiwgamNsYXNzLCBqbG9uZyBuYXRpdmVIYW5kbGUsIGpzdHJpbmcsIGpz
dHJpbmcgam5hbWUsIGpvYmplY3QgdmFsdWUsIGpib29sZWFuKQogewogICAgIEpTT2JqZWN0Q2Fs
bENvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0LnR5cGUgPSBTZXRNZW1iZXI7CkBAIC01MDQs
NyArNTA0LDcgQEAgdm9pZCBLSlNfSlNPYmplY3RfSlNPYmplY3RTZXRNZW1iZXIgKEpOSQogICAg
IEphdmFKU09iamVjdDo6aW52b2tlICgmY29udGV4dCk7CiB9CiAKLXZvaWQgS0pTX0pTT2JqZWN0
X0pTT2JqZWN0UmVtb3ZlTWVtYmVyIChKTklFbnYgKmVudiwgamNsYXNzIGpzQ2xhc3MsIGpsb25n
IG5hdGl2ZUhhbmRsZSwganN0cmluZyBqdXJsLCBqc3RyaW5nIGpuYW1lLCBqYm9vbGVhbiBjdHgp
Cit2b2lkIEtKU19KU09iamVjdF9KU09iamVjdFJlbW92ZU1lbWJlciAoSk5JRW52KiwgamNsYXNz
LCBqbG9uZyBuYXRpdmVIYW5kbGUsIGpzdHJpbmcsIGpzdHJpbmcgam5hbWUsIGpib29sZWFuKQog
ewogICAgIEpTT2JqZWN0Q2FsbENvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0LnR5cGUgPSBS
ZW1vdmVNZW1iZXI7CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBLSlNfSlNPYmplY3RfSlNPYmpl
Y3RSZW1vdmVNZW1iZXIgKAogICAgIEphdmFKU09iamVjdDo6aW52b2tlICgmY29udGV4dCk7CiB9
CiAKLWpvYmplY3QgS0pTX0pTT2JqZWN0X0pTT2JqZWN0R2V0U2xvdCAoSk5JRW52ICplbnYsIGpj
bGFzcyBqc0NsYXNzLCBqbG9uZyBuYXRpdmVIYW5kbGUsIGpzdHJpbmcganVybCwgamludCBqaW5k
ZXgsIGpib29sZWFuIGN0eCkKK2pvYmplY3QgS0pTX0pTT2JqZWN0X0pTT2JqZWN0R2V0U2xvdCAo
Sk5JRW52KiwgamNsYXNzLCBqbG9uZyBuYXRpdmVIYW5kbGUsIGpzdHJpbmcsIGppbnQgamluZGV4
LCBqYm9vbGVhbikKIHsKICAgICBKU09iamVjdENhbGxDb250ZXh0IGNvbnRleHQ7CiAgICAgY29u
dGV4dC50eXBlID0gR2V0U2xvdDsKQEAgLTUyMiw3ICs1MjIsNyBAQCBqb2JqZWN0IEtKU19KU09i
amVjdF9KU09iamVjdEdldFNsb3QgKEpOCiAgICAgcmV0dXJuIEphdmFKU09iamVjdDo6aW52b2tl
ICgmY29udGV4dCkubDsKIH0KIAotdm9pZCBLSlNfSlNPYmplY3RfSlNPYmplY3RTZXRTbG90IChK
TklFbnYgKmVudiwgamNsYXNzIGpzQ2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRsZSwganN0cmluZyBq
dXJsLCBqaW50IGppbmRleCwgam9iamVjdCB2YWx1ZSwgamJvb2xlYW4gY3R4KQordm9pZCBLSlNf
SlNPYmplY3RfSlNPYmplY3RTZXRTbG90IChKTklFbnYqLCBqY2xhc3MsIGpsb25nIG5hdGl2ZUhh
bmRsZSwganN0cmluZywgamludCBqaW5kZXgsIGpvYmplY3QgdmFsdWUsIGpib29sZWFuKQogewog
ICAgIEpTT2JqZWN0Q2FsbENvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0LnR5cGUgPSBTZXRT
bG90OwpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgS0pTX0pTT2JqZWN0X0pTT2JqZWN0U2V0U2xv
dCAoSk5JRW4KICAgICBKYXZhSlNPYmplY3Q6Omludm9rZSAoJmNvbnRleHQpOwogfQogCi1qc3Ry
aW5nIEtKU19KU09iamVjdF9KU09iamVjdFRvU3RyaW5nIChKTklFbnYgKmVudiwgamNsYXNzIGNs
YXp6LCBqbG9uZyBuYXRpdmVIYW5kbGUpCitqc3RyaW5nIEtKU19KU09iamVjdF9KU09iamVjdFRv
U3RyaW5nIChKTklFbnYqLCBqY2xhc3MsIGpsb25nIG5hdGl2ZUhhbmRsZSkKIHsKICAgICBKU09i
amVjdENhbGxDb250ZXh0IGNvbnRleHQ7CiAgICAgY29udGV4dC50eXBlID0gVG9TdHJpbmc7Cklu
ZGV4OiBiaW5kaW5ncy9qbmkvam5pX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5n
cy9qbmkvam5pX2luc3RhbmNlLmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9qbmkv
am5pX2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk0LDcgKzI5NCw3IEBAIEpTVmFs
dWUgKkphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kIChFeGUKICAgICByZXR1cm4gcmVzdWx0VmFs
dWU7CiB9CiAKLUpTVmFsdWUgKkphdmFJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCAoRXhl
Y1N0YXRlICpleGVjLCBjb25zdCBMaXN0ICZhcmdzKQorSlNWYWx1ZSAqSmF2YUluc3RhbmNlOjpp
bnZva2VEZWZhdWx0TWV0aG9kIChFeGVjU3RhdGUqLCBjb25zdCBMaXN0JikKIHsKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KSW5kZXg6IGJpbmRpbmdzL2puaS9qbmlfb2JqYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBiaW5kaW5ncy9qbmkvam5pX29iamMubW0JKHJldmlzaW9uIDEyOTMwKQorKysg
YmluZGluZ3Mvam5pL2puaV9vYmpjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBLSlM6OkJpbmRpbmdzOwogLSAoTlNVUkwgKilfd2ViVmlld1VSTDsK
IEBlbmQKIAotYm9vbCBLSlM6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNhbGwgKGNvbnN0IHZvaWQg
KnRhcmdldEFwcGxldFZpZXcsIGpvYmplY3Qgb2JqLCBib29sIGlzU3RhdGljLCBKTklUeXBlIHJl
dHVyblR5cGUsIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICphcmdzLCBqdmFsdWUgJnJlc3Vs
dCwgY29uc3QgY2hhciAqY2FsbGluZ1VSTCwgSlNWYWx1ZSAqJmV4Y2VwdGlvbkRlc2NyaXB0aW9u
KQorYm9vbCBLSlM6OkJpbmRpbmdzOjpkaXNwYXRjaEpOSUNhbGwgKGNvbnN0IHZvaWQgKnRhcmdl
dEFwcGxldFZpZXcsIGpvYmplY3Qgb2JqLCBib29sIGlzU3RhdGljLCBKTklUeXBlIHJldHVyblR5
cGUsIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICphcmdzLCBqdmFsdWUgJnJlc3VsdCwgY29u
c3QgY2hhciosIEpTVmFsdWUgKiZleGNlcHRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZCB2aWV3
ID0gKGlkKXRhcmdldEFwcGxldFZpZXc7CiAgICAgCkluZGV4OiBiaW5kaW5ncy9qbmkvam5pX2Ns
YXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qbmkvam5pX2NsYXNzLmNwcAkocmV2aXNp
b24gMTI5MzApCisrKyBiaW5kaW5ncy9qbmkvam5pX2NsYXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNyArOTYsNyBAQCBKYXZhQ2xhc3M6On5KYXZhQ2xhc3MgKCkgewogICAgIGRlbGV0ZSBb
XSBfY29uc3RydWN0b3JzOwogfQogCi1NZXRob2RMaXN0IEphdmFDbGFzczo6bWV0aG9kc05hbWVk
KGNvbnN0IGNoYXIgKm5hbWUsIEluc3RhbmNlICppbnN0YW5jZSkgY29uc3QKK01ldGhvZExpc3Qg
SmF2YUNsYXNzOjptZXRob2RzTmFtZWQoY29uc3QgY2hhciAqbmFtZSwgSW5zdGFuY2UqKSBjb25z
dAogewogICAgIENGU3RyaW5nUmVmIG1ldGhvZE5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwogICAgIE1ldGhvZExpc3Qg
Km1ldGhvZExpc3QgPSAoTWV0aG9kTGlzdCAqKUNGRGljdGlvbmFyeUdldFZhbHVlKF9tZXRob2Rz
LCBtZXRob2ROYW1lKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBNZXRob2RMaXN0IEphdmFDbGFzczo6
bWV0aG9kc05hbWVkKGNvbnN0CiAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIH0KIAotRmllbGQg
KkphdmFDbGFzczo6ZmllbGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFu
Y2UpIGNvbnN0CitGaWVsZCAqSmF2YUNsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IGNoYXIgKm5hbWUs
IEluc3RhbmNlKikgY29uc3QKIHsKICAgICBDRlN0cmluZ1JlZiBmaWVsZE5hbWUgPSBDRlN0cmlu
Z0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIG5hbWUsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwog
ICAgIEZpZWxkICphRmllbGQgPSAoRmllbGQgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShfZmllbGRz
LCBmaWVsZE5hbWUpOwpJbmRleDogYmluZGluZ3MvTlBfanNvYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGJpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5n
cy9OUF9qc29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgc3RhdGlj
IEtKUzo6TGlzdCBsaXN0RnJvbVZhcmlhbnRBcmdzKEtKUwogICAgIHJldHVybiBhTGlzdDsKIH0K
IAotc3RhdGljIE5QT2JqZWN0ICpqc0FsbG9jYXRlKE5QUCBucHAsIE5QQ2xhc3MgKmFDbGFzcykK
K3N0YXRpYyBOUE9iamVjdCoganNBbGxvY2F0ZShOUFAsIE5QQ2xhc3MqKQogewotICAgIHJldHVy
biAoTlBPYmplY3QgKiltYWxsb2Moc2l6ZW9mKEphdmFTY3JpcHRPYmplY3QpKTsKKyAgICByZXR1
cm4gKE5QT2JqZWN0KiltYWxsb2Moc2l6ZW9mKEphdmFTY3JpcHRPYmplY3QpKTsKIH0KIAogc3Rh
dGljIHZvaWQganNEZWFsbG9jYXRlIChKYXZhU2NyaXB0T2JqZWN0ICpvYmopCkBAIC0xMzAsNyAr
MTMwLDcgQEAgTlBPYmplY3QgKl9OUE5fQ3JlYXRlTm9TY3JpcHRPYmplY3Qodm9pZAogICAgIHJl
dHVybiBfTlBOX0NyZWF0ZU9iamVjdCgwLCBOUE5vU2NyaXB0T2JqZWN0Q2xhc3MpOwogfQogCi1i
b29sIF9OUE5fSW52b2tlRGVmYXVsdCAoTlBQIG5wcCwgTlBPYmplY3QgKm8sIGNvbnN0IE5QVmFy
aWFudCAqYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0KQorYm9vbCBf
TlBOX0ludm9rZURlZmF1bHQgKE5QUCwgTlBPYmplY3QqIG8sIGNvbnN0IE5QVmFyaWFudCogYXJn
cywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChvLT5f
Y2xhc3MgPT0gTlBTY3JpcHRPYmplY3RDbGFzcykgewogICAgICAgICAvLyBObyBub3Rpb24gb2Yg
YSBkZWZhdWx0IGZ1bmN0aW9uIG9uIEpTIG9iamVjdHMuICBKdXN0IHJldHVybiBmYWxzZSwgY2Fu
J3QgaGFuZGxlLgpAQCAtMTk4LDIyICsxOTgsMjIgQEAgYm9vbCBfTlBOX0ludm9rZSAoTlBQIG5w
cCwgTlBPYmplY3QgKm8sIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIF9OUE5fRXZhbHVh
dGUgKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUFN0cmluZyAqcywgTlBWYXJpYW50ICp2YXJpYW50
KQorYm9vbCBfTlBOX0V2YWx1YXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QU3RyaW5nKiBzLCBOUFZh
cmlhbnQqIHZhcmlhbnQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENs
YXNzKSB7Ci0gICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0
ICopbzsgCisgICAgICAgIEphdmFTY3JpcHRPYmplY3QqIG9iaiA9IChKYXZhU2NyaXB0T2JqZWN0
KilvOyAKIAogCWlmICghX2lzU2FmZVNjcmlwdChvYmopKQogCSAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgRXhlY1N0YXRlICpleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnBy
ZXRlcigpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTVmFsdWUgKnJlc3VsdDsKKyAgICAgICAg
RXhlY1N0YXRlKiBleGVjID0gb2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpLT5n
bG9iYWxFeGVjKCk7CisgICAgICAgIEpTVmFsdWUqIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAg
IEpTTG9jayBsb2NrOwotICAgICAgICBOUFVURjE2ICpzY3JpcHRTdHJpbmc7CisgICAgICAgIE5Q
VVRGMTYqIHNjcmlwdFN0cmluZzsKICAgICAgICAgdW5zaWduZWQgaW50IFVURjE2TGVuZ3RoOwog
ICAgICAgICBjb252ZXJ0TlBTdHJpbmdUb1VURjE2IChzLCAmc2NyaXB0U3RyaW5nLCAmVVRGMTZM
ZW5ndGgpOyAgICAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgotICAgICAg
ICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBvYmotPmV4ZWN1dGlvbkNvbnRleHQtPmludGVycHJl
dGVyKCktPmV2YWx1YXRlKFVTdHJpbmcoKSwgMCwgVVN0cmluZygoY29uc3QgVUNoYXIgKilzY3Jp
cHRTdHJpbmcsVVRGMTZMZW5ndGgpKTsKKyAgICAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0g
b2JqLT5leGVjdXRpb25Db250ZXh0LT5pbnRlcnByZXRlcigpLT5ldmFsdWF0ZShVU3RyaW5nKCks
IDAsIFVTdHJpbmcoKGNvbnN0IFVDaGFyKilzY3JpcHRTdHJpbmcsVVRGMTZMZW5ndGgpKTsKICAg
ICAgICAgQ29tcGxUeXBlIHR5cGUgPSBjb21wbGV0aW9uLmNvbXBsVHlwZSgpOwogICAgICAgICAK
ICAgICAgICAgaWYgKHR5cGUgPT0gTm9ybWFsKSB7CkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBf
TlBOX0V2YWx1YXRlIChOUFAgbnBwLCBOUE9iamVjdCAqbwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50ICp2YXJpYW50KQorYm9vbCBfTlBOX0dldFByb3Bl
cnR5IChOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBOUFZhcmlh
bnQqIHZhcmlhbnQpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNz
KSB7CiAgICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICop
bzsgCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBfTlBOX0dldFByb3BlcnR5IChOUFAgbnBwLCBO
UE9iamVjdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX1NldFByb3BlcnR5IChO
UFAgbnBwLCBOUE9iamVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgTlBW
YXJpYW50ICp2YXJpYW50KQorYm9vbCBfTlBOX1NldFByb3BlcnR5IChOUFAsIE5QT2JqZWN0KiBv
LCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBOUFZhcmlhbnQqIHZhcmlhbnQpCiB7
CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVjdENsYXNzKSB7CiAgICAgICAgIEph
dmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2JqZWN0ICopbzsgCkBAIC0zMDYsNyAr
MzA2LDcgQEAgYm9vbCBfTlBOX1NldFByb3BlcnR5IChOUFAgbnBwLCBOUE9iamVjdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5IChOUFAgbnBwLCBOUE9i
amVjdCAqbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK2Jvb2wgX05QTl9SZW1vdmVQcm9w
ZXJ0eSAoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBpZiAoby0+X2NsYXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKICAgICAgICAgSmF2YVNj
cmlwdE9iamVjdCAqb2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKQEAgLTMzOSw3ICszMzks
NyBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVydHkgKE5QUCBucHAsIE5QT2JqCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIF9OUE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgKm8s
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCitib29sIF9OUE5fSGFzUHJvcGVydHkoTlBQLCBO
UE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoby0+X2Ns
YXNzID09IE5QU2NyaXB0T2JqZWN0Q2xhc3MpIHsKICAgICAgICAgSmF2YVNjcmlwdE9iamVjdCAq
b2JqID0gKEphdmFTY3JpcHRPYmplY3QgKilvOyAKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIF9O
UE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QgCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIF9OUE5fSGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0ICpvLCBOUElkZW50aWZpZXIg
bWV0aG9kTmFtZSkKK2Jvb2wgX05QTl9IYXNNZXRob2QoTlBQLCBOUE9iamVjdCogbywgTlBJZGVu
dGlmaWVyIG1ldGhvZE5hbWUpCiB7CiAgICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlwdE9iamVj
dENsYXNzKSB7CiAgICAgICAgIEphdmFTY3JpcHRPYmplY3QgKm9iaiA9IChKYXZhU2NyaXB0T2Jq
ZWN0ICopbzsgCkluZGV4OiBiaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
YmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGJpbmRpbmdzL2Mv
Y191dGlsaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgY29u
dmVydFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlICoKICAgICAgICAgTlBOX0luaXRpYWxpemVW
YXJpYW50QXNVbmRlZmluZWQocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSAqY29udmVydE5QVmFyaWFu
dFRvVmFsdWUoRXhlY1N0YXRlICpleGVjLCBjb25zdCBOUFZhcmlhbnQgKnZhcmlhbnQpCitKU1Zh
bHVlICpjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqLCBjb25zdCBOUFZhcmlhbnQq
dmFyaWFudCkKIHsKICAgICBOUFZhcmlhbnRUeXBlIHR5cGUgPSB2YXJpYW50LT50eXBlOwogCklu
ZGV4OiBiaW5kaW5ncy9jL2NfY2xhc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9jL2NfY2xh
c3MuaAkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9jL2NfY2xhc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBGaWVsZCAq
ZmllbGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0Owog
ICAgIAotICAgIHZpcnR1YWwgQ29uc3RydWN0b3IgKmNvbnN0cnVjdG9yQXQoaW50IGkpIGNvbnN0
IHsKKyAgICB2aXJ0dWFsIENvbnN0cnVjdG9yICpjb25zdHJ1Y3RvckF0KGludCkgY29uc3Qgewog
ICAgICAgICByZXR1cm4gMDsKICAgICB9OwogICAgIApJbmRleDogYmluZGluZ3MvcnVudGltZV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2
aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDcgQEAgUnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChC
aW5kaQogewogfQogCi1KU1ZhbHVlICpSdW50aW1lT2JqZWN0SW1wOjpmYWxsYmFja09iamVjdEdl
dHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitKU1ZhbHVl
ICpSdW50aW1lT2JqZWN0SW1wOjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgUnVudGltZU9iamVjdEltcCAqdGhpc09iaiA9IHN0YXRpY19j
YXN0PFJ1bnRpbWVPYmplY3RJbXAgKj4oc2xvdC5zbG90QmFzZSgpKTsKICAgICBCaW5kaW5nczo6
SW5zdGFuY2UgKmluc3RhbmNlID0gdGhpc09iai0+aW5zdGFuY2UuZ2V0KCk7CkBAIC02Myw3ICs2
Myw3IEBAIEpTVmFsdWUgKlJ1bnRpbWVPYmplY3RJbXA6OmZhbGxiYWNrT2JqZWMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1KU1ZhbHVlICpSdW50aW1lT2JqZWN0SW1wOjpmaWVsZEdldHRlcihF
eGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitKU1ZhbHVlICpSdW50
aW1lT2JqZWN0SW1wOjpmaWVsZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgUnVudGltZU9iamVjdEltcCAqdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmpl
Y3RJbXAgKj4oc2xvdC5zbG90QmFzZSgpKTsKICAgICBCaW5kaW5nczo6SW5zdGFuY2UgKmluc3Rh
bmNlID0gdGhpc09iai0+aW5zdGFuY2UuZ2V0KCk7CkBAIC03OSw3ICs3OSw3IEBAIEpTVmFsdWUg
KlJ1bnRpbWVPYmplY3RJbXA6OmZpZWxkR2V0dGVyKEUKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU1ZhbHVlICpSdW50aW1lT2JqZWN0SW1wOjptZXRob2RHZXR0ZXIoRXhlY1N0YXRlICpleGVj
LCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorSlNWYWx1ZSAqUnVudGltZU9iamVjdEltcDo6
bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1l
T2JqZWN0SW1wICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdEltcCAqPihzbG90
LnNsb3RCYXNlKCkpOwogICAgIEJpbmRpbmdzOjpJbnN0YW5jZSAqaW5zdGFuY2UgPSB0aGlzT2Jq
LT5pbnN0YW5jZS5nZXQoKTsKQEAgLTEzMyw4ICsxMzMsNyBAQCBib29sIFJ1bnRpbWVPYmplY3RJ
bXA6OmdldE93blByb3BlcnR5U2xvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJ1bnRp
bWVPYmplY3RJbXA6OnB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3Bl
cnR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSAqdmFsdWUsIGludCBhdHRyKQor
dm9pZCBSdW50aW1lT2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBpbnQpCiB7CiAgICAgaW5zdGFuY2Ut
PmJlZ2luKCk7CiAKQEAgLTE1Miw3ICsxNTEsNyBAQCB2b2lkIFJ1bnRpbWVPYmplY3RJbXA6OnB1
dChFeGVjU3RhdGUgKmV4CiAgICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1ib29sIFJ1bnRpbWVP
YmplY3RJbXA6OmNhblB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3Bl
cnR5TmFtZSkgY29uc3QKK2Jvb2wgUnVudGltZU9iamVjdEltcDo6Y2FuUHV0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwogCkBAIC0xNjgsMTQgKzE2NywxMyBAQCBib29sIFJ1bnRpbWVPYmplY3RJbXA6
OmNhblB1dChFeGVjU3RhdGUgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBSdW50aW1l
T2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKQorYm9vbCBSdW50
aW1lT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JikKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2YgYSBSdW50aW1lT2Jq
ZWN0LgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSlNWYWx1ZSAqUnVudGltZU9iamVjdEltcDo6
ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSAqZXhlYywgSlNUeXBlIGhpbnQpIGNvbnN0CitKU1ZhbHVl
ICpSdW50aW1lT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgSlNUeXBlIGhpbnQp
IGNvbnN0CiB7CiAgICAgSlNWYWx1ZSAqcmVzdWx0OwogICAgIApAQCAtMTk0LDcgKzE5Miw3IEBA
IGJvb2wgUnVudGltZU9iamVjdEltcDo6aW1wbGVtZW50c0NhbGwoKSAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotSlNWYWx1ZSAqUnVudGltZU9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0
YXRlICpleGVjLCBKU09iamVjdCAqdGhpc09iaiwgY29uc3QgTGlzdCAmYXJncykKK0pTVmFsdWUg
KlJ1bnRpbWVPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqLCBjb25zdCBMaXN0JiBhcmdzKQogewogICAgIGluc3RhbmNlLT5iZWdpbigpOwogCkluZGV4
OiBiaW5kaW5ncy9ydW50aW1lX2FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9ydW50
aW1lX2FycmF5LmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9ydW50aW1lX2FycmF5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTMgKzQ0LDEzIEBAIFJ1bnRpbWVBcnJheTo6flJ1
bnRpbWVBcnJheSgpCiAgICAgZGVsZXRlIF9hcnJheTsKIH0KIAotSlNWYWx1ZSAqUnVudGltZUFy
cmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmpl
Y3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQorSlNWYWx1ZSAqUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFJ1bnRpbWVBcnJheSAqdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVBcnJheSAqPihz
bG90LnNsb3RCYXNlKCkpOwogICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5nZXRMZW5ndGgo
KSk7CiB9CiAKLUpTVmFsdWUgKlJ1bnRpbWVBcnJheTo6aW5kZXhHZXR0ZXIoRXhlY1N0YXRlICpl
eGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorSlNWYWx1ZSAqUnVudGltZUFycmF5Ojpp
bmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBSdW50aW1lQXJyYXkgKnRoaXNPYmog
PSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkgKj4oc2xvdC5zbG90QmFzZSgpKTsKICAgICByZXR1
cm4gdGhpc09iai0+Z2V0Q29uY3JldGVBcnJheSgpLT52YWx1ZUF0KGV4ZWMsIHNsb3QuaW5kZXgo
KSk7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBSdW50aW1lQXJyYXk6OnB1dChFeGVjU3RhdGUg
KmV4ZWMsIAogICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cik7CiB9CiAKLXZvaWQgUnVudGltZUFycmF5OjpwdXQoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSAqdmFsdWUsIGludCBhdHRyKQordm9pZCBSdW50aW1lQXJyYXk6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKiB2YWx1ZSwgaW50KQog
ewogICAgIGlmIChpbmRleCA+PSBnZXRMZW5ndGgoKSkgewogICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIFJhbmdlRXJyb3IpOwpAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBSdW50aW1lQXJyYXk6
OnB1dChFeGVjU3RhdGUgKmV4ZWMsIAogICAgIGdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVB
dChleGVjLCBpbmRleCwgdmFsdWUpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJv
cGVydHkoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpCiti
b29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCB1bnNpZ25lZCBpbmRleCkKK2Jvb2wgUnVudGlt
ZUFycmF5OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCkKIHsKICAgICByZXR1
cm4gZmFsc2U7CiB9CkluZGV4OiBiaW5kaW5ncy9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gYmluZGluZ3MvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGJp
bmRpbmdzL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBA
QCBSdW50aW1lTWV0aG9kOjp+UnVudGltZU1ldGhvZCgpCiB7CiB9CiAKLUpTVmFsdWUgKlJ1bnRp
bWVNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICpvcmlnaW5h
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCitKU1ZhbHVlICpSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFJ1bnRpbWVNZXRob2QgKnRoaXNPYmogPSBzdGF0aWNfY2FzdDxSdW50aW1lTWV0
aG9kICo+KHNsb3Quc2xvdEJhc2UoKSk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBDb2RlVHlwZSBS
dW50aW1lTWV0aG9kOjpjb2RlVHlwZSgpIGNvbnN0CiB9CiAKIAotQ29tcGxldGlvbiBSdW50aW1l
TWV0aG9kOjpleGVjdXRlKEV4ZWNTdGF0ZSAqZXhlYykKK0NvbXBsZXRpb24gUnVudGltZU1ldGhv
ZDo6ZXhlY3V0ZShFeGVjU3RhdGUqKQogewogICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwg
anNVbmRlZmluZWQoKSk7CiB9CkluZGV4OiBiaW5kaW5ncy9ydW50aW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBiaW5kaW5ncy9ydW50aW1lLmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9y
dW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTT2JqZWN0ICpJ
bnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdCgKICAgICByZXR1cm4gbmV3IFJ1bnRpbWVPYmpl
Y3RJbXAoaW50ZXJmYWNlT2JqZWN0KTsKIH0KIAotdm9pZCAqSW5zdGFuY2U6OmNyZWF0ZUxhbmd1
YWdlSW5zdGFuY2VGb3JWYWx1ZShFeGVjU3RhdGUgKmV4ZWMsIEJpbmRpbmdMYW5ndWFnZSBsYW5n
dWFnZSwgSlNPYmplY3QgKnZhbHVlLCBjb25zdCBSb290T2JqZWN0ICpvcmlnaW4sIGNvbnN0IFJv
b3RPYmplY3QgKmN1cnJlbnQpCit2b2lkICpJbnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5j
ZUZvclZhbHVlKEV4ZWNTdGF0ZSosIEJpbmRpbmdMYW5ndWFnZSBsYW5ndWFnZSwgSlNPYmplY3Qq
IHZhbHVlLCBjb25zdCBSb290T2JqZWN0KiBvcmlnaW4sIGNvbnN0IFJvb3RPYmplY3QqIGN1cnJl
bnQpCiB7CiAgICAgdm9pZCAqcmVzdWx0ID0gMDsKICAgICAKSW5kZXg6IGJpbmRpbmdzL3J1bnRp
bWVfcm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvcnVudGltZV9yb290LmNwcAkocmV2
aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9ydW50aW1lX3Jvb3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzIsOCArMjcyLDcgQEAgdm9pZCBSb290T2JqZWN0OjpkaXNwYXRjaFRvSmF2YVNjcmlw
dFRocgogICAgIHVubG9ja0phdmFTY3JpcHRBY2Nlc3MoKTsKIH0KIAotc3RhdGljIHZvaWQgcGVy
Zm9ybUphdmFTY3JpcHRBY2Nlc3Modm9pZCAqaW5mbyk7Ci1zdGF0aWMgdm9pZCBwZXJmb3JtSmF2
YVNjcmlwdEFjY2Vzcyh2b2lkICppKQorc3RhdGljIHZvaWQgcGVyZm9ybUphdmFTY3JpcHRBY2Nl
c3Modm9pZCopCiB7CiAgICAgYXNzZXJ0IChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gUm9vdE9i
amVjdDo6cnVuTG9vcCgpKTsKICAgICAKSW5kZXg6IGJpbmRpbmdzL3J1bnRpbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBiaW5kaW5ncy9ydW50aW1lLmgJKHJldmlzaW9uIDEyOTMwKQorKysgYmluZGluZ3Mv
cnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDbGFzcyAqZ2V0Q2xhc3MoKSBjb25zdCA9IDA7CiAgICAgCiAgICAgdmlydHVh
bCBKU1ZhbHVlKiBnZXRWYWx1ZU9mRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgRmllbGQqKSBjb25z
dDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUqIGdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgSlNUeXBlIGhpbnQpIGNvbnN0IHsgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGdldFZhbHVlT2ZVbmRl
ZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNUeXBlKSBjb25zdCB7
IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlT2ZGaWVs
ZChFeGVjU3RhdGUqLCBjb25zdCBGaWVsZCosIEpTVmFsdWUqKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIEpTVmFsdWUqKSB7fQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUqKSB7fQogICAgIAogICAgIHZpcnR1YWwgSlNWYWx1ZSogaW52b2tlTWV0aG9kKEV4
ZWNTdGF0ZSosIGNvbnN0IE1ldGhvZExpc3QmLCBjb25zdCBMaXN0JiBhcmdzKSA9IDA7CiAgICAg
dmlydHVhbCBKU1ZhbHVlKiBpbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IExp
c3QmIGFyZ3MpID0gMDsKSW5kZXg6IGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiAx
MjkzMCkKKysrIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NDAsNiArNDQwLDcgQEAgc3RhdGljIExpc3QgbGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0
ZSAqZQogCiArIChpZClhbGxvY1dpdGhab25lOihOU1pvbmUgKil6b25lCiB7CisgICAgKHZvaWQp
em9uZTsKICAgICBzdGF0aWMgV2ViVW5kZWZpbmVkICpzaGFyZWRVbmRlZmluZWQgPSAwOwogICAg
IGlmICghc2hhcmVkVW5kZWZpbmVkKQogICAgICAgICBzaGFyZWRVbmRlZmluZWQgPSBbc3VwZXIg
YWxsb2NXaXRoWm9uZTpOVUxMXTsKQEAgLTQ0OCwxNSArNDQ5LDE4IEBAIHN0YXRpYyBMaXN0IGxp
c3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmUKIAogLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWNvZGVyCiB7CisgICAgKHZvaWQpY29kZXI7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0g
KHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogeworICAgICh2b2lkKWVu
Y29kZXI7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogeworICAgICh2
b2lkKXpvbmU7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKSW5kZXg6IGJpbmRpbmdzL29iamMvb2Jq
Y19jbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL29iamMvb2JqY19jbGFzcy5oCShyZXZp
c2lvbiAxMjkzMCkKKysrIGJpbmRpbmdzL29iamMvb2JqY19jbGFzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSlNWYWx1ZSAqZmFsbGJh
Y2tPYmplY3QoRXhlY1N0YXRlICpleGVjLCBJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IElkZW50
aWZpZXIgJnByb3BlcnR5TmFtZSk7CiAgICAgCi0gICAgdmlydHVhbCBDb25zdHJ1Y3RvciAqY29u
c3RydWN0b3JBdChpbnQgaSkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQ29uc3Ry
dWN0b3IgKmNvbnN0cnVjdG9yQXQoaW50KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBpbnQgbnVtQ29uc3RydWN0b3JzKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIAogICAgIENs
YXNzU3RydWN0UHRyIGlzYSgpIHsgcmV0dXJuIF9pc2E7IH0KSW5kZXg6IGJpbmRpbmdzL29iamMv
b2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL29iamMvb2JqY19ydW50aW1l
Lm1tCShyZXZpc2lvbiAxMjkzMCkKKysrIGJpbmRpbmdzL29iamMvb2JqY19ydW50aW1lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDIsMTkgKzI0MiwxOCBAQCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
Ok9iamNGYWxsYmFja09iamVjCiB7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBrZWVwIHRoZSBwcm90b3R5cGUgZnJvbSBnZXR0aW5n
IGNhbGxlZCBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlCiAgICAgc2xvdC5zZXRVbmRl
ZmluZWQodGhpcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5h
bWUsCi0gICAgICAgICAgICAgICAgIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0cikKK3ZvaWQgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpT
VmFsdWUqLCBpbnQpCiB7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjYW5QdXQo
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0Citi
b29sIE9iamNGYWxsYmFja09iamVjdEltcDo6Y2FuUHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTMwOSw4ICszMDgsNyBA
QCBKU1ZhbHVlICpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNhbGxBc0Z1CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEV4
ZWNTdGF0ZSAqZXhlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyICZwcm9wZXJ0eU5hbWUpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJv
cGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtMzIwLDcgKzMxOCw3IEBAIEpTVmFsdWUgKk9iamNGYWxsYmFja09iamVjdEltcDo6
ZGVmYXVsdFYKICAgICByZXR1cm4gX2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQo
ZXhlYywgX2l0ZW0sIGhpbnQpOwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9C
b29sZWFuKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
Ojp0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3QKIHsKICAgICBpZCB0YXJnZXRPYmplY3QgPSBf
aW5zdGFuY2UtPmdldE9iamVjdCgpOwogICAgIApJbmRleDogYmluZGluZ3Mvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5tbQko
cmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMzMiw3ICszMzIsNyBAQCBKU1ZhbHVlICpPYmpjSW5zdGFuY2U6OmdldFZh
bHVlT2ZGaWVsZCAoCiAgICAgcmV0dXJuIGFGaWVsZC0+dmFsdWVGcm9tSW5zdGFuY2UgKGV4ZWMs
IHRoaXMpOwogfQogCi1KU1ZhbHVlICpPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZWRG
aWVsZCAoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eSwgSlNUeXBl
IGhpbnQpIGNvbnN0CitKU1ZhbHVlICpPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZVbmRlZmluZWRG
aWVsZCAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgSlNUeXBl
KSBjb25zdAogewogICAgIGlkIHRhcmdldE9iamVjdCA9IGdldE9iamVjdCgpOwogICAgIApJbmRl
eDogYmluZGluZ3Mvb2JqYy9vYmpjX2NsYXNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL29i
amMvb2JqY19jbGFzcy5tbQkocmV2aXNpb24gMTI5MzApCisrKyBiaW5kaW5ncy9vYmpjL29iamNf
Y2xhc3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgY29uc3QgY2hhciAqT2Jq
Y0NsYXNzOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gX2lzYS0+bmFtZTsKIH0KIAotTWV0aG9k
TGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1lZChjb25zdCBjaGFyICpKU05hbWUsIEluc3RhbmNl
ICppbnN0YW5jZSkgY29uc3QKK01ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoY29u
c3QgY2hhciAqSlNOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAgICAgTWV0aG9kTGlzdCBtZXRo
b2RMaXN0OwogICAgIGNoYXIgZml4ZWRTaXplQnVmZmVyWzEwMjRdOwpAQCAtMjIzLDcgKzIyMyw3
IEBAIEZpZWxkICpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgY2hhciAKICAgICByZXR1cm4g
YUZpZWxkOwogfQogCi1KU1ZhbHVlICpPYmpjQ2xhc3M6OmZhbGxiYWNrT2JqZWN0IChFeGVjU3Rh
dGUgKmV4ZWMsIEluc3RhbmNlICppbnN0YW5jZSwgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSAqT2JqY0NsYXNzOjpmYWxsYmFja09iamVjdCAoRXhlY1N0YXRlKiwgSW5z
dGFuY2UgKmluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
T2JqY0luc3RhbmNlICogb2JqY0luc3RhbmNlID0gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4o
aW5zdGFuY2UpOwogICAgIGlkIHRhcmdldE9iamVjdCA9IG9iamNJbnN0YW5jZS0+Z2V0T2JqZWN0
KCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDEyOTMwKQorKysgSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTMyMCw2ICsxMzIwLDE4IEBACiAJCQkJKTsKIAkJCQlQUk9EVUNU
X05BTUUgPSBKYXZhU2NyaXB0Q29yZTsKIAkJCQlTVFlMRV9MREZMQUdTID0gIiI7CisJCQkJV0FS
TklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItVyIsCisJCQkJCSItV2Nhc3Qt
YWxpZ24iLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdmb3JtYXQtc2VjdXJp
dHkiLAorCQkJCQkiLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUiLAorCQkJCQkiLVdwb2ludGVy
LWFyaXRoIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJCSItV25vLWZvcm1hdC15Mmsi
LAorCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVi
dWc7CiAJCX07CkBAIC0xMzQ0LDYgKzEzNTYsMTggQEAKIAkJCQkpOwogCQkJCVBST0RVQ1RfTkFN
RSA9IEphdmFTY3JpcHRDb3JlOwogCQkJCVNUWUxFX0xERkxBR1MgPSAiIjsKKwkJCQlXQVJOSU5H
X0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XIiwKKwkJCQkJIi1XY2FzdC1hbGln
biIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Zvcm1hdC1zZWN1cml0eSIs
CisJCQkJCSItV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSIsCisJCQkJCSItV3BvaW50ZXItYXJp
dGgiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCisJ
CQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNl
OwogCQl9OwpAQCAtMTM3NCw2ICsxMzk4LDE4IEBACiAJCQkJCSIkKEFQUExFX0lOVEVSTkFMX0RJ
UikvT3JkZXJGaWxlcy9KYXZhU2NyaXB0Q29yZS5vcmRlciIsCiAJCQkJKTsKIAkJCQlTVFlMRV9M
REZMQUdTID0gIi11bWJyZWxsYSBXZWJLaXQgLWFsbG93YWJsZV9jbGllbnQgSmF2YVNjcmlwdEds
dWUiOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVciLAor
CQkJCQkiLVdjYXN0LWFsaWduIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1X
Zm9ybWF0LXNlY3VyaXR5IiwKKwkJCQkJIi1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIiwKKwkJ
CQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCQkiLVdu
by1mb3JtYXQteTJrIiwKKwkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCSk7CiAJCQl9Owog
CQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07Cg==
</data>
<flag name="review"
          id="1674"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>