<?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>57022</bug_id>
          
          <creation_ts>2011-03-24 08:51:58 -0700</creation_ts>
          <short_desc>Add a new JavaValue to type to represent a Java value in the Java bridge</short_desc>
          <delta_ts>2011-03-28 22:41:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57019</blocked>
    
    <blocked>57023</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andreip</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>372832</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-24 08:51:58 -0700</bug_when>
    <thetext>This type is required to allow us to make the JavaInstance API independent of JNI. See 57019.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372837</commentid>
    <comment_count>1</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-24 09:03:42 -0700</bug_when>
    <thetext>This bug will add the JavaType class and use it for the conversions to and from JavaNPObject that are used by the V8 Java bridge.

Bug 57023 tracks using JavaType in the corresponding conversions for JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372858</commentid>
    <comment_count>2</comment_count>
      <attachid>86787</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-24 09:52:41 -0700</bug_when>
    <thetext>Created attachment 86787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373439</commentid>
    <comment_count>3</comment_count>
      <attachid>86916</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-25 04:42:39 -0700</bug_when>
    <thetext>Created attachment 86916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373465</commentid>
    <comment_count>4</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2011-03-25 06:02:05 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=86916&amp;action=review

&gt; Source/WebCore/bridge/jni/JavaType.h:62
&gt; +    // special JavaTypeString which will be converted to a Java String when we

I think you could make this comment a bit clearer by saying something like:

&quot;We cannot make the assumption that, at conversion time, the type to convert to is a JNI type. This is because there may be some mechanism other than JNI for reaching back to Java. Instead, we use...&quot;

&gt; Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp:68
&gt; +            if (type == NPVariantType_String)

should this be on the line above, next to the else?

&gt; Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp:298
&gt; +        result.l = getJNIEnv()-&gt;NewString(value.m_stringValue.characters(), value.m_stringValue.length());

Add a comment saying this is a local ref so it&apos;ll be released once the the executions returns back to Java from native? Also mention that probably this may leak if the call does not originate from java (e.g. from a worker, which may run its own native message loop).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373494</commentid>
    <comment_count>5</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-25 07:33:44 -0700</bug_when>
    <thetext>&gt; I think you could make this comment a bit clearer by saying something like:
Done

&gt; should this be on the line above, next to the else?
No, there&apos;s an &apos;#else&apos; in between

&gt; Add a comment saying this is a local ref so it&apos;ll be released once the the executions returns back to Java from native?
Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373495</commentid>
    <comment_count>6</comment_count>
      <attachid>86935</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-25 07:33:50 -0700</bug_when>
    <thetext>Created attachment 86935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373505</commentid>
    <comment_count>7</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2011-03-25 07:53:56 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374702</commentid>
    <comment_count>8</comment_count>
      <attachid>86935</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-28 13:01:40 -0700</bug_when>
    <thetext>Comment on attachment 86935
Patch

