<?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>5643</bug_id>
          
          <creation_ts>2005-11-06 06:29:34 -0800</creation_ts>
          <short_desc>setDragImage fails when passed Image object</short_desc>
          <delta_ts>2005-11-10 06:04:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>23772</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-11-06 06:29:34 -0800</bug_when>
    <thetext>On debug builds, setDragImage fails with an assertion when the object passed in is an image. This is 
because KWQClipboard::dragNSImage incorrectly returns a WebImageRenderer object instead of an 
NSImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23773</commentid>
    <comment_count>1</comment_count>
      <attachid>4612</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-11-06 06:32:32 -0800</bug_when>
    <thetext>Created attachment 4612
Return an NSImage instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23778</commentid>
    <comment_count>2</comment_count>
      <attachid>4612</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-06 11:55:45 -0800</bug_when>
    <thetext>Comment on attachment 4612
Return an NSImage instead

I&apos;ve got a patch that includes this change and many others like this, already
reviewed and ready to check in. But I haven&apos;t had a chance to land it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23779</commentid>
    <comment_count>3</comment_count>
      <attachid>4615</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-06 12:07:49 -0800</bug_when>
    <thetext>Created attachment 4615
just for grins, here&apos;s the patch I meant

Actually, it&apos;s not reviewed. I&apos;ll attach it here anyway.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4612</attachid>
            <date>2005-11-06 06:32:32 -0800</date>
            <delta_ts>2005-11-06 11:55:45 -0800</delta_ts>
            <desc>Return an NSImage instead</desc>
            <filename>drag-image.diff</filename>
            <type>text/plain</type>
            <size>1919</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzM4CmRpZmYgLXAgLXUgLXIxLjMzOCBD
aGFuZ2VMb2cKLS0tIENoYW5nZUxvZwk0IE5vdiAyMDA1IDIxOjEzOjI5IC0wMDAwCTEuMzM4Cisr
KyBDaGFuZ2VMb2cJNiBOb3YgMjAwNSAxNDozMjoxOCAtMDAwMApAQCAtMSwzICsxLDE1IEBACisy
MDA1LTExLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBtYWMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoga3dxL0tXUUNsaXBib2Fy
ZC5tbToKKyAgICAgICAgKEtXUUNsaXBib2FyZDo6ZHJhZ05TSW1hZ2UpOgorICAgICAgICBHZXQg
dGhlIE5TSW1hZ2UgZnJvbSB0aGUgaW1hZ2UgcmVuZGVyZXIuCisgICAgICAgIAorICAgICAgICAq
IGt3cS9XZWJDb3JlSW1hZ2VSZW5kZXJlci5oOgorICAgICAgICBBZGQgaW1hZ2UgbWV0aG9kLiBU
aGlzIGFscmVhZHkgZXhpc3RzIGluIFdlYkltYWdlUmVuZGVyZXIgaW4KKyAgICAgICAgV2ViS2l0
LgorCiAyMDA1LTExLTA0ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogCUZpeCBm
b3IgYnVnIDU2MjYsIGdob3N0ZWQgZmxvYXQgc3RlYWxzIG1vdXNlIGV2ZW50cy4gIE1ha2Ugc3Vy
ZQpJbmRleDoga3dxL0tXUUNsaXBib2FyZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViQ29yZS9rd3EvS1dRQ2xpcGJvYXJkLm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE5
CmRpZmYgLXAgLXUgLXIxLjE5IGt3cS9LV1FDbGlwYm9hcmQubW0KLS0tIGt3cS9LV1FDbGlwYm9h
cmQubW0JMyBPY3QgMjAwNSAyMToxMzowMSAtMDAwMAkxLjE5CisrKyBrd3EvS1dRQ2xpcGJvYXJk
Lm1tCTYgTm92IDIwMDUgMTQ6MzI6MTkgLTAwMDAKQEAgLTM0NSw3ICszNDUsNyBAQCBOU0ltYWdl
ICpLV1FDbGlwYm9hcmQ6OmRyYWdOU0ltYWdlKE5TUG9pCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSAoTlNJbWFnZSAqKShtX2RyYWdJbWFn
ZS5pbWFnZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gW21fZHJhZ0ltYWdlLmltYWdlKCkgaW1hZ2Vd
OwogICAgICAgICBpZiAobG9jKSB7CiAgICAgICAgICAgICAqbG9jID0gTlNQb2ludChtX2RyYWdM
b2MpOwogICAgICAgICAgICAgbG9jLT55ID0gW3Jlc3VsdCBzaXplXS5oZWlnaHQgLSBsb2MtPnk7
CkluZGV4OiBrd3EvV2ViQ29yZUltYWdlUmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9rd3EvV2ViQ29yZUltYWdlUmVuZGVyZXIuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xNgpkaWZmIC1wIC11IC1yMS4xNiBrd3EvV2ViQ29yZUltYWdlUmVuZGVyZXIu
aAotLS0ga3dxL1dlYkNvcmVJbWFnZVJlbmRlcmVyLmgJMjcgQXVnIDIwMDUgMDA6MTQ6MjIgLTAw
MDAJMS4xNgorKysga3dxL1dlYkNvcmVJbWFnZVJlbmRlcmVyLmgJNiBOb3YgMjAwNSAxNDozMjox
OSAtMDAwMApAQCAtNDgsNiArNDgsNyBAQCB0eXBlZGVmIGVudW0gewogLSAodm9pZClkZWNyZWFz
ZVVzZUNvdW50OwogLSAodm9pZClmbHVzaFJhc3RlckNhY2hlOwogLSAoQ0dJbWFnZVJlZilpbWFn
ZVJlZjsKKy0gKE5TSW1hZ2UgKilpbWFnZTsKIC0gKHZvaWQpcmVzZXRBbmltYXRpb247CiAtICh2
b2lkKXNldEFuaW1hdGlvblJlY3Q6KE5TUmVjdClyOwogQGVuZAo=
</data>
<flag name="review"
          id="826"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4615</attachid>
            <date>2005-11-06 12:07:49 -0800</date>
            <delta_ts>2005-11-06 12:07:49 -0800</delta_ts>
            <desc>just for grins, here&apos;s the patch I meant</desc>
            <filename>CustomCursorPatch.txt</filename>
            <type>text/plain</type>
            <size>44865</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwva2h0bWx2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9raHRtbHZpZXcuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjE1MApkaWZmIC1wIC11IC1yMS4xNTAgV2ViQ29yZS9raHRtbC9raHRtbHZpZXcuY3BwCi0t