rubber stamp since Andrei said it LGTM and style wise it seems fine  (There&apos;s a good reason for the #ifs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375012</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 22:38:43 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 86935:

fast/workers/storage/use-same-database-in-page-and-workers.html bug 50995 (author: dumi@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375014</commentid>
    <comment_count>10</comment_count>
      <attachid>86935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 22:41:24 -0700</bug_when>
    <thetext>Comment on attachment 86935
Patch

Clearing flags on attachment: 86935

Committed r82194: &lt;http://trac.webkit.org/changeset/82194&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375015</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 22:41:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86787</attachid>
            <date>2011-03-24 09:52:41 -0700</date>
            <delta_ts>2011-03-25 04:42:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57022-20110324165239.patch</filename>
            <type>text/plain</type>
            <size>31056</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjBmMmY4YzAzMGI2ZTI1
ZGRiOGFjODYzMzk0NzM0ZThhNWE2Mjc4Li5iNDZmOTdkYzAwNGE5MzAyMDg2ZGJiYzRjNjRhZGJj
MjE4MjhhMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDMtMjQgIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBKYXZhVmFsdWUgdG8gdHlwZSB0byBy
ZXByZXNlbnQgYSBKYXZhIHZhbHVlIGluIHRoZSBKYXZhIGJyaWRnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMjIKKworICAgICAgICBUaGlzIGNo
YW5nZSBpbnRyb2R1Y2VzIGEgbmV3IEphdmFWYWx1ZSB0eXBlIGFuZCB1c2VzIGl0IGluIHBsYWNl
IG9mIGp2YWx1ZQorICAgICAgICBpbiB0aGUgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gSmF2YU5Q
T2JqZWN0IHVzZWQgaW4gdGhlIFY4IEphdmEgYnJpZGdlLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IG9ubHksIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnJpZGdlL2puaS9KTklVdGlsaXR5LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmphdmFUeXBlRnJvbUNsYXNzTmFtZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpzaWduYXR1cmVGcm9tSmF2YVR5cGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Z2V0
Sk5JRmllbGQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbEpOSU1ldGhvZCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpqdmFsdWVUb0phdmFWYWx1ZSk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpqYXZhVmFsdWVUb0p2YWx1ZSk6CisgICAgICAgICogYnJpZGdlL2puaS9KTklVdGls
aXR5Lmg6CisgICAgICAgICogYnJpZGdlL2puaS9KYXZhVHlwZS5oOgorICAgICAgICAqIGJyaWRn
ZS9qbmkvSmF2YVZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVZh
bHVlOjpKYXZhVmFsdWUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0pOSVV0aWxpdHlQcml2
YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRBcnJheUluc3RhbmNlVG9K
YXZhQXJyYXkpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9KVmFsdWUp
OgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAg
IChKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL2puaS92OC9K
TklVdGlsaXR5UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0TlBW
YXJpYW50VG9KYXZhVmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydEphdmFW
YWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2
YXRlLmg6CisgICAgICAgICogYnJpZGdlL2puaS92OC9KYXZhTlBPYmplY3RWOC5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTlBPYmplY3RJbnZva2UpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6SmF2YU5QT2JqZWN0R2V0UHJvcGVydHkpOgorCiAyMDExLTAzLTI0ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTQ0NzNiNDM1ZmJm
OWRhOTI1OTQ4ZTFjM2JjNTM0YzZmYzZkMzAxNi4uNjgzNDc3ZTBiNTI4YWUyOWZmMGE5OTEzNGVi
ODFmNzMxOWY4NTIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk1MCw2ICs5NTAsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhv
ZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFTdHJpbmcuaCBcCiAJU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhVHlwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL0phdmFWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVj
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQXJyYXlKU0MuaCBcCiAJ
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDE5M2E5YTVkODU4ODQzMDA4ZDgzODMzMDg2NmUwMGQ5YTFlNTAwOGYuLmRjMDZi
OTM3MjVhOWRmNTQzZjI2M2M4NWQyYTg5MWQ1YTlmZWNkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTIxNjgsNiArMjE2OCw3IEBACiAgICAgICAgICAgICAnYnJpZGdlL2puaS9KYXZhTWV0aG9kLmgn
LAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2YVN0cmluZy5oJywKICAgICAgICAgICAgICdi
cmlkZ2Uvam5pL0phdmFUeXBlLmgnLAorICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2YVZhbHVl
LmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSm9iamVjdFdyYXBwZXIuY3BwJywKICAgICAg
ICAgICAgICdicmlkZ2Uvam5pL0pvYmplY3RXcmFwcGVyLmgnLAogICAgICAgICAgICAgJ2JyaWRn
ZS9qbmkvam5pX2pzb2JqZWN0Lm1tJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MTM3MDk2MmUyZmY5ZjVjZGY3YzZlNDM3ZjNm
OGI2MmMxNzg4MTlhLi5jOThhODFmYWRlN2Y5MjhiODNmYzYyNWFjZGMxNmY2NTVjYTc1N2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzk4LDYgKzEzOTgsNyBAQAogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTA1QURCRjEzMDJGM0NF
MDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZp
ZXdlci5jcHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmll
d2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1
QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9OworCQk1OTA3MTUx
RTEzM0I5MTBEMDBCMEM0NEQgLyogSmF2YVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA3MTUxRDEzM0I5MTBEMDBCMEM0NEQgLyogSmF2YVZh
bHVlLmggKi87IH07CiAJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkw
RTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTkwRTFCNEIxMUU0RUY3MDAw
NjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0QTExRTRFRjcwMDA2OUY3
ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNTkzMDlB
MTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTMwOUExMDExRjRB
RTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLzsgfTsKQEAg
LTc5MDksNiArNzkxMCw3IEBACiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCTU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVl
Vmlld2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRyZWVW
aWV3ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURCRTEzMDJGM0NF
MDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYTUxUcmVlVmlld2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5MDcx
NTFEMTMzQjkxMEQwMEIwQzQ0RCAvKiBKYXZhVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSmF2YVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5
MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyODQwLDYg
KzEyODQyLDcgQEAKIAkJMUE1NjlDQ0UwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTkwNzE1MUQxMzNCOTEwRDAw
QjBDNDREIC8qIEphdmFWYWx1ZS5oICovLAogCQkJCTU5QjBFRUE2MTMyQTZGMkEwMDQzMzFDNyAv
KiBKYXZhVHlwZS5oICovLAogCQkJCTU5M0QzRUIwMTMyNTMyOTUwMDU3RTdFRSAvKiBKYXZhU3Ry
aW5nLmggKi8sCiAJCQkJNTkzRDNFQUUxMzI1MzI4QzAwNTdFN0VFIC8qIEphdmFNZXRob2QuaCAq
LywKQEAgLTIyNzAyLDYgKzIyNzA1LDcgQEAKIAkJCQlCQzc3MkUxMzEzMzE2MjBDMDAxRUM5Q0Ug
LyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYxNDQyMjkx
MzM5RkQ2MjAwRTBENkY4IC8qIERPTU5vZGVIaWdobGlnaHRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTlCMEVFQTcxMzJBNkYyQTAwNDMzMUM3IC8qIEphdmFUeXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1OTA3MTUxRTEzM0I5MTBEMDBCMEM0NEQgLyogSmF2YVZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JVXRpbGl0eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSVV0aWxpdHkuY3BwCmluZGV4IGMxZjFiOTQx
ZTA4YjdhMWU5Nzk0YjllNmQwODhkYWIxN2ZiNGI0NWMuLjdlZTMzZWQxMmIxZDBiNzJlNjdlNmMw
YmY2YTVlOTFlZTcwYjUzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
Sk5JVXRpbGl0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklVdGlsaXR5
LmNwcApAQCAtMjgsNiArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKIAorI2lm
IFVTRShWOCkKKyNpbmNsdWRlICJKYXZhSW5zdGFuY2VWOC5oIgorI2VuZGlmCisjaW5jbHVkZSAi
SmF2YVZhbHVlLmgiCiAjaW5jbHVkZSA8ZGxmY24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0x
OTAsNiArMTk0LDEyIEBAIEphdmFUeXBlIGphdmFUeXBlRnJvbUNsYXNzTmFtZShjb25zdCBjaGFy
KiBuYW1lKQogICAgICAgICB0eXBlID0gSmF2YVR5cGVWb2lkOwogICAgIGVsc2UgaWYgKCdbJyA9
PSBuYW1lWzBdKQogICAgICAgICB0eXBlID0gSmF2YVR5cGVBcnJheTsKKyNpZiBVU0UoVjgpCisg
ICAgLy8gSlNDIGRvZXMgbm90IHlldCB1c2UgSmF2YVR5cGVTdHJpbmcuCisgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAyMy4KKyAgICBlbHNlIGlm
ICghc3RyY21wKCJqYXZhLmxhbmcuU3RyaW5nIiwgbmFtZSkpCisgICAgICAgIHR5cGUgPSBKYXZh
VHlwZVN0cmluZzsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgdHlwZSA9IEphdmFUeXBlT2Jq
ZWN0OwogCkBAIC0yMDYsNiArMjE2LDcgQEAgY29uc3QgY2hhciogc2lnbmF0dXJlRnJvbUphdmFU
eXBlKEphdmFUeXBlIHR5cGUpCiAgICAgICAgIHJldHVybiAiWyI7CiAKICAgICBjYXNlIEphdmFU
eXBlT2JqZWN0OgorICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CiAgICAgICAgIHJldHVybiAiTCI7
CiAKICAgICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKQEAgLTI5Niw2ICszMDcsNyBAQCBqdmFsdWUg
Z2V0Sk5JRmllbGQoam9iamVjdCBvYmosIEphdmFUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IGNoYXIqIHNpZwogICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICAgICAgICAgIGNhc2UgSmF2YVR5cGVBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIEphdmFU
eXBlT2JqZWN0OgorICAgICAgICAgICAgICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5sID0gZW52LT5mdW5jdGlvbnMtPkdldE9iamVjdEZpZWxkKGVu
diwgb2JqLCBmaWVsZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgSmF2YVR5cGVCb29sZWFuOgpAQCAtMzQ5LDYgKzM2MSw3IEBAIGp2YWx1ZSBjYWxs
Sk5JTWV0aG9kKGpvYmplY3Qgb2JqZWN0LCBKYXZhVHlwZSByZXR1cm5UeXBlLCBjb25zdCBjaGFy
KiBuYW1lLCBjb25zCiAgICAgICAgIGNhbGxKTklNZXRob2RJREE8dm9pZD4ob2JqZWN0LCBtZXRo
b2RJZCwgYXJncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSmF2YVR5cGVPYmplY3Q6Cisg
ICAgY2FzZSBKYXZhVHlwZVN0cmluZzoKICAgICAgICAgcmVzdWx0LmwgPSBjYWxsSk5JTWV0aG9k
SURBPGpvYmplY3Q+KG9iamVjdCwgbWV0aG9kSWQsIGFyZ3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKQEAgLTM4MSw2ICszOTQsMTA4IEBAIGp2YWx1ZSBjYWxs
Sk5JTWV0aG9kKGpvYmplY3Qgb2JqZWN0LCBKYXZhVHlwZSByZXR1cm5UeXBlLCBjb25zdCBjaGFy
KiBuYW1lLCBjb25zCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorSmF2YVZhbHVlIGp2YWx1ZVRv
SmF2YVZhbHVlKGNvbnN0IGp2YWx1ZSYgdmFsdWUsIGNvbnN0IEphdmFUeXBlJiB0eXBlKQorewor
ICAgIEphdmFWYWx1ZSByZXN1bHQ7CisgICAgcmVzdWx0Lm1fdHlwZSA9IHR5cGU7CisgICAgc3dp
dGNoIChyZXN1bHQubV90eXBlKSB7CisgICAgY2FzZSBKYXZhVHlwZVZvaWQ6CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSmF2YVR5cGVPYmplY3Q6CisjaWYgVVNFKFY4KQorICAgICAgICByZXN1
bHQubV9vYmplY3RWYWx1ZSA9IG5ldyBKYXZhSW5zdGFuY2UodmFsdWUubCk7CisjZWxzZQorICAg
ICAgICAvLyBGSVhNRTogSlNDIHJlcXVpcmVzIHRoZSByb290IG9iamVjdCB0byBjcmVhdGUgYSBu
ZXcgSmF2YUluc3RhbmNlLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU3MDIzLgorI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SmF2YVR5cGVCb29sZWFuOgorICAgICAgICByZXN1bHQubV9ib29sZWFuVmFsdWUgPSAodmFsdWUu
eiA9PSBKTklfRkFMU0UgPyBmYWxzZSA6IHRydWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEphdmFUeXBlQnl0ZToKKyAgICAgICAgcmVzdWx0Lm1fYnl0ZVZhbHVlID0gdmFsdWUuYjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUNoYXI6CisgICAgICAgIHJlc3VsdC5tX2No
YXJWYWx1ZSA9IHZhbHVlLmM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVTaG9y
dDoKKyAgICAgICAgcmVzdWx0Lm1fc2hvcnRWYWx1ZSA9IHZhbHVlLnM7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSmF2YVR5cGVJbnQ6CisgICAgICAgIHJlc3VsdC5tX2ludFZhbHVlID0gdmFs
dWUuaTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUxvbmc6CisgICAgICAgIHJl
c3VsdC5tX2xvbmdWYWx1ZSA9IHZhbHVlLmo7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2
YVR5cGVGbG9hdDoKKyAgICAgICAgcmVzdWx0Lm1fZmxvYXRWYWx1ZSA9IHZhbHVlLmY7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVEb3VibGU6CisgICAgICAgIHJlc3VsdC5tX2Rv
dWJsZVZhbHVlID0gdmFsdWUuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZVN0
cmluZzoKKyAgICAgICAgeworICAgICAgICAgICAganN0cmluZyBqYXZhU3RyaW5nID0gc3RhdGlj
X2Nhc3Q8anN0cmluZz4odmFsdWUubCk7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogYSA9IGdl
dFVDaGFyYWN0ZXJzRnJvbUpTdHJpbmdJbkVudihnZXRKTklFbnYoKSwgamF2YVN0cmluZyk7Cisg
ICAgICAgICAgICAvLyBXZSB0YWtlIGEgY29weSB0byBhbGxvdyB0aGUgSmF2YSBTdHJpbmcgdG8g
YmUgcmVsZWFzZWQuCisgICAgICAgICAgICByZXN1bHQubV9zdHJpbmdWYWx1ZSA9IFN0cmluZyhh
KS50aHJlYWRzYWZlQ29weSgpOworICAgICAgICAgICAgcmVsZWFzZVVDaGFyYWN0ZXJzRm9ySlN0
cmluZ0luRW52KGdldEpOSUVudigpLCBqYXZhU3RyaW5nLCBhKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgIH0KKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitqdmFsdWUgamF2YVZhbHVlVG9KdmFsdWUoY29uc3QgSmF2
YVZhbHVlJiB2YWx1ZSkKK3sKKyAgICBqdmFsdWUgcmVzdWx0OworICAgIG1lbXNldCgmcmVzdWx0
LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgc3dpdGNoICh2YWx1ZS5tX3R5cGUpIHsKKyAgICBj
YXNlIEphdmFUeXBlVm9pZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZU9iamVj
dDoKKyNpZiBVU0UoVjgpCisgICAgICAgIGlmICh2YWx1ZS5tX29iamVjdFZhbHVlKQorICAgICAg
ICAgICAgcmVzdWx0LmwgPSB2YWx1ZS5tX29iamVjdFZhbHVlLT5qYXZhSW5zdGFuY2UoKTsKKyNl
bHNlCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTcwMjMuCisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUJvb2xl
YW46CisgICAgICAgIHJlc3VsdC56ID0gdmFsdWUubV9ib29sZWFuVmFsdWUgPyBKTklfVFJVRSA6
IEpOSV9GQUxTRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUJ5dGU6CisgICAg
ICAgIHJlc3VsdC5iID0gdmFsdWUubV9ieXRlVmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSmF2YVR5cGVDaGFyOgorICAgICAgICByZXN1bHQuYyA9IHZhbHVlLm1fY2hhclZhbHVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlU2hvcnQ6CisgICAgICAgIHJlc3VsdC5z
ID0gdmFsdWUubV9zaG9ydFZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBl
SW50OgorICAgICAgICByZXN1bHQuaSA9IHZhbHVlLm1faW50VmFsdWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSmF2YVR5cGVMb25nOgorICAgICAgICByZXN1bHQuaiA9IHZhbHVlLm1fbG9u
Z1ZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlRmxvYXQ6CisgICAgICAg
IHJlc3VsdC5mID0gdmFsdWUubV9mbG9hdFZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEphdmFUeXBlRG91YmxlOgorICAgICAgICByZXN1bHQuZCA9IHZhbHVlLm1fZG91YmxlVmFsdWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CisgICAgICAgIHJlc3Vs
dC5sID0gZ2V0Sk5JRW52KCktPk5ld1N0cmluZyh2YWx1ZS5tX3N0cmluZ1ZhbHVlLmNoYXJhY3Rl
cnMoKSwgdmFsdWUubV9zdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklVdGlsaXR5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSVV0aWxpdHkuaAppbmRleCA1MDhhMmU1MjRkNmQ5MDcy
YTdkYTA3NmJmNDFiYWU5ZTQwN2U3Y2ZmLi5lMWQwNzQ1NjAxOTVhYjMwNGViYTY1ZGM4ZGI5MWMz
MDhhNzNkNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSVV0aWxp
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSVV0aWxpdHkuaApAQCAtNDAs
NiArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAorY2xh
c3MgSmF2YVZhbHVlOworCiBjb25zdCBjaGFyKiBnZXRDaGFyYWN0ZXJzRnJvbUpTdHJpbmcoanN0
cmluZyk7CiB2b2lkIHJlbGVhc2VDaGFyYWN0ZXJzRm9ySlN0cmluZyhqc3RyaW5nLCBjb25zdCBj
aGFyKik7CiAKQEAgLTYwLDYgKzYyLDkgQEAgSk5JRW52KiBnZXRKTklFbnYoKTsKIEphdmFWTSog
Z2V0SmF2YVZNKCk7CiB2b2lkIHNldEphdmFWTShKYXZhVk0qKTsKIAorSmF2YVZhbHVlIGp2YWx1
ZVRvSmF2YVZhbHVlKGNvbnN0IGp2YWx1ZSYsIGNvbnN0IEphdmFUeXBlJik7CitqdmFsdWUgamF2
YVZhbHVlVG9KdmFsdWUoY29uc3QgSmF2YVZhbHVlJik7CisKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0cnVjdCBKTklDYWxsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvSmF2YVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVR5cGUuaApp
bmRleCA0YzlhYmUxMjc1OTRkODU5OTdmYTE3MDJmNGRiNGExZmRjZWU0NDU4Li4xODhkZDlhOGQ5
YWZiOWI5MWM5OTcxZmJjNjhjM2Y5MDc0OWJlMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL0phdmFUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9K
YXZhVHlwZS5oCkBAIC01Miw3ICs1MiwxNSBAQCBlbnVtIEphdmFUeXBlIHsKICAgICBKYXZhVHlw
ZUxvbmcsCiAgICAgSmF2YVR5cGVGbG9hdCwKICAgICBKYXZhVHlwZURvdWJsZSwKLSAgICBKYXZh
VHlwZUFycmF5CisgICAgSmF2YVR5cGVBcnJheSwKKyAgICAvLyBKYXZhVHlwZVN0cmluZyBpcyBk
aXN0aW5jdCBmcm9tIEphdmFUeXBlT2JqZWN0IGJlY2F1c2UgdGhlIHN0cmluZyB0eXBlCisgICAg
Ly8gcmVjZWl2ZXMgc3BlY2lhbCBoYW5kbGluZyB3aGVuIHdlIGNvbnZlcnQgZnJvbSBKYXZhU2Ny
aXB0LiBJbiB0aGlzIGNhc2UsCisgICAgLy8gd2UgbXVzdCBjcmVhdGUgSmF2YSBTdHJpbmcgb2Jq
ZWN0cyB0byB1c2UgYXMgbWV0aG9kIGFyZ3VtZW50cy4gSG93ZXZlciwKKyAgICAvLyB3ZSBjYW4n
dCBjcmVhdGUgdGhlIFN0cmluZyBvYmplY3RzIGF0IGNvbnZlcnNpb24gdGltZSBiZWNhdXNlIHdl
IHdhbnQgdG8KKyAgICAvLyBrZWVwIHRoaXMgY29kZSBzZXBhcmF0ZSBmcm9tIEpOSS4gSW5zdGVh
ZCB3ZSB1c2UgYSBzcGVjaWFsIEphdmFUeXBlU3RyaW5nCisgICAgLy8gd2hpY2ggd2lsbCBiZSBj
b252ZXJ0ZWQgdG8gYSBKYXZhIFN0cmluZyB3aGVuIHdlIGNvbnZlcnQgYmFjayB0byBhCisgICAg
Ly8ganZhbHVlLiBUaGlzIGlzIGRvbmUgYnkgdGhlIEphdmFJbnN0YW5jZSBvbiB3aGljaCB0aGUg
bWV0aG9kIGlzIGludm9rZWQuCisgICAgSmF2YVR5cGVTdHJpbmcsCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBCaW5kaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZh
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVZhbHVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzc5Zjg5NzRiOTFjNzY4ODFjNWFjZmVhMDhmODcyMTBhYjYzNjQzNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVZhbHVlLmgKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9q
ZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBKYXZhVmFsdWVfaAorI2RlZmluZSBKYXZhVmFsdWVfaAorCisj
aWYgRU5BQkxFKEpBVkFfQlJJREdFKQorCisjaWYgVVNFKFY4KQorI2luY2x1ZGUgIkphdmFJbnN0
YW5jZVY4LmgiCisjZW5kaWYKKyNpbmNsdWRlICJKYXZhVHlwZS5oIgorCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGlu
Z3MgeworCisvLyBBIHZhcmlhbnQgdXNlZCB0byByZXByZXNlbnQgYSBKYXZhIHZhbHVlLCBhbG1v
c3QgaWRlbnRpY2FsIHRvIHRoZSBKTkkKKy8vIGp2YWx1ZSB0eXBlLiBJdCBleGlzdHMgYmVjYXVz
ZSB0aGUgbG9naWMgdG8gY29udmVydCBiZXR3ZWVuIEphdmFTY3JpcHQKKy8vIG9iamVjdHMgKGFz
IEphdmFOT1BPYmplY3Qgb3IgSlNWYWx1ZSkgYW5kIEphdmEgb2JqZWN0cyBzaG91bGQgbm90IGRl
cGVuZCB1cG9uCisvLyBKTkksIHRvIGFsbG93IHBvcnRzIHRvIHByb3ZpZGUgYSBKYXZhSW5zdGFu
Y2Ugb2JqZWN0IGV0YyB3aGljaCBkb2VzIG5vdCB1c2UKKy8vIEpOSS4gVGhpcyBtZWFucyB0aGF0
IHRoZSAnb2JqZWN0JyBmaWVsZCBvZiB0aGlzIHZhcmlhbnQgdXNlcyBKYXZhSW5zdGFuY2UsCisv
LyBub3Qgam9iamVjdC4KK3N0cnVjdCBKYXZhVmFsdWUgeworICAgIEphdmFWYWx1ZSgpIDogbV90
eXBlKEphdmFUeXBlSW52YWxpZCkge30KKworICAgIEphdmFUeXBlIG1fdHlwZTsKKyAgICAvLyBX
ZSBkb24ndCB1c2UgYSB1bmlvbiBiZWNhdXNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byByZWYtY291
bnQgc29tZSBvZiB0aGUKKyAgICAvLyB2YWx1ZXMuIFRoaXMgcmVxdWlyZXMgdHlwZXMgd2l0aCBu
b24tdHJpdmlhbCBjb25zdHJ1Y3RvcnMuCisjaWYgVVNFKFY4KQorICAgIFJlZlB0cjxKYXZhSW5z
dGFuY2U+IG1fb2JqZWN0VmFsdWU7CisjZWxzZQorICAgIC8vIERlZmluaW5nIHRoaXMgbWVtYmVy
IHdpdGggSlNDIGNhdXNlcyBidWlsZCB3YXJuaW5ncyBkdWUgdG8gdW51c2VkIGlubGluZQorICAg
IC8vIGZ1bmN0aW9ucywgYXMgdGhpcyBjbGFzcyBpcyBub3QgeWV0IHVzZWQuCisgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAyMy4KKyNlbmRpZgor
ICAgIGJvb2wgbV9ib29sZWFuVmFsdWU7CisgICAgc2lnbmVkIGNoYXIgbV9ieXRlVmFsdWU7Cisg
ICAgdW5zaWduZWQgc2hvcnQgbV9jaGFyVmFsdWU7CisgICAgc2hvcnQgbV9zaG9ydFZhbHVlOwor
ICAgIGludCBtX2ludFZhbHVlOworICAgIGxvbmcgbG9uZyBtX2xvbmdWYWx1ZTsKKyAgICBmbG9h
dCBtX2Zsb2F0VmFsdWU7CisgICAgZG91YmxlIG1fZG91YmxlVmFsdWU7CisgICAgU3RyaW5nIG1f
c3RyaW5nVmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2VuZGlmIC8vIEph
dmFWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklV
dGlsaXR5UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklVdGls
aXR5UHJpdmF0ZS5jcHAKaW5kZXggMjM1NmZlMTI1ODEwZjQ0Y2FmYWE5MzgzOTU5MTVjMDAxYzAw
ZGNmMy4uNjhhODVjZmVjNDNmY2U5ZDFjMTFiZTFlZTBmZTAwYzk5MzNiNDUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNwcApA
QCAtMTY2LDYgKzE2NiwxMCBAQCBzdGF0aWMgam9iamVjdCBjb252ZXJ0QXJyYXlJbnN0YW5jZVRv
SmF2YUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSoganNBcnJheQogICAgIGNhc2UgSmF2
YVR5cGVWb2lkOiAvLyBEb24ndCBleHBlY3QgYXJyYXlzIG9mIHZvaWQgb2JqZWN0cwogICAgIGNh
c2UgSmF2YVR5cGVJbnZhbGlkOiAvLyBBcnJheSBvZiB1bmtub3duIG9iamVjdHMKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZVN0cmluZzoKKyAgICAgICAgLy8gSlNDIGRvZXMgbm90
IHlldCB1c2UgSmF2YVR5cGVTdHJpbmcuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMjMuCisgICAgICAgIEFTU0VSVChmYWxzZSk7CiAg
ICAgfQogCiAgICAgLy8gaWYgaXQgd2FzIG5vdCBvbmUgb2YgdGhlIGNhc2VzIGhhbmRsZWQsIHRo
ZW4gbnVsbCBpcyByZXR1cm5lZApAQCAtMzA5LDYgKzMxMywxMCBAQCBqdmFsdWUgY29udmVydFZh
bHVlVG9KVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBSb290T2JqZWN0KiByb290T2JqZWN0LCBKU1Zh
bHVlIHZhbAogICAgIGNhc2UgSmF2YVR5cGVJbnZhbGlkOgogICAgIGNhc2UgSmF2YVR5cGVWb2lk
OgogICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlU3RyaW5nOgorICAgICAgICAvLyBK
U0MgZG9lcyBub3QgeWV0IHVzZSBKYXZhVHlwZVN0cmluZy4KKyAgICAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAyMy4KKyAgICAgICAgQVNTRVJU
KGZhbHNlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCmluZGV4IGYxZGFkMWVhN2Fi
OGUyZjZmZTNkZDNkNzc3ZjU0NjlhNjNkMjA3OWYuLjQyN2ZlYjgwNzQxNjVmMjNjMmI4N2Y4NGUw
NjlmZTU2NTE5MWRlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFJbnN0YW5jZUpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YUluc3RhbmNlSlNDLmNwcApAQCAtMzA1LDYgKzMwNSwxMSBAQCBKU1ZhbHVlIEphdmFJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGlt
ZU1ldGhvZAogICAgICAgICAgICAgcmVzdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBKYXZhVHlwZVN0cmluZzoKKyAgICAgICAg
Ly8gSlNDIGRvZXMgbm90IHlldCB1c2UgSmF2YVR5cGVTdHJpbmcuCisgICAgICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMjMuCisgICAgICAgIEFT
U0VSVChmYWxzZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdFZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmNwcAppbmRleCA0
Njk0YzM4ZTIxMDFiMDg0MTEwYzk4N2ZjODBmMDg4Y2M2YjM5NzMxLi4xMGI5NDc5Y2Q3YmQ3YTcy
YjJiZDY4Y2E2NTM2YzlkNjNjNDllZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmNwcApAQCAtMzYsMTUxICszNiwxMjEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKLWp2YWx1ZSBjb252ZXJ0TlBW
YXJpYW50VG9KVmFsdWUoTlBWYXJpYW50IHZhbHVlLCBjb25zdCBXVEY6OlN0cmluZyYgamF2YUNs
YXNzKQorSmF2YVZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb0phdmFWYWx1ZShOUFZhcmlhbnQgdmFs
dWUsIGNvbnN0IFN0cmluZyYgamF2YUNsYXNzKQogewogICAgIENTdHJpbmcgamF2YUNsYXNzTmFt
ZSA9IGphdmFDbGFzcy51dGY4KCk7CiAgICAgSmF2YVR5cGUgamF2YVR5cGUgPSBqYXZhVHlwZUZy
b21DbGFzc05hbWUoamF2YUNsYXNzTmFtZS5kYXRhKCkpOwotICAgIGp2YWx1ZSByZXN1bHQ7Cisg
ICAgSmF2YVZhbHVlIHJlc3VsdDsKKyAgICByZXN1bHQubV90eXBlID0gamF2YVR5cGU7CiAgICAg
TlBWYXJpYW50VHlwZSB0eXBlID0gdmFsdWUudHlwZTsKIAogICAgIHN3aXRjaCAoamF2YVR5cGUp
IHsKICAgICBjYXNlIEphdmFUeXBlQXJyYXk6CiAgICAgY2FzZSBKYXZhVHlwZU9iamVjdDoKICAg
ICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmwgPSBzdGF0aWNfY2FzdDxqb2JqZWN0PigwKTsK
LQotICAgICAgICAgICAgLy8gRmlyc3Qgc2VlIGlmIHdlIGhhdmUgYSBKYXZhIGluc3RhbmNlLgor
ICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYSBKYXZhIGluc3RhbmNlLgogICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmplY3QpIHsKICAgICAgICAgICAgICAgICBO
UE9iamVjdCogb2JqZWN0SW1wID0gTlBWQVJJQU5UX1RPX09CSkVDVCh2YWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKEphdmFJbnN0YW5jZSogaW5zdGFuY2UgPSBFeHRyYWN0SmF2YUluc3RhbmNl
KG9iamVjdEltcCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gaW5zdGFuY2UtPmph
dmFJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX29iamVjdFZhbHVlID0gRXh0
cmFjdEphdmFJbnN0YW5jZShvYmplY3RJbXApOwogICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAvLyBOb3cgY29udmVydCB2YWx1ZSB0byBhIHN0
cmluZyBpZiB0aGUgdGFyZ2V0IHR5cGUgaXMgYSBqYXZhLmxhbmcuc3RyaW5nLCBhbmQgd2UncmUg
bm90Ci0gICAgICAgICAgICAvLyBjb252ZXJ0aW5nIGZyb20gYSBOdWxsLgotICAgICAgICAgICAg
aWYgKCFyZXN1bHQubCAmJiAhc3RyY21wKGphdmFDbGFzc05hbWUuZGF0YSgpLCAiamF2YS5sYW5n
LlN0cmluZyIpKSB7CisgICAgY2FzZSBKYXZhVHlwZVN0cmluZzoKKyAgICAgICAgewogI2lmZGVm
IENPTlZFUlRfTlVMTF9UT19FTVBUWV9TVFJJTkcKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9
PSBOUFZhcmlhbnRUeXBlX051bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgSk5JRW52KiBlbnYg
PSBnZXRKTklFbnYoKTsKLSAgICAgICAgICAgICAgICAgICAgamNoYXIgYnVmWzJdOwotICAgICAg
ICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBlbnYtPmZ1bmN0aW9ucy0+TmV3U3Ry
aW5nKGVudiwgYnVmLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBqYXZhU3Ry
aW5nOwotICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlBW
YXJpYW50VHlwZV9OdWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IEphdmFU
eXBlU3RyaW5nOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX3N0cmluZ1ZhbHVlID0gU3RyaW5n
Ojpmcm9tVVRGOCgiIik7CisgICAgICAgICAgICB9IGVsc2UKICNlbHNlCi0gICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9TdHJpbmcpCisgICAgICAgICAgICBpZiAodHlw
ZSA9PSBOUFZhcmlhbnRUeXBlX1N0cmluZykKICNlbmRpZgotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgTlBTdHJpbmcgc3JjID0gTlBWQVJJQU5UX1RPX1NUUklORyh2YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YVN0cmluZyA9IGVudi0+TmV3U3RyaW5nVVRGKHNy
Yy5VVEY4Q2hhcmFjdGVycyk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0
cmluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXN1bHQu
bCkKLSAgICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOyAv
LyBIYW5kbGUgaXQgdGhlIHNhbWUgYXMgYSB2b2lkIGNhc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBOUFN0cmluZyBzcmMgPSBOUFZBUklBTlRfVE9fU1RSSU5HKHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQubV90eXBlID0gSmF2YVR5cGVTdHJpbmc7CisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1fc3RyaW5nVmFsdWUgPSBTdHJpbmc6OmZyb21VVEY4KHNyYy5VVEY4Q2hh
cmFjdGVycyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHR5cGUg
PT0gTlBWYXJpYW50VHlwZV9Cb29sKQotICAgICAgICAgICAgICAgIHJlc3VsdC56ID0gTlBWQVJJ
QU5UX1RPX0JPT0xFQU4odmFsdWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7IC8vIGFzIHZvaWQgY2FzZQorICAg
ICAgICAgICAgICAgIHJlc3VsdC5tX2Jvb2xlYW5WYWx1ZSA9IE5QVkFSSUFOVF9UT19CT09MRUFO
KHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVC
eXRlOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0lu
dDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5iID0gc3RhdGljX2Nhc3Q8amJ5dGU+KE5QVkFS
SUFOVF9UT19JTlQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX2J5dGVWYWx1
ZSA9IHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPihOUFZBUklBTlRfVE9fSU5UMzIodmFsdWUpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9Eb3VibGUpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0LmIgPSBzdGF0aWNfY2FzdDxqYnl0ZT4oTlBWQVJJQU5UX1RPX0RP
VUJMRSh2YWx1ZSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1lbXNldCgm
cmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fYnl0
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFs
dWUpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVDaGFy
OgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMy
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5jID0gc3RhdGljX2Nhc3Q8Y2hhcj4oTlBWQVJJQU5U
X1RPX0lOVDMyKHZhbHVlKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWVt
c2V0KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQu
bV9jaGFyVmFsdWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oTlBWQVJJQU5UX1RPX0lO
VDMyKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFU
eXBlU2hvcnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5
cGVfSW50MzIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnMgPSBzdGF0aWNfY2FzdDxqc2hvcnQ+
KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX3No
b3J0VmFsdWUgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7
CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5zID0gc3RhdGljX2Nhc3Q8anNob3J0PihOUFZBUklBTlRfVE9f
RE9VQkxFKHZhbHVlKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWVtc2V0
KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9z
aG9ydFZhbHVlID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUp
KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVJbnQ6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfSW50MzIpCi0g
ICAgICAgICAgICAgICAgcmVzdWx0LmkgPSBzdGF0aWNfY2FzdDxqaW50PihOUFZBUklBTlRfVE9f
SU5UMzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9pbnRWYWx1ZSA9IHN0YXRp
Y19jYXN0PGludD4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7CiAgICAgICAgICAgICBlbHNl
IGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5pID0gc3RhdGljX2Nhc3Q8amludD4oTlBWQVJJQU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2Yo
anZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1faW50VmFsdWUgPSBzdGF0aWNfY2Fz
dDxpbnQ+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVMb25nOgogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5q
ID0gc3RhdGljX2Nhc3Q8amxvbmc+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5tX2xvbmdWYWx1ZSA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oTlBW
QVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IE5Q
VmFyaWFudFR5cGVfRG91YmxlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5qID0gc3RhdGljX2Nh
c3Q8amxvbmc+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5tX2xvbmdWYWx1ZSA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
TlBWQVJJQU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBKYXZhVHlwZUZsb2F0OgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5mID0gc3Rh
dGljX2Nhc3Q8amZsb2F0PihOUFZBUklBTlRfVE9fSU5UMzIodmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQubV9mbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KE5QVkFSSUFOVF9U
T19JTlQzMih2YWx1ZSkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBOUFZhcmlhbnRU
eXBlX0RvdWJsZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuZiA9IHN0YXRpY19jYXN0PGpmbG9h
dD4oTlBWQVJJQU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1fZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihOUFZBUklBTlRf
VE9fRE9VQkxFKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEphdmFUeXBlRG91YmxlOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZh
cmlhbnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5kID0gc3RhdGljX2Nhc3Q8
amRvdWJsZT4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0Lm1fZG91YmxlVmFsdWUgPSBzdGF0aWNfY2FzdDxkb3VibGU+KE5QVkFSSUFOVF9UT19JTlQz
Mih2YWx1ZSkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0Rv
dWJsZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuZCA9IHN0YXRpY19jYXN0PGpkb3VibGU+KE5Q
VkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5tX2RvdWJsZVZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihOUFZBUklBTlRfVE9f
RE9VQkxFKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIEphdmFUeXBlSW52YWxpZDoKICAgICBkZWZhdWx0OgotICAgIGNhc2Ug
SmF2YVR5cGVWb2lkOgotICAgICAgICB7Ci0gICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwg
c2l6ZW9mKGp2YWx1ZSkpOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiAKLXZvaWQgY29udmVydEpWYWx1ZVRvTlBWYXJpYW50KGp2YWx1
ZSB2YWx1ZSwgSmF2YVR5cGUgamF2YVR5cGUsIGNvbnN0IGNoYXIqIGphdmFUeXBlTmFtZSwgTlBW
YXJpYW50KiByZXN1bHQpCit2b2lkIGNvbnZlcnRKYXZhVmFsdWVUb05QVmFyaWFudChKYXZhVmFs
dWUgdmFsdWUsIE5QVmFyaWFudCogcmVzdWx0KQogewotICAgIHN3aXRjaCAoamF2YVR5cGUpIHsK
KyAgICBzd2l0Y2ggKHZhbHVlLm1fdHlwZSkgewogICAgIGNhc2UgSmF2YVR5cGVWb2lkOgogICAg
ICAgICB7CiAgICAgICAgICAgICBWT0lEX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKQEAgLTE4OSw2
NiArMTU5LDY4IEBAIHZvaWQgY29udmVydEpWYWx1ZVRvTlBWYXJpYW50KGp2YWx1ZSB2YWx1ZSwg
SmF2YVR5cGUgamF2YVR5cGUsIGNvbnN0IGNoYXIqIGphdmFUCiAKICAgICBjYXNlIEphdmFUeXBl
T2JqZWN0OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmFsdWUubCkgewotICAgICAgICAg
ICAgICAgIGlmICghc3RyY21wKGphdmFUeXBlTmFtZSwgImphdmEubGFuZy5TdHJpbmciKSkgewot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2ID0gZ2V0Q2hhcmFjdGVyc0Zyb21KU3Ry
aW5nKHN0YXRpY19jYXN0PGpzdHJpbmc+KHZhbHVlLmwpKTsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gcyBpcyBmcmVlZCBpbiBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoc2VlIG5wcnVudGltZS5j
cHApCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMgPSBzdHJkdXAodik7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlbGVhc2VDaGFyYWN0ZXJzRm9ySlN0cmluZyhzdGF0aWNfY2FzdDxq
c3RyaW5nPih2YWx1ZS5sKSwgdik7Ci0gICAgICAgICAgICAgICAgICAgIFNUUklOR1pfVE9fTlBW
QVJJQU5UKHMsICpyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgICAgICBPQkpFQ1RfVE9fTlBWQVJJQU5UKEphdmFJbnN0YW5jZVRvTlBPYmplY3QobmV3IEph
dmFJbnN0YW5jZSh2YWx1ZS5sKSksICpyZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAvLyBJZiB0aGUgSmF2YVZhbHVlIGlzIGEgU3RyaW5nIG9iamVjdCwgaXQgc2hvdWxk
IGhhdmUgdHlwZSBKYXZhVHlwZVN0cmluZy4KKyAgICAgICAgICAgIGlmICh2YWx1ZS5tX29iamVj
dFZhbHVlKQorICAgICAgICAgICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQoSmF2YUluc3RhbmNl
VG9OUE9iamVjdCh2YWx1ZS5tX29iamVjdFZhbHVlLmdldCgpKSwgKnJlc3VsdCk7CisgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgVk9JRF9UT19OUFZBUklBTlQoKnJlc3VsdCk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEphdmFUeXBlU3RyaW5nOgorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiB1dGY4U3RyaW5nID0gc3RyZHVwKHZhbHVl
Lm1fc3RyaW5nVmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAvLyBUaGUgY29waWVk
IHN0cmluZyBpcyBmcmVlZCBpbiBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSAoc2VlIG5wcnVudGlt
ZS5jcHApCisgICAgICAgICAgICBTVFJJTkdaX1RPX05QVkFSSUFOVCh1dGY4U3RyaW5nLCAqcmVz
dWx0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKwogICAgIGNhc2UgSmF2YVR5cGVCb29s
ZWFuOgogICAgICAgICB7Ci0gICAgICAgICAgICBCT09MRUFOX1RPX05QVkFSSUFOVCh2YWx1ZS56
LCAqcmVzdWx0KTsKKyAgICAgICAgICAgIEJPT0xFQU5fVE9fTlBWQVJJQU5UKHZhbHVlLm1fYm9v
bGVhblZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgSmF2YVR5cGVCeXRlOgogICAgICAgICB7Ci0gICAgICAgICAgICBJTlQzMl9UT19OUFZBUklB
TlQodmFsdWUuYiwgKnJlc3VsdCk7CisgICAgICAgICAgICBJTlQzMl9UT19OUFZBUklBTlQodmFs
dWUubV9ieXRlVmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBKYXZhVHlwZUNoYXI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIElOVDMyX1RPX05Q
VkFSSUFOVCh2YWx1ZS5jLCAqcmVzdWx0KTsKKyAgICAgICAgICAgIElOVDMyX1RPX05QVkFSSUFO
VCh2YWx1ZS5tX2NoYXJWYWx1ZSwgKnJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIEphdmFUeXBlU2hvcnQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIElOVDMy
X1RPX05QVkFSSUFOVCh2YWx1ZS5zLCAqcmVzdWx0KTsKKyAgICAgICAgICAgIElOVDMyX1RPX05Q
VkFSSUFOVCh2YWx1ZS5tX3Nob3J0VmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZUludDoKICAgICAgICAgewotICAgICAgICAgICAg
SU5UMzJfVE9fTlBWQVJJQU5UKHZhbHVlLmksICpyZXN1bHQpOworICAgICAgICAgICAgSU5UMzJf
VE9fTlBWQVJJQU5UKHZhbHVlLm1faW50VmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIC8vIFRPRE86IENoZWNrIGlmIGNhc3QgdG8gZG91YmxlIGlz
IG5lZWRlZC4KICAgICBjYXNlIEphdmFUeXBlTG9uZzoKICAgICAgICAgewotICAgICAgICAgICAg
RE9VQkxFX1RPX05QVkFSSUFOVCh2YWx1ZS5qLCAqcmVzdWx0KTsKKyAgICAgICAgICAgIERPVUJM
RV9UT19OUFZBUklBTlQodmFsdWUubV9sb25nVmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZUZsb2F0OgogICAgICAgICB7Ci0gICAg
ICAgICAgICBET1VCTEVfVE9fTlBWQVJJQU5UKHZhbHVlLmYsICpyZXN1bHQpOworICAgICAgICAg
ICAgRE9VQkxFX1RPX05QVkFSSUFOVCh2YWx1ZS5tX2Zsb2F0VmFsdWUsICpyZXN1bHQpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZURvdWJsZToKICAgICAg
ICAgewotICAgICAgICAgICAgRE9VQkxFX1RPX05QVkFSSUFOVCh2YWx1ZS5kLCAqcmVzdWx0KTsK
KyAgICAgICAgICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFsdWUubV9kb3VibGVWYWx1ZSwgKnJl
c3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZhdGUuaAppbmRleCA3OTE1OTM5NjMzZTdhODc4
MWZmNTMxMTE2OTVmN2QxN2U3OGFlZmZiLi5lMDMxNmUzMjU2ODdmY2RiNzM5NGIyOTVjNzg3MGRi
OTA4OWFjOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pOSVV0
aWxpdHlQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KTklVdGls
aXR5UHJpdmF0ZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSkFWQV9CUklER0Up
CiAKLSNpbmNsdWRlICJKTklVdGlsaXR5LmgiCisjaW5jbHVkZSAiSmF2YVZhbHVlLmgiCiAjaW5j
bHVkZSAibnBydW50aW1lLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAK
LWp2YWx1ZSBjb252ZXJ0TlBWYXJpYW50VG9KVmFsdWUoTlBWYXJpYW50LCBjb25zdCBXVEY6OlN0
cmluZyYgamF2YUNsYXNzKTsKLXZvaWQgY29udmVydEpWYWx1ZVRvTlBWYXJpYW50KGp2YWx1ZSwg
SmF2YVR5cGUsIGNvbnN0IGNoYXIqIGphdmFDbGFzc05hbWUsIE5QVmFyaWFudCopOworSmF2YVZh
bHVlIGNvbnZlcnROUFZhcmlhbnRUb0phdmFWYWx1ZShOUFZhcmlhbnQsIGNvbnN0IFN0cmluZyYg
amF2YUNsYXNzKTsKK3ZvaWQgY29udmVydEphdmFWYWx1ZVRvTlBWYXJpYW50KEphdmFWYWx1ZSwg
TlBWYXJpYW50Kik7CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YU5QT2JqZWN0VjguY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS92OC9KYXZhTlBPYmplY3RWOC5jcHAKaW5kZXggMDkxNzQwNzI4YmRm
ZjMzMWM0YTJjNmIzMjMxYmMzZGU2NWIzMGJkOS4uNGNiNzRlYjAxYzVkZjBiNzU1Y2M2YTViMTNj
NmQwMWUwYjU3Yjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9K
YXZhTlBPYmplY3RWOC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZh
TlBPYmplY3RWOC5jcHAKQEAgLTE0NCwxNCArMTQ0LDE1IEBAIGJvb2wgSmF2YU5QT2JqZWN0SW52
b2tlKE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOUFZhcmlh
bnQqCiAgICAgICAgIGpBcmdzID0gc3RhdGljX2Nhc3Q8anZhbHVlKj4obWFsbG9jKGFyZ0NvdW50
ICogc2l6ZW9mKGp2YWx1ZSkpKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
YXJnQ291bnQ7IGkrKykKLSAgICAgICAgakFyZ3NbaV0gPSBjb252ZXJ0TlBWYXJpYW50VG9KVmFs
dWUoYXJnc1tpXSwgak1ldGhvZC0+cGFyYW1ldGVyQXQoaSkpOworICAgICAgICBqQXJnc1tpXSA9
IGphdmFWYWx1ZVRvSnZhbHVlKGNvbnZlcnROUFZhcmlhbnRUb0phdmFWYWx1ZShhcmdzW2ldLCBq
TWV0aG9kLT5wYXJhbWV0ZXJBdChpKSkpOwogCiAgICAganZhbHVlIGpSZXN1bHQgPSBpbnN0YW5j
ZS0+aW52b2tlTWV0aG9kKGpNZXRob2QsIGpBcmdzKTsKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAg
ICAgZnJlZShqQXJncyk7CiAKICAgICBWT0lEX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICBj
b252ZXJ0SlZhbHVlVG9OUFZhcmlhbnQoalJlc3VsdCwgak1ldGhvZC0+cmV0dXJuVHlwZSgpLCBq
TWV0aG9kLT5yZXR1cm5UeXBlQ2xhc3NOYW1lKCksIHJlc3VsdCk7CisgICAgSmF2YVZhbHVlIGph
dmFWYWx1ZVJlc3VsdCA9IGp2YWx1ZVRvSmF2YVZhbHVlKGpSZXN1bHQsIGpNZXRob2QtPnJldHVy
blR5cGUoKSk7CisgICAgY29udmVydEphdmFWYWx1ZVRvTlBWYXJpYW50KGphdmFWYWx1ZVJlc3Vs
dCwgcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTg5LDcgKzE5MCw4IEBAIGJv
b2wgSmF2YU5QT2JqZWN0R2V0UHJvcGVydHkoTlBPYmplY3QqIG9iaiwgTlBJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIE5QVmFyaWFudCoKICAgICBqdmFsdWUgdmFsdWUgPSBpbnN0YW5jZS0+Z2V0Rmll
bGQoZmllbGQpOwogICAgIGluc3RhbmNlLT5lbmQoKTsKIAotICAgIGNvbnZlcnRKVmFsdWVUb05Q
VmFyaWFudCh2YWx1ZSwgZmllbGQtPnR5cGUoKSwgZmllbGQtPnR5cGVDbGFzc05hbWUoKSwgcmVz
dWx0KTsKKyAgICBKYXZhVmFsdWUgamF2YVZhbHVlUmVzdWx0ID0ganZhbHVlVG9KYXZhVmFsdWUo
dmFsdWUsIGZpZWxkLT50eXBlKCkpOworICAgIGNvbnZlcnRKYXZhVmFsdWVUb05QVmFyaWFudChq
YXZhVmFsdWVSZXN1bHQsIHJlc3VsdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86916</attachid>
            <date>2011-03-25 04:42:39 -0700</date>
            <delta_ts>2011-03-25 07:33:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57022-20110325114237.patch</filename>
            <type>text/plain</type>
            <size>23811</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjBmMmY4YzAzMGI2ZTI1
ZGRiOGFjODYzMzk0NzM0ZThhNWE2Mjc4Li45YWI4M2U5Y2YxYTY1MWQ2MDJjYjljOTNmY2MwN2Nj
ZDEwNjU1YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDMtMjUgIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBKYXZhVmFsdWUgdG8gdHlwZSB0byBy
ZXByZXNlbnQgYSBKYXZhIHZhbHVlIGluIHRoZSBKYXZhIGJyaWRnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMjIKKworICAgICAgICBUaGlzIGNo
YW5nZSBpbnRyb2R1Y2VzIGEgbmV3IEphdmFWYWx1ZSB0eXBlIGFuZCB1c2VzIGl0IGluIHBsYWNl
IG9mIGp2YWx1ZQorICAgICAgICBpbiB0aGUgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gSmF2YU5Q
T2JqZWN0IHVzZWQgaW4gdGhlIFY4IEphdmEgYnJpZGdlLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IG9ubHksIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBicmlkZ2Uvam5pL0pOSVV0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6amF2
YVR5cGVGcm9tQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnNpZ25hdHVyZUZy
b21KYXZhVHlwZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpnZXRKTklGaWVsZCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsSk5JTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2Uvam5p
L0phdmFUeXBlLmg6CisgICAgICAgICogYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0TlBWYXJpYW50VG9KYXZhVmFsdWUp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydEphdmFWYWx1ZVRvTlBWYXJpYW50KToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Omp2YWx1ZVRvSmF2YVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmphdmFWYWx1ZVRvSnZhbHVlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4
L0pOSVV0aWxpdHlQcml2YXRlLmg6CisgICAgICAgICogYnJpZGdlL2puaS92OC9KYXZhTlBPYmpl
Y3RWOC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTlBPYmplY3RJbnZva2UpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YU5QT2JqZWN0R2V0UHJvcGVydHkpOgorICAgICAg
ICAqIGJyaWRnZS9qbmkvdjgvSmF2YVZhbHVlVjguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpKYXZhVmFsdWU6OkphdmFWYWx1ZSk6CisKIDIwMTEtMDMtMjQgIEJlbmphbWluIFBv
dWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE5M2E5YTVkODU4ODQzMDA4ZDgz
ODMzMDg2NmUwMGQ5YTFlNTAwOGYuLmVjMzg0Y2I2MDY1NzJlYzQ3YjM1MTRjNGVmNGM2MmE1OTYw
NmQ2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAgICAgICAgICAg
ICAnYnJpZGdlL2puaS92OC9KYXZhTlBPYmplY3RWOC5jcHAnLAogICAgICAgICAgICAgJ2JyaWRn
ZS9qbmkvdjgvSmF2YU5QT2JqZWN0VjguaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9K
YXZhU3RyaW5nVjguaCcsCisgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9KYXZhVmFsdWVWOC5o
JywKICAgICAgICAgICAgICdicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAnLAogICAgICAgICAgICAg
J2JyaWRnZS9ucHJ1bnRpbWUuY3BwJywKICAgICAgICAgICAgICdicmlkZ2UvbnBydW50aW1lX3By
aXYuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSVV0aWxpdHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklVdGlsaXR5LmNwcAppbmRleCBjMWYx
Yjk0MWUwOGI3YTFlOTc5NGI5ZTZkMDg4ZGFiMTdmYjRiNDVjLi5jZmQ0ZTgzZjcxNTA3ZTMxOGU5
OGMwYmYzYzYwZTZkZDNjYWQ1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL0pOSVV0aWxpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JVXRp
bGl0eS5jcHAKQEAgLTE5MCw2ICsxOTAsMTAgQEAgSmF2YVR5cGUgamF2YVR5cGVGcm9tQ2xhc3NO
YW1lKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIHR5cGUgPSBKYXZhVHlwZVZvaWQ7CiAgICAg
ZWxzZSBpZiAoJ1snID09IG5hbWVbMF0pCiAgICAgICAgIHR5cGUgPSBKYXZhVHlwZUFycmF5Owor
I2lmIFVTRShWOCkKKyAgICBlbHNlIGlmICghc3RyY21wKCJqYXZhLmxhbmcuU3RyaW5nIiwgbmFt
ZSkpCisgICAgICAgIHR5cGUgPSBKYXZhVHlwZVN0cmluZzsKKyNlbmRpZgogICAgIGVsc2UKICAg
ICAgICAgdHlwZSA9IEphdmFUeXBlT2JqZWN0OwogCkBAIC0yMDYsNiArMjEwLDkgQEAgY29uc3Qg
Y2hhciogc2lnbmF0dXJlRnJvbUphdmFUeXBlKEphdmFUeXBlIHR5cGUpCiAgICAgICAgIHJldHVy
biAiWyI7CiAKICAgICBjYXNlIEphdmFUeXBlT2JqZWN0OgorI2lmIFVTRShWOCkKKyAgICBjYXNl
IEphdmFUeXBlU3RyaW5nOgorI2VuZGlmCiAgICAgICAgIHJldHVybiAiTCI7CiAKICAgICBjYXNl
IEphdmFUeXBlQm9vbGVhbjoKQEAgLTI5Niw2ICszMDMsOSBAQCBqdmFsdWUgZ2V0Sk5JRmllbGQo
am9iamVjdCBvYmosIEphdmFUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIq
IHNpZwogICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgICAgIGNh
c2UgSmF2YVR5cGVBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIEphdmFUeXBlT2JqZWN0Ogor
I2lmIFVTRShWOCkKKyAgICAgICAgICAgICAgICBjYXNlIEphdmFUeXBlU3RyaW5nOgorI2VuZGlm
CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gZW52LT5mdW5jdGlvbnMtPkdldE9iamVj
dEZpZWxkKGVudiwgb2JqLCBmaWVsZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgSmF2YVR5cGVCb29sZWFuOgpAQCAtMzQ5LDYgKzM1OSw5IEBAIGp2
YWx1ZSBjYWxsSk5JTWV0aG9kKGpvYmplY3Qgb2JqZWN0LCBKYXZhVHlwZSByZXR1cm5UeXBlLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zCiAgICAgICAgIGNhbGxKTklNZXRob2RJREE8dm9pZD4ob2Jq
ZWN0LCBtZXRob2RJZCwgYXJncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSmF2YVR5cGVP
YmplY3Q6CisjaWYgVVNFKFY4KQorICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CisjZW5kaWYKICAg
ICAgICAgcmVzdWx0LmwgPSBjYWxsSk5JTWV0aG9kSURBPGpvYmplY3Q+KG9iamVjdCwgbWV0aG9k
SWQsIGFyZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVR5cGUuaAppbmRleCA0YzlhYmUxMjc1OTRkODU5OTdmYTE3
MDJmNGRiNGExZmRjZWU0NDU4Li5iNWU2NGY1YmI4NTYyOTQ2NGExYzVjN2VhYmZmNjljNzJjMmI4
ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhVHlwZS5oCkBAIC01Miw3ICs1MiwyMiBA
QCBlbnVtIEphdmFUeXBlIHsKICAgICBKYXZhVHlwZUxvbmcsCiAgICAgSmF2YVR5cGVGbG9hdCwK
ICAgICBKYXZhVHlwZURvdWJsZSwKLSAgICBKYXZhVHlwZUFycmF5CisgICAgSmF2YVR5cGVBcnJh
eSwKKyNpZiBVU0UoVjgpCisgICAgLy8gSmF2YVR5cGVTdHJpbmcgaXMgZGlzdGluY3QgZnJvbSBK
YXZhVHlwZU9iamVjdCBiZWNhdXNlIHN0cmluZ3MgcmVjZWl2ZQorICAgIC8vIHNwZWNpYWwgaGFu
ZGxpbmcgd2hlbiB3ZSBjb252ZXJ0IHRvIGFuZCBmcm9tIEphdmFTY3JpcHQuIFdoZW4gY2FsbGlu
ZworICAgIC8vIEphdmEgbWV0aG9kcywgd2UgbXVzdCBjcmVhdGUgSmF2YSBTdHJpbmcgb2JqZWN0
cyBmb3Igc3RyaW5nIGFyZ3VtZW50cy4KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBjcmVhdGUg
dGhlIFN0cmluZyBvYmplY3RzIGF0IGNvbnZlcnNpb24gdGltZSBiZWNhdXNlIHdlCisgICAgLy8g
d2FudCB0byBrZWVwIHRoaXMgY29udmVyc2lvbiBjb2RlIGluZGVwZW5kZW50IG9mIEpOSS4gSW5z
dGVhZCB3ZSB1c2UgYQorICAgIC8vIHNwZWNpYWwgSmF2YVR5cGVTdHJpbmcgd2hpY2ggd2lsbCBi
ZSBjb252ZXJ0ZWQgdG8gYSBKYXZhIFN0cmluZyB3aGVuIHdlCisgICAgLy8gZXZlbnR1YWxseSBj
b252ZXJ0IHRoZSBKYXZhVmFsdWUgdG8gYSBqdmFsdWUuIFRoaXMgaXMgZG9uZSBieSB0aGUKKyAg
ICAvLyBKYXZhSW5zdGFuY2Ugb24gd2hpY2ggdGhlIG1ldGhvZCBpcyBpbnZva2VkLgorICAgIC8v
CisgICAgLy8gTm90ZSB0aGF0IHRoaXMgdHlwZSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgSmF2YVNj
cmlwdCBlbmdpbmUsIGJ1dCBpcworICAgIC8vIGN1cnJlbnRseSB1c2VkIG9ubHkgd2l0aCBWOC4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDIz
LgorICAgIEphdmFUeXBlU3RyaW5nLAorI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBCaW5k
aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KTklVdGlsaXR5
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2
YXRlLmNwcAppbmRleCA0Njk0YzM4ZTIxMDFiMDg0MTEwYzk4N2ZjODBmMDg4Y2M2YjM5NzMxLi4z
M2UxNGQwYTlhNzVjMzNiMTgyZTM5OTBkOTAxZDE3ZTFmNTIwZGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmNwcApAQCAtMzAsMTU3
ICszMCwxMjggQEAKIAogI2luY2x1ZGUgIkphdmFJbnN0YW5jZVY4LmgiCiAjaW5jbHVkZSAiSmF2
YU5QT2JqZWN0VjguaCIKKyNpbmNsdWRlICJKYXZhVmFsdWVWOC5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBCaW5kaW5ncyB7
CiAKLWp2YWx1ZSBjb252ZXJ0TlBWYXJpYW50VG9KVmFsdWUoTlBWYXJpYW50IHZhbHVlLCBjb25z
dCBXVEY6OlN0cmluZyYgamF2YUNsYXNzKQorSmF2YVZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb0ph
dmFWYWx1ZShOUFZhcmlhbnQgdmFsdWUsIGNvbnN0IFN0cmluZyYgamF2YUNsYXNzKQogewogICAg
IENTdHJpbmcgamF2YUNsYXNzTmFtZSA9IGphdmFDbGFzcy51dGY4KCk7CiAgICAgSmF2YVR5cGUg
amF2YVR5cGUgPSBqYXZhVHlwZUZyb21DbGFzc05hbWUoamF2YUNsYXNzTmFtZS5kYXRhKCkpOwot
ICAgIGp2YWx1ZSByZXN1bHQ7CisgICAgSmF2YVZhbHVlIHJlc3VsdDsKKyAgICByZXN1bHQubV90
eXBlID0gamF2YVR5cGU7CiAgICAgTlBWYXJpYW50VHlwZSB0eXBlID0gdmFsdWUudHlwZTsKIAog
ICAgIHN3aXRjaCAoamF2YVR5cGUpIHsKICAgICBjYXNlIEphdmFUeXBlQXJyYXk6CiAgICAgY2Fz
ZSBKYXZhVHlwZU9iamVjdDoKICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmwgPSBzdGF0
aWNfY2FzdDxqb2JqZWN0PigwKTsKLQotICAgICAgICAgICAgLy8gRmlyc3Qgc2VlIGlmIHdlIGhh
dmUgYSBKYXZhIGluc3RhbmNlLgorICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYSBKYXZh
IGluc3RhbmNlLgogICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmplY3Qp
IHsKICAgICAgICAgICAgICAgICBOUE9iamVjdCogb2JqZWN0SW1wID0gTlBWQVJJQU5UX1RPX09C
SkVDVCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKEphdmFJbnN0YW5jZSogaW5zdGFuY2Ug
PSBFeHRyYWN0SmF2YUluc3RhbmNlKG9iamVjdEltcCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5sID0gaW5zdGFuY2UtPmphdmFJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgIHJlc3Vs
dC5tX29iamVjdFZhbHVlID0gRXh0cmFjdEphdmFJbnN0YW5jZShvYmplY3RJbXApOwogICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAvLyBOb3cg
Y29udmVydCB2YWx1ZSB0byBhIHN0cmluZyBpZiB0aGUgdGFyZ2V0IHR5cGUgaXMgYSBqYXZhLmxh
bmcuc3RyaW5nLCBhbmQgd2UncmUgbm90Ci0gICAgICAgICAgICAvLyBjb252ZXJ0aW5nIGZyb20g
YSBOdWxsLgotICAgICAgICAgICAgaWYgKCFyZXN1bHQubCAmJiAhc3RyY21wKGphdmFDbGFzc05h
bWUuZGF0YSgpLCAiamF2YS5sYW5nLlN0cmluZyIpKSB7CisgICAgY2FzZSBKYXZhVHlwZVN0cmlu
ZzoKKyAgICAgICAgewogI2lmZGVmIENPTlZFUlRfTlVMTF9UT19FTVBUWV9TVFJJTkcKLSAgICAg
ICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX051bGwpIHsKLSAgICAgICAgICAg
ICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKLSAgICAgICAgICAgICAgICAgICAg
amNoYXIgYnVmWzJdOwotICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBl
bnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgYnVmLCAwKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmwgPSBqYXZhU3RyaW5nOwotICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9OdWxsKSB7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm1fdHlwZSA9IEphdmFUeXBlU3RyaW5nOworICAgICAgICAgICAgICAgIHJlc3VsdC5t
X3N0cmluZ1ZhbHVlID0gU3RyaW5nOjpmcm9tVVRGOCgiIik7CisgICAgICAgICAgICB9IGVsc2UK
ICNlbHNlCi0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9TdHJpbmcp
CisgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX1N0cmluZykKICNlbmRpZgot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTlBTdHJpbmcgc3JjID0gTlBW
QVJJQU5UX1RPX1NUUklORyh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52
ID0gZ2V0Sk5JRW52KCk7Ci0gICAgICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YVN0cmluZyA9
IGVudi0+TmV3U3RyaW5nVVRGKHNyYy5VVEY4Q2hhcmFjdGVycyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCFyZXN1bHQubCkKLSAgICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwg
MCwgc2l6ZW9mKGp2YWx1ZSkpOyAvLyBIYW5kbGUgaXQgdGhlIHNhbWUgYXMgYSB2b2lkIGNhc2UK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBOUFN0cmluZyBzcmMgPSBOUFZBUklBTlRf
VE9fU1RSSU5HKHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubV90eXBlID0gSmF2YVR5
cGVTdHJpbmc7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fc3RyaW5nVmFsdWUgPSBTdHJpbmc6
OmZyb21VVEY4KHNyYy5VVEY4Q2hhcmFjdGVycyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9Cb29sKQotICAgICAgICAgICAg
ICAgIHJlc3VsdC56ID0gTlBWQVJJQU5UX1RPX0JPT0xFQU4odmFsdWUpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7
IC8vIGFzIHZvaWQgY2FzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5tX2Jvb2xlYW5WYWx1ZSA9
IE5QVkFSSUFOVF9UT19CT09MRUFOKHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgSmF2YVR5cGVCeXRlOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5iID0gc3Rh
dGljX2Nhc3Q8amJ5dGU+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIHJlc3VsdC5tX2J5dGVWYWx1ZSA9IHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPihOUFZBUklB
TlRfVE9fSU5UMzIodmFsdWUpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJp
YW50VHlwZV9Eb3VibGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmIgPSBzdGF0aWNfY2FzdDxq
Ynl0ZT4oTlBWQVJJQU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1fYnl0ZVZhbHVlID0gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KE5Q
VkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgSmF2YVR5cGVDaGFyOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9
PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5jID0gc3RhdGlj
X2Nhc3Q8Y2hhcj4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQubV9jaGFyVmFsdWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEphdmFUeXBlU2hvcnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICh0eXBlID09IE5QVmFyaWFudFR5cGVfSW50MzIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnMg
PSBzdGF0aWNfY2FzdDxqc2hvcnQ+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5tX3Nob3J0VmFsdWUgPSBzdGF0aWNfY2FzdDxzaG9ydD4oTlBWQVJJ
QU5UX1RPX0lOVDMyKHZhbHVlKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IE5QVmFy
aWFudFR5cGVfRG91YmxlKQotICAgICAgICAgICAgICAgIHJlc3VsdC5zID0gc3RhdGljX2Nhc3Q8
anNob3J0PihOUFZBUklBTlRfVE9fRE9VQkxFKHZhbHVlKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQubV9zaG9ydFZhbHVlID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KE5QVkFS
SUFOVF9UT19ET1VCTEUodmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgSmF2YVR5cGVJbnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh0eXBlID09IE5Q
VmFyaWFudFR5cGVfSW50MzIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmkgPSBzdGF0aWNfY2Fz
dDxqaW50PihOUFZBUklBTlRfVE9fSU5UMzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHQubV9pbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludD4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVl
KSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5pID0gc3RhdGljX2Nhc3Q8amludD4oTlBWQVJJQU5UX1RP
X0RPVUJMRSh2YWx1ZSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1lbXNl
dCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1f
aW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVMb25nOgogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5qID0gc3RhdGljX2Nhc3Q8amxvbmc+KE5QVkFSSUFOVF9UT19J
TlQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX2xvbmdWYWx1ZSA9IHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5qID0gc3RhdGljX2Nhc3Q8amxvbmc+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUp
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwg
c2l6ZW9mKGp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX2xvbmdWYWx1ZSA9IHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4oTlBWQVJJQU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZUZsb2F0OgogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5mID0gc3RhdGljX2Nhc3Q8amZsb2F0PihOUFZBUklBTlRfVE9fSU5UMzIo
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9mbG9hdFZhbHVlID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKLSAgICAgICAgICAgICAgICByZXN1bHQu
ZiA9IHN0YXRpY19jYXN0PGpmbG9hdD4oTlBWQVJJQU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2Yo
anZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fZmxvYXRWYWx1ZSA9IHN0YXRpY19j
YXN0PGZsb2F0PihOUFZBUklBTlRfVE9fRE9VQkxFKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFUeXBlRG91YmxlOgogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJl
c3VsdC5kID0gc3RhdGljX2Nhc3Q8amRvdWJsZT4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7
CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fZG91YmxlVmFsdWUgPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuZCA9IHN0
YXRpY19jYXN0PGpkb3VibGU+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1
ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX2RvdWJsZVZhbHVlID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPihOUFZBUklBTlRfVE9fRE9VQkxFKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEphdmFUeXBlSW52YWxpZDoKICAg
ICBkZWZhdWx0OgotICAgIGNhc2UgSmF2YVR5cGVWb2lkOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOwotICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAKLXZvaWQgY29udmVydEpW
YWx1ZVRvTlBWYXJpYW50KGp2YWx1ZSB2YWx1ZSwgSmF2YVR5cGUgamF2YVR5cGUsIGNvbnN0IGNo
YXIqIGphdmFUeXBlTmFtZSwgTlBWYXJpYW50KiByZXN1bHQpCit2b2lkIGNvbnZlcnRKYXZhVmFs
dWVUb05QVmFyaWFudChKYXZhVmFsdWUgdmFsdWUsIE5QVmFyaWFudCogcmVzdWx0KQogewotICAg
IHN3aXRjaCAoamF2YVR5cGUpIHsKKyAgICBzd2l0Y2ggKHZhbHVlLm1fdHlwZSkgewogICAgIGNh
c2UgSmF2YVR5cGVWb2lkOgogICAgICAgICB7CiAgICAgICAgICAgICBWT0lEX1RPX05QVkFSSUFO
VCgqcmVzdWx0KTsKQEAgLTE4OSw2NiArMTYwLDY4IEBAIHZvaWQgY29udmVydEpWYWx1ZVRvTlBW
YXJpYW50KGp2YWx1ZSB2YWx1ZSwgSmF2YVR5cGUgamF2YVR5cGUsIGNvbnN0IGNoYXIqIGphdmFU
CiAKICAgICBjYXNlIEphdmFUeXBlT2JqZWN0OgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dmFsdWUubCkgewotICAgICAgICAgICAgICAgIGlmICghc3RyY21wKGphdmFUeXBlTmFtZSwgImph
dmEubGFuZy5TdHJpbmciKSkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2ID0g
Z2V0Q2hhcmFjdGVyc0Zyb21KU3RyaW5nKHN0YXRpY19jYXN0PGpzdHJpbmc+KHZhbHVlLmwpKTsK
LSAgICAgICAgICAgICAgICAgICAgLy8gcyBpcyBmcmVlZCBpbiBOUE5fUmVsZWFzZVZhcmlhbnRW
YWx1ZSAoc2VlIG5wcnVudGltZS5jcHApCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHMgPSBzdHJkdXAodik7Ci0gICAgICAgICAgICAgICAgICAgIHJlbGVhc2VDaGFyYWN0ZXJzRm9y
SlN0cmluZyhzdGF0aWNfY2FzdDxqc3RyaW5nPih2YWx1ZS5sKSwgdik7Ci0gICAgICAgICAgICAg
ICAgICAgIFNUUklOR1pfVE9fTlBWQVJJQU5UKHMsICpyZXN1bHQpOwotICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBPQkpFQ1RfVE9fTlBWQVJJQU5UKEphdmFJbnN0
YW5jZVRvTlBPYmplY3QobmV3IEphdmFJbnN0YW5jZSh2YWx1ZS5sKSksICpyZXN1bHQpOwotICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAvLyBJZiB0aGUgSmF2YVZhbHVlIGlzIGEgU3Ry
aW5nIG9iamVjdCwgaXQgc2hvdWxkIGhhdmUgdHlwZSBKYXZhVHlwZVN0cmluZy4KKyAgICAgICAg
ICAgIGlmICh2YWx1ZS5tX29iamVjdFZhbHVlKQorICAgICAgICAgICAgICAgIE9CSkVDVF9UT19O
UFZBUklBTlQoSmF2YUluc3RhbmNlVG9OUE9iamVjdCh2YWx1ZS5tX29iamVjdFZhbHVlLmdldCgp
KSwgKnJlc3VsdCk7CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgVk9JRF9UT19O
UFZBUklBTlQoKnJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IEphdmFUeXBlU3RyaW5nOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiB1dGY4
U3RyaW5nID0gc3RyZHVwKHZhbHVlLm1fc3RyaW5nVmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICAvLyBUaGUgY29waWVkIHN0cmluZyBpcyBmcmVlZCBpbiBOUE5fUmVsZWFzZVZhcmlh
bnRWYWx1ZSAoc2VlIG5wcnVudGltZS5jcHApCisgICAgICAgICAgICBTVFJJTkdaX1RPX05QVkFS
SUFOVCh1dGY4U3RyaW5nLCAqcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKwog
ICAgIGNhc2UgSmF2YVR5cGVCb29sZWFuOgogICAgICAgICB7Ci0gICAgICAgICAgICBCT09MRUFO
X1RPX05QVkFSSUFOVCh2YWx1ZS56LCAqcmVzdWx0KTsKKyAgICAgICAgICAgIEJPT0xFQU5fVE9f
TlBWQVJJQU5UKHZhbHVlLm1fYm9vbGVhblZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVCeXRlOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBJTlQzMl9UT19OUFZBUklBTlQodmFsdWUuYiwgKnJlc3VsdCk7CisgICAgICAgICAgICBJ
TlQzMl9UT19OUFZBUklBTlQodmFsdWUubV9ieXRlVmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZUNoYXI6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIElOVDMyX1RPX05QVkFSSUFOVCh2YWx1ZS5jLCAqcmVzdWx0KTsKKyAgICAgICAg
ICAgIElOVDMyX1RPX05QVkFSSUFOVCh2YWx1ZS5tX2NoYXJWYWx1ZSwgKnJlc3VsdCk7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFUeXBlU2hvcnQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIElOVDMyX1RPX05QVkFSSUFOVCh2YWx1ZS5zLCAqcmVzdWx0KTsKKyAg
ICAgICAgICAgIElOVDMyX1RPX05QVkFSSUFOVCh2YWx1ZS5tX3Nob3J0VmFsdWUsICpyZXN1bHQp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZUludDoKICAg
ICAgICAgewotICAgICAgICAgICAgSU5UMzJfVE9fTlBWQVJJQU5UKHZhbHVlLmksICpyZXN1bHQp
OworICAgICAgICAgICAgSU5UMzJfVE9fTlBWQVJJQU5UKHZhbHVlLm1faW50VmFsdWUsICpyZXN1
bHQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIFRPRE86IENoZWNr
IGlmIGNhc3QgdG8gZG91YmxlIGlzIG5lZWRlZC4KICAgICBjYXNlIEphdmFUeXBlTG9uZzoKICAg
ICAgICAgewotICAgICAgICAgICAgRE9VQkxFX1RPX05QVkFSSUFOVCh2YWx1ZS5qLCAqcmVzdWx0
KTsKKyAgICAgICAgICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFsdWUubV9sb25nVmFsdWUsICpy
ZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZUZs
b2F0OgogICAgICAgICB7Ci0gICAgICAgICAgICBET1VCTEVfVE9fTlBWQVJJQU5UKHZhbHVlLmYs
ICpyZXN1bHQpOworICAgICAgICAgICAgRE9VQkxFX1RPX05QVkFSSUFOVCh2YWx1ZS5tX2Zsb2F0
VmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBK
YXZhVHlwZURvdWJsZToKICAgICAgICAgewotICAgICAgICAgICAgRE9VQkxFX1RPX05QVkFSSUFO
VCh2YWx1ZS5kLCAqcmVzdWx0KTsKKyAgICAgICAgICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFs
dWUubV9kb3VibGVWYWx1ZSwgKnJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAK
QEAgLTI2MSw2ICsyMzQsOTkgQEAgdm9pZCBjb252ZXJ0SlZhbHVlVG9OUFZhcmlhbnQoanZhbHVl
IHZhbHVlLCBKYXZhVHlwZSBqYXZhVHlwZSwgY29uc3QgY2hhciogamF2YVQKICAgICB9CiB9CiAK
K0phdmFWYWx1ZSBqdmFsdWVUb0phdmFWYWx1ZShjb25zdCBqdmFsdWUmIHZhbHVlLCBjb25zdCBK
YXZhVHlwZSYgdHlwZSkKK3sKKyAgICBKYXZhVmFsdWUgcmVzdWx0OworICAgIHJlc3VsdC5tX3R5
cGUgPSB0eXBlOworICAgIHN3aXRjaCAocmVzdWx0Lm1fdHlwZSkgeworICAgIGNhc2UgSmF2YVR5
cGVWb2lkOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlT2JqZWN0OgorICAgICAg
ICByZXN1bHQubV9vYmplY3RWYWx1ZSA9IG5ldyBKYXZhSW5zdGFuY2UodmFsdWUubCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGpzdHJpbmcgamF2YVN0cmluZyA9IHN0YXRpY19jYXN0PGpzdHJpbmc+KHZhbHVlLmwpOwor
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGEgPSBnZXRVQ2hhcmFjdGVyc0Zyb21KU3RyaW5nSW5F
bnYoZ2V0Sk5JRW52KCksIGphdmFTdHJpbmcpOworICAgICAgICAgICAgLy8gV2UgdGFrZSBhIGNv
cHkgdG8gYWxsb3cgdGhlIEphdmEgU3RyaW5nIHRvIGJlIHJlbGVhc2VkLgorICAgICAgICAgICAg
cmVzdWx0Lm1fc3RyaW5nVmFsdWUgPSBTdHJpbmcoYSkudGhyZWFkc2FmZUNvcHkoKTsKKyAgICAg
ICAgICAgIHJlbGVhc2VVQ2hhcmFjdGVyc0ZvckpTdHJpbmdJbkVudihnZXRKTklFbnYoKSwgamF2
YVN0cmluZywgYSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlw
ZUJvb2xlYW46CisgICAgICAgIHJlc3VsdC5tX2Jvb2xlYW5WYWx1ZSA9IHZhbHVlLnogPT0gSk5J
X0ZBTFNFID8gZmFsc2UgOiB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBl
Qnl0ZToKKyAgICAgICAgcmVzdWx0Lm1fYnl0ZVZhbHVlID0gdmFsdWUuYjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBKYXZhVHlwZUNoYXI6CisgICAgICAgIHJlc3VsdC5tX2NoYXJWYWx1ZSA9
IHZhbHVlLmM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVTaG9ydDoKKyAgICAg
ICAgcmVzdWx0Lm1fc2hvcnRWYWx1ZSA9IHZhbHVlLnM7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSmF2YVR5cGVJbnQ6CisgICAgICAgIHJlc3VsdC5tX2ludFZhbHVlID0gdmFsdWUuaTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUxvbmc6CisgICAgICAgIHJlc3VsdC5tX2xv
bmdWYWx1ZSA9IHZhbHVlLmo7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVGbG9h
dDoKKyAgICAgICAgcmVzdWx0Lm1fZmxvYXRWYWx1ZSA9IHZhbHVlLmY7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSmF2YVR5cGVEb3VibGU6CisgICAgICAgIHJlc3VsdC5tX2RvdWJsZVZhbHVl
ID0gdmFsdWUuZDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
KGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworanZhbHVlIGphdmFWYWx1
ZVRvSnZhbHVlKGNvbnN0IEphdmFWYWx1ZSYgdmFsdWUpCit7CisgICAganZhbHVlIHJlc3VsdDsK
KyAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOworICAgIHN3aXRjaCAodmFs
dWUubV90eXBlKSB7CisgICAgY2FzZSBKYXZhVHlwZVZvaWQ6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSmF2YVR5cGVPYmplY3Q6CisgICAgICAgIGlmICh2YWx1ZS5tX29iamVjdFZhbHVlKQor
ICAgICAgICAgICAgcmVzdWx0LmwgPSB2YWx1ZS5tX29iamVjdFZhbHVlLT5qYXZhSW5zdGFuY2Uo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZVN0cmluZzoKKyAgICAgICAgcmVz
dWx0LmwgPSBnZXRKTklFbnYoKS0+TmV3U3RyaW5nKHZhbHVlLm1fc3RyaW5nVmFsdWUuY2hhcmFj
dGVycygpLCB2YWx1ZS5tX3N0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBKYXZhVHlwZUJvb2xlYW46CisgICAgICAgIHJlc3VsdC56ID0gdmFsdWUubV9ib29s
ZWFuVmFsdWUgPyBKTklfVFJVRSA6IEpOSV9GQUxTRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBKYXZhVHlwZUJ5dGU6CisgICAgICAgIHJlc3VsdC5iID0gdmFsdWUubV9ieXRlVmFsdWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVDaGFyOgorICAgICAgICByZXN1bHQuYyA9
IHZhbHVlLm1fY2hhclZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlU2hv
cnQ6CisgICAgICAgIHJlc3VsdC5zID0gdmFsdWUubV9zaG9ydFZhbHVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEphdmFUeXBlSW50OgorICAgICAgICByZXN1bHQuaSA9IHZhbHVlLm1faW50
VmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVMb25nOgorICAgICAgICBy
ZXN1bHQuaiA9IHZhbHVlLm1fbG9uZ1ZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEph
dmFUeXBlRmxvYXQ6CisgICAgICAgIHJlc3VsdC5mID0gdmFsdWUubV9mbG9hdFZhbHVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlRG91YmxlOgorICAgICAgICByZXN1bHQuZCA9
IHZhbHVlLm1fZG91YmxlVmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVChmYWxzZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEJpbmRpbmdzCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5oCmluZGV4IDc5MTU5Mzk2MzNl
N2E4NzgxZmY1MzExMTY5NWY3ZDE3ZTc4YWVmZmIuLjAyODI5MDQ3OWUxNmY4MTAyODJiOWNmMzE5
NTVjNWU4NDQ5ODc5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgv
Sk5JVXRpbGl0eVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0pO
SVV0aWxpdHlQcml2YXRlLmgKQEAgLTM2LDggKzM2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBu
YW1lc3BhY2UgQmluZGluZ3MgewogCi1qdmFsdWUgY29udmVydE5QVmFyaWFudFRvSlZhbHVlKE5Q
VmFyaWFudCwgY29uc3QgV1RGOjpTdHJpbmcmIGphdmFDbGFzcyk7Ci12b2lkIGNvbnZlcnRKVmFs
dWVUb05QVmFyaWFudChqdmFsdWUsIEphdmFUeXBlLCBjb25zdCBjaGFyKiBqYXZhQ2xhc3NOYW1l
LCBOUFZhcmlhbnQqKTsKK2NsYXNzIEphdmFWYWx1ZTsKKworSmF2YVZhbHVlIGNvbnZlcnROUFZh
cmlhbnRUb0phdmFWYWx1ZShOUFZhcmlhbnQsIGNvbnN0IFN0cmluZyYgamF2YUNsYXNzKTsKK3Zv
aWQgY29udmVydEphdmFWYWx1ZVRvTlBWYXJpYW50KEphdmFWYWx1ZSwgTlBWYXJpYW50Kik7CisK
K0phdmFWYWx1ZSBqdmFsdWVUb0phdmFWYWx1ZShjb25zdCBqdmFsdWUmLCBjb25zdCBKYXZhVHlw
ZSYpOworanZhbHVlIGphdmFWYWx1ZVRvSnZhbHVlKGNvbnN0IEphdmFWYWx1ZSYpOwogCiB9IC8v
IG5hbWVzcGFjZSBCaW5kaW5ncwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL3Y4L0phdmFOUE9iamVjdFY4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgv
SmF2YU5QT2JqZWN0VjguY3BwCmluZGV4IDA5MTc0MDcyOGJkZmYzMzFjNGEyYzZiMzIzMWJjM2Rl
NjViMzBiZDkuLmE4MGViYmI0NzNlMDFkYzUzMjY1NGM2YmRlNTk3OTdkZWJkYzdjZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YU5QT2JqZWN0VjguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YU5QT2JqZWN0VjguY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSmF2YUZpZWxkVjguaCIKICNpbmNsdWRlICJKYXZhSW5z
dGFuY2VWOC5oIgogI2luY2x1ZGUgIkphdmFNZXRob2QuaCIKKyNpbmNsdWRlICJKYXZhVmFsdWVW
OC5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
MTQ0LDE0ICsxNDUsMTQgQEAgYm9vbCBKYXZhTlBPYmplY3RJbnZva2UoTlBPYmplY3QqIG9iaiwg
TlBJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5QVmFyaWFudCoKICAgICAgICAgakFyZ3Mg
PSBzdGF0aWNfY2FzdDxqdmFsdWUqPihtYWxsb2MoYXJnQ291bnQgKiBzaXplb2YoanZhbHVlKSkp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBhcmdDb3VudDsgaSsrKQotICAg
ICAgICBqQXJnc1tpXSA9IGNvbnZlcnROUFZhcmlhbnRUb0pWYWx1ZShhcmdzW2ldLCBqTWV0aG9k
LT5wYXJhbWV0ZXJBdChpKSk7CisgICAgICAgIGpBcmdzW2ldID0gamF2YVZhbHVlVG9KdmFsdWUo
Y29udmVydE5QVmFyaWFudFRvSmF2YVZhbHVlKGFyZ3NbaV0sIGpNZXRob2QtPnBhcmFtZXRlckF0
KGkpKSk7CiAKICAgICBqdmFsdWUgalJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VNZXRob2Qoak1l
dGhvZCwgakFyZ3MpOwogICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICBmcmVlKGpBcmdzKTsKIAog
ICAgIFZPSURfVE9fTlBWQVJJQU5UKCpyZXN1bHQpOwotICAgIGNvbnZlcnRKVmFsdWVUb05QVmFy
aWFudChqUmVzdWx0LCBqTWV0aG9kLT5yZXR1cm5UeXBlKCksIGpNZXRob2QtPnJldHVyblR5cGVD
bGFzc05hbWUoKSwgcmVzdWx0KTsKKyAgICBjb252ZXJ0SmF2YVZhbHVlVG9OUFZhcmlhbnQoanZh
bHVlVG9KYXZhVmFsdWUoalJlc3VsdCwgak1ldGhvZC0+cmV0dXJuVHlwZSgpKSwgcmVzdWx0KTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3IEBAIGJvb2wgSmF2YU5QT2Jq
ZWN0R2V0UHJvcGVydHkoTlBPYmplY3QqIG9iaiwgTlBJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5Q
VmFyaWFudCoKICAgICBqdmFsdWUgdmFsdWUgPSBpbnN0YW5jZS0+Z2V0RmllbGQoZmllbGQpOwog
ICAgIGluc3RhbmNlLT5lbmQoKTsKIAotICAgIGNvbnZlcnRKVmFsdWVUb05QVmFyaWFudCh2YWx1
ZSwgZmllbGQtPnR5cGUoKSwgZmllbGQtPnR5cGVDbGFzc05hbWUoKSwgcmVzdWx0KTsKKyAgICBj
b252ZXJ0SmF2YVZhbHVlVG9OUFZhcmlhbnQoanZhbHVlVG9KYXZhVmFsdWUodmFsdWUsIGZpZWxk
LT50eXBlKCkpLCByZXN1bHQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFWYWx1ZVY4LmggYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL3Y4L0phdmFWYWx1ZVY4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI4NWM1MTMzMDUyMTM4
ODA2OThkZGRjMzY1NmJmZmQ0Njc3NzE2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvdjgvSmF2YVZhbHVlVjguaApAQCAtMCwwICsxLDc0IEBACisvKgorICog
Q29weXJpZ2h0IDIwMTEsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEphdmFWYWx1ZVY4X2gKKyNkZWZpbmUgSmF2YVZhbHVlVjhfaAorCisjaWYgRU5BQkxF
KEpBVkFfQlJJREdFKQorCisjaW5jbHVkZSAiSmF2YUluc3RhbmNlVjguaCIKKyNpbmNsdWRlICJK
YXZhVHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCisvLyBBIHZhcmlhbnQgdXNlZCB0byBy
ZXByZXNlbnQgYSBKYXZhIHZhbHVlLCBhbG1vc3QgaWRlbnRpY2FsIHRvIHRoZSBKTkkKKy8vIGp2
YWx1ZSB0eXBlLiBJdCBleGlzdHMgYmVjYXVzZSB0aGUgbG9naWMgdG8gY29udmVydCBiZXR3ZWVu
IEphdmFTY3JpcHQKKy8vIG9iamVjdHMgKGFzIEphdmFOUE9iamVjdCBvciBKU1ZhbHVlKSBhbmQg
SmF2YSBvYmplY3RzIHNob3VsZCBub3QgZGVwZW5kIHVwb24KKy8vIEpOSSwgdG8gYWxsb3cgcG9y
dHMgdG8gcHJvdmlkZSBhIEphdmFJbnN0YW5jZSBvYmplY3QgZXRjIHdoaWNoIGRvZXMgbm90IHVz
ZQorLy8gSk5JLiBUaGlzIG1lYW5zIHRoYXQgdGhlICdvYmplY3QnIGZpZWxkIG9mIHRoaXMgdmFy
aWFudCB1c2VzIEphdmFJbnN0YW5jZSwKKy8vIG5vdCBqb2JqZWN0LgorLy8KKy8vIE5vdGUgdGhh
dCB0aGlzIGNsYXNzIGlzIGluZGVwZW5kZW50IG9mIHRoZSBKYXZhU2NyaXB0IGVuZ2luZSwgYnV0
IGlzCisvLyBjdXJyZW50bHkgdXNlZCBvbmx5IHdpdGggVjguCisvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDIzLgorc3RydWN0IEphdmFWYWx1ZSB7Cisg
ICAgSmF2YVZhbHVlKCkgOiBtX3R5cGUoSmF2YVR5cGVJbnZhbGlkKSB7fQorCisgICAgSmF2YVR5
cGUgbV90eXBlOworICAgIC8vIFdlIGRvbid0IHVzZSBhIHVuaW9uIGJlY2F1c2Ugd2Ugd2FudCB0
byBiZSBhYmxlIHRvIHJlZi1jb3VudCBzb21lIG9mIHRoZQorICAgIC8vIHZhbHVlcy4gVGhpcyBy
ZXF1aXJlcyB0eXBlcyB3aXRoIG5vbi10cml2aWFsIGNvbnN0cnVjdG9ycy4KKyAgICBSZWZQdHI8
SmF2YUluc3RhbmNlPiBtX29iamVjdFZhbHVlOworICAgIGJvb2wgbV9ib29sZWFuVmFsdWU7Cisg
ICAgc2lnbmVkIGNoYXIgbV9ieXRlVmFsdWU7CisgICAgdW5zaWduZWQgc2hvcnQgbV9jaGFyVmFs
dWU7CisgICAgc2hvcnQgbV9zaG9ydFZhbHVlOworICAgIGludCBtX2ludFZhbHVlOworICAgIGxv
bmcgbG9uZyBtX2xvbmdWYWx1ZTsKKyAgICBmbG9hdCBtX2Zsb2F0VmFsdWU7CisgICAgZG91Ymxl
IG1fZG91YmxlVmFsdWU7CisgICAgU3RyaW5nIG1fc3RyaW5nVmFsdWU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShKQVZBX0JSSURHRSkKKworI2VuZGlmIC8vIEphdmFWYWx1ZVY4X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86935</attachid>
            <date>2011-03-25 07:33:50 -0700</date>
            <delta_ts>2011-03-28 22:41:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57022-20110325143348.patch</filename>
            <type>text/plain</type>
            <size>23998</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjBmMmY4YzAzMGI2ZTI1
ZGRiOGFjODYzMzk0NzM0ZThhNWE2Mjc4Li45YWI4M2U5Y2YxYTY1MWQ2MDJjYjljOTNmY2MwN2Nj
ZDEwNjU1YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDMtMjUgIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBKYXZhVmFsdWUgdG8gdHlwZSB0byBy
ZXByZXNlbnQgYSBKYXZhIHZhbHVlIGluIHRoZSBKYXZhIGJyaWRnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMjIKKworICAgICAgICBUaGlzIGNo
YW5nZSBpbnRyb2R1Y2VzIGEgbmV3IEphdmFWYWx1ZSB0eXBlIGFuZCB1c2VzIGl0IGluIHBsYWNl
IG9mIGp2YWx1ZQorICAgICAgICBpbiB0aGUgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gSmF2YU5Q
T2JqZWN0IHVzZWQgaW4gdGhlIFY4IEphdmEgYnJpZGdlLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IG9ubHksIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBicmlkZ2Uvam5pL0pOSVV0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6amF2
YVR5cGVGcm9tQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnNpZ25hdHVyZUZy
b21KYXZhVHlwZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpnZXRKTklGaWVsZCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsSk5JTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2Uvam5p
L0phdmFUeXBlLmg6CisgICAgICAgICogYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0TlBWYXJpYW50VG9KYXZhVmFsdWUp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydEphdmFWYWx1ZVRvTlBWYXJpYW50KToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Omp2YWx1ZVRvSmF2YVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmphdmFWYWx1ZVRvSnZhbHVlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4
L0pOSVV0aWxpdHlQcml2YXRlLmg6CisgICAgICAgICogYnJpZGdlL2puaS92OC9KYXZhTlBPYmpl
Y3RWOC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTlBPYmplY3RJbnZva2UpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YU5QT2JqZWN0R2V0UHJvcGVydHkpOgorICAgICAg
ICAqIGJyaWRnZS9qbmkvdjgvSmF2YVZhbHVlVjguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpKYXZhVmFsdWU6OkphdmFWYWx1ZSk6CisKIDIwMTEtMDMtMjQgIEJlbmphbWluIFBv
dWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE5M2E5YTVkODU4ODQzMDA4ZDgz
ODMzMDg2NmUwMGQ5YTFlNTAwOGYuLmVjMzg0Y2I2MDY1NzJlYzQ3YjM1MTRjNGVmNGM2MmE1OTYw
NmQ2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAgICAgICAgICAg
ICAnYnJpZGdlL2puaS92OC9KYXZhTlBPYmplY3RWOC5jcHAnLAogICAgICAgICAgICAgJ2JyaWRn
ZS9qbmkvdjgvSmF2YU5QT2JqZWN0VjguaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9K
YXZhU3RyaW5nVjguaCcsCisgICAgICAgICAgICAnYnJpZGdlL2puaS92OC9KYXZhVmFsdWVWOC5o
JywKICAgICAgICAgICAgICdicmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAnLAogICAgICAgICAgICAg
J2JyaWRnZS9ucHJ1bnRpbWUuY3BwJywKICAgICAgICAgICAgICdicmlkZ2UvbnBydW50aW1lX3By
aXYuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0pOSVV0aWxpdHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklVdGlsaXR5LmNwcAppbmRleCBjMWYx
Yjk0MWUwOGI3YTFlOTc5NGI5ZTZkMDg4ZGFiMTdmYjRiNDVjLi5jZmQ0ZTgzZjcxNTA3ZTMxOGU5
OGMwYmYzYzYwZTZkZDNjYWQ1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL0pOSVV0aWxpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSk5JVXRp
bGl0eS5jcHAKQEAgLTE5MCw2ICsxOTAsMTAgQEAgSmF2YVR5cGUgamF2YVR5cGVGcm9tQ2xhc3NO
YW1lKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIHR5cGUgPSBKYXZhVHlwZVZvaWQ7CiAgICAg
ZWxzZSBpZiAoJ1snID09IG5hbWVbMF0pCiAgICAgICAgIHR5cGUgPSBKYXZhVHlwZUFycmF5Owor
I2lmIFVTRShWOCkKKyAgICBlbHNlIGlmICghc3RyY21wKCJqYXZhLmxhbmcuU3RyaW5nIiwgbmFt
ZSkpCisgICAgICAgIHR5cGUgPSBKYXZhVHlwZVN0cmluZzsKKyNlbmRpZgogICAgIGVsc2UKICAg
ICAgICAgdHlwZSA9IEphdmFUeXBlT2JqZWN0OwogCkBAIC0yMDYsNiArMjEwLDkgQEAgY29uc3Qg
Y2hhciogc2lnbmF0dXJlRnJvbUphdmFUeXBlKEphdmFUeXBlIHR5cGUpCiAgICAgICAgIHJldHVy
biAiWyI7CiAKICAgICBjYXNlIEphdmFUeXBlT2JqZWN0OgorI2lmIFVTRShWOCkKKyAgICBjYXNl
IEphdmFUeXBlU3RyaW5nOgorI2VuZGlmCiAgICAgICAgIHJldHVybiAiTCI7CiAKICAgICBjYXNl
IEphdmFUeXBlQm9vbGVhbjoKQEAgLTI5Niw2ICszMDMsOSBAQCBqdmFsdWUgZ2V0Sk5JRmllbGQo
am9iamVjdCBvYmosIEphdmFUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIq
IHNpZwogICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgICAgIGNh
c2UgSmF2YVR5cGVBcnJheToKICAgICAgICAgICAgICAgICBjYXNlIEphdmFUeXBlT2JqZWN0Ogor
I2lmIFVTRShWOCkKKyAgICAgICAgICAgICAgICBjYXNlIEphdmFUeXBlU3RyaW5nOgorI2VuZGlm
CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gZW52LT5mdW5jdGlvbnMtPkdldE9iamVj
dEZpZWxkKGVudiwgb2JqLCBmaWVsZCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgSmF2YVR5cGVCb29sZWFuOgpAQCAtMzQ5LDYgKzM1OSw5IEBAIGp2
YWx1ZSBjYWxsSk5JTWV0aG9kKGpvYmplY3Qgb2JqZWN0LCBKYXZhVHlwZSByZXR1cm5UeXBlLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zCiAgICAgICAgIGNhbGxKTklNZXRob2RJREE8dm9pZD4ob2Jq
ZWN0LCBtZXRob2RJZCwgYXJncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSmF2YVR5cGVP
YmplY3Q6CisjaWYgVVNFKFY4KQorICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CisjZW5kaWYKICAg
ICAgICAgcmVzdWx0LmwgPSBjYWxsSk5JTWV0aG9kSURBPGpvYmplY3Q+KG9iamVjdCwgbWV0aG9k
SWQsIGFyZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVR5cGUuaAppbmRleCA0YzlhYmUxMjc1OTRkODU5OTdmYTE3
MDJmNGRiNGExZmRjZWU0NDU4Li4xNzA1M2ZiMTI3ZWY1NjgyN2MzMTU0NjdiY2JkMDRhYjUyYmE4
NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhVHlwZS5oCkBAIC01Miw3ICs1MiwyMSBA
QCBlbnVtIEphdmFUeXBlIHsKICAgICBKYXZhVHlwZUxvbmcsCiAgICAgSmF2YVR5cGVGbG9hdCwK
ICAgICBKYXZhVHlwZURvdWJsZSwKLSAgICBKYXZhVHlwZUFycmF5CisgICAgSmF2YVR5cGVBcnJh
eSwKKyNpZiBVU0UoVjgpCisgICAgLy8gSmF2YVR5cGVTdHJpbmcgaXMgZGlzdGluY3QgZnJvbSBK
YXZhVHlwZU9iamVjdCBiZWNhdXNlIHN0cmluZ3MgcmVjZWl2ZQorICAgIC8vIHNwZWNpYWwgaGFu
ZGxpbmcgd2hlbiB3ZSBjb252ZXJ0IHRvIGFuZCBmcm9tIEphdmFTY3JpcHQuIFdoZW4gY2FsbGlu
ZworICAgIC8vIEphdmEgbWV0aG9kcywgd2UgbXVzdCBjcmVhdGUgSmF2YSBTdHJpbmcgb2JqZWN0
cyBmb3Igc3RyaW5nIGFyZ3VtZW50cy4KKyAgICAvLyBIb3dldmVyLCBhdCBjb252ZXJzaW9uIHRp
bWUgd2UgY2Fubm90IGFzc3VtZSB0aGF0IHRoZSBtZWNoYW5pc20gdXNlZCB0bworICAgIC8vIGlu
dGVyYWN0IHdpdGggSmF2YSBpcyBKTkkuIEluc3RlYWQgd2UgdXNlIGEgc3BlY2lhbCBKYXZhVHlw
ZVN0cmluZy4KKyAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgSmF2YUluc3RhbmNlIHdoaWNoIHVz
ZSBKTkkgd2lsbCBjcmVhdGUgYSBKYXZhIFN0cmluZworICAgIC8vIG9iamVjdCB3aGVuIGNvbnZl
cnRpbmcgdGhlIEphdmFWYWx1ZSB0byBhIGp2YWx1ZS4KKyAgICAvLworICAgIC8vIE5vdGUgdGhh
dCB0aGlzIHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIEphdmFTY3JpcHQgZW5naW5lLCBidXQg
aXMKKyAgICAvLyBjdXJyZW50bHkgdXNlZCBvbmx5IHdpdGggVjguCisgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAyMy4KKyAgICBKYXZhVHlwZVN0
cmluZywKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAKaW5kZXggNDY5
NGMzOGUyMTAxYjA4NDExMGM5ODdmYzgwZjA4OGNjNmIzOTczMS4uODg5MDJhNTgwZmM2ODk3ZjEz
NDMwNmY1MjZlYjM1ZmMyNjhkNDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAKQEAgLTMwLDE1NyArMzAsMTI4IEBACiAKICNp
bmNsdWRlICJKYXZhSW5zdGFuY2VWOC5oIgogI2luY2x1ZGUgIkphdmFOUE9iamVjdFY4LmgiCisj
aW5jbHVkZSAiSmF2YVZhbHVlVjguaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi1qdmFsdWUgY29udmVy
dE5QVmFyaWFudFRvSlZhbHVlKE5QVmFyaWFudCB2YWx1ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGph
dmFDbGFzcykKK0phdmFWYWx1ZSBjb252ZXJ0TlBWYXJpYW50VG9KYXZhVmFsdWUoTlBWYXJpYW50
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGphdmFDbGFzcykKIHsKICAgICBDU3RyaW5nIGphdmFDbGFz
c05hbWUgPSBqYXZhQ2xhc3MudXRmOCgpOwogICAgIEphdmFUeXBlIGphdmFUeXBlID0gamF2YVR5
cGVGcm9tQ2xhc3NOYW1lKGphdmFDbGFzc05hbWUuZGF0YSgpKTsKLSAgICBqdmFsdWUgcmVzdWx0
OworICAgIEphdmFWYWx1ZSByZXN1bHQ7CisgICAgcmVzdWx0Lm1fdHlwZSA9IGphdmFUeXBlOwog
ICAgIE5QVmFyaWFudFR5cGUgdHlwZSA9IHZhbHVlLnR5cGU7CiAKICAgICBzd2l0Y2ggKGphdmFU
eXBlKSB7CiAgICAgY2FzZSBKYXZhVHlwZUFycmF5OgogICAgIGNhc2UgSmF2YVR5cGVPYmplY3Q6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5sID0gc3RhdGljX2Nhc3Q8am9iamVjdD4o
MCk7Ci0KLSAgICAgICAgICAgIC8vIEZpcnN0IHNlZSBpZiB3ZSBoYXZlIGEgSmF2YSBpbnN0YW5j
ZS4KKyAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGEgSmF2YSBpbnN0YW5jZS4KICAgICAg
ICAgICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7CiAgICAgICAgICAgICAg
ICAgTlBPYmplY3QqIG9iamVjdEltcCA9IE5QVkFSSUFOVF9UT19PQkpFQ1QodmFsdWUpOwotICAg
ICAgICAgICAgICAgIGlmIChKYXZhSW5zdGFuY2UqIGluc3RhbmNlID0gRXh0cmFjdEphdmFJbnN0
YW5jZShvYmplY3RJbXApKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGluc3RhbmNl
LT5qYXZhSW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9vYmplY3RWYWx1ZSA9
IEV4dHJhY3RKYXZhSW5zdGFuY2Uob2JqZWN0SW1wKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgLy8gTm93IGNvbnZlcnQgdmFsdWUgdG8g
YSBzdHJpbmcgaWYgdGhlIHRhcmdldCB0eXBlIGlzIGEgamF2YS5sYW5nLnN0cmluZywgYW5kIHdl
J3JlIG5vdAotICAgICAgICAgICAgLy8gY29udmVydGluZyBmcm9tIGEgTnVsbC4KLSAgICAgICAg
ICAgIGlmICghcmVzdWx0LmwgJiYgIXN0cmNtcChqYXZhQ2xhc3NOYW1lLmRhdGEoKSwgImphdmEu
bGFuZy5TdHJpbmciKSkgeworICAgIGNhc2UgSmF2YVR5cGVTdHJpbmc6CisgICAgICAgIHsKICNp
ZmRlZiBDT05WRVJUX05VTExfVE9fRU1QVFlfU1RSSU5HCi0gICAgICAgICAgICAgICAgaWYgKHR5
cGUgPT0gTlBWYXJpYW50VHlwZV9OdWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpOSUVudiog
ZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAgICAgICAgICAgICAgICAgIGpjaGFyIGJ1ZlsyXTsKLSAg
ICAgICAgICAgICAgICAgICAgam9iamVjdCBqYXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5l
d1N0cmluZyhlbnYsIGJ1ZiwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2
YVN0cmluZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGlmICh0eXBlID09
IE5QVmFyaWFudFR5cGVfTnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5tX3R5cGUgPSBK
YXZhVHlwZVN0cmluZzsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9zdHJpbmdWYWx1ZSA9IFN0
cmluZzo6ZnJvbVVURjgoIiIpOworICAgICAgICAgICAgfSBlbHNlCiAjZWxzZQotICAgICAgICAg
ICAgICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfU3RyaW5nKQorICAgICAgICAgICAgaWYg
KHR5cGUgPT0gTlBWYXJpYW50VHlwZV9TdHJpbmcpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIE5QU3RyaW5nIHNyYyA9IE5QVkFSSUFOVF9UT19TVFJJTkco
dmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigpOwot
ICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBlbnYtPk5ld1N0cmluZ1VU
RihzcmMuVVRGOENoYXJhY3RlcnMpOwotICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGph
dmFTdHJpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmICghcmVz
dWx0LmwpCi0gICAgICAgICAgICAgICAgbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUp
KTsgLy8gSGFuZGxlIGl0IHRoZSBzYW1lIGFzIGEgdm9pZCBjYXNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgTlBTdHJpbmcgc3JjID0gTlBWQVJJQU5UX1RPX1NUUklORyh2YWx1ZSk7
CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IEphdmFUeXBlU3RyaW5nOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5tX3N0cmluZ1ZhbHVlID0gU3RyaW5nOjpmcm9tVVRGOChzcmMuVVRG
OENoYXJhY3RlcnMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBKYXZhVHlwZUJvb2xlYW46CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh0
eXBlID09IE5QVmFyaWFudFR5cGVfQm9vbCkKLSAgICAgICAgICAgICAgICByZXN1bHQueiA9IE5Q
VkFSSUFOVF9UT19CT09MRUFOKHZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOyAvLyBhcyB2b2lkIGNhc2UK
KyAgICAgICAgICAgICAgICByZXN1bHQubV9ib29sZWFuVmFsdWUgPSBOUFZBUklBTlRfVE9fQk9P
TEVBTih2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFU
eXBlQnl0ZToKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlw
ZV9JbnQzMikKLSAgICAgICAgICAgICAgICByZXN1bHQuYiA9IHN0YXRpY19jYXN0PGpieXRlPihO
UFZBUklBTlRfVE9fSU5UMzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9ieXRl
VmFsdWUgPSBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVl
KSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfRG91YmxlKQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5iID0gc3RhdGljX2Nhc3Q8amJ5dGU+KE5QVkFSSUFOVF9U
T19ET1VCTEUodmFsdWUpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtZW1z
ZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5t
X2J5dGVWYWx1ZSA9IHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPihOUFZBUklBTlRfVE9fRE9VQkxF
KHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFUeXBl
Q2hhcjoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9J
bnQzMikKLSAgICAgICAgICAgICAgICByZXN1bHQuYyA9IHN0YXRpY19jYXN0PGNoYXI+KE5QVkFS
SUFOVF9UT19JTlQzMih2YWx1ZSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0Lm1fY2hhclZhbHVlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KE5QVkFSSUFOVF9U
T19JTlQzMih2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBK
YXZhVHlwZVNob3J0OgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlh
bnRUeXBlX0ludDMyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5zID0gc3RhdGljX2Nhc3Q8anNo
b3J0PihOUFZBUklBTlRfVE9fSU5UMzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQu
bV9zaG9ydFZhbHVlID0gc3RhdGljX2Nhc3Q8c2hvcnQ+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1
ZSkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkK
LSAgICAgICAgICAgICAgICByZXN1bHQucyA9IHN0YXRpY19jYXN0PGpzaG9ydD4oTlBWQVJJQU5U
X1RPX0RPVUJMRSh2YWx1ZSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1l
bXNldCgmcmVzdWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0
Lm1fc2hvcnRWYWx1ZSA9IHN0YXRpY19jYXN0PHNob3J0PihOUFZBUklBTlRfVE9fRE9VQkxFKHZh
bHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFUeXBlSW50
OgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0ludDMy
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5pID0gc3RhdGljX2Nhc3Q8amludD4oTlBWQVJJQU5U
X1RPX0lOVDMyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1faW50VmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQ+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOwogICAgICAgICAgICAg
ZWxzZSBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQuaSA9IHN0YXRpY19jYXN0PGppbnQ+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6
ZW9mKGp2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5tX2ludFZhbHVlID0gc3RhdGlj
X2Nhc3Q8aW50PihOUFZBUklBTlRfVE9fRE9VQkxFKHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEphdmFUeXBlTG9uZzoKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9JbnQzMikKLSAgICAgICAgICAgICAgICByZXN1
bHQuaiA9IHN0YXRpY19jYXN0PGpsb25nPihOUFZBUklBTlRfVE9fSU5UMzIodmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQubV9sb25nVmFsdWUgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuaiA9IHN0YXRp
Y19jYXN0PGpsb25nPihOUFZBUklBTlRfVE9fRE9VQkxFKHZhbHVlKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQubV9sb25nVmFsdWUgPSBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgSmF2YVR5cGVGbG9hdDoKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KHR5cGUgPT0gTlBWYXJpYW50VHlwZV9JbnQzMikKLSAgICAgICAgICAgICAgICByZXN1bHQuZiA9
IHN0YXRpY19jYXN0PGpmbG9hdD4oTlBWQVJJQU5UX1RPX0lOVDMyKHZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1fZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihOUFZBUklB
TlRfVE9fSU5UMzIodmFsdWUpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJp
YW50VHlwZV9Eb3VibGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmYgPSBzdGF0aWNfY2FzdDxq
ZmxvYXQ+KE5QVkFSSUFOVF9UT19ET1VCTEUodmFsdWUpKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKGp2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5tX2Zsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oTlBWQVJJ
QU5UX1RPX0RPVUJMRSh2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBKYXZhVHlwZURvdWJsZToKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHR5cGUgPT0g
TlBWYXJpYW50VHlwZV9JbnQzMikKLSAgICAgICAgICAgICAgICByZXN1bHQuZCA9IHN0YXRpY19j
YXN0PGpkb3VibGU+KE5QVkFSSUFOVF9UT19JTlQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5tX2RvdWJsZVZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihOUFZBUklBTlRfVE9f
SU5UMzIodmFsdWUpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlw
ZV9Eb3VibGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmQgPSBzdGF0aWNfY2FzdDxqZG91Ymxl
PihOUFZBUklBTlRfVE9fRE9VQkxFKHZhbHVlKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQubV9kb3VibGVWYWx1ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oTlBWQVJJQU5U
X1RPX0RPVUJMRSh2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBKYXZhVHlwZUludmFsaWQ6CiAgICAgZGVmYXVsdDoKLSAgICBj
YXNlIEphdmFUeXBlVm9pZDoKLSAgICAgICAgewotICAgICAgICAgICAgbWVtc2V0KCZyZXN1bHQs
IDAsIHNpemVvZihqdmFsdWUpKTsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCi12b2lkIGNvbnZlcnRKVmFsdWVUb05QVmFyaWFudChq
dmFsdWUgdmFsdWUsIEphdmFUeXBlIGphdmFUeXBlLCBjb25zdCBjaGFyKiBqYXZhVHlwZU5hbWUs
IE5QVmFyaWFudCogcmVzdWx0KQordm9pZCBjb252ZXJ0SmF2YVZhbHVlVG9OUFZhcmlhbnQoSmF2
YVZhbHVlIHZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICBzd2l0Y2ggKGphdmFUeXBl
KSB7CisgICAgc3dpdGNoICh2YWx1ZS5tX3R5cGUpIHsKICAgICBjYXNlIEphdmFUeXBlVm9pZDoK
ICAgICAgICAgewogICAgICAgICAgICAgVk9JRF9UT19OUFZBUklBTlQoKnJlc3VsdCk7CkBAIC0x
ODksNjYgKzE2MCw2OCBAQCB2b2lkIGNvbnZlcnRKVmFsdWVUb05QVmFyaWFudChqdmFsdWUgdmFs
dWUsIEphdmFUeXBlIGphdmFUeXBlLCBjb25zdCBjaGFyKiBqYXZhVAogCiAgICAgY2FzZSBKYXZh
VHlwZU9iamVjdDoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHZhbHVlLmwpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIXN0cmNtcChqYXZhVHlwZU5hbWUsICJqYXZhLmxhbmcuU3RyaW5nIikp
IHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdiA9IGdldENoYXJhY3RlcnNGcm9t
SlN0cmluZyhzdGF0aWNfY2FzdDxqc3RyaW5nPih2YWx1ZS5sKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIHMgaXMgZnJlZWQgaW4gTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKHNlZSBucHJ1bnRp
bWUuY3BwKQotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzID0gc3RyZHVwKHYpOwot
ICAgICAgICAgICAgICAgICAgICByZWxlYXNlQ2hhcmFjdGVyc0ZvckpTdHJpbmcoc3RhdGljX2Nh
c3Q8anN0cmluZz4odmFsdWUubCksIHYpOwotICAgICAgICAgICAgICAgICAgICBTVFJJTkdaX1RP
X05QVkFSSUFOVChzLCAqcmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgT0JKRUNUX1RPX05QVkFSSUFOVChKYXZhSW5zdGFuY2VUb05QT2JqZWN0KG5l
dyBKYXZhSW5zdGFuY2UodmFsdWUubCkpLCAqcmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgLy8gSWYgdGhlIEphdmFWYWx1ZSBpcyBhIFN0cmluZyBvYmplY3QsIGl0IHNo
b3VsZCBoYXZlIHR5cGUgSmF2YVR5cGVTdHJpbmcuCisgICAgICAgICAgICBpZiAodmFsdWUubV9v
YmplY3RWYWx1ZSkKKyAgICAgICAgICAgICAgICBPQkpFQ1RfVE9fTlBWQVJJQU5UKEphdmFJbnN0
YW5jZVRvTlBPYmplY3QodmFsdWUubV9vYmplY3RWYWx1ZS5nZXQoKSksICpyZXN1bHQpOworICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIFZPSURfVE9fTlBWQVJJQU5UKCpyZXN1bHQp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBKYXZhVHlwZVN0cmluZzoK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgY2hhciogdXRmOFN0cmluZyA9IHN0cmR1cCh2
YWx1ZS5tX3N0cmluZ1ZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgLy8gVGhlIGNv
cGllZCBzdHJpbmcgaXMgZnJlZWQgaW4gTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUgKHNlZSBucHJ1
bnRpbWUuY3BwKQorICAgICAgICAgICAgU1RSSU5HWl9UT19OUFZBUklBTlQodXRmOFN0cmluZywg
KnJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEphdmFUeXBl
Qm9vbGVhbjoKICAgICAgICAgewotICAgICAgICAgICAgQk9PTEVBTl9UT19OUFZBUklBTlQodmFs
dWUueiwgKnJlc3VsdCk7CisgICAgICAgICAgICBCT09MRUFOX1RPX05QVkFSSUFOVCh2YWx1ZS5t
X2Jvb2xlYW5WYWx1ZSwgKnJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEphdmFUeXBlQnl0ZToKICAgICAgICAgewotICAgICAgICAgICAgSU5UMzJfVE9fTlBW
QVJJQU5UKHZhbHVlLmIsICpyZXN1bHQpOworICAgICAgICAgICAgSU5UMzJfVE9fTlBWQVJJQU5U
KHZhbHVlLm1fYnl0ZVZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgSmF2YVR5cGVDaGFyOgogICAgICAgICB7Ci0gICAgICAgICAgICBJTlQzMl9U
T19OUFZBUklBTlQodmFsdWUuYywgKnJlc3VsdCk7CisgICAgICAgICAgICBJTlQzMl9UT19OUFZB
UklBTlQodmFsdWUubV9jaGFyVmFsdWUsICpyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBKYXZhVHlwZVNob3J0OgogICAgICAgICB7Ci0gICAgICAgICAgICBJ
TlQzMl9UT19OUFZBUklBTlQodmFsdWUucywgKnJlc3VsdCk7CisgICAgICAgICAgICBJTlQzMl9U
T19OUFZBUklBTlQodmFsdWUubV9zaG9ydFZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVJbnQ6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIElOVDMyX1RPX05QVkFSSUFOVCh2YWx1ZS5pLCAqcmVzdWx0KTsKKyAgICAgICAgICAgIElO
VDMyX1RPX05QVkFSSUFOVCh2YWx1ZS5tX2ludFZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBUT0RPOiBDaGVjayBpZiBjYXN0IHRvIGRvdWJs
ZSBpcyBuZWVkZWQuCiAgICAgY2FzZSBKYXZhVHlwZUxvbmc6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFsdWUuaiwgKnJlc3VsdCk7CisgICAgICAgICAgICBE
T1VCTEVfVE9fTlBWQVJJQU5UKHZhbHVlLm1fbG9uZ1ZhbHVlLCAqcmVzdWx0KTsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVGbG9hdDoKICAgICAgICAgewot
ICAgICAgICAgICAgRE9VQkxFX1RPX05QVkFSSUFOVCh2YWx1ZS5mLCAqcmVzdWx0KTsKKyAgICAg
ICAgICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFsdWUubV9mbG9hdFZhbHVlLCAqcmVzdWx0KTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSmF2YVR5cGVEb3VibGU6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFsdWUuZCwgKnJlc3Vs
dCk7CisgICAgICAgICAgICBET1VCTEVfVE9fTlBWQVJJQU5UKHZhbHVlLm1fZG91YmxlVmFsdWUs
ICpyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC0yNjEsNiArMjM0LDEw
MyBAQCB2b2lkIGNvbnZlcnRKVmFsdWVUb05QVmFyaWFudChqdmFsdWUgdmFsdWUsIEphdmFUeXBl
IGphdmFUeXBlLCBjb25zdCBjaGFyKiBqYXZhVAogICAgIH0KIH0KIAorSmF2YVZhbHVlIGp2YWx1
ZVRvSmF2YVZhbHVlKGNvbnN0IGp2YWx1ZSYgdmFsdWUsIGNvbnN0IEphdmFUeXBlJiB0eXBlKQor
eworICAgIEphdmFWYWx1ZSByZXN1bHQ7CisgICAgcmVzdWx0Lm1fdHlwZSA9IHR5cGU7CisgICAg
c3dpdGNoIChyZXN1bHQubV90eXBlKSB7CisgICAgY2FzZSBKYXZhVHlwZVZvaWQ6CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVPYmplY3Q6CisgICAgICAgIHJlc3VsdC5tX29iamVj
dFZhbHVlID0gbmV3IEphdmFJbnN0YW5jZSh2YWx1ZS5sKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBKYXZhVHlwZVN0cmluZzoKKyAgICAgICAgeworICAgICAgICAgICAganN0cmluZyBqYXZh
U3RyaW5nID0gc3RhdGljX2Nhc3Q8anN0cmluZz4odmFsdWUubCk7CisgICAgICAgICAgICBjb25z
dCBVQ2hhciogYSA9IGdldFVDaGFyYWN0ZXJzRnJvbUpTdHJpbmdJbkVudihnZXRKTklFbnYoKSwg
amF2YVN0cmluZyk7CisgICAgICAgICAgICAvLyBXZSB0YWtlIGEgY29weSB0byBhbGxvdyB0aGUg
SmF2YSBTdHJpbmcgdG8gYmUgcmVsZWFzZWQuCisgICAgICAgICAgICByZXN1bHQubV9zdHJpbmdW
YWx1ZSA9IFN0cmluZyhhKS50aHJlYWRzYWZlQ29weSgpOworICAgICAgICAgICAgcmVsZWFzZVVD
aGFyYWN0ZXJzRm9ySlN0cmluZ0luRW52KGdldEpOSUVudigpLCBqYXZhU3RyaW5nLCBhKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlQm9vbGVhbjoKKyAgICAg
ICAgcmVzdWx0Lm1fYm9vbGVhblZhbHVlID0gdmFsdWUueiA9PSBKTklfRkFMU0UgPyBmYWxzZSA6
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVCeXRlOgorICAgICAgICBy
ZXN1bHQubV9ieXRlVmFsdWUgPSB2YWx1ZS5iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEph
dmFUeXBlQ2hhcjoKKyAgICAgICAgcmVzdWx0Lm1fY2hhclZhbHVlID0gdmFsdWUuYzsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZVNob3J0OgorICAgICAgICByZXN1bHQubV9zaG9y
dFZhbHVlID0gdmFsdWUuczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUludDoK
KyAgICAgICAgcmVzdWx0Lm1faW50VmFsdWUgPSB2YWx1ZS5pOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEphdmFUeXBlTG9uZzoKKyAgICAgICAgcmVzdWx0Lm1fbG9uZ1ZhbHVlID0gdmFsdWUu
ajsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUZsb2F0OgorICAgICAgICByZXN1
bHQubV9mbG9hdFZhbHVlID0gdmFsdWUuZjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZh
VHlwZURvdWJsZToKKyAgICAgICAgcmVzdWx0Lm1fZG91YmxlVmFsdWUgPSB2YWx1ZS5kOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitqdmFsdWUgamF2YVZhbHVlVG9KdmFsdWUoY29uc3Qg
SmF2YVZhbHVlJiB2YWx1ZSkKK3sKKyAgICBqdmFsdWUgcmVzdWx0OworICAgIG1lbXNldCgmcmVz
dWx0LCAwLCBzaXplb2YoanZhbHVlKSk7CisgICAgc3dpdGNoICh2YWx1ZS5tX3R5cGUpIHsKKyAg
ICBjYXNlIEphdmFUeXBlVm9pZDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZU9i
amVjdDoKKyAgICAgICAgaWYgKHZhbHVlLm1fb2JqZWN0VmFsdWUpCisgICAgICAgICAgICByZXN1
bHQubCA9IHZhbHVlLm1fb2JqZWN0VmFsdWUtPmphdmFJbnN0YW5jZSgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEphdmFUeXBlU3RyaW5nOgorICAgICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBs
b2NhbCByZWZlcmVuY2UgdG8gYSBuZXcgU3RyaW5nIG9iamVjdCwgd2hpY2ggd2lsbAorICAgICAg
ICAvLyBiZSByZWxlYXNlZCB3aGVuIHRoZSBjYWxsIHN0YWNrIHJldHVybnMgdG8gSmF2YS4gTm90
ZSB0aGF0IHRoaXMKKyAgICAgICAgLy8gbWF5IGNhdXNlIGxlYWtzIGlmIGludm9rZWQgZnJvbSBh
IG5hdGl2ZSBtZXNzYWdlIGxvb3AsIGFzIGlzIHRoZQorICAgICAgICAvLyBjYXNlIGluIHdvcmtl
cnMuCisgICAgICAgIHJlc3VsdC5sID0gZ2V0Sk5JRW52KCktPk5ld1N0cmluZyh2YWx1ZS5tX3N0
cmluZ1ZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubV9zdHJpbmdWYWx1ZS5sZW5ndGgoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVCb29sZWFuOgorICAgICAgICByZXN1bHQu
eiA9IHZhbHVlLm1fYm9vbGVhblZhbHVlID8gSk5JX1RSVUUgOiBKTklfRkFMU0U7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSmF2YVR5cGVCeXRlOgorICAgICAgICByZXN1bHQuYiA9IHZhbHVl
Lm1fYnl0ZVZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBlQ2hhcjoKKyAg
ICAgICAgcmVzdWx0LmMgPSB2YWx1ZS5tX2NoYXJWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBKYXZhVHlwZVNob3J0OgorICAgICAgICByZXN1bHQucyA9IHZhbHVlLm1fc2hvcnRWYWx1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZUludDoKKyAgICAgICAgcmVzdWx0
LmkgPSB2YWx1ZS5tX2ludFZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFUeXBl
TG9uZzoKKyAgICAgICAgcmVzdWx0LmogPSB2YWx1ZS5tX2xvbmdWYWx1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBKYXZhVHlwZUZsb2F0OgorICAgICAgICByZXN1bHQuZiA9IHZhbHVlLm1f
ZmxvYXRWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKYXZhVHlwZURvdWJsZToKKyAg
ICAgICAgcmVzdWx0LmQgPSB2YWx1ZS5tX2RvdWJsZVZhbHVlOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSk5JVXRpbGl0eVByaXZhdGUuaApp
bmRleCA3OTE1OTM5NjMzZTdhODc4MWZmNTMxMTE2OTVmN2QxN2U3OGFlZmZiLi4wMjgyOTA0Nzll
MTZmODEwMjgyYjljZjMxOTU1YzVlODQ0OTg3OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL3Y4L0pOSVV0aWxpdHlQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5oCkBAIC0zNiw4ICszNiwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAotanZhbHVlIGNvbnZlcnROUFZh
cmlhbnRUb0pWYWx1ZShOUFZhcmlhbnQsIGNvbnN0IFdURjo6U3RyaW5nJiBqYXZhQ2xhc3MpOwot
dm9pZCBjb252ZXJ0SlZhbHVlVG9OUFZhcmlhbnQoanZhbHVlLCBKYXZhVHlwZSwgY29uc3QgY2hh
ciogamF2YUNsYXNzTmFtZSwgTlBWYXJpYW50Kik7CitjbGFzcyBKYXZhVmFsdWU7CisKK0phdmFW
YWx1ZSBjb252ZXJ0TlBWYXJpYW50VG9KYXZhVmFsdWUoTlBWYXJpYW50LCBjb25zdCBTdHJpbmcm
IGphdmFDbGFzcyk7Cit2b2lkIGNvbnZlcnRKYXZhVmFsdWVUb05QVmFyaWFudChKYXZhVmFsdWUs
IE5QVmFyaWFudCopOworCitKYXZhVmFsdWUganZhbHVlVG9KYXZhVmFsdWUoY29uc3QganZhbHVl
JiwgY29uc3QgSmF2YVR5cGUmKTsKK2p2YWx1ZSBqYXZhVmFsdWVUb0p2YWx1ZShjb25zdCBKYXZh
VmFsdWUmKTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhTlBPYmplY3RWOC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL3Y4L0phdmFOUE9iamVjdFY4LmNwcAppbmRleCAwOTE3NDA3MjhiZGZmMzMx
YzRhMmM2YjMyMzFiYzNkZTY1YjMwYmQ5Li5hODBlYmJiNDczZTAxZGM1MzI2NTRjNmJkZTU5Nzk3
ZGViZGM3Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFO
UE9iamVjdFY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFOUE9i
amVjdFY4LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkphdmFGaWVsZFY4LmgiCiAj
aW5jbHVkZSAiSmF2YUluc3RhbmNlVjguaCIKICNpbmNsdWRlICJKYXZhTWV0aG9kLmgiCisjaW5j
bHVkZSAiSmF2YVZhbHVlVjguaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTE0NCwxNCArMTQ1LDE0IEBAIGJvb2wgSmF2YU5QT2JqZWN0SW52b2tl
KE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOUFZhcmlhbnQq
CiAgICAgICAgIGpBcmdzID0gc3RhdGljX2Nhc3Q8anZhbHVlKj4obWFsbG9jKGFyZ0NvdW50ICog
c2l6ZW9mKGp2YWx1ZSkpKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgYXJn
Q291bnQ7IGkrKykKLSAgICAgICAgakFyZ3NbaV0gPSBjb252ZXJ0TlBWYXJpYW50VG9KVmFsdWUo
YXJnc1tpXSwgak1ldGhvZC0+cGFyYW1ldGVyQXQoaSkpOworICAgICAgICBqQXJnc1tpXSA9IGph
dmFWYWx1ZVRvSnZhbHVlKGNvbnZlcnROUFZhcmlhbnRUb0phdmFWYWx1ZShhcmdzW2ldLCBqTWV0
aG9kLT5wYXJhbWV0ZXJBdChpKSkpOwogCiAgICAganZhbHVlIGpSZXN1bHQgPSBpbnN0YW5jZS0+
aW52b2tlTWV0aG9kKGpNZXRob2QsIGpBcmdzKTsKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAgICAg
ZnJlZShqQXJncyk7CiAKICAgICBWT0lEX1RPX05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICBjb252
ZXJ0SlZhbHVlVG9OUFZhcmlhbnQoalJlc3VsdCwgak1ldGhvZC0+cmV0dXJuVHlwZSgpLCBqTWV0
aG9kLT5yZXR1cm5UeXBlQ2xhc3NOYW1lKCksIHJlc3VsdCk7CisgICAgY29udmVydEphdmFWYWx1
ZVRvTlBWYXJpYW50KGp2YWx1ZVRvSmF2YVZhbHVlKGpSZXN1bHQsIGpNZXRob2QtPnJldHVyblR5
cGUoKSksIHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4OSw3ICsxOTAsNyBA
QCBib29sIEphdmFOUE9iamVjdEdldFByb3BlcnR5KE5QT2JqZWN0KiBvYmosIE5QSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBOUFZhcmlhbnQqCiAgICAganZhbHVlIHZhbHVlID0gaW5zdGFuY2UtPmdl
dEZpZWxkKGZpZWxkKTsKICAgICBpbnN0YW5jZS0+ZW5kKCk7CiAKLSAgICBjb252ZXJ0SlZhbHVl
VG9OUFZhcmlhbnQodmFsdWUsIGZpZWxkLT50eXBlKCksIGZpZWxkLT50eXBlQ2xhc3NOYW1lKCks
IHJlc3VsdCk7CisgICAgY29udmVydEphdmFWYWx1ZVRvTlBWYXJpYW50KGp2YWx1ZVRvSmF2YVZh
bHVlKHZhbHVlLCBmaWVsZC0+dHlwZSgpKSwgcmVzdWx0KTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhVmFsdWVWOC5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhVmFsdWVWOC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjViODVjNTEzMzA1MjEzODgwNjk4ZGRkYzM2NTZiZmZkNDY3NzcxNmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFWYWx1ZVY4LmgKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBKYXZhVmFsdWVWOF9oCisjZGVmaW5lIEphdmFWYWx1ZVY4
X2gKKworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFJbnN0YW5jZVY4
LmgiCisjaW5jbHVkZSAiSmF2YVR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsKKworLy8gQSB2
YXJpYW50IHVzZWQgdG8gcmVwcmVzZW50IGEgSmF2YSB2YWx1ZSwgYWxtb3N0IGlkZW50aWNhbCB0
byB0aGUgSk5JCisvLyBqdmFsdWUgdHlwZS4gSXQgZXhpc3RzIGJlY2F1c2UgdGhlIGxvZ2ljIHRv
IGNvbnZlcnQgYmV0d2VlbiBKYXZhU2NyaXB0CisvLyBvYmplY3RzIChhcyBKYXZhTlBPYmplY3Qg
b3IgSlNWYWx1ZSkgYW5kIEphdmEgb2JqZWN0cyBzaG91bGQgbm90IGRlcGVuZCB1cG9uCisvLyBK
TkksIHRvIGFsbG93IHBvcnRzIHRvIHByb3ZpZGUgYSBKYXZhSW5zdGFuY2Ugb2JqZWN0IGV0YyB3
aGljaCBkb2VzIG5vdCB1c2UKKy8vIEpOSS4gVGhpcyBtZWFucyB0aGF0IHRoZSAnb2JqZWN0JyBm
aWVsZCBvZiB0aGlzIHZhcmlhbnQgdXNlcyBKYXZhSW5zdGFuY2UsCisvLyBub3Qgam9iamVjdC4K
Ky8vCisvLyBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcyBpbmRlcGVuZGVudCBvZiB0aGUgSmF2YVNj
cmlwdCBlbmdpbmUsIGJ1dCBpcworLy8gY3VycmVudGx5IHVzZWQgb25seSB3aXRoIFY4LgorLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAyMy4KK3N0cnVj
dCBKYXZhVmFsdWUgeworICAgIEphdmFWYWx1ZSgpIDogbV90eXBlKEphdmFUeXBlSW52YWxpZCkg
e30KKworICAgIEphdmFUeXBlIG1fdHlwZTsKKyAgICAvLyBXZSBkb24ndCB1c2UgYSB1bmlvbiBi
ZWNhdXNlIHdlIHdhbnQgdG8gYmUgYWJsZSB0byByZWYtY291bnQgc29tZSBvZiB0aGUKKyAgICAv
LyB2YWx1ZXMuIFRoaXMgcmVxdWlyZXMgdHlwZXMgd2l0aCBub24tdHJpdmlhbCBjb25zdHJ1Y3Rv
cnMuCisgICAgUmVmUHRyPEphdmFJbnN0YW5jZT4gbV9vYmplY3RWYWx1ZTsKKyAgICBib29sIG1f
Ym9vbGVhblZhbHVlOworICAgIHNpZ25lZCBjaGFyIG1fYnl0ZVZhbHVlOworICAgIHVuc2lnbmVk
IHNob3J0IG1fY2hhclZhbHVlOworICAgIHNob3J0IG1fc2hvcnRWYWx1ZTsKKyAgICBpbnQgbV9p
bnRWYWx1ZTsKKyAgICBsb25nIGxvbmcgbV9sb25nVmFsdWU7CisgICAgZmxvYXQgbV9mbG9hdFZh
bHVlOworICAgIGRvdWJsZSBtX2RvdWJsZVZhbHVlOworICAgIFN0cmluZyBtX3N0cmluZ1ZhbHVl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSkFWQV9CUklER0UpCisKKyNlbmRpZiAvLyBKYXZhVmFsdWVWOF9o
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>