LSBXZWJDb3JlL2todG1sL2todG1sdmlldy5jcHAJMjUgT2N0IDIwMDUgMjE6MTQ6MzYgLTAwMDAJ
MS4xNTAKKysrIFdlYkNvcmUva2h0bWwva2h0bWx2aWV3LmNwcAkzMCBPY3QgMjAwNSAyMjozMjo0
NiAtMDAwMApAQCAtODgwLDYgKzg4MCw2MCBAQCBzdGF0aWMgYm9vbCBpc1N1Ym1pdEltYWdlKERP
TTo6Tm9kZUltcGwgCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShpbnB1dFRh
ZykgJiYgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudEltcGwqPihub2RlKS0+aW5wdXRUeXBl
KCkgPT0gSFRNTElucHV0RWxlbWVudEltcGw6OklNQUdFOwogfQogCitzdGF0aWMgUUN1cnNvciBz
ZWxlY3RDdXJzb3IoY29uc3QgTm9kZUltcGw6Ok1vdXNlRXZlbnQgJmV2ZW50LCBLSFRNTFBhcnQg
KnBhcnQsIGJvb2wgbW91c2VQcmVzc2VkKQoreworICAgIC8vIER1cmluZyBzZWxlY3Rpb24sIHVz
ZSBhbiBJLWJlYW0gbm8gbWF0dGVyIHdoYXQgd2UncmUgb3ZlcgorICAgIGlmIChtb3VzZVByZXNz
ZWQgJiYgcGFydC0+aGFzU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBLQ3Vyc29yOjppYmVh
bUN1cnNvcigpOworCisgICAgTm9kZUltcGwgKm5vZGUgPSBldmVudC5pbm5lck5vZGUuZ2V0KCk7
CisgICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IG5vZGUgPyBub2RlLT5yZW5kZXJlcigpIDog
MDsKKyAgICBSZW5kZXJTdHlsZSAqc3R5bGUgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgp
IDogMDsKKworICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29ySW1hZ2UoKSAmJiAhc3R5bGUt
PmN1cnNvckltYWdlKCktPnBpeG1hcCgpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gUUN1cnNv
cihzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+cGl4bWFwKCkpOworCisgICAgc3dpdGNoIChzdHlsZSA/
IHN0eWxlLT5jdXJzb3IoKSA6IENVUlNPUl9BVVRPKSB7CisgICAgICAgIGNhc2UgQ1VSU09SX0FV
VE86CisgICAgICAgICAgICBpZiAoIWV2ZW50LnVybC5pc051bGwoKSB8fCBpc1N1Ym1pdEltYWdl
KG5vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0LT51cmxDdXJzb3IoKTsKKyAgICAg
ICAgICAgIGlmICgobm9kZSAmJiBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB8fCAocmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzVGV4dCgpICYmIHJlbmRlcmVyLT5jYW5TZWxlY3QoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEtDdXJzb3I6OmliZWFtQ3Vyc29yKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6CisgICAgICAgICAgICByZXR1cm4gS0N1
cnNvcjo6Y3Jvc3NDdXJzb3IoKTsKKyAgICAgICAgY2FzZSBDVVJTT1JfUE9JTlRFUjoKKyAgICAg
ICAgICAgIHJldHVybiBwYXJ0LT51cmxDdXJzb3IoKTsKKyAgICAgICAgY2FzZSBDVVJTT1JfTU9W
RToKKyAgICAgICAgICAgIHJldHVybiBLQ3Vyc29yOjpzaXplQWxsQ3Vyc29yKCk7CisgICAgICAg
IGNhc2UgQ1VSU09SX0VfUkVTSVpFOgorICAgICAgICAgICAgcmV0dXJuIEtDdXJzb3I6OmVhc3RS
ZXNpemVDdXJzb3IoKTsKKyAgICAgICAgY2FzZSBDVVJTT1JfV19SRVNJWkU6CisgICAgICAgICAg
ICByZXR1cm4gS0N1cnNvcjo6d2VzdFJlc2l6ZUN1cnNvcigpOworICAgICAgICBjYXNlIENVUlNP
Ul9OX1JFU0laRToKKyAgICAgICAgICAgIHJldHVybiBLQ3Vyc29yOjpub3J0aFJlc2l6ZUN1cnNv
cigpOworICAgICAgICBjYXNlIENVUlNPUl9TX1JFU0laRToKKyAgICAgICAgICAgIHJldHVybiBL
Q3Vyc29yOjpzb3V0aFJlc2l6ZUN1cnNvcigpOworICAgICAgICBjYXNlIENVUlNPUl9ORV9SRVNJ
WkU6CisgICAgICAgICAgICByZXR1cm4gS0N1cnNvcjo6bm9ydGhFYXN0UmVzaXplQ3Vyc29yKCk7
CisgICAgICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKKyAgICAgICAgICAgIHJldHVybiBLQ3Vy
c29yOjpzb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKKyAgICAgICAgY2FzZSBDVVJTT1JfTldfUkVT
SVpFOgorICAgICAgICAgICAgcmV0dXJuIEtDdXJzb3I6Om5vcnRoV2VzdFJlc2l6ZUN1cnNvcigp
OworICAgICAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6CisgICAgICAgICAgICByZXR1cm4gS0N1
cnNvcjo6c291dGhFYXN0UmVzaXplQ3Vyc29yKCk7CisgICAgICAgIGNhc2UgQ1VSU09SX1RFWFQ6
CisgICAgICAgICAgICByZXR1cm4gS0N1cnNvcjo6aWJlYW1DdXJzb3IoKTsKKyAgICAgICAgY2Fz
ZSBDVVJTT1JfV0FJVDoKKyAgICAgICAgICAgIHJldHVybiBLQ3Vyc29yOjp3YWl0Q3Vyc29yKCk7
CisgICAgICAgIGNhc2UgQ1VSU09SX0hFTFA6CisgICAgICAgICAgICByZXR1cm4gS0N1cnNvcjo6
d2hhdHNUaGlzQ3Vyc29yKCk7CisgICAgICAgIGNhc2UgQ1VSU09SX0RFRkFVTFQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFFDdXJzb3IoKTsKK30KKwogdm9pZCBLSFRN
TFZpZXc6OnZpZXdwb3J0TW91c2VNb3ZlRXZlbnQoIFFNb3VzZUV2ZW50ICogX21vdXNlICkKIHsK
ICAgICAvLyBpbiBSYWRhciAzNzAzNzY4IHdlIHNhdyBmcmVxdWVudCBjcmFzaGVzIGFwcGFyZW50
bHkgZHVlIHRvIHRoZQpAQCAtOTE2LDEyNCArOTcwLDE3IEBAIHZvaWQgS0hUTUxWaWV3Ojp2aWV3
cG9ydE1vdXNlTW92ZUV2ZW50KCAKICAgICAvLyBleGVjdXRlIHRoZSBzY2hlZHVsZWQgc2NyaXB0
LiBUaGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGUgbW91c2VvdmVyIGV2ZW50cyBjb21lIGFmdGVyIHRo
ZSBtb3VzZW91dCBldmVudHMKICAgICBtX3BhcnQtPmV4ZWN1dGVTY2hlZHVsZWRTY3JpcHQoKTsK
IAotICAgIE5vZGVJbXBsICpub2RlID0gbWV2LmlubmVyTm9kZS5nZXQoKTsKLSAgICBSZW5kZXJP
YmplY3QgKnJlbmRlcmVyID0gbm9kZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwotICAgIFJlbmRl
clN0eWxlICpzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiAwOwotCi0gICAg
UUN1cnNvciBjOwotICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29yKCkgPT0gQ1VSU09SX0FV
VE8gJiYgc3R5bGUtPmN1cnNvckltYWdlKCkKLSAgICAgICAgJiYgIShzdHlsZS0+Y3Vyc29ySW1h
Z2UoKS0+cGl4bWFwKCkuaXNOdWxsKCkpKSB7Ci0gICAgICAgIC8qIEZpcnN0IG9mIGFsbCBpdCB3
b3JrczogQ2hlY2sgb3V0IGh0dHA6Ly93d3cuaWFtLnVuaWJlLmNoL35zY2hscGJjaC9jdXJzb3Iu
aHRtbAotICAgICAgICAgKgotICAgICAgICAgKiBCdXQsIEkgZG9uJ3Qga25vdyB3aGF0IGV4YWN0
bHkgd2UgaGF2ZSB0byBkbyBoZXJlOiByZXNjYWxlIHRvIDMyKjMyLCBjaGFuZ2UgdG8gbW9ub2No
cm9tZS4uCi0gICAgICAgICAqLwotICAgICAgICAvL2tkRGVidWcoIDYwMDAgKSA8PCAidXNpbmcg
Y3VzdG9tIGN1cnNvciIgPDwgZW5kbDsKLSAgICAgICAgY29uc3QgUVBpeG1hcCBwID0gc3R5bGUt
PmN1cnNvckltYWdlKCktPnBpeG1hcCgpOwotICAgICAgICAvLyAjIyMgZml4Ci0gICAgICAgIGMg
PSBRQ3Vyc29yKHApOwotICAgIH0KLQotICAgIHN3aXRjaCAoIHN0eWxlID8gc3R5bGUtPmN1cnNv
cigpIDogQ1VSU09SX0FVVE8gKSB7Ci0gICAgY2FzZSBDVVJTT1JfQVVUTzoKLSAgICAgICAgaWYg
KCBkLT5tb3VzZVByZXNzZWQgJiYgbV9wYXJ0LT5oYXNTZWxlY3Rpb24oKSApCi0JICAgIC8vIGR1
cmluZyBzZWxlY3Rpb24sIHVzZSBhbiBJQmVhbSBubyBtYXR0ZXIgd2hhdCB3ZSdyZSBvdmVyCi0J
ICAgIGMgPSBLQ3Vyc29yOjppYmVhbUN1cnNvcigpOwotICAgICAgICBlbHNlIGlmICggKCFtZXYu
dXJsLmlzTnVsbCgpIHx8IGlzU3VibWl0SW1hZ2Uobm9kZSkpICYmIG1fcGFydC0+c2V0dGluZ3Mo
KS0+Y2hhbmdlQ3Vyc29yKCkgKQotICAgICAgICAgICAgYyA9IG1fcGFydC0+dXJsQ3Vyc29yKCk7
Ci0gICAgICAgIGVsc2UgaWYgKCAobm9kZSAmJiBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB8
fCAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzVGV4dCgpICYmIHJlbmRlcmVyLT5jYW5TZWxlY3Qo
KSkgKQotICAgICAgICAgICAgYyA9IEtDdXJzb3I6OmliZWFtQ3Vyc29yKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1VSU09SX0NST1NTOgotICAgICAgICBjID0gS0N1cnNvcjo6Y3Jvc3ND
dXJzb3IoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDVVJTT1JfUE9JTlRFUjoKLSAgICAg
ICAgYyA9IG1fcGFydC0+dXJsQ3Vyc29yKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VS
U09SX01PVkU6Ci0gICAgICAgIGMgPSBLQ3Vyc29yOjpzaXplQWxsQ3Vyc29yKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1VSU09SX0VfUkVTSVpFOgotI2lmIEFQUExFX0NIQU5HRVMKLSAg
ICAgICAgYyA9IEtDdXJzb3I6OmVhc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYKLSAgICBjYXNlIENVUlNPUl9XX1JFU0laRToKLSNpZiBBUFBMRV9DSEFOR0VTCi0gICAg
ICAgIGMgPSBLQ3Vyc29yOjp3ZXN0UmVzaXplQ3Vyc29yKCk7Ci0jZWxzZQotICAgICAgICBjID0g
S0N1cnNvcjo6c2l6ZUhvckN1cnNvcigpOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1VSU09SX05fUkVTSVpFOgotI2lmIEFQUExFX0NIQU5HRVMKLSAgICAgICAgYyA9IEtDdXJz
b3I6Om5vcnRoUmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2Fz
ZSBDVVJTT1JfU19SRVNJWkU6Ci0jaWYgQVBQTEVfQ0hBTkdFUwotICAgICAgICBjID0gS0N1cnNv
cjo6c291dGhSZXNpemVDdXJzb3IoKTsKLSNlbHNlCi0gICAgICAgIGMgPSBLQ3Vyc29yOjpzaXpl
VmVyQ3Vyc29yKCk7Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDVVJTT1JfTkVf
UkVTSVpFOgotI2lmIEFQUExFX0NIQU5HRVMKLSAgICAgICAgYyA9IEtDdXJzb3I6Om5vcnRoRWFz
dFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGNhc2UgQ1VSU09S
X1NXX1JFU0laRToKLSNpZiBBUFBMRV9DSEFOR0VTCi0gICAgICAgIGMgPSBLQ3Vyc29yOjpzb3V0
aFdlc3RSZXNpemVDdXJzb3IoKTsKLSNlbHNlCi0gICAgICAgIGMgPSBLQ3Vyc29yOjpzaXplQkRp
YWdDdXJzb3IoKTsKLSNlbmRpZgotICAgICAgICBicmVhazsKLSAgICBjYXNlIENVUlNPUl9OV19S
RVNJWkU6Ci0jaWYgQVBQTEVfQ0hBTkdFUwotICAgICAgICBjID0gS0N1cnNvcjo6bm9ydGhXZXN0
UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBDVVJTT1Jf
U0VfUkVTSVpFOgotI2lmIEFQUExFX0NIQU5HRVMKLSAgICAgICAgYyA9IEtDdXJzb3I6OnNvdXRo
RWFzdFJlc2l6ZUN1cnNvcigpOwotI2Vsc2UKLSAgICAgICAgYyA9IEtDdXJzb3I6OnNpemVGRGlh
Z0N1cnNvcigpOwotI2VuZGlmCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSU09SX1RFWFQ6
Ci0gICAgICAgIGMgPSBLQ3Vyc29yOjppYmVhbUN1cnNvcigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENVUlNPUl9XQUlUOgotICAgICAgICBjID0gS0N1cnNvcjo6d2FpdEN1cnNvcigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENVUlNPUl9IRUxQOgotICAgICAgICBjID0gS0N1cnNv
cjo6d2hhdHNUaGlzQ3Vyc29yKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSU09SX0RF
RkFVTFQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICB2aWV3cG9ydCgpLT5zZXRDdXJzb3Io
c2VsZWN0Q3Vyc29yKG1ldiwgbV9wYXJ0LCBkLT5tb3VzZVByZXNzZWQpKTsKIAotICAgIFFXaWRn
ZXQgKnZwID0gdmlld3BvcnQoKTsKLSAgICBpZiAoIHZwLT5jdXJzb3IoKS5oYW5kbGUoKSAhPSBj
LmhhbmRsZSgpICkgewotICAgICAgICBpZiggYy5oYW5kbGUoKSA9PSBLQ3Vyc29yOjphcnJvd0N1
cnNvcigpLmhhbmRsZSgpKQotICAgICAgICAgICAgdnAtPnVuc2V0Q3Vyc29yKCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHZwLT5zZXRDdXJzb3IoIGMgKTsKLSAgICB9CiAgICAgZC0+cHJl
dk1vdXNlWCA9IHhtOwogICAgIGQtPnByZXZNb3VzZVkgPSB5bTsKIAogICAgIGlmICghc3dhbGxv
d0V2ZW50KSB7Ci0gICAgICAgIGtodG1sOjpNb3VzZU1vdmVFdmVudCBldmVudCggX21vdXNlLCB4
bSwgeW0sIG1ldi51cmwsIG1ldi50YXJnZXQsIG1ldi5pbm5lck5vZGUuZ2V0KCkgKTsKLSAgICAg
ICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQoIG1fcGFydCwgJmV2ZW50ICk7CisgICAgICAgIGto
dG1sOjpNb3VzZU1vdmVFdmVudCBldmVudChfbW91c2UsIHhtLCB5bSwgbWV2LnVybCwgbWV2LnRh
cmdldCwgbWV2LmlubmVyTm9kZS5nZXQoKSk7CisgICAgICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2
ZW50KG1fcGFydCwgJmV2ZW50KTsKICAgICB9CiB9CiAKLXZvaWQgS0hUTUxWaWV3OjpyZXNldEN1
cnNvcigpCi17Ci0gICAgdmlld3BvcnQoKS0+dW5zZXRDdXJzb3IoKTsKLX0KLQogdm9pZCBLSFRN
TFZpZXc6OmludmFsaWRhdGVDbGljaygpCiB7CiAgICAgZC0+Y2xpY2tDb3VudCA9IDA7CkluZGV4
OiBXZWJDb3JlL2todG1sL2Nzcy9jc3NfY29tcHV0ZWRzdHlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19jb21wdXRlZHN0eWxlLmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOApkaWZmIC1wIC11IC1yMS4zOCBXZWJDb3JlL2todG1s
L2Nzcy9jc3NfY29tcHV0ZWRzdHlsZS5jcHAKLS0tIFdlYkNvcmUva2h0bWwvY3NzL2Nzc19jb21w
dXRlZHN0eWxlLmNwcAkzIE9jdCAyMDA1IDIxOjEyOjA2IC0wMDAwCTEuMzgKKysrIFdlYkNvcmUv
a2h0bWwvY3NzL2Nzc19jb21wdXRlZHN0eWxlLmNwcAkzMCBPY3QgMjAwNSAyMjozMjo0NyAtMDAw
MApAQCAtMiw3ICsyLDcgQEAKICAqIGNzc19jb21wdXRlZHN0eWxlLmNwcAogICoKICAqIENvcHly
aWdodCAoQykgIDIwMDQgIFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzQsMjMgKzM0LDkg
QEAKICNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgiCiAjaW5jbHVkZSAicmVuZGVy
aW5nL3JlbmRlcl9vYmplY3QuaCIKIAotI2lmIEFQUExFX0NIQU5HRVMKICNpbXBvcnQgPGt4bWxj
b3JlL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgIktXUUZvbnRGYW1pbHkuaCIKLSNpbXBvcnQgIktX
UUxvZ2dpbmcuaCIKLSNlbmRpZgogCi11c2luZyBraHRtbDo6RUJhY2tncm91bmRCb3g7Ci11c2lu
ZyBraHRtbDo6RUJvcmRlclN0eWxlOwotdXNpbmcga2h0bWw6OkVUZXh0QWxpZ247Ci11c2luZyBr
aHRtbDo6Rm9udDsKLXVzaW5nIGtodG1sOjpGb250RGVmOwotdXNpbmcga2h0bWw6Okxlbmd0aDsK
LXVzaW5nIGtodG1sOjpMZW5ndGhCb3g7Ci11c2luZyBraHRtbDo6UmVuZGVyT2JqZWN0OwotdXNp
bmcga2h0bWw6OlJlbmRlclN0eWxlOwotdXNpbmcga2h0bWw6OlNoYWRvd0RhdGE7Ci11c2luZyBr
aHRtbDo6U3R5bGVEYXNoYm9hcmRSZWdpb247Cit1c2luZyBuYW1lc3BhY2Uga2h0bWw7CiAKIGV4
dGVybiBET006OkRPTVN0cmluZyBnZXRQcm9wZXJ0eU5hbWUodW5zaWduZWQgc2hvcnQgaWQpOwog
CkBAIC01NTAsNDIgKzUzNiw5IEBAIENTU1ZhbHVlSW1wbCAqQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW8KICAgICAgICAgLy8gRklYTUU6IHVuaW1wbGVtZW50ZWQKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6Ci0gICAgICAgIHN3aXRjaCAoc3R5bGUtPmN1cnNvcigp
KSB7Ci0gICAgICAgICAgICBjYXNlIGtodG1sOjpDVVJTT1JfQVVUTzoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1wbChDU1NfVkFMX0FVVE8pOwotICAgICAg
ICAgICAgY2FzZSBraHRtbDo6Q1VSU09SX0NST1NTOgotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19WQUxfQ1JPU1NIQUlSKTsKLSAgICAgICAgICAg
IGNhc2Uga2h0bWw6OkNVUlNPUl9ERUZBVUxUOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19WQUxfREVGQVVMVCk7Ci0gICAgICAgICAgICBjYXNl
IGtodG1sOjpDVVJTT1JfUE9JTlRFUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlSW1wbChDU1NfVkFMX1BPSU5URVIpOwotICAgICAgICAgICAgY2FzZSBraHRt
bDo6Q1VSU09SX01PVkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVW
YWx1ZUltcGwoQ1NTX1ZBTF9NT1ZFKTsKLSAgICAgICAgICAgIGNhc2Uga2h0bWw6OkNVUlNPUl9F
X1JFU0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1w
bChDU1NfVkFMX0VfUkVTSVpFKTsKLSAgICAgICAgICAgIGNhc2Uga2h0bWw6OkNVUlNPUl9ORV9S
RVNJWkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwo
Q1NTX1ZBTF9ORV9SRVNJWkUpOwotICAgICAgICAgICAgY2FzZSBraHRtbDo6Q1VSU09SX05XX1JF
U0laRToKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1wbChD
U1NfVkFMX05XX1JFU0laRSk7Ci0gICAgICAgICAgICBjYXNlIGtodG1sOjpDVVJTT1JfTl9SRVNJ
WkU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoQ1NT
X1ZBTF9OX1JFU0laRSk7Ci0gICAgICAgICAgICBjYXNlIGtodG1sOjpDVVJTT1JfU0VfUkVTSVpF
OgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19W
QUxfU0VfUkVTSVpFKTsKLSAgICAgICAgICAgIGNhc2Uga2h0bWw6OkNVUlNPUl9TV19SRVNJWkU6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoQ1NTX1ZB
TF9TV19SRVNJWkUpOwotICAgICAgICAgICAgY2FzZSBraHRtbDo6Q1VSU09SX1NfUkVTSVpFOgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19WQUxf
U19SRVNJWkUpOwotICAgICAgICAgICAgY2FzZSBraHRtbDo6Q1VSU09SX1dfUkVTSVpFOgotICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19WQUxfV19S
RVNJWkUpOwotICAgICAgICAgICAgY2FzZSBraHRtbDo6Q1VSU09SX1RFWFQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoQ1NTX1ZBTF9URVhUKTsKLSAg
ICAgICAgICAgIGNhc2Uga2h0bWw6OkNVUlNPUl9XQUlUOgotICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19WQUxfV0FJVCk7Ci0gICAgICAgICAgICBj
YXNlIGtodG1sOjpDVVJTT1JfSEVMUDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlSW1wbChDU1NfVkFMX0hFTFApOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHN0eWxlLT5j
dXJzb3JJbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZUlt
cGwoc3R5bGUtPmN1cnNvckltYWdlKCktPnVybCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VS
SSk7CisgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKENTU19WQUxfQVVU
TyArIHN0eWxlLT5jdXJzb3IoKSAtIENVUlNPUl9BVVRPKTsKICAgICBjYXNlIENTU19QUk9QX0RJ
UkVDVElPTjoKICAgICAgICAgc3dpdGNoIChzdHlsZS0+ZGlyZWN0aW9uKCkpIHsKICAgICAgICAg
ICAgIGNhc2Uga2h0bWw6OkxUUjoKSW5kZXg6IFdlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3Bh
cnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTA4CmRpZmYgLXAgLXUgLXIxLjEwOCBX
ZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwCi0tLSBXZWJDb3JlL2todG1sL2Nzcy9jc3Nw
YXJzZXIuY3BwCTMgT2N0IDIwMDUgMjE6MTI6MDcgLTAwMDAJMS4xMDgKKysrIFdlYkNvcmUva2h0
bWwvY3NzL2Nzc3BhcnNlci5jcHAJMzAgT2N0IDIwMDUgMjI6MzI6NDkgLTAwMDAKQEAgLTQyLDkg
KzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIERPTTsKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCi0j
aWYgQVBQTEVfQ0hBTkdFUwotdm9pZCBxRmF0YWwgKCBjb25zdCBjaGFyICogbXNnICkge30KLSNl
bmRpZgordXNpbmcgbmFtZXNwYWNlIGtodG1sOwogCiBWYWx1ZUxpc3Q6OlZhbHVlTGlzdCgpCiB7
CkBAIC02ODksMTIgKzY4NywxOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSggaW50IHBy
b3BJZCwgCiAJLy8gIFsgYXV0byB8IGNyb3NzaGFpciB8IGRlZmF1bHQgfCBwb2ludGVyIHwgcHJv
Z3Jlc3MgfCBtb3ZlIHwgZS1yZXNpemUgfCBuZS1yZXNpemUgfAogCS8vIG53LXJlc2l6ZSB8IG4t
cmVzaXplIHwgc2UtcmVzaXplIHwgc3ctcmVzaXplIHwgcy1yZXNpemUgfCB3LXJlc2l6ZSB8IHRl
eHQgfAogCS8vIHdhaXQgfCBoZWxwIF0gXSB8IGluaGVyaXQKLSAgICAvLyBNU0lFIDUgY29tcGF0
aWJpbGl0eSA6LwotICAgICAgICBpZiAoICFzdHJpY3QgJiYgaWQgPT0gQ1NTX1ZBTF9IQU5EICkg
eworICAgICAgICBpZiAoIXN0cmljdCAmJiBpZCA9PSBDU1NfVkFMX0hBTkQpIHsgLy8gTVNJRSA1
IGNvbXBhdGliaWxpdHkgOi8KICAgICAgICAgICAgIGlkID0gQ1NTX1ZBTF9QT0lOVEVSOwogCSAg
ICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKCBpZCA+PSBDU1Nf
VkFMX0FVVE8gJiYgaWQgPD0gQ1NTX1ZBTF9IRUxQICkKKyAgICAgICAgfSBlbHNlIGlmIChpZCA+
PSBDU1NfVkFMX0FVVE8gJiYgaWQgPD0gQ1NTX1ZBTF9IRUxQKQogCSAgICB2YWxpZF9wcmltaXRp
dmUgPSB0cnVlOworICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgRE9NU3RyaW5nIHVyaSA9IHBhcnNlVVJMKGRv
bVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CisgICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFnZVZhbHVlSW1wbChE
T01TdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5xc3RyaW5nKCksIHVyaS5xc3Ry
aW5nKCkpLnVybCgpKSwgc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB2YWx1ZUxpc3Qt
Pm5leHQoKTsKKyAgICAgICAgICAgIH0KKwl9CiAJYnJlYWs7CiAKICAgICBjYXNlIENTU19QUk9Q
X0JBQ0tHUk9VTkRfQVRUQUNITUVOVDoKQEAgLTI4NzMsMTIgKzI4NzcsMTIgQEAgdHlwZWRlZiB1
bnNpZ25lZCBpbnQgWVlfQ0hBUjsKIAkqeXlfY3AgPSAwOyBcCiAJeXlfY19idWZfcCA9IHl5X2Nw
OwogI2RlZmluZSBZWV9CUkVBSyBicmVhazsKLSNkZWZpbmUgRUNITyBxRGVidWcoICIlcyIsIFFT
dHJpbmcoIChRQ2hhciAqKXl5dGV4dCwgeXlsZW5nICkubGF0aW4xKCkgKQorI2RlZmluZSBFQ0hP
CiAjZGVmaW5lIFlZX1JVTEVfU0VUVVAKICNkZWZpbmUgSU5JVElBTCAwCiAjZGVmaW5lIFlZX1NU
QVRFX0VPRihzdGF0ZSkgKFlZX0VORF9PRl9CVUZGRVIgKyBzdGF0ZSArIDEpCiAjZGVmaW5lIHl5
dGVybWluYXRlKCkgeXlUb2sgPSBFTkQ7IHJldHVybiB5eVRvawotI2RlZmluZSBZWV9GQVRBTF9F
UlJPUihhKSBxRmF0YWwoYSkKKyNkZWZpbmUgWVlfRkFUQUxfRVJST1IoYSkKICNkZWZpbmUgQkVH
SU4geXlfc3RhcnQgPSAxICsgMiAqCiAjZGVmaW5lIENPTU1FTlQgMQogCkluZGV4OiBXZWJDb3Jl
L2todG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMjE5CmRpZmYgLXAgLXUgLXIxLjIxOSBXZWJDb3JlL2todG1sL2Nzcy9jc3Nz
dHlsZXNlbGVjdG9yLmNwcAotLS0gV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHAJMzAgT2N0IDIwMDUgMDU6MjY6MjUgLTAwMDAJMS4yMTkKKysrIFdlYkNvcmUva2h0bWwvY3Nz
L2Nzc3N0eWxlc2VsZWN0b3IuY3BwCTMwIE9jdCAyMDA1IDIyOjMyOjUzIC0wMDAwCkBAIC03NCwy
NCArNzQsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vICNkZWZpbmUgU1RZTEVf
U0hBUklOR19TVEFUUyAxCiAKICNkZWZpbmUgSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAot
aWYgKGlzSW5oZXJpdCkgXAote1wKLSAgICBzdHlsZS0+c2V0IyNQcm9wKHBhcmVudFN0eWxlLT5w
cm9wKCkpO1wKLSAgICByZXR1cm47XAoraWYgKGlzSW5oZXJpdCkgeyBcCisgICAgc3R5bGUtPnNl
dCMjUHJvcChwYXJlbnRTdHlsZS0+cHJvcCgpKTsgXAorICAgIHJldHVybjsgXAogfQogCiAjZGVm
aW5lIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKIEhBTkRMRV9JTkhF
UklUKHByb3AsIFByb3ApIFwKLWVsc2UgaWYgKGlzSW5pdGlhbCkgXAote1wKLSAgICBzdHlsZS0+
c2V0IyNQcm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNQcm9wKCkpO1wKLSAgICByZXR1cm47XAor
aWYgKGlzSW5pdGlhbCkgeyBcCisgICAgc3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6aW5p
dGlhbCMjUHJvcCgpKTsgXAorICAgIHJldHVybjsgXAogfQogCiAjZGVmaW5lIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUocHJvcCwgUHJvcCwgVmFsdWUpIFwKIEhBTkRMRV9J
TkhFUklUKHByb3AsIFByb3ApIFwKLWVsc2UgaWYgKGlzSW5pdGlhbCkgXAote1wKK2lmIChpc0lu
aXRpYWwpIHsgXAogICAgIHN0eWxlLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1Zh
bHVlKCkpO1wKICAgICByZXR1cm47XAogfQpAQCAtMTU5LDI0ICsxNTYsMjEgQEAgd2hpbGUgKGN1
cnJDaGlsZCkgeyBcCiB9IH0KIAogI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9DT05EKHByb3BJRCwg
cHJvcCwgUHJvcCkgXAotaWYgKGlkID09IHByb3BJRCkgXAote1wKLSAgICBzdHlsZS0+c2V0IyNQ
cm9wKHBhcmVudFN0eWxlLT5wcm9wKCkpO1wKLSAgICByZXR1cm47XAoraWYgKGlkID09IHByb3BJ
RCkgeyBcCisgICAgc3R5bGUtPnNldCMjUHJvcChwYXJlbnRTdHlsZS0+cHJvcCgpKTsgXAorICAg
IHJldHVybjsgXAogfQogCiAjZGVmaW5lIEhBTkRMRV9JTklUSUFMX0NPTkQocHJvcElELCBQcm9w
KSBcCi1pZiAoaWQgPT0gcHJvcElEKSBcCi17XAotICAgIHN0eWxlLT5zZXQjI1Byb3AoUmVuZGVy
U3R5bGU6OmluaXRpYWwjI1Byb3AoKSk7XAotICAgIHJldHVybjtcCitpZiAoaWQgPT0gcHJvcElE
KSB7IFwKKyAgICBzdHlsZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNQcm9wKCkp
OyBcCisgICAgcmV0dXJuOyBcCiB9CiAKICNkZWZpbmUgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKHByb3BJRCwgUHJvcCwgVmFsdWUpIFwKLWlmIChpZCA9PSBwcm9wSUQpIFwKLXtcCi0g
ICAgc3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6aW5pdGlhbCMjVmFsdWUoKSk7XAotICAg
IHJldHVybjtcCitpZiAoaWQgPT0gcHJvcElEKSB7IFwKKyAgICBzdHlsZS0+c2V0IyNQcm9wKFJl
bmRlclN0eWxlOjppbml0aWFsIyNWYWx1ZSgpKTsgXAorICAgIHJldHVybjsgXAogfQogCiBuYW1l
c3BhY2Uga2h0bWwgewpAQCAtMjQ0MSwxMCArMjQzNSwyOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydHkoIGluCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENT
U19QUk9QX0NVUlNPUjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoY3Vyc29y
LCBDdXJzb3IpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHN0eWxl
LT5zZXRDdXJzb3IoIChFQ3Vyc29yKSAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1Nf
VkFMX0FVVE8pICk7Ci0gICAgICAgIGJyZWFrOyAgICAgICAgCisgICAgICAgIGlmIChpc0luaGVy
aXQpIHsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3IocGFyZW50U3R5bGUtPmN1cnNvcigp
KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZShwYXJlbnRTdHlsZS0+Y3Vyc29y
SW1hZ2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlz
SW5pdGlhbCkgeworICAgICAgICAgICAgc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5p
dGlhbEN1cnNvcigpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRDdXJzb3JJbWFnZSgwKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUp
IHsKKyAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQp
IHsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKShwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSAtIENTU19WQUxfQVVUTykpOworICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRDdXJzb3JJbWFnZSgwKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgICAgIENTU0ltYWdlVmFsdWVJ
bXBsICppbWFnZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWVJbXBsICo+KHByaW1pdGl2ZVZh
bHVlKTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKKyAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29ySW1hZ2UoaW1hZ2UtPmltYWdlKGVsZW1lbnQt
PmdldERvY3VtZW50KCktPmRvY0xvYWRlcigpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CiAvLyBjb2xvcnMgfHwgaW5oZXJpdAogICAgIGNhc2UgQ1NTX1BST1Bf
QkFDS0dST1VORF9DT0xPUjoKICAgICBjYXNlIENTU19QUk9QX0JPUkRFUl9UT1BfQ09MT1I6Cklu
ZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2VjbWEva2pzX2h0bWwuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjE0MwpkaWZmIC1wIC11IC1yMS4xNDMgV2ViQ29yZS9raHRtbC9lY21hL2tqc19o
dG1sLmNwcAotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcAkyNyBPY3QgMjAwNSAy
MzoxNDo1OSAtMDAwMAkxLjE0MworKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19odG1sLmNwcAkz
MCBPY3QgMjAwNSAyMjozMjo1OCAtMDAwMApAQCAtNDMzOSw3ICs0MzM5LDcgQEAgVmFsdWVJbXAg
KktKUzo6Q29udGV4dDJERnVuY3Rpb246OmNhbGxBcwogICAgICAgICAgICAgaWYgKCFzb3VyY2VD
b250ZXh0KSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIgcDsKICAgICAgICAgICAgICAgICBw
LmRyYXdGbG9hdFBpeG1hcCAoZHgsIGR5LCBkdywgZGgsIHBpeG1hcCwgc3gsIHN5LCBzdywgc2gs
IAotICAgICAgICAgICAgICAgICAgICBRUGFpbnRlcjo6Y29tcG9zaXRlT3BlcmF0b3JGcm9tU3Ry
aW5nKGNvbnRleHRPYmplY3QtPl9nbG9iYWxDb21wb3NpdGUtPnRvU3RyaW5nKGV4ZWMpLnFzdHJp
bmcoKS5sb3dlcigpKSwgZHJhd2luZ0NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBRUGFp
bnRlcjo6Y29tcG9zaXRlT3BlcmF0b3JGcm9tU3RyaW5nKGNvbnRleHRPYmplY3QtPl9nbG9iYWxD
b21wb3NpdGUtPnRvU3RyaW5nKGV4ZWMpLnFzdHJpbmcoKSksIGRyYXdpbmdDb250ZXh0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIENoZWFw
LCBiZWNhdXNlIHRoZSBpbWFnZSBpcyBiYWNrZWQgYnkgY29weS1vbi13cml0ZSBtZW1vcnksIGFu
ZCB3ZSdyZQpAQCAtNTI0Miw3ICs1MjQyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1BhdHRlcm4gKHZv
aWQgKiBpbmZvLCBDRwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHAuZHJhd0Zsb2F0UGl4bWFw
ICgwLCAwLCB3LCBoLCBwaXhtYXAsIDAuZiwgMC5mLCB3LCBoLCAKLSAgICAgICAgICAgIFFQYWlu
dGVyOjpjb21wb3NpdGVPcGVyYXRvckZyb21TdHJpbmcoUVN0cmluZygic291cmNlLW92ZXIiKSks
IGNvbnRleHQpOworICAgICAgICAgICAgUVBhaW50ZXI6OmNvbXBvc2l0ZU9wZXJhdG9yRnJvbVN0
cmluZygic291cmNlLW92ZXIiKSwgY29udGV4dCk7CiB9CiAKIENHUGF0dGVybkNhbGxiYWNrcyBw
YXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBkcmF3UGF0dGVybiwgTlVMTCB9OwpJbmRleDogV2ViQ29y
ZS9raHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaW1hZ2VpbXBsLmNwcCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS41MwpkaWZmIC1wIC11IC1yMS41MyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9p
bWFnZWltcGwuY3BwCi0tLSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwCTYg
T2N0IDIwMDUgMDQ6MTM6MTIgLTAwMDAJMS41MworKysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxf
aW1hZ2VpbXBsLmNwcAkzMCBPY3QgMjAwNSAyMjozMjo1OSAtMDAwMApAQCAtMzQ1LDYgKzM0NSw4
IEBAIGludCBIVE1MSW1hZ2VFbGVtZW50SW1wbDo6aGVpZ2h0KGJvb2wgaWcKICAgICByZXR1cm4g
bV9yZW5kZXItPmNvbnRlbnRIZWlnaHQoKTsKIH0KIAorI2lmICFBUFBMRV9DSEFOR0VTCisKIFFJ
bWFnZSBIVE1MSW1hZ2VFbGVtZW50SW1wbDo6Y3VycmVudEltYWdlKCkgY29uc3QKIHsKICAgICBS
ZW5kZXJJbWFnZSAqciA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIoKSk7CkBA
IC0zNTMsNiArMzU1LDggQEAgUUltYWdlIEhUTUxJbWFnZUVsZW1lbnRJbXBsOjpjdXJyZW50SW1h
ZwogICAgIHJldHVybiBRSW1hZ2UoKTsKIH0KIAorI2VuZGlmCisKIGJvb2wgSFRNTEltYWdlRWxl
bWVudEltcGw6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZUltcGwgKmF0dHIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIChhdHRyLT5uYW1lKCkgPT0gc3JjQXR0ciB8fCAoYXR0ci0+bmFtZSgpID09IHVz
ZW1hcEF0dHIgJiYgYXR0ci0+dmFsdWUoKS5kb21TdHJpbmcoKVswXSAhPSAnIycpKTsKSW5kZXg6
IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2lubGluZWltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9pbmxpbmVpbXBsLmNwcCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS41MgpkaWZmIC1wIC11IC1yMS41MiBXZWJDb3JlL2todG1sL2h0
bWwvaHRtbF9pbmxpbmVpbXBsLmNwcAotLS0gV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaW5saW5l
aW1wbC5jcHAJMyBPY3QgMjAwNSAyMToxMjoyOSAtMDAwMAkxLjUyCisrKyBXZWJDb3JlL2todG1s
L2h0bWwvaHRtbF9pbmxpbmVpbXBsLmNwcAkzMCBPY3QgMjAwNSAyMjozMjo1OSAtMDAwMApAQCAt
MjA4LDcgKzIwOCw2IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnRJbXBsOjpkZWZhdWx0RXZlbnQK
IAkgICAgfQogCiAgICAgICAgICAgICBpZiAoZ2V0RG9jdW1lbnQoKSAmJiBnZXREb2N1bWVudCgp
LT52aWV3KCkgJiYgZ2V0RG9jdW1lbnQoKS0+cGFydCgpKSB7Ci0gICAgICAgICAgICAgICAgZ2V0
RG9jdW1lbnQoKS0+dmlldygpLT5yZXNldEN1cnNvcigpOwogICAgICAgICAgICAgICAgIGdldERv
Y3VtZW50KCktPnBhcnQoKS0+CiAgICAgICAgICAgICAgICAgICAgIHVybFNlbGVjdGVkKCB1cmws
IGJ1dHRvbiwgc3RhdGUsIHV0YXJnZXQgKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUv
a3dxL0tXUUNsaXBib2FyZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9rd3EvS1dRQ2xpcGJvYXJkLm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE5CmRpZmYgLXAg
LXUgLXIxLjE5IFdlYkNvcmUva3dxL0tXUUNsaXBib2FyZC5tbQotLS0gV2ViQ29yZS9rd3EvS1dR
Q2xpcGJvYXJkLm1tCTMgT2N0IDIwMDUgMjE6MTM6MDEgLTAwMDAJMS4xOQorKysgV2ViQ29yZS9r
d3EvS1dRQ2xpcGJvYXJkLm1tCTMwIE9jdCAyMDA1IDIyOjMyOjU5IC0wMDAwCkBAIC0zNDUsOSAr
MzQ1LDkgQEAgTlNJbWFnZSAqS1dRQ2xpcGJvYXJkOjpkcmFnTlNJbWFnZShOU1BvaQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0gKE5TSW1h
Z2UgKikobV9kcmFnSW1hZ2UuaW1hZ2UoKSk7CisgICAgICAgIHJlc3VsdCA9IFttX2RyYWdJbWFn
ZS5pbWFnZVJlbmRlcmVyKCkgaW1hZ2VdOwogICAgICAgICBpZiAobG9jKSB7Ci0gICAgICAgICAg
ICAqbG9jID0gTlNQb2ludChtX2RyYWdMb2MpOworICAgICAgICAgICAgKmxvYyA9IG1fZHJhZ0xv
YzsKICAgICAgICAgICAgIGxvYy0+eSA9IFtyZXN1bHQgc2l6ZV0uaGVpZ2h0IC0gbG9jLT55Owog
ICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9rd3EvS1dRQ3Vyc29yLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FDdXJzb3IubW0sdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMjMKZGlmZiAtcCAtdSAtcjEuMjMgV2ViQ29yZS9rd3EvS1dRQ3Vyc29y
Lm1tCi0tLSBXZWJDb3JlL2t3cS9LV1FDdXJzb3IubW0JMyBPY3QgMjAwNSAyMToxMzowMiAtMDAw
MAkxLjIzCisrKyBXZWJDb3JlL2t3cS9LV1FDdXJzb3IubW0JMzAgT2N0IDIwMDUgMjI6MzM6MDAg
LTAwMDAKQEAgLTIzLDI2ICsyMywzMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1
ZGUgImNvbmZpZy5oIgorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJLV1FDdXJzb3IuaCIK
LSNpbXBvcnQgIktXUUxvZ2dpbmcuaCIKKwogI2ltcG9ydCAiS1dRRm91bmRhdGlvbkV4dHJhcy5o
IgorI2ltcG9ydCAiV2ViQ29yZUltYWdlUmVuZGVyZXIuaCIKIAotLy8gVGhlIE5TQ3Vyc29yIGNv
Y29hIGNhbGxzIGhlcmUgY2FuJ3QgZmFpbCwgc28gbm8gbmVlZCB0byBibG9jayBDb2NvYSBleGNl
cHRpb25zCitzdGF0aWMgTlNDdXJzb3IgKmNyZWF0ZUN1c3RvbUN1cnNvcihjb25zdCBRUGl4bWFw
JiBwaXhtYXApCit7CisgICAgTlNJbWFnZSAqaW1hZ2UgPSBbcGl4bWFwLmltYWdlUmVuZGVyZXIo
KSBpbWFnZV07CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gW1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFnZSBob3RTcG90Ok5TWmVyb1Bv
aW50XTsKK30KIAogUUN1cnNvcjo6UUN1cnNvcigpCiAgICAgOiBjdXJzb3IobmlsKQogewogfQog
Ci1RQ3Vyc29yOjpRQ3Vyc29yKGNvbnN0IFFQaXhtYXAgJnBpeG1hcCkKLSAgICA6IGN1cnNvcihu
aWwpCitRQ3Vyc29yOjpRQ3Vyc29yKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCkKKyAgICA6IGN1cnNv
cihjcmVhdGVDdXN0b21DdXJzb3IocGl4bWFwKSkKIHsKLSAgICAvLyBOZWVkZWQgZm9yIGN1c3Rv
bSBjdXJzb3JzLgotICAgIEVSUk9SKCJub3QgeWV0IGltcGxlbWVudGVkIik7CiB9CiAKLVFDdXJz
b3I6OlFDdXJzb3IoY29uc3QgUUN1cnNvciAmb3RoZXIpCitRQ3Vyc29yOjpRQ3Vyc29yKGNvbnN0
IFFDdXJzb3ImIG90aGVyKQogICAgIDogY3Vyc29yKEtXUVJldGFpbihvdGhlci5jdXJzb3IpKQog
ewogfQpAQCAtNTksNyArNjQsNyBAQCBRQ3Vyc29yIFFDdXJzb3I6Om1ha2VXaXRoTlNDdXJzb3Io
TlNDdXJzCiAgICAgcmV0dXJuIHE7CiB9CiAgICAgICAKLVFDdXJzb3IgJlFDdXJzb3I6Om9wZXJh
dG9yPShjb25zdCBRQ3Vyc29yICZvdGhlcikKK1FDdXJzb3ImIFFDdXJzb3I6Om9wZXJhdG9yPShj
b25zdCBRQ3Vyc29yJiBvdGhlcikKIHsKICAgICBLV1FSZXRhaW4ob3RoZXIuY3Vyc29yKTsKICAg
ICBLV1FSZWxlYXNlKGN1cnNvcik7CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5t
bSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42ODAKZGlmZiAtcCAtdSAtcjEuNjgwIFdlYkNvcmUv
a3dxL0tXUUtIVE1MUGFydC5tbQotLS0gV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0Lm1tCTI2IE9j
dCAyMDA1IDIxOjQ3OjM4IC0wMDAwCTEuNjgwCisrKyBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQu
bW0JMzAgT2N0IDIwMDUgMjI6MzM6MDMgLTAwMDAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzU3
LDcgKzIzNTcsNyBAQCB2b2lkIEtXUUtIVE1MUGFydDo6a2h0bWxNb3VzZU1vdmVFdmVudChNCiAK
ICAgICAgICAgaWYgKF9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgICAgIC8vIFdl
IGFyZSBzdGFydGluZyBhIHRleHQvaW1hZ2UvdXJsIGRyYWcsIHNvIHRoZSBjdXJzb3Igc2hvdWxk
IGJlIGFuIGFycm93Ci0gICAgICAgICAgICBkLT5tX3ZpZXctPnJlc2V0Q3Vyc29yKCk7CisgICAg
ICAgICAgICBkLT5tX3ZpZXctPnZpZXdwb3J0KCktPnNldEN1cnNvcihRQ3Vyc29yKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBOU1BvaW50IGRyYWdMb2NhdGlvbiA9IFtfY3VycmVudEV2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddOwogICAgICAgICAgICAgaWYgKGRyYWdIeXN0ZXJlc2lzRXhj
ZWVkZWQoZHJhZ0xvY2F0aW9uLngsIGRyYWdMb2NhdGlvbi55KSkgewpAQCAtMjg4NCwyMiArMjg4
NCwyMiBAQCBOU0ZpbGVXcmFwcGVyICpLV1FLSFRNTFBhcnQ6OmZpbGVXcmFwcGVyCiAgICAgCiAg
ICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IG5pbDsKIAotICAgIEF0b21pY1N0cmluZyBhdHRy
ID0gZS0+Z2V0QXR0cmlidXRlKHNyY0F0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
ciA9IGUtPmdldEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICBpZiAoIWF0dHIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIE5TVVJMICpVUkwgPSBjb21wbGV0ZVVSTChhdHRyLnFzdHJpbmcoKSkuZ2V0TlNV
UkwoKTsKICAgICAgICAgd3JhcHBlciA9IFtfYnJpZGdlIGZpbGVXcmFwcGVyRm9yVVJMOlVSTF07
CiAgICAgfSAgICAKICAgICBpZiAoIXdyYXBwZXIpIHsKICAgICAgICAgUmVuZGVySW1hZ2UgKnJl
bmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UgKj4oZS0+cmVuZGVyZXIoKSk7Ci0gICAg
ICAgIE5TSW1hZ2UgKiBpbWFnZSA9IChOU0ltYWdlICopKHJlbmRlcmVyLT5waXhtYXAoKS5pbWFn
ZSgpKTsKLSAgICAgICAgTlNEYXRhICp0aWZmRGF0YSA9IFtpbWFnZSBUSUZGUmVwcmVzZW50YXRp
b25Vc2luZ0NvbXByZXNzaW9uOk5TVElGRkNvbXByZXNzaW9uTFpXIGZhY3RvcjowLjBdOwotICAg
ICAgICB3cmFwcGVyID0gW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6dGlmZkRhdGFdOwotICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFt
ZTpAImltYWdlLnRpZmYiXTsKLSAgICAgICAgW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworICAgICAg
ICBpZiAocmVuZGVyZXItPmlzSW1hZ2UoKSkgeworICAgICAgICAgICAgd3JhcHBlciA9IFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltyZW5kZXJlci0+
cGl4bWFwKCkuaW1hZ2VSZW5kZXJlcigpIFRJRkZSZXByZXNlbnRhdGlvbl1dOworICAgICAgICAg
ICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJpbWFnZS50aWZmIl07CisgICAgICAg
ICAgICBbd3JhcHBlciBhdXRvcmVsZWFzZV07CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gd3JhcHBlcjsKLSAgICAKKwogICAgIEtXUV9VTkJMT0NLX0VYQ0VQVElPTlM7CiAKICAgICBy
ZXR1cm4gbmlsOwpJbmRleDogV2ViQ29yZS9rd3EvS1dRUGFpbnRlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUGFpbnRlci5tbSx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xNDYKZGlmZiAtcCAtdSAtcjEuMTQ2IFdlYkNvcmUva3dxL0tXUVBhaW50ZXIu
bW0KLS0tIFdlYkNvcmUva3dxL0tXUVBhaW50ZXIubW0JMjAgT2N0IDIwMDUgMDY6MDI6MjcgLTAw
MDAJMS4xNDYKKysrIFdlYkNvcmUva3dxL0tXUVBhaW50ZXIubW0JMzAgT2N0IDIwMDUgMjI6MzM6
MDQgLTAwMDAKQEAgLTU2Niw4ICs1NjYsOCBAQCB2b2lkIFFQYWludGVyOjpkcmF3RmxvYXRQaXht
YXAoIGZsb2F0IHgsCiAgICAgTlNSZWN0IGluUmVjdCA9IE5TTWFrZVJlY3QoeCwgeSwgdHcsIHRo
KTsKICAgICBOU1JlY3QgZnJvbVJlY3QgPSBOU01ha2VSZWN0KHN4LCBzeSwgdHN3LCB0c2gpOwog
ICAgIAotICAgIFtwaXhtYXAuaW1hZ2VSZW5kZXJlciBkcmF3SW1hZ2VJblJlY3Q6aW5SZWN0Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21SZWN0OmZyb21SZWN0IGNv
bXBvc2l0ZU9wZXJhdG9yOihOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKWNvbXBvc2l0ZU9wZXJhdG9y
IGNvbnRleHQ6Y29udGV4dF07CisgICAgW3BpeG1hcC5pbWFnZVJlbmRlcmVyKCkgZHJhd0ltYWdl
SW5SZWN0OmluUmVjdCBmcm9tUmVjdDpmcm9tUmVjdCBjb21wb3NpdGVPcGVyYXRvcjooTlNDb21w
b3NpdGluZ09wZXJhdGlvbiljb21wb3NpdGVPcGVyYXRvciBjb250ZXh0OmNvbnRleHRdOworCiAg
ICAgS1dRX1VOQkxPQ0tfRVhDRVBUSU9OUzsKIH0KIApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQg
UVBhaW50ZXI6OmRyYXdUaWxlZFBpeG1hcCggaW50IHgsIGkKICAgICBLV1FfQkxPQ0tfRVhDRVBU
SU9OUzsKICAgICBOU1JlY3QgdGVtcFJlY3QgPSB7IHt4LCB5fSwge3csIGh9IH07IC8vIHdvcmth
cm91bmQgZm9yIDQyMTMzMTQKICAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3gsIHN5IH07Ci0g
ICAgW3BpeG1hcC5pbWFnZVJlbmRlcmVyIHRpbGVJblJlY3Q6dGVtcFJlY3QgZnJvbVBvaW50OnRl
bXBQb2ludCBjb250ZXh0OmNvbnRleHRdOworICAgIFtwaXhtYXAuaW1hZ2VSZW5kZXJlcigpIHRp
bGVJblJlY3Q6dGVtcFJlY3QgZnJvbVBvaW50OnRlbXBQb2ludCBjb250ZXh0OmNvbnRleHRdOwog
ICAgIEtXUV9VTkJMT0NLX0VYQ0VQVElPTlM7CiB9CiAKQEAgLTU5NSw4ICs1OTUsOCBAQCB2b2lk
IFFQYWludGVyOjpkcmF3U2NhbGVkQW5kVGlsZWRQaXhtYXAoCiAgICAgICAgIHJldHVybiBkcmF3
UGl4bWFwKHgsIHksIHcsIGgsIHBpeG1hcCwgc3gsIHN5LCBzdywgc2gsIC0xLCBjb250ZXh0KTsK
IAogICAgIEtXUV9CTE9DS19FWENFUFRJT05TOwotICAgIFtwaXhtYXAuaW1hZ2VSZW5kZXJlciBz
Y2FsZUFuZFRpbGVJblJlY3Q6TlNNYWtlUmVjdCh4LCB5LCB3LCBoKSBmcm9tUmVjdDpOU01ha2VS
ZWN0KHN4LCBzeSwgc3csIHNoKSAKLSAgICAgICAgICAgICAgICAgICAgICB3aXRoSG9yaXpvbnRh
bFRpbGVSdWxlOihXZWJJbWFnZVRpbGVSdWxlKWhSdWxlIHdpdGhWZXJ0aWNhbFRpbGVSdWxlOihX
ZWJJbWFnZVRpbGVSdWxlKXZSdWxlIGNvbnRleHQ6Y29udGV4dF07CisgICAgW3BpeG1hcC5pbWFn
ZVJlbmRlcmVyKCkgc2NhbGVBbmRUaWxlSW5SZWN0Ok5TTWFrZVJlY3QoeCwgeSwgdywgaCkgZnJv
bVJlY3Q6TlNNYWtlUmVjdChzeCwgc3ksIHN3LCBzaCkgCisgICAgICAgICAgICAgICAgICAgICAg
ICB3aXRoSG9yaXpvbnRhbFRpbGVSdWxlOihXZWJJbWFnZVRpbGVSdWxlKWhSdWxlIHdpdGhWZXJ0
aWNhbFRpbGVSdWxlOihXZWJJbWFnZVRpbGVSdWxlKXZSdWxlIGNvbnRleHQ6Y29udGV4dF07CiAg
ICAgS1dRX1VOQkxPQ0tfRVhDRVBUSU9OUzsKIH0KIApJbmRleDogV2ViQ29yZS9rd3EvS1dRUGl4
bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVBpeG1h
cC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQzCmRpZmYgLXAgLXUgLXIxLjQzIFdlYkNvcmUv
a3dxL0tXUVBpeG1hcC5oCi0tLSBXZWJDb3JlL2t3cS9LV1FQaXhtYXAuaAkzMCBBdWcgMjAwNSAw
OTozMDoyNCAtMDAwMAkxLjQzCisrKyBXZWJDb3JlL2t3cS9LV1FQaXhtYXAuaAkzMCBPY3QgMjAw
NSAyMjozMzowNCAtMDAwMApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEzICsyNiw5IEBACiAj
aWZuZGVmIFFQSVhNQVBfSF8KICNkZWZpbmUgUVBJWE1BUF9IXwogCisjaW5jbHVkZSAiS1dRTmFt
ZXNwYWNlLmgiCiAjaW5jbHVkZSAiS1dRUGFpbnREZXZpY2UuaCIKLSNpbmNsdWRlICJLV1FDb2xv
ci5oIgogI2luY2x1ZGUgIktXUVN0cmluZy5oIgotI2luY2x1ZGUgIktXUU5hbWVzcGFjZS5oIgot
I2luY2x1ZGUgIktXUUltYWdlLmgiCi0jaW5jbHVkZSAiS1dRU2l6ZS5oIgotI2luY2x1ZGUgIktX
UVJlY3QuaCIKIAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2
aWNlcy5oPgogCkBAIC00OSw5ICs0NSwxMCBAQCBjbGFzcyBOU1N0cmluZzsKIGNsYXNzIFFXTWF0
cml4OwogY2xhc3MgUVBhaW50ZXI7CiBjbGFzcyBRUGl4bWFwOworY2xhc3MgUVJlY3Q7CitjbGFz
cyBRU2l6ZTsKIAotbmFtZXNwYWNlIGtodG1sCi17CituYW1lc3BhY2Uga2h0bWwgewogICAgIGNs
YXNzIENhY2hlZEltYWdlQ2FsbGJhY2s7CiB9CiAKQEAgLTgwLDcgKzc3LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzaXplKGludCwgaW50KTsKIAogICAgIFFQaXhtYXAgeEZvcm0oY29uc3QgUVdN
YXRyaXggJikgY29uc3Q7Ci0gICAgUUltYWdlIGNvbnZlcnRUb0ltYWdlKCkgY29uc3QgeyByZXR1
cm4gUUltYWdlKCk7IH0KICAgICAKICAgICBib29sIG1hc2soKSBjb25zdDsKIApAQCAtODksMTQg
Kzg1LDE0IEBAIHB1YmxpYzoKICAgICBib29sIHJlY2VpdmVkRGF0YShjb25zdCBRQnl0ZUFycmF5
ICZieXRlcywgYm9vbCBpc0NvbXBsZXRlLCBraHRtbDo6Q2FjaGVkSW1hZ2VDYWxsYmFjayAqZGVj
b2RlckNhbGxiYWNrKTsKICAgICB2b2lkIHN0b3BBbmltYXRpb25zKCk7CiAKLSAgICBXZWJDb3Jl
SW1hZ2VSZW5kZXJlclB0ciBpbWFnZSgpIHsgcmV0dXJuIGltYWdlUmVuZGVyZXI7IH07CisgICAg
V2ViQ29yZUltYWdlUmVuZGVyZXJQdHIgaW1hZ2VSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2VSZW5kZXJlcjsgfQogCiAgICAgdm9pZCBpbmNyZWFzZVVzZUNvdW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBkZWNyZWFzZVVzZUNvdW50KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBmbHVzaFJh
c3RlckNhY2hlKCk7CiAgICAgCi0gICAgQ0dJbWFnZVJlZiBpbWFnZVJlZigpOworICAgIENHSW1h
Z2VSZWYgaW1hZ2VSZWYoKSBjb25zdDsKICAgICAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VU
aHJlYWRlZERlY29kaW5nKCk7CiAKQEAgLTEwNCwxMiArMTAwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QW5pbWF0aW9uUmVjdChjb25zdCBRUmVjdCYpIGNvbnN0OwogCiBwcml2YXRlOgotCi0g
ICAgV2ViQ29yZUltYWdlUmVuZGVyZXJQdHIgaW1hZ2VSZW5kZXJlcjsKLSAgICAgICAgCi0gICAg
bXV0YWJsZSBib29sIG5lZWRDb3B5T25Xcml0ZTsKLSAgICAKLSAgICBOU1N0cmluZyAqTUlNRVR5
cGU7CisgICAgV2ViQ29yZUltYWdlUmVuZGVyZXJQdHIgbV9pbWFnZVJlbmRlcmVyOworICAgIG11
dGFibGUgYm9vbCBtX25lZWRDb3B5T25Xcml0ZTsKKyAgICBOU1N0cmluZyAqbV9NSU1FVHlwZTsK
ICAgICAKICAgICBmcmllbmQgY2xhc3MgUVBhaW50ZXI7CiAKSW5kZXg6IFdlYkNvcmUva3dxL0tX
UVBpeG1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dR
UGl4bWFwLm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUxCmRpZmYgLXAgLXUgLXIxLjUxIFdl
YkNvcmUva3dxL0tXUVBpeG1hcC5tbQotLS0gV2ViQ29yZS9rd3EvS1dRUGl4bWFwLm1tCTMgT2N0
IDIwMDUgMjE6MTM6MDcgLTAwMDAJMS41MQorKysgV2ViQ29yZS9rd3EvS1dRUGl4bWFwLm1tCTMw
IE9jdCAyMDA1IDIyOjMzOjA0IC0wMDAwCkBAIC0yMiwxMiArMjIsMTIgQEAKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbXBvcnQg
ImxvYWRlci5oIgogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW1wb3J0ICJLV1FQaXhtYXAuaCIK
LSNpbXBvcnQgIktXUUZvdW5kYXRpb25FeHRyYXMuaCIKIAorI2ltcG9ydCAibG9hZGVyLmgiCisj
aW1wb3J0ICJLV1FGb3VuZGF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDb3JlSW1hZ2VSZW5k
ZXJlci5oIgogI2ltcG9ydCAiV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5LmgiCiAKQEAgLTM3
LDg4ICszNyw4NyBAQCBRUGl4bWFwICpLV1FMb2FkUGl4bWFwKGNvbnN0IGNoYXIgKm5hbWUpCiAg
ICAgcmV0dXJuIHA7CiB9CiAKLWJvb2wgY2FuUmVuZGVySW1hZ2VUeXBlKGNvbnN0IFFTdHJpbmcg
JnR5cGUpCitib29sIGNhblJlbmRlckltYWdlVHlwZShjb25zdCBRU3RyaW5nJiB0eXBlKQogewog
ICAgIHJldHVybiBbW1tXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0g
c3VwcG9ydGVkTUlNRVR5cGVzXSBjb250YWluc09iamVjdDp0eXBlLmdldE5TU3RyaW5nKCldOwog
fQogCiBRUGl4bWFwOjpRUGl4bWFwKCkKIHsKLSAgICBpbWFnZVJlbmRlcmVyID0gbmlsOwotICAg
IE1JTUVUeXBlID0gbmlsOwotICAgIG5lZWRDb3B5T25Xcml0ZSA9IGZhbHNlOworICAgIG1faW1h
Z2VSZW5kZXJlciA9IG5pbDsKKyAgICBtX01JTUVUeXBlID0gbmlsOworICAgIG1fbmVlZENvcHlP
bldyaXRlID0gZmFsc2U7CiB9CiAKIFFQaXhtYXA6OlFQaXhtYXAoV2ViQ29yZUltYWdlUmVuZGVy
ZXJQdHIgcikKIHsKLSAgICBpbWFnZVJlbmRlcmVyID0gS1dRUmV0YWluKHIpOwotICAgIE1JTUVU
eXBlID0gbmlsOwotICAgIG5lZWRDb3B5T25Xcml0ZSA9IGZhbHNlOworICAgIG1faW1hZ2VSZW5k
ZXJlciA9IEtXUVJldGFpbihyKTsKKyAgICBtX01JTUVUeXBlID0gbmlsOworICAgIG1fbmVlZENv
cHlPbldyaXRlID0gZmFsc2U7CiB9CiAKIFFQaXhtYXA6OlFQaXhtYXAodm9pZCAqTUlNRSkKIHsK
LSAgICBpbWFnZVJlbmRlcmVyID0gbmlsOwotICAgIE1JTUVUeXBlID0gS1dRUmV0YWluTlNSZWxl
YXNlKFsoTlNTdHJpbmcgKilNSU1FIGNvcHldKTsKLSAgICBuZWVkQ29weU9uV3JpdGUgPSBmYWxz
ZTsKKyAgICBtX2ltYWdlUmVuZGVyZXIgPSBuaWw7CisgICAgbV9NSU1FVHlwZSA9IEtXUVJldGFp
bk5TUmVsZWFzZShbKE5TU3RyaW5nICopTUlNRSBjb3B5XSk7CisgICAgbV9uZWVkQ29weU9uV3Jp
dGUgPSBmYWxzZTsKIH0KIAotUVBpeG1hcDo6UVBpeG1hcChjb25zdCBRU2l6ZSAmc3opCitRUGl4
bWFwOjpRUGl4bWFwKGNvbnN0IFFTaXplJiBzeikKIHsKLSAgICBpbWFnZVJlbmRlcmVyID0gS1dR
UmV0YWluKFtbV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGltYWdl
UmVuZGVyZXJXaXRoU2l6ZTpOU01ha2VTaXplKHN6LndpZHRoKCksIHN6LmhlaWdodCgpKV0pOwot
ICAgIE1JTUVUeXBlID0gbmlsOwotICAgIG5lZWRDb3B5T25Xcml0ZSA9IGZhbHNlOworICAgIG1f
aW1hZ2VSZW5kZXJlciA9IEtXUVJldGFpbihbW1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSBz
aGFyZWRGYWN0b3J5XSBpbWFnZVJlbmRlcmVyV2l0aFNpemU6TlNNYWtlU2l6ZShzei53aWR0aCgp
LCBzei5oZWlnaHQoKSldKTsKKyAgICBtX01JTUVUeXBlID0gbmlsOworICAgIG1fbmVlZENvcHlP
bldyaXRlID0gZmFsc2U7CiB9CiAKLVFQaXhtYXA6OlFQaXhtYXAoY29uc3QgUUJ5dGVBcnJheSAm
Ynl0ZXMpCitRUGl4bWFwOjpRUGl4bWFwKGNvbnN0IFFCeXRlQXJyYXkmIGJ5dGVzKQogewotICAg
IGltYWdlUmVuZGVyZXIgPSBLV1FSZXRhaW4oW1tXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnkg
c2hhcmVkRmFjdG9yeV0gaW1hZ2VSZW5kZXJlcldpdGhCeXRlczpieXRlcy5kYXRhKCkgbGVuZ3Ro
OmJ5dGVzLnNpemUoKV0pOwotICAgIE1JTUVUeXBlID0gbmlsOwotICAgIG5lZWRDb3B5T25Xcml0
ZSA9IGZhbHNlOworICAgIG1faW1hZ2VSZW5kZXJlciA9IEtXUVJldGFpbihbW1dlYkNvcmVJbWFn
ZVJlbmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBpbWFnZVJlbmRlcmVyV2l0aEJ5dGVzOmJ5
dGVzLmRhdGEoKSBsZW5ndGg6Ynl0ZXMuc2l6ZSgpXSk7CisgICAgbV9NSU1FVHlwZSA9IG5pbDsK
KyAgICBtX25lZWRDb3B5T25Xcml0ZSA9IGZhbHNlOwogfQogCi1RUGl4bWFwOjpRUGl4bWFwKGNv
bnN0IFFCeXRlQXJyYXkgJmJ5dGVzLCBOU1N0cmluZyAqTUlNRSkKK1FQaXhtYXA6OlFQaXhtYXAo
Y29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMsIE5TU3RyaW5nICpNSU1FKQogewotICAgIE1JTUVUeXBl
ID0gS1dRUmV0YWluTlNSZWxlYXNlKFtNSU1FIGNvcHldKTsKLSAgICBpbWFnZVJlbmRlcmVyID0g
S1dRUmV0YWluKFtbV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGlt
YWdlUmVuZGVyZXJXaXRoQnl0ZXM6Ynl0ZXMuZGF0YSgpIGxlbmd0aDpieXRlcy5zaXplKCkgTUlN
RVR5cGU6TUlNRVR5cGVdKTsKLSAgICBuZWVkQ29weU9uV3JpdGUgPSBmYWxzZTsKKyAgICBtX01J
TUVUeXBlID0gS1dRUmV0YWluTlNSZWxlYXNlKFtNSU1FIGNvcHldKTsKKyAgICBtX2ltYWdlUmVu
ZGVyZXIgPSBLV1FSZXRhaW4oW1tXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gaW1hZ2VSZW5kZXJlcldpdGhCeXRlczpieXRlcy5kYXRhKCkgbGVuZ3RoOmJ5dGVzLnNp
emUoKSBNSU1FVHlwZTptX01JTUVUeXBlXSk7CisgICAgbV9uZWVkQ29weU9uV3JpdGUgPSBmYWxz
ZTsKIH0KIAogUVBpeG1hcDo6UVBpeG1hcChpbnQgdywgaW50IGgpCiB7Ci0gICAgaW1hZ2VSZW5k
ZXJlciA9IEtXUVJldGFpbihbW1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0
b3J5XSBpbWFnZVJlbmRlcmVyV2l0aFNpemU6TlNNYWtlU2l6ZSh3LCBoKV0pOwotICAgIE1JTUVU
eXBlID0gbmlsOwotICAgIG5lZWRDb3B5T25Xcml0ZSA9IGZhbHNlOworICAgIG1faW1hZ2VSZW5k
ZXJlciA9IEtXUVJldGFpbihbW1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0
b3J5XSBpbWFnZVJlbmRlcmVyV2l0aFNpemU6TlNNYWtlU2l6ZSh3LCBoKV0pOworICAgIG1fTUlN
RVR5cGUgPSBuaWw7CisgICAgbV9uZWVkQ29weU9uV3JpdGUgPSBmYWxzZTsKIH0KIAotUVBpeG1h
cDo6UVBpeG1hcChjb25zdCBRUGl4bWFwICZjb3B5RnJvbSkgOiBRUGFpbnREZXZpY2UoY29weUZy
b20pCitRUGl4bWFwOjpRUGl4bWFwKGNvbnN0IFFQaXhtYXAmIGNvcHlGcm9tKSA6IFFQYWludERl
dmljZShjb3B5RnJvbSkKIHsKLSAgICBpbWFnZVJlbmRlcmVyID0gS1dRUmV0YWluTlNSZWxlYXNl
KFtjb3B5RnJvbS5pbWFnZVJlbmRlcmVyIGNvcHlXaXRoWm9uZTpOVUxMXSk7OwotICAgIG5lZWRD
b3B5T25Xcml0ZSA9IGZhbHNlOwotICAgIE1JTUVUeXBlID0gS1dRUmV0YWluTlNSZWxlYXNlKFtj
b3B5RnJvbS5NSU1FVHlwZSBjb3B5XSk7CisgICAgbV9pbWFnZVJlbmRlcmVyID0gS1dRUmV0YWlu
TlNSZWxlYXNlKFtjb3B5RnJvbS5tX2ltYWdlUmVuZGVyZXIgY29weVdpdGhab25lOk5VTExdKTs7
CisgICAgbV9uZWVkQ29weU9uV3JpdGUgPSBmYWxzZTsKKyAgICBtX01JTUVUeXBlID0gS1dRUmV0
YWluTlNSZWxlYXNlKFtjb3B5RnJvbS5tX01JTUVUeXBlIGNvcHldKTsKIH0KIAogUVBpeG1hcDo6
flFQaXhtYXAoKQogewotICAgIEtXUVJlbGVhc2UoTUlNRVR5cGUpOwotICAgIEtXUVJlbGVhc2Uo
aW1hZ2VSZW5kZXJlcik7CisgICAgS1dRUmVsZWFzZShtX01JTUVUeXBlKTsKKyAgICBLV1FSZWxl
YXNlKG1faW1hZ2VSZW5kZXJlcik7CiB9CiAKLUNHSW1hZ2VSZWYgUVBpeG1hcDo6aW1hZ2VSZWYo
KQorQ0dJbWFnZVJlZiBRUGl4bWFwOjppbWFnZVJlZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtp
bWFnZVJlbmRlcmVyIGltYWdlUmVmXTsKKyAgICByZXR1cm4gW21faW1hZ2VSZW5kZXJlciBpbWFn
ZVJlZl07CiB9CiAKIHZvaWQgUVBpeG1hcDo6cmVzZXRBbmltYXRpb24oKQogewotICAgIGlmIChp
bWFnZVJlbmRlcmVyKSB7Ci0gICAgICAgIFtpbWFnZVJlbmRlcmVyIHJlc2V0QW5pbWF0aW9uXTsK
LSAgICB9CisgICAgaWYgKG1faW1hZ2VSZW5kZXJlcikKKyAgICAgICAgW21faW1hZ2VSZW5kZXJl
ciByZXNldEFuaW1hdGlvbl07CiB9CiAKIHZvaWQgUVBpeG1hcDo6c2V0QW5pbWF0aW9uUmVjdChj
b25zdCBRUmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBbaW1hZ2VSZW5kZXJlciBzZXRBbmltYXRp
b25SZWN0Ok5TTWFrZVJlY3QocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpXTsKKyAgICBbbV9pbWFnZVJlbmRlcmVyIHNldEFuaW1hdGlvblJlY3Q6TlNNYWtl
UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSldOwog
fQogCiBAaW50ZXJmYWNlIFdlYkltYWdlQ2FsbGJhY2sgOiBOU09iamVjdApAQCAtMTg2LDE3ICsx
ODUsMTYgQEAgYm9vbCBRUGl4bWFwOjpzaG91bGRVc2VUaHJlYWRlZERlY29kaW5nKAogICAgIHJl
dHVybiBbV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5IHNob3VsZFVzZVRocmVhZGVkRGVjb2Rp
bmddID8gdHJ1ZSA6IGZhbHNlOwogfQogCi1ib29sIFFQaXhtYXA6OnJlY2VpdmVkRGF0YShjb25z
dCBRQnl0ZUFycmF5ICZieXRlcywgYm9vbCBpc0NvbXBsZXRlLCBraHRtbDo6Q2FjaGVkSW1hZ2VD
YWxsYmFjayAqZGVjb2RlckNhbGxiYWNrKQorYm9vbCBRUGl4bWFwOjpyZWNlaXZlZERhdGEoY29u
c3QgUUJ5dGVBcnJheSYgYnl0ZXMsIGJvb2wgaXNDb21wbGV0ZSwga2h0bWw6OkNhY2hlZEltYWdl
Q2FsbGJhY2sgKmRlY29kZXJDYWxsYmFjaykKIHsKLSAgICBpZiAoaW1hZ2VSZW5kZXJlciA9PSBu
aWwpIHsKLSAgICAgICAgaW1hZ2VSZW5kZXJlciA9IEtXUVJldGFpbihbW1dlYkNvcmVJbWFnZVJl
bmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBpbWFnZVJlbmRlcmVyV2l0aE1JTUVUeXBlOk1J
TUVUeXBlXSk7Ci0gICAgfQorICAgIGlmICghbV9pbWFnZVJlbmRlcmVyKQorICAgICAgICBtX2lt
YWdlUmVuZGVyZXIgPSBLV1FSZXRhaW4oW1tXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hh
cmVkRmFjdG9yeV0gaW1hZ2VSZW5kZXJlcldpdGhNSU1FVHlwZTptX01JTUVUeXBlXSk7CiAgICAg
CiAgICAgV2ViSW1hZ2VDYWxsYmFjayAqY2FsbGJhY2tXcmFwcGVyID0gbmlsOwogICAgIGlmIChk
ZWNvZGVyQ2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrV3JhcHBlciA9IFtbV2ViSW1hZ2VDYWxs
YmFjayBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpkZWNvZGVyQ2FsbGJhY2tdOwogCi0gICAgYm9v
bCByZXN1bHQgPSBbaW1hZ2VSZW5kZXJlciBpbmNyZW1lbnRhbExvYWRXaXRoQnl0ZXM6Ynl0ZXMu
ZGF0YSgpIGxlbmd0aDpieXRlcy5zaXplKCkgY29tcGxldGU6aXNDb21wbGV0ZSBjYWxsYmFjazpj
YWxsYmFja1dyYXBwZXJdOworICAgIGJvb2wgcmVzdWx0ID0gW21faW1hZ2VSZW5kZXJlciBpbmNy
ZW1lbnRhbExvYWRXaXRoQnl0ZXM6Ynl0ZXMuZGF0YSgpIGxlbmd0aDpieXRlcy5zaXplKCkgY29t
cGxldGU6aXNDb21wbGV0ZSBjYWxsYmFjazpjYWxsYmFja1dyYXBwZXJdOwogCiAgICAgW2NhbGxi
YWNrV3JhcHBlciByZWxlYXNlXTsKICAgICAKQEAgLTIxMCw2MCArMjA4LDU2IEBAIGJvb2wgUVBp
eG1hcDo6bWFzaygpIGNvbnN0CiAKIGJvb2wgUVBpeG1hcDo6aXNOdWxsKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaW1hZ2VSZW5kZXJlciA9PSBuaWwgfHwgW2ltYWdlUmVuZGVyZXIgaXNOdWxsXTsK
KyAgICByZXR1cm4gbV9pbWFnZVJlbmRlcmVyID09IG5pbCB8fCBbbV9pbWFnZVJlbmRlcmVyIGlz
TnVsbF07CiB9CiAKIFFTaXplIFFQaXhtYXA6OnNpemUoKSBjb25zdAogewotICAgIGlmIChpbWFn
ZVJlbmRlcmVyID09IG5pbCkgeworICAgIGlmICghbV9pbWFnZVJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gUVNpemUoMCwgMCk7Ci0gICAgfQotICAgIE5TU2l6ZSBzeiA9IFtpbWFnZVJlbmRlcmVy
IHNpemVdOworICAgIE5TU2l6ZSBzeiA9IFttX2ltYWdlUmVuZGVyZXIgc2l6ZV07CiAgICAgcmV0
dXJuIFFTaXplKChpbnQpc3oud2lkdGgsIChpbnQpc3ouaGVpZ2h0KTsKIH0KIAogUVJlY3QgUVBp
eG1hcDo6cmVjdCgpIGNvbnN0CiB7Ci0gICAgaWYgKGltYWdlUmVuZGVyZXIgPT0gbmlsKSB7Cisg
ICAgaWYgKG1faW1hZ2VSZW5kZXJlciA9PSBuaWwpCiAgICAgICAgIHJldHVybiBRUmVjdCgwLCAw
LCAwLCAwKTsKLSAgICB9Ci0gICAgTlNTaXplIHN6ID0gW2ltYWdlUmVuZGVyZXIgc2l6ZV07Cisg
ICAgTlNTaXplIHN6ID0gW21faW1hZ2VSZW5kZXJlciBzaXplXTsKICAgICByZXR1cm4gUVJlY3Qo
MCwgMCwgKGludClzei53aWR0aCwgKGludClzei5oZWlnaHQpOwogfQogCiBpbnQgUVBpeG1hcDo6
d2lkdGgoKSBjb25zdAogewotICAgIGlmIChpbWFnZVJlbmRlcmVyID09IG5pbCkgeworICAgIGlm
IChtX2ltYWdlUmVuZGVyZXIgPT0gbmlsKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAg
cmV0dXJuIChpbnQpW2ltYWdlUmVuZGVyZXIgc2l6ZV0ud2lkdGg7CisgICAgcmV0dXJuIChpbnQp
W21faW1hZ2VSZW5kZXJlciBzaXplXS53aWR0aDsKIH0KIAogaW50IFFQaXhtYXA6OmhlaWdodCgp
IGNvbnN0CiB7Ci0gICAgaWYgKGltYWdlUmVuZGVyZXIgPT0gbmlsKSB7CisgICAgaWYgKG1faW1h
Z2VSZW5kZXJlciA9PSBuaWwpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4g
KGludClbaW1hZ2VSZW5kZXJlciBzaXplXS5oZWlnaHQ7CisgICAgcmV0dXJuIChpbnQpW21faW1h
Z2VSZW5kZXJlciBzaXplXS5oZWlnaHQ7CiB9CiAKLXZvaWQgUVBpeG1hcDo6cmVzaXplKGNvbnN0
IFFTaXplICZzeikKK3ZvaWQgUVBpeG1hcDo6cmVzaXplKGNvbnN0IFFTaXplJiBzeikKIHsKICAg
ICByZXNpemUoc3oud2lkdGgoKSwgc3ouaGVpZ2h0KCkpOwogfQogCiB2b2lkIFFQaXhtYXA6OnJl
c2l6ZShpbnQgdywgaW50IGgpCiB7Ci0gICAgaWYgKG5lZWRDb3B5T25Xcml0ZSkgewotICAgICAg
ICBpZCA8V2ViQ29yZUltYWdlUmVuZGVyZXI+IG5ld0ltYWdlUmVuZGVyZXIgPSBLV1FSZXRhaW5O
U1JlbGVhc2UoW2ltYWdlUmVuZGVyZXIgY29weVdpdGhab25lOk5VTExdKTsKLSAgICAgICAgS1dR
UmVsZWFzZShpbWFnZVJlbmRlcmVyKTsKLSAgICAgICAgaW1hZ2VSZW5kZXJlciA9IG5ld0ltYWdl
UmVuZGVyZXI7Ci0gICAgICAgIG5lZWRDb3B5T25Xcml0ZSA9IGZhbHNlOworICAgIGlmIChtX25l
ZWRDb3B5T25Xcml0ZSkgeworICAgICAgICBpZCA8V2ViQ29yZUltYWdlUmVuZGVyZXI+IG5ld0lt
YWdlUmVuZGVyZXIgPSBLV1FSZXRhaW5OU1JlbGVhc2UoW21faW1hZ2VSZW5kZXJlciBjb3B5V2l0
aFpvbmU6TlVMTF0pOworICAgICAgICBLV1FSZWxlYXNlKG1faW1hZ2VSZW5kZXJlcik7CisgICAg
ICAgIG1faW1hZ2VSZW5kZXJlciA9IG5ld0ltYWdlUmVuZGVyZXI7CisgICAgICAgIG1fbmVlZENv
cHlPbldyaXRlID0gZmFsc2U7CiAgICAgfQotICAgIFtpbWFnZVJlbmRlcmVyIHJlc2l6ZTpOU01h
a2VTaXplKHcsIGgpXTsKKyAgICBbbV9pbWFnZVJlbmRlcmVyIHJlc2l6ZTpOU01ha2VTaXplKHcs
IGgpXTsKIH0KIAotUVBpeG1hcCBRUGl4bWFwOjp4Rm9ybShjb25zdCBRV01hdHJpeCAmeG1hdHJp
eCkgY29uc3QKK1FQaXhtYXAgUVBpeG1hcDo6eEZvcm0oY29uc3QgUVdNYXRyaXgmIHhtYXRyaXgp
IGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCB3aGVuIGFuIGlt
YWdlIG5lZWRzIHRvIGJlIHNjYWxlZC4gIAogICAgIC8vIFdlIGNhbiBkZXBlbmQgb24gcmVuZGVy
X2ltYWdlLmNwcCB0byBjYWxsIHJlc2l6ZSBBRlRFUgpAQCAtMjc0LDM1ICsyNjgsMzUgQEAgUVBp
eG1hcCBRUGl4bWFwOjp4Rm9ybShjb25zdCBRV01hdHJpeCAmeAogICAgIHJldHVybiAqdGhpczsK
IH0KIAotUVBpeG1hcCAmUVBpeG1hcDo6b3BlcmF0b3I9KGNvbnN0IFFQaXhtYXAgJmFzc2lnbkZy
b20pCitRUGl4bWFwJiBRUGl4bWFwOjpvcGVyYXRvcj0oY29uc3QgUVBpeG1hcCYgYXNzaWduRnJv
bSkKIHsKLSAgICBpZCA8V2ViQ29yZUltYWdlUmVuZGVyZXI+IG9sZEltYWdlUmVuZGVyZXIgPSBp
bWFnZVJlbmRlcmVyOwotICAgIGltYWdlUmVuZGVyZXIgPSBLV1FSZXRhaW5OU1JlbGVhc2UoW2Fz
c2lnbkZyb20uaW1hZ2VSZW5kZXJlciByZXRhaW5PckNvcHlJZk5lZWRlZF0pOworICAgIGlkIDxX
ZWJDb3JlSW1hZ2VSZW5kZXJlcj4gb2xkSW1hZ2VSZW5kZXJlciA9IG1faW1hZ2VSZW5kZXJlcjsK
KyAgICBtX2ltYWdlUmVuZGVyZXIgPSBLV1FSZXRhaW5OU1JlbGVhc2UoW2Fzc2lnbkZyb20ubV9p
bWFnZVJlbmRlcmVyIHJldGFpbk9yQ29weUlmTmVlZGVkXSk7CiAgICAgS1dRUmVsZWFzZShvbGRJ
bWFnZVJlbmRlcmVyKTsKLSAgICBOU1N0cmluZyAqbmV3TUlNRVR5cGUgPSBLV1FSZXRhaW5OU1Jl
bGVhc2UoW2Fzc2lnbkZyb20uTUlNRVR5cGUgY29weV0pOwotICAgIEtXUVJlbGVhc2UoTUlNRVR5
cGUpOwotICAgIE1JTUVUeXBlID0gbmV3TUlNRVR5cGU7Ci0gICAgYXNzaWduRnJvbS5uZWVkQ29w
eU9uV3JpdGUgPSB0cnVlOwotICAgIG5lZWRDb3B5T25Xcml0ZSA9IHRydWU7CisgICAgTlNTdHJp
bmcgKm5ld01JTUVUeXBlID0gS1dRUmV0YWluTlNSZWxlYXNlKFthc3NpZ25Gcm9tLm1fTUlNRVR5
cGUgY29weV0pOworICAgIEtXUVJlbGVhc2UobV9NSU1FVHlwZSk7CisgICAgbV9NSU1FVHlwZSA9
IG5ld01JTUVUeXBlOworICAgIGFzc2lnbkZyb20ubV9uZWVkQ29weU9uV3JpdGUgPSB0cnVlOwor
ICAgIG1fbmVlZENvcHlPbldyaXRlID0gdHJ1ZTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHZv
aWQgUVBpeG1hcDo6aW5jcmVhc2VVc2VDb3VudCgpIGNvbnN0CiB7Ci0gICAgW2ltYWdlUmVuZGVy
ZXIgaW5jcmVhc2VVc2VDb3VudF07CisgICAgW21faW1hZ2VSZW5kZXJlciBpbmNyZWFzZVVzZUNv
dW50XTsKIH0KIAogdm9pZCBRUGl4bWFwOjpkZWNyZWFzZVVzZUNvdW50KCkgY29uc3QKIHsKLSAg
ICBbaW1hZ2VSZW5kZXJlciBkZWNyZWFzZVVzZUNvdW50XTsKKyAgICBbbV9pbWFnZVJlbmRlcmVy
IGRlY3JlYXNlVXNlQ291bnRdOwogfQogCiB2b2lkIFFQaXhtYXA6OnN0b3BBbmltYXRpb25zKCkK
IHsKLSAgICBbaW1hZ2VSZW5kZXJlciBzdG9wQW5pbWF0aW9uXTsKKyAgICBbbV9pbWFnZVJlbmRl
cmVyIHN0b3BBbmltYXRpb25dOwogfQogCiB2b2lkIFFQaXhtYXA6OmZsdXNoUmFzdGVyQ2FjaGUo
KQogewotICAgIFtpbWFnZVJlbmRlcmVyIGZsdXNoUmFzdGVyQ2FjaGVdOworICAgIFttX2ltYWdl
UmVuZGVyZXIgZmx1c2hSYXN0ZXJDYWNoZV07CiB9CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FXaWRn
ZXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVdpZGdl
dC5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMTMKZGlmZiAtcCAtdSAtcjEuMTEzIFdlYkNv
cmUva3dxL0tXUVdpZGdldC5tbQotLS0gV2ViQ29yZS9rd3EvS1dRV2lkZ2V0Lm1tCTExIE9jdCAy
MDA1IDE5OjE2OjQ1IC0wMDAwCTEuMTEzCisrKyBXZWJDb3JlL2t3cS9LV1FXaWRnZXQubW0JMzAg
T2N0IDIwMDUgMjI6MzM6MDQgLTAwMDAKQEAgLTM2MSw0MCArMzYxLDE1IEBAIGJvb2wgUVdpZGdl
dDo6aXNWaXNpYmxlKCkgY29uc3QKIHZvaWQgUVdpZGdldDo6c2V0Q3Vyc29yKGNvbnN0IFFDdXJz
b3IgJmN1cikKIHsKICAgICBLV1FfQkxPQ0tfRVhDRVBUSU9OUzsKLSAgICBpZCB2aWV3ID0gZGF0
YS0+dmlldzsKLSAgICB3aGlsZSAodmlldykgeworICAgIGZvciAoaWQgdmlldyA9IGRhdGEtPnZp
ZXc7IHZpZXc7IHZpZXcgPSBbdmlldyBzdXBlcnZpZXddKSB7CiAgICAgICAgIGlmIChbdmlldyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldERvY3VtZW50Q3Vyc29yOildKSB7CisgICAg
ICAgICAgICBpZiAoW3ZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb2N1bWVudEN1
cnNvcildICYmIGN1ci5oYW5kbGUoKSA9PSBbdmlldyBkb2N1bWVudEN1cnNvcl0pCisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBbdmlldyBzZXREb2N1bWVudEN1cnNvcjpjdXIu
aGFuZGxlKCldOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdmlldyA9
IFt2aWV3IHN1cGVydmlld107Ci0gICAgfQotICAgIEtXUV9VTkJMT0NLX0VYQ0VQVElPTlM7Ci19
Ci0KLVFDdXJzb3IgUVdpZGdldDo6Y3Vyc29yKCkKLXsKLSAgICBLV1FfQkxPQ0tfRVhDRVBUSU9O
UzsKLSAgICBRQ3Vyc29yIGN1cnNvcjsKLQotICAgIGlkIHZpZXcgPSBkYXRhLT52aWV3OwotICAg
IHdoaWxlICh2aWV3KSB7Ci0gICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvY3VtZW50Q3Vyc29yKV0pIHsgCi0gICAgICAgICAgICBjdXJzb3IgPSBRQ3Vyc29y
OjptYWtlV2l0aE5TQ3Vyc29yKFt2aWV3IGRvY3VtZW50Q3Vyc29yXSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICB2aWV3ID0gW3ZpZXcgc3VwZXJ2aWV3XTsKICAgICB9
Ci0KLSAgICByZXR1cm4gY3Vyc29yOwogICAgIEtXUV9VTkJMT0NLX0VYQ0VQVElPTlM7Ci0KLSAg
ICByZXR1cm4gUUN1cnNvcigpOwotfQotCi12b2lkIFFXaWRnZXQ6OnVuc2V0Q3Vyc29yKCkKLXsK
LSAgICBzZXRDdXJzb3IoUUN1cnNvcigpKTsKIH0KIAogYm9vbCBRV2lkZ2V0OjpldmVudChRRXZl
bnQgKikKSW5kZXg6IFdlYkNvcmUva3dxL1dlYkNvcmVCcmlkZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL1dlYkNvcmVCcmlkZ2UubW0sdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNDIyCmRpZmYgLXAgLXUgLXIxLjQyMiBXZWJDb3JlL2t3cS9XZWJDb3JlQnJp
ZGdlLm1tCi0tLSBXZWJDb3JlL2t3cS9XZWJDb3JlQnJpZGdlLm1tCTI4IE9jdCAyMDA1IDE3OjM1
OjQzIC0wMDAwCTEuNDIyCisrKyBXZWJDb3JlL2t3cS9XZWJDb3JlQnJpZGdlLm1tCTMwIE9jdCAy
MDA1IDIyOjMzOjA2IC0wMDAwCkBAIC0xMDg1LDIwICsxMDg1LDIyIEBAIHN0YXRpYyBIVE1MRm9y
bUVsZW1lbnRJbXBsICpmb3JtRWxlbWVudEYKICAgICBpZiAobm9kZSkgewogICAgICAgICBbZWxl
bWVudCBzZXRPYmplY3Q6W0RPTU5vZGUgX25vZGVXaXRoSW1wbDpub2RlXSBmb3JLZXk6V2ViQ29y
ZUVsZW1lbnRET01Ob2RlS2V5XTsKICAgICAKKyAgICAgICAgLy8gT25seSByZXR1cm4gaW1hZ2Ug
aW5mb3JtYXRpb24gaWYgdGhlcmUgaXMgYW4gaW1hZ2UuCiAgICAgICAgIGlmIChub2RlLT5yZW5k
ZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSkgewogICAgICAgICAgICAgUmVu
ZGVySW1hZ2UgKnIgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSAqPihub2RlLT5yZW5kZXJlcigp
KTsKLSAgICAgICAgICAgIE5TSW1hZ2UgKiBpbWFnZSA9IChOU0ltYWdlICopKHItPnBpeG1hcCgp
LmltYWdlKCkpOwotICAgICAgICAgICAgLy8gT25seSByZXR1cm4gaW1hZ2UgaW5mb3JtYXRpb24g
aWYgdGhlcmUgaXMgYW4gaW1hZ2UuCi0gICAgICAgICAgICBpZiAoaW1hZ2UgJiYgIXItPmlzRGlz
cGxheWluZ0Vycm9yKCkpIHsKLSAgICAgICAgICAgICAgICBbZWxlbWVudCBzZXRPYmplY3Q6ci0+
cGl4bWFwKCkuaW1hZ2UoKSBmb3JLZXk6V2ViQ29yZUVsZW1lbnRJbWFnZUtleV07CisgICAgICAg
ICAgICBpZiAoIXItPmlzRGlzcGxheWluZ0Vycm9yKCkpIHsKKyAgICAgICAgICAgICAgICBRUGl4
bWFwIHAgPSByLT5waXhtYXAoKTsKKyAgICAgICAgICAgICAgICBOU0ltYWdlICppbWFnZSA9IFtw
LmltYWdlUmVuZGVyZXIoKSBpbWFnZV07CisgICAgICAgICAgICAgICAgaWYgKGltYWdlKQorICAg
ICAgICAgICAgICAgICAgICBbZWxlbWVudCBzZXRPYmplY3Q6aW1hZ2UgZm9yS2V5OldlYkNvcmVF
bGVtZW50SW1hZ2VLZXldOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBpbnQgeCwgeTsKICAgICAgICAgICAgIGlmIChyLT5hYnNvbHV0ZVBvc2l0aW9uKHgs
IHkpKSB7CiAgICAgICAgICAgICAgICAgTlNWYWx1ZSAqcmVjdCA9IFtOU1ZhbHVlIHZhbHVlV2l0
aFJlY3Q6TlNNYWtlUmVjdCh4LCB5LCByLT5jb250ZW50V2lkdGgoKSwgci0+Y29udGVudEhlaWdo
dCgpKV07CiAgICAgICAgICAgICAgICAgW2VsZW1lbnQgc2V0T2JqZWN0OnJlY3QgZm9yS2V5Oldl
YkNvcmVFbGVtZW50SW1hZ2VSZWN0S2V5XTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAgICAgRWxlbWVudEltcGwgKmkgPSBzdGF0aWNfY2FzdDxFbGVtZW50SW1w
bCo+KG5vZGUpOwogICAgIAogICAgICAgICAgICAgLy8gRklYTUU6IENvZGUgY29waWVkIGZyb20g
UmVuZGVySW1hZ2U6OnVwZGF0ZUZyb21FbGVtZW50OyBzaG91bGQgc2hhcmUuCkluZGV4OiBXZWJD
b3JlL2t3cS9XZWJDb3JlSW1hZ2VSZW5kZXJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2t3cS9XZWJDb3JlSW1hZ2VSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjE2CmRpZmYgLXAgLXUgLXIxLjE2IFdlYkNvcmUva3dxL1dlYkNvcmVJbWFnZVJlbmRl
cmVyLmgKLS0tIFdlYkNvcmUva3dxL1dlYkNvcmVJbWFnZVJlbmRlcmVyLmgJMjcgQXVnIDIwMDUg
MDA6MTQ6MjIgLTAwMDAJMS4xNgorKysgV2ViQ29yZS9rd3EvV2ViQ29yZUltYWdlUmVuZGVyZXIu
aAkzMCBPY3QgMjAwNSAyMjozMzowNiAtMDAwMApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDcg
KzQ3LDExIEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKWluY3JlYXNlVXNlQ291bnQ7CiAtICh2
b2lkKWRlY3JlYXNlVXNlQ291bnQ7CiAtICh2b2lkKWZsdXNoUmFzdGVyQ2FjaGU7Ci0tIChDR0lt
YWdlUmVmKWltYWdlUmVmOwogLSAodm9pZClyZXNldEFuaW1hdGlvbjsKIC0gKHZvaWQpc2V0QW5p
bWF0aW9uUmVjdDooTlNSZWN0KXI7CisKKy0gKENHSW1hZ2VSZWYpaW1hZ2VSZWY7CistIChOU0lt
YWdlICopaW1hZ2U7CistIChOU0RhdGEgKilUSUZGUmVwcmVzZW50YXRpb247CisKIEBlbmQKSW5k
ZXg6IFdlYktpdC9NaXNjLnN1YnByb2ovV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9NaXNjLnN1YnByb2ovV2ViTlNQYXN0ZWJvYXJk
RXh0cmFzLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDkKZGlmZiAtcCAtdSAtcjEuNDkgV2Vi
S2l0L01pc2Muc3VicHJvai9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubQotLS0gV2ViS2l0L01pc2Mu
c3VicHJvai9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubQkxNCBPY3QgMjAwNSAyMDozMTo0NiAtMDAw
MAkxLjQ5CisrKyBXZWJLaXQvTWlzYy5zdWJwcm9qL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tCTMw
IE9jdCAyMDA1IDIyOjMzOjI0IC0wMDAwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgPFdl
YktpdC9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMuaD4KIAorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
SW1hZ2VSZW5kZXJlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkFyY2hpdmUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJBc3NlcnRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJl
ci5oPgpJbmRleDogV2ViS2l0L01pc2Muc3VicHJvai9XZWJOU1ZpZXdFeHRyYXMubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L01pc2Muc3VicHJvai9XZWJOU1ZpZXdFeHRy
YXMubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MQpkaWZmIC1wIC11IC1yMS42MSBXZWJLaXQv
TWlzYy5zdWJwcm9qL1dlYk5TVmlld0V4dHJhcy5tCi0tLSBXZWJLaXQvTWlzYy5zdWJwcm9qL1dl
Yk5TVmlld0V4dHJhcy5tCTYgSnVuIDIwMDUgMDA6MTU6MDggLTAwMDAJMS42MQorKysgV2ViS2l0
L01pc2Muc3VicHJvai9XZWJOU1ZpZXdFeHRyYXMubQkzMCBPY3QgMjAwNSAyMjozMzoyNCAtMDAw
MApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNWaWV3RXh0cmFzLmg+
CiAKKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUltYWdlUmVuZGVyZXIuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJEYXRhU291cmNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVWaWV3SW50ZXJuYWwuaD4KQEAgLTIwOSw5ICsyMTAs
OCBAQAogICAgIE5TUG9pbnQgbW91c2VEb3duUG9pbnQgPSBbc2VsZiBjb252ZXJ0UG9pbnQ6W2V2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF07CiAgICAgTlNJbWFnZSAqZHJhZ0lt
YWdlOwogICAgIE5TUG9pbnQgb3JpZ2luOwotICAgIE5TSW1hZ2UgKmltYWdlOwotICAgIAotICAg
IGltYWdlID0gW3dpciBpbWFnZV07CisKKyAgICBOU0ltYWdlICppbWFnZSA9IFt3aXIgaW1hZ2Vd
OwogICAgIGlmIChpbWFnZSAhPSBuaWwgJiYgW2ltYWdlIHNpemVdLmhlaWdodCAqIFtpbWFnZSBz
aXplXS53aWR0aCA8PSBXZWJNYXhPcmlnaW5hbEltYWdlQXJlYSkgewogICAgICAgICBOU1NpemUg
b3JpZ2luYWxTaXplID0gcmVjdC5zaXplOwogICAgICAgICBvcmlnaW4gPSByZWN0Lm9yaWdpbjsK
SW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkltYWdlUmVuZGVyZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViSW1hZ2VSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMzCmRpZmYgLXAg
LXUgLXIxLjMzIFdlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkltYWdlUmVuZGVyZXIu
aAotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViSW1hZ2VSZW5kZXJlci5oCTE2
IEF1ZyAyMDA1IDE3OjM2OjM3IC0wMDAwCTEuMzMKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC5z
dWJwcm9qL1dlYkltYWdlUmVuZGVyZXIuaAkzMCBPY3QgMjAwNSAyMjozMzoyNCAtMDAwMApAQCAt
NTYsOCArNTYsNiBAQAogLSAoTlNSZWN0KXRhcmdldEFuaW1hdGlvblJlY3Q7CiAtICh2b2lkKXJl
c2l6ZTooTlNTaXplKXM7CiAtIChOU1NpemUpc2l6ZTsKLS0gKE5TRGF0YSAqKVRJRkZSZXByZXNl
bnRhdGlvbjsKLS0gKE5TSW1hZ2UgKilpbWFnZTsKIAogQGVuZAogCkluZGV4OiBXZWJLaXQvV2Vi
Q29yZVN1cHBvcnQuc3VicHJvai9XZWJJbWFnZVJlbmRlcmVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkltYWdlUmVuZGVy
ZXIubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMDgKZGlmZiAtcCAtdSAtcjEuMTA4IFdlYktp
dC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkltYWdlUmVuZGVyZXIubQotLS0gV2ViS2l0L1dl
YkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViSW1hZ2VSZW5kZXJlci5tCTEwIFNlcCAyMDA1IDE3OjM2
OjA5IC0wMDAwCTEuMTA4CisrKyBXZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJJbWFn
ZVJlbmRlcmVyLm0JMzAgT2N0IDIwMDUgMjI6MzM6MjQgLTAwMDAKQEAgLTI4LDE4ICsyOCwxNiBA
QAogCiAjaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJlci5oPgogCisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVJbWFnZVJlbmRlcmVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQXNzZXJ0aW9u
cy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViR3JhcGhpY3NCcmlkZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmll
dy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlRGF0YS5oPgorI2ltcG9ydCA8V2ViS2l0L1dl
YkltYWdlUmVuZGVyZXJGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VWaWV3Lmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNPYmplY3RFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVJbWFnZVJlbmRlcmVy
Lmg+Ci0KLSNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZURhdGEuaD4KLQogLy8gRm9yd2FyZCBkZWNs
YXJhdGlvbnMgb2YgaW50ZXJuYWwgbWV0aG9kcy4KIEBpbnRlcmZhY2UgV2ViSW1hZ2VSZW5kZXJl
ciAoV2ViSW50ZXJuYWwpCiAtICh2b2lkKV9zdGFydE9yQ29udGludWVBbmltYXRpb25JZk5lY2Vz
c2FyeTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>