<?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>49814</bug_id>
          
          <creation_ts>2010-11-19 11:02:41 -0800</creation_ts>
          <short_desc>Don&apos;t check for constant registers when we can guarantee that the register won&apos;t be in the constant pool</short_desc>
          <delta_ts>2010-11-19 14:44:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311569</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-11-19 11:02:41 -0800</bug_when>
    <thetext>Don&apos;t check for constant registers when we can guarantee that the register won&apos;t be in the constant pool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311573</commentid>
    <comment_count>1</comment_count>
      <attachid>74405</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-11-19 11:08:27 -0800</bug_when>
    <thetext>Created attachment 74405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311582</commentid>
    <comment_count>2</comment_count>
      <attachid>74405</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-19 11:25:27 -0800</bug_when>
    <thetext>Comment on attachment 74405
Patch

Don’t we want an assertion in debug builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311631</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-11-19 12:38:19 -0800</bug_when>
    <thetext>+        Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR().

You didn&apos;t replace all uses -- just the known non-constant uses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311632</commentid>
    <comment_count>4</comment_count>
      <attachid>74405</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-11-19 12:38:38 -0800</bug_when>
    <thetext>Comment on attachment 74405
Patch

r=me on a patch that fixes these two issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311702</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-11-19 14:44:19 -0800</bug_when>
    <thetext>Committed r72442: &lt;http://trac.webkit.org/changeset/72442&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74405</attachid>
            <date>2010-11-19 11:08:27 -0800</date>
            <delta_ts>2010-11-19 12:38:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49814-20101119110825.patch</filename>
            <type>text/plain</type>
            <size>64407</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk4MTFhZTQ1YjY4YWI5M2E1Yzk0NjZiYTE1YTE4MTYwM2I5MzRlLi4z
MTFhOTNmNmNmODhiZjllYWVhNjAxNjIyZjQxZWQ5NjM5YTlkNjA4IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDEgQEAKKzIwMTAtMTEtMTkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBj
aGVjayBmb3IgY29uc3RhbnQgcmVnaXN0ZXJzIHdoZW4gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRo
ZSByZWdpc3RlciB3b24ndCBiZSBpbiB0aGUgY29uc3RhbnQgcG9vbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk4MTQKKworICAgICAgICBBZGQgdW5j
aGVja2VkUihpbnQpIHRvIENhbGxGcmFtZSwgYW5kIHJlcGxhY2UgYWxsIHRoZSB1c2VzIG9mIHIo
KSB3aXRoIHVuY2hlY2tlZFIoKS4KKyAgICAgICAgVGhpcyBtYWtlcyB0aGUgaW50ZXJwcmV0ZXIg
YWJvdXQgMC41JSBmYXN0ZXIsIGFuZCBtYWtlcyB0aGUgQ2FsbEZyYW1lIGluaXRpYWxpc2F0aW9u
CisgICAgICAgIGxvZ2ljIGNvcnJlY3Qgd2hlbiB3ZSdyZSB1c2luZyBhIGZha2VkIGNhbGxmcmFt
ZSAoYXMgaW4gdGhlIGNhc2Ugb2YgdGhlIGdsb2JhbEV4ZWMpLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVBY3RpdmF0
aW9uKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzT2JqZWN0KToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bmNoZWNrZWRSKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmVT
a2lwKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2UpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
cmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpjYWxs
RXZhbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
Q2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmNyZWF0ZUV4Y2VwdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmFyZ3VtZW50
c0dldHRlcik6CisKIDIwMTAtMTEtMTggIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTFlMWM1Y2Y3NjkyYjM2NDczNzcxMWIzMGNhMWEyZDZkZDFkMDIyNi4uYjQwZDc0ZTdhN2Rj
ZTgzMTRkODg3MDM5YzI1NTYwNjljZmZiNTA5NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDQ2LDYg
KzI0NDYsNyBAQAogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAxNDlDMjc3MTA4OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJKYXZhU2NyaXB0Q29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVy
c2lvbiA9ICJYY29kZSAyLjQiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJ
aGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5n
bGlzaCwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDQ1NzY1MTllOGIz
YjBlYjhiZjE3MmQ1ZGZmOTE1MjYwZTI5NDNlZTguLmNiYWU5OTA5NjExNzk1N2U0YjBhNDI1ZGE2
MzMzZDI5NTk2MmQwMTMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
MTY5OSw5ICsxNjk5LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmNyZWF0ZUFjdGl2YXRpb24oQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2Rl
KTsKICAgICBBU1NFUlQobmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKLSAgICBBU1NFUlQoIWNhbGxG
cmFtZS0+cihhY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBBU1NFUlQoIWNh
bGxGcmFtZS0+dW5jaGVja2VkUihhY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKICAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGNhbGxGcmFtZSkgSlNBY3RpdmF0aW9u
KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpKTsKLSAgICBjYWxsRnJhbWUtPnIoYWN0aXZhdGlvblJlZ2lzdGVyKCkpID0gSlNWYWx1
ZShhY3RpdmF0aW9uKTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYWN0aXZhdGlvblJlZ2lz
dGVyKCkpID0gSlNWYWx1ZShhY3RpdmF0aW9uKTsKICAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hh
aW4oY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmNvcHkoKS0+cHVzaChhY3RpdmF0aW9uKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcCBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRl
eCBhNTg5N2M1OTljZDg5NDA3NWNjOWZkMzhiY2I2Y2IzNDEwZWFhYWIwLi5lZDY3M2NiYWZmYWVh
MTAyN2I4MTFjZjU0NDVkZTgxOWYyMDI5ZjU3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEpTT2JqZWN0KiBEZWJ1
Z2dlckNhbGxGcmFtZTo6dGhpc09iamVjdCgpIGNvbnN0CiAgICAgaWYgKCFjb2RlQmxvY2spCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBtX2NhbGxGcmFtZS0+
cihjb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBtX2NhbGxGcmFtZS0+dW5jaGVja2VkUihjb2RlQmxvY2stPnRoaXNSZWdpc3Rlcigp
KS5qc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKaW5kZXggNTY3MDlm
M2I2YzUxNTg2MTdkYzZhM2UxNGRjZDk3ZjY1MWYzYTA2Yi4uMGVhOThiNjI3ZDk5YTY4NGYyZTkw
N2JmNmYyODkzNDU1ZDNiNWVjZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgLy8gUmVh
ZCBhIHJlZ2lzdGVyIGZyb20gdGhlIGNvZGVmcmFtZSAob3IgY29uc3RhbnQgZnJvbSB0aGUgQ29k
ZUJsb2NrKS4KICAgICAgICAgaW5saW5lIFJlZ2lzdGVyJiByKGludCk7CisgICAgICAgIGlubGlu
ZSBSZWdpc3RlciYgdW5jaGVja2VkUihpbnQgaSkgeyByZXR1cm4gdGhpc1tpXTsgfQogCiAgICAg
ICAgIC8vIEFjY2VzcyB0byBhcmd1bWVudHMuCiAgICAgICAgIGludCBob3N0VGhpc1JlZ2lzdGVy
KCkgeyByZXR1cm4gLVJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCBiZGY1NGI5ZTg0NDM2NWZlZjZkNTNiYjI2ZDExN2QyZDk0ODQzZjAz
Li5mZWJkYjcxNDcyNmU5NGEzZGRmMTgyZTY5Nzk2YWY0Y2E4NzBlMWE0IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEluc3RydWN0aW9uKiB2UEMsIEoKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZh
bHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNhbGxGcmFt
ZS0+cihkc3QpID0gSlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0gd2hpbGUgKCsraXRlciAhPSBlbmQpOwpAQCAtMTMzLDcgKzEzMyw3
IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNvbHZlU2tpcChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSW5zdHJ1Y3Rpb24qIHZQCiAgICAgYm9vbCBjaGVja1RvcExldmVsID0gY29k
ZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBjb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKTsKICAgICBBU1NFUlQoc2tpcCB8fCAhY2hlY2tUb3BMZXZlbCk7CiAgICAg
aWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7Ci0gICAgICAgIGlmIChjYWxsRnJhbWUtPnIo
Y29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKQorICAgICAgICBpZiAo
Y2FsbEZyYW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpz
VmFsdWUoKSkKICAgICAgICAgICAgICsraXRlcjsKICAgICB9CiAgICAgd2hpbGUgKHNraXAtLSkg
ewpAQCAtMTUwLDcgKzE1MCw3IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjpyZXNv
bHZlU2tpcChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1Y3Rpb24qIHZQCiAgICAgICAgICAg
ICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9
IEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3Qp
ID0gSlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9IHdoaWxlICgrK2l0ZXIgIT0gZW5kKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBORVZFUl9J
TkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSW5zdHJ1Y3Rpb24qCiAgICAgaW50IG9mZnNldCA9IHZQQ1s0XS51Lm9wZXJhbmQ7CiAKICAg
ICBpZiAoc3RydWN0dXJlID09IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpIHsKLSAgICAgICAg
Y2FsbEZyYW1lLT5yKGRzdCkgPSBKU1ZhbHVlKGdsb2JhbE9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0
KG9mZnNldCkpOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUo
Z2xvYmFsT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMTgzLDE0ICsxODMsMTQgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50
ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydWN0aW9u
KgogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cmVmKCk7CiAgICAgICAg
ICAgICB2UENbM10gPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgdlBD
WzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3Qp
ID0gSlNWYWx1ZShyZXN1bHQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRz
dCkgPSBKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCiAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uOwogICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShyZXN1bHQpOworICAg
ICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMTYsNyArMjE2LDcgQEAgTkVWRVJfSU5MSU5F
IGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBJbnN0cnUKICAgICBib29sIGNoZWNrVG9wTGV2ZWwgPSBjb2RlQmxvY2stPmNvZGVUeXBl
KCkgPT0gRnVuY3Rpb25Db2RlICYmIGNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOwog
ICAgIEFTU0VSVChza2lwIHx8ICFjaGVja1RvcExldmVsKTsKICAgICBpZiAoY2hlY2tUb3BMZXZl
bCAmJiBza2lwLS0pIHsKLSAgICAgICAgaWYgKGNhbGxGcmFtZS0+cihjb2RlQmxvY2stPmFjdGl2
YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpCisgICAgICAgIGlmIChjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKQogICAgICAg
ICAgICAgKytpdGVyOwogICAgIH0KICAgICB3aGlsZSAoc2tpcC0tKSB7CkBAIC0yMzEsNyArMjMx
LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWxEeW5hbWlj
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0cnUKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4
Y2VwdGlvblZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY2Fs
bEZyYW1lLT5yKGRzdCkgPSBKU1ZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgPT0gZW5kKQpAQCAtMjQ2LDggKzI0Niw4IEBAIE5FVkVSX0lOTElORSBib29sIElu
dGVycHJldGVyOjpyZXNvbHZlR2xvYmFsRHluYW1pYyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5z
dHJ1CiAgICAgfQogICAgIAogICAgIGlmIChzdHJ1Y3R1cmUgPT0gZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKSkgewotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUoZ2xvYmFsT2Jq
ZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7Ci0gICAgICAgIEFTU0VSVChjYWxsRnJhbWUt
PnIoZHN0KS5qc1ZhbHVlKCkpOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9
IEpTVmFsdWUoZ2xvYmFsT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CisgICAgICAg
IEFTU0VSVChjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KS5qc1ZhbHVlKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCBORVZFUl9JTkxJTkUgYm9v
bCBJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbER5bmFtaWMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEluc3RydQogICAgICAgICAgICAgdlBDWzNdID0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKTsK
ICAgICAgICAgICAgIHZQQ1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShy
ZXN1bHQpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTI3MCw3ICsyNzAsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVzb2x2
ZUdsb2JhbER5bmFtaWMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEluc3RydQogICAgICAgICBpZiAo
ZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEFTU0VS
VChyZXN1bHQpOwotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUocmVzdWx0KTsK
KyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTI4Niw4ICsyODYsOCBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6cmVzb2x2ZUJhc2UoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEluc3RydWN0aW9uKiB2UAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpT
Qzo6cmVzb2x2ZUJhc2UoY2FsbEZyYW1lLCBpZGVudCwgY2FsbEZyYW1lLT5zY29wZUNoYWluKCks
IGlzU3RyaWN0UHV0KTsKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihk
c3QpID0gcmVzdWx0OwotICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKGRzdCkuanNWYWx1ZSgp
KTsKKyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7CisgICAgICAg
IEFTU0VSVChjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KS5qc1ZhbHVlKCkpOwogICAgIH0gZWxz
ZQogICAgICAgICBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVFcnJv
ckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGNhbGxGcmFtZSwgaWRlbnQudXN0cmluZygpKTsK
IH0KQEAgLTMxNyw4ICszMTcsOCBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZUJhc2VBbmRQcm9wZXJ0eShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdAogICAgICAgICAg
ICAgZXhjZXB0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb247CiAg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHByb3BEc3QpID0gSlNWYWx1ZShyZXN1bHQp
OwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGJhc2VEc3QpID0gSlNWYWx1ZShiYXNlKTsKKyAg
ICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihwcm9wRHN0KSA9IEpTVmFsdWUocmVzdWx0
KTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihiYXNlRHN0KSA9IEpTVmFsdWUo
YmFzZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICArK2l0
ZXI7CkBAIC00MTYsNyArNDE2LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHIKICAgICBpZiAo
VU5MSUtFTFkoIWV2YWwpKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihjYWxsRnJhbWUsIGV4
Y2VwdGlvblZhbHVlKTsKIAotICAgIHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+ZXhlY3V0ZShldmFsLmdldCgpLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cihjb2Rl
QmxvY2stPnRoaXNSZWdpc3RlcigpKS5qc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSks
IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSByZWdpc3RlckZpbGUtPnN0YXJ0KCkgKyByZWdpc3Rl
ck9mZnNldCwgc2NvcGVDaGFpbik7CisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5leGVjdXRlKGV2YWwuZ2V0KCksIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGNvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpLmpzVmFsdWUoKS50b1RoaXNPYmpl
Y3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHJlZ2lzdGVyRmlsZS0+c3Rh
cnQoKSArIHJlZ2lzdGVyT2Zmc2V0LCBzY29wZUNoYWluKTsKIH0KIAogSW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKCkKQEAgLTU2MCw3ICs1NjAsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnBy
ZXRlcjo6dW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSBleAog
CiAgICAgLy8gSWYgdGhpcyBjYWxsIGZyYW1lIGNyZWF0ZWQgYW4gYWN0aXZhdGlvbiBvciBhbiAn
YXJndW1lbnRzJyBvYmplY3QsIHRlYXIgaXQgb2ZmLgogICAgIGlmIChvbGRDb2RlQmxvY2stPmNv
ZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIG9sZENvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpKSB7Ci0gICAgICAgIGlmICghY2FsbEZyYW1lLT5yKG9sZENvZGVCbG9jay0+YWN0aXZh
dGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSkgeworICAgICAgICBpZiAoIWNhbGxGcmFtZS0+dW5j
aGVja2VkUihvbGRDb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpIHsK
ICAgICAgICAgICAgIG9sZENvZGVCbG9jay0+Y3JlYXRlQWN0aXZhdGlvbihjYWxsRnJhbWUpOwog
ICAgICAgICAgICAgc2NvcGVDaGFpbiA9IGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpOwogICAgICAg
ICB9CkBAIC01NjgsMTIgKzU2OCwxMiBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6
dW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSBleAogICAgICAg
ICAgICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4tPnBvcCgpOwogICAgICAgICBKU0FjdGl2YXRp
b24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oc2NvcGVDaGFpbi0+b2JqZWN0KTsKICAgICAg
ICAgYWN0aXZhdGlvbi0+Y29weVJlZ2lzdGVycygpOwotICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1
bWVudHMgPSBjYWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG9sZENvZGVC
bG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkgeworICAgICAgICBpZiAoSlNW
YWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFsdWUoKSkg
ewogICAgICAgICAgICAgaWYgKCFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQogICAgICAg
ICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPnNldEFjdGl2YXRpb24oYWN0aXZhdGlv
bik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG9sZENvZGVCbG9jay0+dXNlc0FyZ3VtZW50
cygpICYmICFvbGRDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgIGlmIChKU1Zh
bHVlIGFyZ3VtZW50cyA9IGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
b2xkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKQorICAgICAgICBp
ZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKG9sZENvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpLmpzVmFs
dWUoKSkKICAgICAgICAgICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPmNvcHlSZWdpc3RlcnMo
KTsKICAgICB9CiAKQEAgLTcxMSw3ICs3MTEsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8q
IEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgog
ICAgIFNjb3BlQ2hhaW4gc2Moc2NvcGVDaGFpbik7CiAgICAgaW50IHNjb3BlRGVsdGEgPSAwOwog
ICAgIGlmICghY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgY29kZUJsb2NrLT5j
b2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSAKLSAgICAgICAgfHwgY2FsbEZyYW1lLT5yKGNvZGVC
bG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSkKKyAgICAgICAgfHwgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUo
KSkKICAgICAgICAgc2NvcGVEZWx0YSA9IGRlcHRoKGNvZGVCbG9jaywgc2MpIC0gaGFuZGxlci0+
c2NvcGVEZXB0aDsKICAgICBBU1NFUlQoc2NvcGVEZWx0YSA+PSAwKTsKICAgICB3aGlsZSAoc2Nv
cGVEZWx0YS0tKQpAQCAtNzU3LDcgKzc1Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoUHJvZ3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBTCiAg
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShvbGRFbmQgKyBj
b2RlQmxvY2stPm1fbnVtUGFyYW1ldGVycyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzID09IDEpOyAvLyAx
IHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIG5ld0NhbGxGcmFtZS0+aW5pdChjb2RlQmxvY2ss
IDAsIHNjb3BlQ2hhaW4sIENhbGxGcmFtZTo6bm9DYWxsZXIoKSwgY29kZUJsb2NrLT5tX251bVBh
cmFtZXRlcnMsIDApOwotICAgIG5ld0NhbGxGcmFtZS0+cihuZXdDYWxsRnJhbWUtPmhvc3RUaGlz
UmVnaXN0ZXIoKSkgPSBKU1ZhbHVlKHRoaXNPYmopOworICAgIG5ld0NhbGxGcmFtZS0+dW5jaGVj
a2VkUihuZXdDYWxsRnJhbWUtPmhvc3RUaGlzUmVnaXN0ZXIoKSkgPSBKU1ZhbHVlKHRoaXNPYmop
OwogCiAgICAgaWYgKGNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKQogICAgICAgICBz
Y29wZUNoYWluLT5yZWYoKTsKQEAgLTgxMCwxMCArODEwLDEwIEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24s
IENhbGxUCiAKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRl
KG9sZEVuZCk7CiAgICAgc2l6ZV90IGRzdCA9IDA7Ci0gICAgbmV3Q2FsbEZyYW1lLT5yKDApID0g
dGhpc1ZhbHVlOworICAgIG5ld0NhbGxGcmFtZS0+dW5jaGVja2VkUigwKSA9IHRoaXNWYWx1ZTsK
ICAgICBBcmdMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBhcmdzLmVuZCgpOwogICAgIGZvciAo
QXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhcmdzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5yKCsrZHN0KSA9ICppdDsKKyAgICAgICAgbmV3Q2Fs
bEZyYW1lLT51bmNoZWNrZWRSKCsrZHN0KSA9ICppdDsKIAogICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZUpTKSB7CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBjYWxsRGF0YVNjb3BlQ2hhaW4g
PSBjYWxsRGF0YS5qcy5zY29wZUNoYWluOwpAQCAtOTAyLDcgKzkwMiw3IEBAIEpTT2JqZWN0KiBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGNvbnN0cnVjCiAgICAgc2l6ZV90IGRzdCA9IDA7CiAgICAgQXJnTGlzdDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gYXJncy5lbmQoKTsKICAgICBmb3IgKEFyZ0xpc3Q6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gYXJncy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIG5ld0NhbGxGcmFt
ZS0+cigrK2RzdCkgPSAqaXQ7CisgICAgICAgIG5ld0NhbGxGcmFtZS0+dW5jaGVja2VkUigrK2Rz
dCkgPSAqaXQ7CiAKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSlMpIHsK
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIGNvbnN0cnVjdERhdGFTY29wZUNoYWluID0gY29uc3Ry
dWN0RGF0YS5qcy5zY29wZUNoYWluOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgQ2FsbEZyYW1lQ2xv
c3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxl
KiBGdW5jdGlvbkUKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3Jl
YXRlKG9sZEVuZCk7CiAgICAgc2l6ZV90IGRzdCA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBhcmdjOyArK2kpCi0gICAgICAgIG5ld0NhbGxGcmFtZS0+cigrK2RzdCkgPSBqc1VuZGVmaW5l
ZCgpOworICAgICAgICBuZXdDYWxsRnJhbWUtPnVuY2hlY2tlZFIoKytkc3QpID0ganNVbmRlZmlu
ZWQoKTsKICAgICAKICAgICBKU09iamVjdCogZXJyb3IgPSBGdW5jdGlvbkV4ZWN1dGFibGUtPmNv
bXBpbGVGb3JDYWxsKGNhbGxGcmFtZSwgc2NvcGVDaGFpbik7CiAgICAgaWYgKGVycm9yKSB7CkBA
IC0xMTI5LDcgKzExMjksNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplYwogCiAgICAgQVNTRVJU
KGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3Ro
aXMnLgogICAgIG5ld0NhbGxGcmFtZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3BlQ2hhaW4sIGNh
bGxGcmFtZS0+YWRkSG9zdENhbGxGcmFtZUZsYWcoKSwgY29kZUJsb2NrLT5tX251bVBhcmFtZXRl
cnMsIDApOwotICAgIG5ld0NhbGxGcmFtZS0+cihuZXdDYWxsRnJhbWUtPmhvc3RUaGlzUmVnaXN0
ZXIoKSkgPSBKU1ZhbHVlKHRoaXNPYmopOworICAgIG5ld0NhbGxGcmFtZS0+dW5jaGVja2VkUihu
ZXdDYWxsRnJhbWUtPmhvc3RUaGlzUmVnaXN0ZXIoKSkgPSBKU1ZhbHVlKHRoaXNPYmopOwogCiAg
ICAgaWYgKGNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKQogICAgICAgICBzY29wZUNo
YWluLT5yZWYoKTsKQEAgLTEyMDQsNyArMTIwNCw3IEBAIE5FVkVSX0lOTElORSBTY29wZUNoYWlu
Tm9kZSogSW50ZXJwcmV0ZXI6OmNyZWF0ZUV4Y2VwdGlvblNjb3BlKENhbGxGcmFtZSogY2FsbEZy
CiAgICAgSWRlbnRpZmllciYgcHJvcGVydHkgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJd
LnUub3BlcmFuZCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+cih2UENbM10udS5v
cGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgSlNPYmplY3QqIHNjb3BlID0gbmV3IChjYWxsRnJhbWUp
IEpTU3RhdGljU2NvcGVPYmplY3QoY2FsbEZyYW1lLCBwcm9wZXJ0eSwgdmFsdWUsIERvbnREZWxl
dGUpOwotICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShzY29wZSk7CisgICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKHNjb3BlKTsKIAogICAgIHJldHVybiBjYWxs
RnJhbWUtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29wZSk7CiB9CkBAIC0xNTI3LDcgKzE1MjcsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAgICBjb25zdHJ1Y3RvciwgYW5kIHB1
dHMgdGhlIHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCiAgICAgICAgICovCiAgICAgICAgIGludCBk
c3QgPSB2UENbMV0udS5vcGVyYW5kOwotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFs
dWUoY29uc3RydWN0RW1wdHlPYmplY3QoY2FsbEZyYW1lKSk7CisgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShjb25zdHJ1Y3RFbXB0eU9iamVjdChjYWxsRnJhbWUp
KTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9uZXdfb2JqZWN0KTsKICAgICAg
ICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUq
IHJlZ2lzdGVyRmkKICAgICAgICAgaW50IGZpcnN0QXJnID0gdlBDWzJdLnUub3BlcmFuZDsKICAg
ICAgICAgaW50IGFyZ0NvdW50ID0gdlBDWzNdLnUub3BlcmFuZDsKICAgICAgICAgQXJnTGlzdCBh
cmdzKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEFyZywgYXJnQ291bnQpOwotICAgICAg
ICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUoY29uc3RydWN0QXJyYXkoY2FsbEZyYW1lLCBh
cmdzKSk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShjb25z
dHJ1Y3RBcnJheShjYWxsRnJhbWUsIGFyZ3MpKTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xF
TkdUSChvcF9uZXdfYXJyYXkpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0xNTU4
LDcgKzE1NTgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRp
b25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAqLwogICAgICAg
ICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgaW50IHJlZ0V4cCA9IHZQQ1sy
XS51Lm9wZXJhbmQ7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShuZXcgKGds
b2JhbERhdGEpIFJlZ0V4cE9iamVjdChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
Y2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdC0+cmVnRXhwU3RydWN0dXJlKCks
IGNvZGVCbG9jay0+cmVnZXhwKHJlZ0V4cCkpKTsKKyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGRzdCkgPSBKU1ZhbHVlKG5ldyAoZ2xvYmFsRGF0YSkgUmVnRXhwT2JqZWN0KGNhbGxGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFs
T2JqZWN0LT5yZWdFeHBTdHJ1Y3R1cmUoKSwgY29kZUJsb2NrLT5yZWdleHAocmVnRXhwKSkpOwog
CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX25ld19yZWdleHApOwogICAgICAgICBO
RVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaQogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgaW50
IHNyYyA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIAotICAgICAgICBjYWxsRnJhbWUtPnIo
ZHN0KSA9IGNhbGxGcmFtZS0+cihzcmMpOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
ZHN0KSA9IGNhbGxGcmFtZS0+cihzcmMpOwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RI
KG9wX21vdik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAgLTE1ODcsMTEgKzE1ODcs
MTEgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBm
bGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2Fs
bEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBz
cmMyID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAg
aWYgKHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpKQotICAgICAgICAgICAgY2FsbEZy
YW1lLT5yKGRzdCkgPSBqc0Jvb2xlYW4oc3JjMS5hc0ludDMyKCkgPT0gc3JjMi5hc0ludDMyKCkp
OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc0Jvb2xlYW4oc3Jj
MS5hc0ludDMyKCkgPT0gc3JjMi5hc0ludDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2UoY2Fs
bEZyYW1lLCBzcmMxLCBzcmMyKSk7CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7
Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAg
dlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZXEpOwpAQCAtMTYwNywxMiArMTYwNywxMiBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1ZhbHVlIHNyYyA9IGNhbGxGcmFtZS0+cih2
UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAKICAgICAgICAgaWYgKHNyYy5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzQm9vbGVhbih0
cnVlKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNCb29sZWFu
KHRydWUpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZXFfbnVsbCk7CiAg
ICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNCb29sZWFuKHNyYy5pc0NlbGwoKSAmJiBzcmMuYXND
ZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSk7
CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNCb29sZWFuKHNyYy5pc0Nl
bGwoKSAmJiBzcmMuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQoKSk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2VxX251bGwp
OwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtMTYyNywxMSArMTYyNywx
MSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1ZhbHVlIHNyYzEgPSBjYWxs
RnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHNy
YzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAgICAgICBp
ZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkpCi0gICAgICAgICAgICBjYWxsRnJh
bWUtPnIoZHN0KSA9IGpzQm9vbGVhbihzcmMxLmFzSW50MzIoKSAhPSBzcmMyLmFzSW50MzIoKSk7
CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzQm9vbGVhbihzcmMx
LmFzSW50MzIoKSAhPSBzcmMyLmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsU2xvd0Nhc2UoY2Fs
bEZyYW1lLCBzcmMxLCBzcmMyKSk7CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7
Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAg
dlBDICs9IE9QQ09ERV9MRU5HVEgob3BfbmVxKTsKQEAgLTE2NDcsMTIgKzE2NDcsMTIgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgSlNWYWx1ZSBzcmMgPSBjYWxsRnJhbWUtPnIo
dlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogCiAgICAgICAgIGlmIChzcmMuaXNVbmRlZmlu
ZWRPck51bGwoKSkgewotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc0Jvb2xlYW4o
ZmFsc2UpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc0Jvb2xl
YW4oZmFsc2UpOwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfbmVxX251bGwp
OwogICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzQm9vbGVhbighc3JjLmlzQ2VsbCgpIHx8ICFz
cmMuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNCb29sZWFuKCFz
cmMuaXNDZWxsKCkgfHwgIXNyYy5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCgpKTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
bmVxX251bGwpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtMTY2OCw3
ICsxNjY4LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9u
RmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgSlNWYWx1ZSBzcmMy
ID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgYm9v
bCByZXN1bHQgPSBKU1ZhbHVlOjpzdHJpY3RFcXVhbChjYWxsRnJhbWUsIHNyYzEsIHNyYzIpOwog
ICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3Qp
ID0ganNCb29sZWFuKHJlc3VsdCk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3Qp
ID0ganNCb29sZWFuKHJlc3VsdCk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
c3RyaWN0ZXEpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0xNjg1LDcgKzE2ODUs
NyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1ZhbHVlIHNyYzIgPSBjYWxs
RnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAgICAgICBib29sIHJlc3Vs
dCA9ICFKU1ZhbHVlOjpzdHJpY3RFcXVhbChjYWxsRnJhbWUsIHNyYzEsIHNyYzIpOwogICAgICAg
ICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNC
b29sZWFuKHJlc3VsdCk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNC
b29sZWFuKHJlc3VsdCk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfbnN0cmlj
dGVxKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMTcwMiw3ICsxNzAyLDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1l
LT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0Jvb2xlYW4oanNMZXNzKGNhbGxGcmFtZSwgc3JjMSwgc3JjMikpOwogICAgICAgICBDSEVD
S19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0Owor
ICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKIAogICAgICAgICB2
UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9sZXNzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigp
OwpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1
dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAg
SlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsK
ICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oanNMZXNzRXEoY2FsbEZyYW1lLCBz
cmMxLCBzcmMyKSk7CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgY2Fs
bEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihk
c3QpID0gcmVzdWx0OwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2xlc3NlcSk7
CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAgLTE3MzMsMTEgKzE3MzMsMTEgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgaW50IHNyY0RzdCA9IHZQQ1sxXS51Lm9wZXJh
bmQ7CiAgICAgICAgIEpTVmFsdWUgdiA9IGNhbGxGcmFtZS0+cihzcmNEc3QpLmpzVmFsdWUoKTsK
ICAgICAgICAgaWYgKHYuaXNJbnQzMigpICYmIHYuYXNJbnQzMigpIDwgSU5UX01BWCkKLSAgICAg
ICAgICAgIGNhbGxGcmFtZS0+cihzcmNEc3QpID0ganNOdW1iZXIodi5hc0ludDMyKCkgKyAxKTsK
KyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihzcmNEc3QpID0ganNOdW1iZXIodi5h
c0ludDMyKCkgKyAxKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKHYudG9OdW1iZXIoY2FsbEZyYW1lKSArIDEpOwogICAgICAgICAgICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHNyY0RzdCkgPSBy
ZXN1bHQ7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoc3JjRHN0KSA9IHJlc3Vs
dDsKICAgICAgICAgfQogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3ByZV9pbmMp
OwpAQCAtMTc1MiwxMSArMTc1MiwxMSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhl
Y3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAg
ICBpbnQgc3JjRHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSB2ID0gY2Fs
bEZyYW1lLT5yKHNyY0RzdCkuanNWYWx1ZSgpOwogICAgICAgICBpZiAodi5pc0ludDMyKCkgJiYg
di5hc0ludDMyKCkgPiBJTlRfTUlOKQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHNyY0RzdCkg
PSBqc051bWJlcih2LmFzSW50MzIoKSAtIDEpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKHNyY0RzdCkgPSBqc051bWJlcih2LmFzSW50MzIoKSAtIDEpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIodi50b051bWJlcihjYWxs
RnJhbWUpIC0gMSk7CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAg
ICAgICBjYWxsRnJhbWUtPnIoc3JjRHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihzcmNEc3QpID0gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgdlBD
ICs9IE9QQ09ERV9MRU5HVEgob3BfcHJlX2RlYyk7CkBAIC0xNzczLDEzICsxNzczLDEzIEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIGludCBzcmNEc3QgPSB2UENbMl0udS5vcGVy
YW5kOwogICAgICAgICBKU1ZhbHVlIHYgPSBjYWxsRnJhbWUtPnIoc3JjRHN0KS5qc1ZhbHVlKCk7
CiAgICAgICAgIGlmICh2LmlzSW50MzIoKSAmJiB2LmFzSW50MzIoKSA8IElOVF9NQVgpIHsKLSAg
ICAgICAgICAgIGNhbGxGcmFtZS0+cihzcmNEc3QpID0ganNOdW1iZXIodi5hc0ludDMyKCkgKyAx
KTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gdjsKKyAgICAgICAgICAgIGNhbGxG
cmFtZS0+dW5jaGVja2VkUihzcmNEc3QpID0ganNOdW1iZXIodi5hc0ludDMyKCkgKyAxKTsKKyAg
ICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gdjsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEpTVmFsdWUgbnVtYmVyID0gY2FsbEZyYW1lLT5yKHNyY0RzdCkuanNW
YWx1ZSgpLnRvSlNOdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENF
UFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihzcmNEc3QpID0ganNOdW1iZXIobnVt
YmVyLnVuY2hlY2tlZEdldE51bWJlcigpICsgMSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIo
ZHN0KSA9IG51bWJlcjsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihzcmNEc3Qp
ID0ganNOdW1iZXIobnVtYmVyLnVuY2hlY2tlZEdldE51bWJlcigpICsgMSk7CisgICAgICAgICAg
ICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IG51bWJlcjsKICAgICAgICAgfQogCiAgICAg
ICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3Bvc3RfaW5jKTsKQEAgLTE3OTYsMTMgKzE3OTYs
MTMgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBm
bGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgaW50IHNyY0RzdCA9IHZQQ1sy
XS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgdiA9IGNhbGxGcmFtZS0+cihzcmNEc3QpLmpz
VmFsdWUoKTsKICAgICAgICAgaWYgKHYuaXNJbnQzMigpICYmIHYuYXNJbnQzMigpID4gSU5UX01J
TikgewotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHNyY0RzdCkgPSBqc051bWJlcih2LmFzSW50
MzIoKSAtIDEpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSB2OworICAgICAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHNyY0RzdCkgPSBqc051bWJlcih2LmFzSW50MzIoKSAt
IDEpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSB2OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSBudW1iZXIgPSBjYWxsRnJhbWUtPnIoc3Jj
RHN0KS5qc1ZhbHVlKCkudG9KU051bWJlcihjYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0hFQ0tf
Rk9SX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHNyY0RzdCkgPSBqc051
bWJlcihudW1iZXIudW5jaGVja2VkR2V0TnVtYmVyKCkgLSAxKTsKLSAgICAgICAgICAgIGNhbGxG
cmFtZS0+cihkc3QpID0gbnVtYmVyOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KHNyY0RzdCkgPSBqc051bWJlcihudW1iZXIudW5jaGVja2VkR2V0TnVtYmVyKCkgLSAxKTsKKyAg
ICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gbnVtYmVyOwogICAgICAgICB9
CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcG9zdF9kZWMpOwpAQCAtMTgyMCwx
MSArMTgyMCwxMSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRp
b25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1ZhbHVlIHNy
Y1ZhbCA9IGNhbGxGcmFtZS0+cihzcmMpLmpzVmFsdWUoKTsKIAogICAgICAgICBpZiAoTElLRUxZ
KHNyY1ZhbC5pc051bWJlcigpKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gY2Fs
bEZyYW1lLT5yKHNyYyk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9
IGNhbGxGcmFtZS0+cihzcmMpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEpTVmFsdWUg
cmVzdWx0ID0gc3JjVmFsLnRvSlNOdW1iZXIoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIENIRUNL
X0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0
OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7CiAgICAg
ICAgIH0KIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF90b19qc251bWJlcik7CkBA
IC0xODM5LDExICsxODM5LDExIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIGlu
dCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBKU1ZhbHVlIHNyYyA9IGNhbGxGcmFt
ZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmIChzcmMuaXNJbnQz
MigpICYmIChzcmMuYXNJbnQzMigpICYgMHg3ZmZmZmZmZikpIC8vIG5vbi16ZXJvIGFuZCBubyBv
dmVyZmxvdwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc051bWJlcigtc3JjLmFz
SW50MzIoKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVt
YmVyKC1zcmMuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKC1zcmMudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgICAgICAg
ICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9
IHJlc3VsdDsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0
OwogICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfbmVnYXRlKTsK
QEAgLTE4NjAsMTEgKzE4NjAsMTEgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1
dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAg
SlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsK
ICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpz
VmFsdWUoKTsKICAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYm
ICEoc3JjMS5hc0ludDMyKCkgfCAoc3JjMi5hc0ludDMyKCkgJiAweGMwMDAwMDAwKSkpIC8vIG5v
IG92ZXJmbG93Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzTnVtYmVyKHNyYzEu
YXNJbnQzMigpICsgc3JjMi5hc0ludDMyKCkpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGRzdCkgPSBqc051bWJlcihzcmMxLmFzSW50MzIoKSArIHNyYzIuYXNJbnQzMigpKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGNhbGxG
cmFtZSwgc3JjMSwgc3JjMik7CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNhbGxG
cmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIHZQQyAr
PSBPUENPREVfTEVOR1RIKG9wX2FkZCk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAg
LTE4NzksMTEgKzE4NzksMTEgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUo
RXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgSlNW
YWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAg
ICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFs
dWUoKTsKICAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYmICEo
c3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSA+PiAxNSkpIC8vIG5vIG92ZXJmbG93Ci0g
ICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc051bWJlcihzcmMxLmFzSW50MzIo
KSAqIHNyYzIuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoZHN0KSA9IGpzTnVtYmVyKHNyYzEuYXNJbnQzMigpICogc3JjMi5hc0ludDMyKCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3JjMS50
b051bWJlcihjYWxsRnJhbWUpICogc3JjMi50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAg
ICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3Qp
ID0gcmVzdWx0OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1
bHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9tdWwpOwpA
QCAtMTkwMiw3ICsxOTAyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUo
RXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGRpdmlkZW5kLnRvTnVtYmVyKGNhbGxGcmFtZSkgLyBk
aXZpc29yLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9O
KCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0OworICAgICAgICBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xF
TkdUSChvcF9kaXYpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0xOTIxLDcgKzE5
MjEsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFn
IGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBpZiAoZGl2aWRlbmQuaXNJ
bnQzMigpICYmIGRpdmlzb3IuaXNJbnQzMigpICYmIGRpdmlzb3IuYXNJbnQzMigpICE9IDApIHsK
ICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZGl2aWRlbmQuYXNJbnQzMigp
ICUgZGl2aXNvci5hc0ludDMyKCkpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAg
ICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3BfbW9kKTsKICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICAgICAg
fQpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1
dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAg
ZG91YmxlIGQyID0gZGl2aXNvci50b051bWJlcihjYWxsRnJhbWUpOwogICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKGZtb2QoZDEsIGQyKSk7CiAgICAgICAgIENIRUNLX0ZPUl9FWENF
UFRJT04oKTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICB2UEMgKz0gT1BDT0RF
X0xFTkdUSChvcF9tb2QpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAt
MTk0NywxMSArMTk0NywxMSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShF
eGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1Zh
bHVlIHNyYzEgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAg
ICAgICBKU1ZhbHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1
ZSgpOwogICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkgJiYgIShz
cmMxLmFzSW50MzIoKSB8IChzcmMyLmFzSW50MzIoKSAmIDB4YzAwMDAwMDApKSkgLy8gbm8gb3Zl
cmZsb3cKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNOdW1iZXIoc3JjMS5hc0lu
dDMyKCkgLSBzcmMyLmFzSW50MzIoKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoZHN0KSA9IGpzTnVtYmVyKHNyYzEuYXNJbnQzMigpIC0gc3JjMi5hc0ludDMyKCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3JjMS50
b051bWJlcihjYWxsRnJhbWUpIC0gc3JjMi50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICAgICAg
ICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3Qp
ID0gcmVzdWx0OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1
bHQ7CiAgICAgICAgIH0KICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bfc3ViKTsKICAg
ICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMTk2OCwxMSArMTk2OCwxMSBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVy
RmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1ZhbHVlIHNoaWZ0ID0gY2FsbEZyYW1lLT5yKHZQ
Q1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKIAogICAgICAgICBpZiAodmFsLmlzSW50MzIoKSAm
JiBzaGlmdC5pc0ludDMyKCkpCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzTnVt
YmVyKHZhbC5hc0ludDMyKCkgPDwgKHNoaWZ0LmFzSW50MzIoKSAmIDB4MWYpKTsKKyAgICAgICAg
ICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNOdW1iZXIodmFsLmFzSW50MzIoKSA8
PCAoc2hpZnQuYXNJbnQzMigpICYgMHgxZikpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoKHZhbC50b0ludDMyKGNhbGxGcmFtZSkpIDw8IChz
aGlmdC50b1VJbnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwogICAgICAgICAgICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTigpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7Cisg
ICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKICAgICAgICAg
fQogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2xzaGlmdCk7CkBAIC0xOTkwLDEx
ICsxOTkwLDExIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlv
bkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIEpTVmFsdWUgc2hp
ZnQgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogCiAgICAgICAg
IGlmICh2YWwuaXNJbnQzMigpICYmIHNoaWZ0LmlzSW50MzIoKSkKLSAgICAgICAgICAgIGNhbGxG
cmFtZS0+cihkc3QpID0ganNOdW1iZXIodmFsLmFzSW50MzIoKSA+PiAoc2hpZnQuYXNJbnQzMigp
ICYgMHgxZikpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051
bWJlcih2YWwuYXNJbnQzMigpID4+IChzaGlmdC5hc0ludDMyKCkgJiAweDFmKSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcigodmFsLnRvSW50
MzIoY2FsbEZyYW1lKSkgPj4gKHNoaWZ0LnRvVUludDMyKGNhbGxGcmFtZSkgJiAweDFmKSk7CiAg
ICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUt
PnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3Qp
ID0gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
cnNoaWZ0KTsKQEAgLTIwMTEsMTEgKzIwMTEsMTEgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJp
dmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkK
ICAgICAgICAgSlNWYWx1ZSB2YWwgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNW
YWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHNoaWZ0ID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9w
ZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKHZhbC5pc1VJbnQzMigpICYmIHNoaWZ0Lmlz
SW50MzIoKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNOdW1iZXIodmFsLmFz
SW50MzIoKSA+PiAoc2hpZnQuYXNJbnQzMigpICYgMHgxZikpOworICAgICAgICAgICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcih2YWwuYXNJbnQzMigpID4+IChzaGlmdC5h
c0ludDMyKCkgJiAweDFmKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcigodmFsLnRvVUludDMyKGNhbGxGcmFtZSkpID4+IChzaGlmdC50b1VJ
bnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwogICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
TigpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgICAg
ICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKICAgICAgICAgfQogCiAgICAg
ICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3Vyc2hpZnQpOwpAQCAtMjAzMiwxMSArMjAzMiwx
MSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBKU1ZhbHVlIHNyYzEgPSBjYWxs
RnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAgICAgICBKU1ZhbHVlIHNy
YzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAgICAgICBp
ZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkpCi0gICAgICAgICAgICBjYWxsRnJh
bWUtPnIoZHN0KSA9IGpzTnVtYmVyKHNyYzEuYXNJbnQzMigpICYgc3JjMi5hc0ludDMyKCkpOwor
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcihzcmMxLmFz
SW50MzIoKSAmIHNyYzIuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHNyYzEudG9JbnQzMihjYWxsRnJhbWUpICYgc3JjMi50
b0ludDMyKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgICAgICBjYWxs
RnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKICAgICAgICAgfQogCiAgICAgICAgIHZQ
QyArPSBPUENPREVfTEVOR1RIKG9wX2JpdGFuZCk7CkBAIC0yMDUzLDExICsyMDUzLDExIEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+
cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNh
bGxGcmFtZS0+cih2UENbM10udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmIChzcmMx
LmlzSW50MzIoKSAmJiBzcmMyLmlzSW50MzIoKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihk
c3QpID0ganNOdW1iZXIoc3JjMS5hc0ludDMyKCkgXiBzcmMyLmFzSW50MzIoKSk7CisgICAgICAg
ICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKHNyYzEuYXNJbnQzMigp
IF4gc3JjMi5hc0ludDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoc3JjMS50b0ludDMyKGNhbGxGcmFtZSkgXiBzcmMyLnRvSW50MzIo
Y2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAg
ICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9Q
Q09ERV9MRU5HVEgob3BfYml0eG9yKTsKQEAgLTIwNzQsMTEgKzIwNzQsMTEgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZp
bGUqIHJlZ2lzdGVyRmkKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1sy
XS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1l
LT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKHNyYzEuaXNJbnQz
MigpICYmIHNyYzIuaXNJbnQzMigpKQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBq
c051bWJlcihzcmMxLmFzSW50MzIoKSB8IHNyYzIuYXNJbnQzMigpKTsKKyAgICAgICAgICAgIGNh
bGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNOdW1iZXIoc3JjMS5hc0ludDMyKCkgfCBzcmMy
LmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihzcmMxLnRvSW50MzIoY2FsbEZyYW1lKSB8IHNyYzIudG9JbnQzMihjYWxsRnJh
bWUpKTsKICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNh
bGxGcmFtZS0+cihkc3QpID0gcmVzdWx0OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGRzdCkgPSByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xF
TkdUSChvcF9iaXRvcik7CkBAIC0yMDkzLDExICsyMDkzLDExIEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdp
c3RlckZpCiAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBKU1Zh
bHVlIHNyYyA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAg
ICAgIGlmIChzcmMuaXNJbnQzMigpKQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBq
c051bWJlcih+c3JjLmFzSW50MzIoKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIoZHN0KSA9IGpzTnVtYmVyKH5zcmMuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKH5zcmMudG9JbnQzMihjYWxsRnJhbWUp
KTsKICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxG
cmFtZS0+cihkc3QpID0gcmVzdWx0OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGRzdCkgPSByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfYml0bm90KTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMjExMiw3ICsyMTEy
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBm
bGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgaW50IHNyYyA9IHZQQ1syXS51
Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKCFjYWxsRnJhbWUt
PnIoc3JjKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGNhbGxGcmFtZSkpOwogICAgICAgICBDSEVDS19G
T1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0OworICAg
ICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKIAogICAgICAgICB2UEMg
Kz0gT1BDT0RFX0xFTkdUSChvcF9ub3QpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBA
IC0yMTU4LDcgKzIxNTgsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShF
eGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogCiAgICAgICAgIGJv
b2wgcmVzdWx0ID0gYXNPYmplY3QoYmFzZVZhbCktPmhhc0luc3RhbmNlKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCksIGNhbGxGcmFtZS0+cihiYXNlUHJvdG8pLmpzVmFs
dWUoKSk7CiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgY2FsbEZyYW1l
LT5yKGRzdCkgPSBqc0Jvb2xlYW4ocmVzdWx0KTsKKyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGRzdCkgPSBqc0Jvb2xlYW4ocmVzdWx0KTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xF
TkdUSChvcF9pbnN0YW5jZW9mKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMjE3
MSw3ICsyMTcxLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0
aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgKi8KICAgICAg
ICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBzcmMgPSB2UENbMl0u
dS5vcGVyYW5kOwotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUoanNUeXBlU3Ry
aW5nRm9yVmFsdWUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnIoc3JjKS5qc1ZhbHVlKCkpKTsKKyAg
ICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKGpzVHlwZVN0cmluZ0Zv
clZhbHVlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yKHNyYykuanNWYWx1ZSgpKSk7CiAKICAgICAg
ICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfdHlwZW9mKTsKICAgICAgICAgTkVYVF9JTlNUUlVD
VElPTigpOwpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAg
ICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBzcmMgPSB2UENb
Ml0udS5vcGVyYW5kOwogICAgICAgICBKU1ZhbHVlIHYgPSBjYWxsRnJhbWUtPnIoc3JjKS5qc1Zh
bHVlKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNCb29sZWFuKHYuaXNDZWxsKCkg
PyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
ZHN0KSA9IGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKTsKIAog
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9pc191bmRlZmluZWQpOwogICAgICAgICBO
RVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0yMjAwLDcgKzIyMDAsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaQogICAgICAgICAqLwogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsK
ICAgICAgICAgaW50IHNyYyA9IHZQQ1syXS51Lm9wZXJhbmQ7Ci0gICAgICAgIGNhbGxGcmFtZS0+
cihkc3QpID0ganNCb29sZWFuKGNhbGxGcmFtZS0+cihzcmMpLmpzVmFsdWUoKS5pc0Jvb2xlYW4o
KSk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNCb29sZWFuKGNhbGxG
cmFtZS0+cihzcmMpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSk7CiAKICAgICAgICAgdlBDICs9IE9Q
Q09ERV9MRU5HVEgob3BfaXNfYm9vbGVhbik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
QEAgLTIyMTQsNyArMjIxNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICov
CiAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBpbnQgc3JjID0g
dlBDWzJdLnUub3BlcmFuZDsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc0Jvb2xlYW4o
Y2FsbEZyYW1lLT5yKHNyYykuanNWYWx1ZSgpLmlzTnVtYmVyKCkpOworICAgICAgICBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzQm9vbGVhbihjYWxsRnJhbWUtPnIoc3JjKS5qc1ZhbHVl
KCkuaXNOdW1iZXIoKSk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfaXNfbnVt
YmVyKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMjIyOCw3ICsyMjI4LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgKi8KICAgICAgICAgaW50IGRzdCA9IHZQ
Q1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBzcmMgPSB2UENbMl0udS5vcGVyYW5kOwotICAg
ICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzQm9vbGVhbihjYWxsRnJhbWUtPnIoc3JjKS5qc1Zh
bHVlKCkuaXNTdHJpbmcoKSk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0g
anNCb29sZWFuKGNhbGxGcmFtZS0+cihzcmMpLmpzVmFsdWUoKS5pc1N0cmluZygpKTsKIAogICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9pc19zdHJpbmcpOwogICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CkBAIC0yMjQyLDcgKzIyNDIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aQogICAgICAgICAqLwogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAg
ICAgaW50IHNyYyA9IHZQQ1syXS51Lm9wZXJhbmQ7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3Qp
ID0ganNCb29sZWFuKGpzSXNPYmplY3RUeXBlKGNhbGxGcmFtZS0+cihzcmMpLmpzVmFsdWUoKSkp
OworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzQm9vbGVhbihqc0lzT2Jq
ZWN0VHlwZShjYWxsRnJhbWUtPnIoc3JjKS5qc1ZhbHVlKCkpKTsKIAogICAgICAgICB2UEMgKz0g
T1BDT0RFX0xFTkdUSChvcF9pc19vYmplY3QpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7
CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAq
LwogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgaW50IHNyYyA9
IHZQQ1syXS51Lm9wZXJhbmQ7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNCb29sZWFu
KGpzSXNGdW5jdGlvblR5cGUoY2FsbEZyYW1lLT5yKHNyYykuanNWYWx1ZSgpKSk7CisgICAgICAg
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUo
Y2FsbEZyYW1lLT5yKHNyYykuanNWYWx1ZSgpKSk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3BfaXNfZnVuY3Rpb24pOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0y
Mjg0LDExICsyMjg0LDExIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4
ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAKICAgICAgICAgdWlu
dDMyX3QgaTsKICAgICAgICAgaWYgKHByb3BOYW1lLmdldFVJbnQzMihpKSkKLSAgICAgICAgICAg
IGNhbGxGcmFtZS0+cihkc3QpID0ganNCb29sZWFuKGJhc2VPYmotPmhhc1Byb3BlcnR5KGNhbGxG
cmFtZSwgaSkpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc0Jv
b2xlYW4oYmFzZU9iai0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBpKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShjYWxsRnJhbWUsIHByb3BOYW1lLnRv
U3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwot
ICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc0Jvb2xlYW4oYmFzZU9iai0+aGFzUHJv
cGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSkpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNo
ZWNrZWRSKGRzdCkgPSBqc0Jvb2xlYW4oYmFzZU9iai0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBw
cm9wZXJ0eSkpOwogICAgICAgICB9CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
aW4pOwpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4
ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAg
ICAgQVNTRVJUKHNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKTsKICAgICAgICAgaW50IGluZGV4ID0g
dlBDWzJdLnUub3BlcmFuZDsKIAotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHNjb3BlLT5y
ZWdpc3RlckF0KGluZGV4KTsKKyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBz
Y29wZS0+cmVnaXN0ZXJBdChpbmRleCk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9w
X2dldF9nbG9iYWxfdmFyKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KQEAg
LTI0MDksNyArMjQwOSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4
ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIH0KICAg
ICAgICAgQVNTRVJUKCgqaXRlciktPmlzVmFyaWFibGVPYmplY3QoKSk7CiAgICAgICAgIEpTVmFy
aWFibGVPYmplY3QqIHNjb3BlID0gc3RhdGljX2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KCppdGVy
KTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBzY29wZS0+cmVnaXN0ZXJBdChpbmRleCk7
CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gc2NvcGUtPnJlZ2lzdGVyQXQo
aW5kZXgpOwogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKGRzdCkuanNWYWx1ZSgpKTsKICAg
ICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3Njb3BlZF92YXIpOwogICAgICAgICBO
RVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaQogCiAgICAgICAgIHRyeUNhY2hlR2V0QnlJRChjYWxsRnJhbWUsIGNvZGVCbG9jaywg
dlBDLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90KTsKIAotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0
KSA9IHJlc3VsdDsKKyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7
CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIE5F
WFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC0yNTM3LDcgKzI1MzcsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmls
ZSogcmVnaXN0ZXJGaQogICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB2UENbNV0udS5vcGVy
YW5kOwogCiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPmdldChjYWxsRnJhbWUs
IGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbM10udS5vcGVyYW5kKSkgPT0gYmFzZU9iamVjdC0+
Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwotICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihk
c3QpID0gSlNWYWx1ZShiYXNlT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKGJhc2VPYmpl
Y3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpKTsKIAogICAgICAgICAgICAgICAgIHZQQyArPSBP
UENPREVfTEVOR1RIKG9wX2dldF9ieV9pZF9zZWxmKTsKICAgICAgICAgICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CkBAIC0yNTcyLDcgKzI1NzIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aQogCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcm90b09iamVjdC0+Z2V0KGNhbGxGcmFt
ZSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1szXS51Lm9wZXJhbmQpKSA9PSBwcm90b09iamVj
dC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFzZVZhbHVlLmdldChjYWxsRnJhbWUsIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbM10udS5v
cGVyYW5kKSkgPT0gcHJvdG9PYmplY3QtPmdldERpcmVjdE9mZnNldChvZmZzZXQpKTsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBKU1ZhbHVlKHByb3RvT2JqZWN0LT5n
ZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShwcm90b09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9m
ZnNldCkpOwogCiAgICAgICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dl
dF9ieV9pZF9wcm90byk7CiAgICAgICAgICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
QEAgLTI2MTQsOSArMjYxNCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+Z2V0Q2FsbERhdGEoY2Fs
bERhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNh
bGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFzT2JqZWN0KGJhc2VDZWxsKSwg
QXJnTGlzdCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04o
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gcmVzdWx0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1
bHQ7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbEZyYW1lLT5yKGRzdCkgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICAg
ICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3Rv
KTsKICAgICAgICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTI2NTgsNyArMjY1OCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAg
ICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlciA9IHZQQ1s2
XS51LmdldHRlckZ1bmM7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0
dGVyKGNhbGxGcmFtZSwgcHJvdG9PYmplY3QsIGlkZW50KTsKICAgICAgICAgICAgICAgICAgICAg
Q0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnIo
ZHN0KSA9IHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGRzdCkgPSByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RI
KG9wX2dldF9ieV9pZF9jdXN0b21fcHJvdG8pOwogICAgICAgICAgICAgICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjc0Myw3ICsyNzQzLDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmkKIAogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJh
c2VPYmplY3QtPmdldChjYWxsRnJhbWUsIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbM10udS5v
cGVyYW5kKSkgPT0gYmFzZU9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VWYWx1ZS5nZXQoY2FsbEZyYW1lLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIodlBDWzNdLnUub3BlcmFuZCkpID09IGJhc2VPYmplY3QtPmdldERpcmVj
dE9mZnNldChvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihk
c3QpID0gSlNWYWx1ZShiYXNlT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IEpTVmFsdWUo
YmFzZU9iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWRfY2hhaW4pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMjc4Nyw5ICsyNzg3LDkg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFn
LCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXR0ZXItPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKICAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGNhbGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGJhc2VPYmplY3QsIEFyZ0xpc3QoKSk7CiAgICAgICAgICAgICAgICAgICAgIENI
RUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRz
dCkgPSByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihk
c3QpID0gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNVbmRlZmluZWQoKTsKIAogICAgICAgICAg
ICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZik7CiAg
ICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtMjgyNyw3ICsyODI3LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBnZXR0ZXIgPSB2UENbNV0udS5nZXR0ZXJGdW5jOwogICAgICAgICAgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gZ2V0dGVyKGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudCk7CiAg
ICAgICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICAgICAgICAgIGNh
bGxGcmFtZS0+cihkc3QpID0gcmVzdWx0OworICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX2dldF9ieV9pZF9jdXN0b21fc2VsZik7CiAgICAgICAgICAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwogICAgICAgICAgICAgfQpAQCAtMjg1NCw3ICsyODU0LDcgQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGNhbGxG
cmFtZSwgaWRlbnQsIHNsb3QpOwogICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAKLSAg
ICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7CisgICAgICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihkc3QpID0gcmVzdWx0OwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9n
ZXRfYnlfaWRfZ2VuZXJpYyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBA
IC0yODk1LDkgKzI4OTUsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVyLT5nZXRDYWxsRGF0YShjYWxs
RGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxs
KGNhbGxGcmFtZSwgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2VWYWx1ZSwgQXJnTGlz
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSByZXN1bHQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkg
PSByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc1VuZGVm
aW5lZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X2J5X2lkX2dldHRlcl9jaGFpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI5NDksNyArMjk0OSw3IEBA
IHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXIgPSB2UENbN10udS5nZXR0ZXJGdW5jOwogICAgICAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBnZXR0ZXIoY2FsbEZyYW1lLCBiYXNlT2Jq
ZWN0LCBpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9O
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVz
dWx0OwogICAgICAgICAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0
X2J5X2lkX2N1c3RvbV9jaGFpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBORVhUX0lOU1RS
VUNUSU9OKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI5NzcsNyArMjk3Nyw3IEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1l
LT5yKGJhc2UpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkoZ2xvYmFs
RGF0YSwgYmFzZVZhbHVlKSkpIHsKICAgICAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVy
YW5kOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc051bWJlcihhc0FycmF5KGJh
c2VWYWx1ZSktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihk
c3QpID0ganNOdW1iZXIoYXNBcnJheShiYXNlVmFsdWUpLT5sZW5ndGgoKSk7CiAgICAgICAgICAg
ICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYXJyYXlfbGVuZ3RoKTsKICAgICAgICAgICAg
IE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICAgICAgfQpAQCAtMjk5Nyw3ICsyOTk3LDcgQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBjYWxsRnJhbWUt
PnIoYmFzZSkuanNWYWx1ZSgpOwogICAgICAgICBpZiAoTElLRUxZKGlzSlNTdHJpbmcoZ2xvYmFs
RGF0YSwgYmFzZVZhbHVlKSkpIHsKICAgICAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVy
YW5kOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc051bWJlcihhc1N0cmluZyhi
YXNlVmFsdWUpLT5sZW5ndGgoKSk7CisgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
ZHN0KSA9IGpzTnVtYmVyKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmxlbmd0aCgpKTsKICAgICAgICAg
ICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9zdHJpbmdfbGVuZ3RoKTsKICAgICAgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICAgICAgfQpAQCAtMzE3Miw3ICszMTcyLDcgQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgIGdvdG8gdm1fdGhyb3c7CiAgICAgICAg
IH0KICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwotICAgICAgICBjYWxsRnJhbWUtPnIo
ZHN0KSA9IGpzQm9vbGVhbihyZXN1bHQpOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
ZHN0KSA9IGpzQm9vbGVhbihyZXN1bHQpOwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChv
cF9kZWxfYnlfaWQpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtMzE5
MiwxNCArMzE5MiwxNCBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICBKU1ZhbHVlIHJl
c3VsdDsKICAgICAgICAgaW50IG9mZnNldCA9IDA7CiAgICAgICAgIGlmIChzdWJzY3JpcHQgPT0g
ZXhwZWN0ZWRTdWJzY3JpcHQgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIChiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZSgpID09IGl0LT5jYWNoZWRTdHJ1Y3R1cmUoKSkgJiYgaXQtPmdldE9m
ZnNldChpbmRleCwgb2Zmc2V0KSkgewotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBK
U1ZhbHVlKGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldERpcmVjdE9mZnNldChvZmZzZXQpKTsKKyAg
ICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShhc09iamVjdChi
YXNlVmFsdWUpLT5nZXREaXJlY3RPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgICAgICB2UEMgKz0g
T1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfcG5hbWUpOwogICAgICAgICAgICAgTkVYVF9JTlNUUlVD
VElPTigpOwogICAgICAgICB9CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGNhbGxG
cmFtZSwgc3Vic2NyaXB0LnRvU3RyaW5nKGNhbGxGcmFtZSkpOwogICAgICAgICByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGNhbGxGcmFtZSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTigpOwotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IHJlc3VsdDsKKyAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSByZXN1bHQ7CiAgICAgICAgIHZQQyArPSBP
UENPREVfTEVOR1RIKG9wX2dldF9ieV9wbmFtZSk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04o
KTsKICAgICB9CkBAIC0zMjEzLDkgKzMyMTMsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAg
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYXJndW1lbnRzKTsKICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gYXJndW1lbnRzLmdldChjYWxsRnJhbWUsIGlkZW50LCBzbG90KTsKICAgICAg
ICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihk
c3QpID0gcmVzdWx0OworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBy
ZXN1bHQ7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBq
c051bWJlcihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgICAgICAgICBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
KTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYXJndW1lbnRzX2xlbmd0
aCk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAgLTMyMzAsMTYgKzMyMzAsMTYgQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgIHVuc2lnbmVkIGFyZyA9IHN1YnNjcmlw
dC5hc1VJbnQzMigpICsgMTsKICAgICAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtZXRlcnMgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5tX251bVBhcmFtZXRlcnM7CiAgICAgICAgICAgICBpZiAo
YXJnIDwgbnVtUGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9
IGNhbGxGcmFtZS0+cihhcmcgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBu
dW1QYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0
KSA9IGNhbGxGcmFtZS0+cihhcmcgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUg
LSBudW1QYXJhbWV0ZXJzKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxs
RnJhbWUtPnIoZHN0KSA9IGNhbGxGcmFtZS0+cihhcmcgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlclNpemUgLSBudW1QYXJhbWV0ZXJzIC0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
LSAxKTsKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGNhbGxG
cmFtZS0+cihhcmcgLSBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBudW1QYXJh
bWV0ZXJzIC0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgLSAxKTsKICAgICAgICAgICAgIHZQ
QyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9hcmd1bWVudF9ieV92YWwpOwogICAgICAgICAgICAg
TkVYVF9JTlNUUlVDVElPTigpOwogICAgICAgICB9CiAgICAgICAgIGlmICghYXJndW1lbnRzKSB7
CiAgICAgICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJn
dW1lbnRzKGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoYXJndW1lbnRzUmVn
aXN0ZXIpID0gSlNWYWx1ZShhcmd1bWVudHMpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3RlcikpID0gSlNWYWx1ZShh
cmd1bWVudHMpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFyZ3VtZW50c1Jl
Z2lzdGVyKSA9IEpTVmFsdWUoYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSA9
IEpTVmFsdWUoYXJndW1lbnRzKTsKICAgICAgICAgfQogICAgICAgICAvLyBmYWxsdGhyb3VnaAog
ICAgIH0KQEAgLTMyODAsNyArMzI4MCw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAg
IH0KIAogICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+
cihkc3QpID0gcmVzdWx0OworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJl
c3VsdDsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3ZhbCk7CiAgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC0zMzY0LDcgKzMzNjQsNyBAQCBza2lw
X2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgZ290byB2bV90aHJvdzsKICAgICAgICAgfQog
ICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihkc3Qp
ID0ganNCb29sZWFuKHJlc3VsdCk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3Qp
ID0ganNCb29sZWFuKHJlc3VsdCk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2Rl
bF9ieV92YWwpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtMzc3MCw3
ICszNzcwLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgaW50IHNob3VsZENoZWNr
ID0gdlBDWzNdLnUub3BlcmFuZDsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUo
KSAhPSBGdW5jdGlvbkNvZGUgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8
IGNhbGxGcmFtZS0+cihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkp
OwogICAgICAgICBpZiAoIXNob3VsZENoZWNrIHx8ICFjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVl
KCkpCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IEpTVmFsdWUoY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woZnVuYyktPm1ha2UoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4o
KSkpOworICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBKU1ZhbHVlKGNv
ZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGZ1bmMpLT5tYWtlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5z
Y29wZUNoYWluKCkpKTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVu
Yyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAgLTM4MDIsNyArMzgwMiw3IEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgICBmdW5jLT5zY29wZSgpLnB1c2goZnVuY3Rp
b25TY29wZU9iamVjdCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9
IEpTVmFsdWUoZnVuYyk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNW
YWx1ZShmdW5jKTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuY19l
eHApOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC0zOTk4LDcgKzM5OTgsNyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIENI
RUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGFyZ0NvdW50RHN0KSA9
IFJlZ2lzdGVyOjp3aXRoSW50KGFyZ0NvdW50ICsgMSk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihhcmdDb3VudERzdCkgPSBSZWdpc3Rlcjo6d2l0aEludChhcmdDb3VudCArIDEpOwog
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9sb2FkX3ZhcmFyZ3MpOwogICAgICAgICBO
RVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQpAQCAtNDE2OCw3ICs0MTY4LDcgQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICAgICAgICAgICAgZXhwZWN0ZWQgcmV0dXJuIHZhbHVlIHJlZ2lzdGVyLgog
ICAgICAgICAqLwogCi0gICAgICAgIGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKSA9IGZ1
bmN0aW9uUmV0dXJuVmFsdWU7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUih2UENbMV0u
dS5vcGVyYW5kKSA9IGZ1bmN0aW9uUmV0dXJuVmFsdWU7CiAKICAgICAgICAgdlBDICs9IE9QQ09E
RV9MRU5HVEgob3BfY2FsbF9wdXRfcmVzdWx0KTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigp
OwpAQCAtNDIxNiw3ICs0MjE2LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAogICAgICAgICBz
aXplX3QgaSA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGNvdW50ID0gY29kZUJsb2NrLT5tX251
bVZhcnM7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGkpID0ganNV
bmRlZmluZWQoKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihpKSA9IGpzVW5k
ZWZpbmVkKCk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZW50ZXIpOwogICAg
ICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC00MjQzLDcgKzQyNDMsNyBAQCBza2lwX2lkX2N1
c3RvbV9zZWxmOgogICAgICAgICAgICBNb3ZlIGNhbGxlZSBpbnRvIGEgcmVnaXN0ZXIuCiAgICAg
ICAgICovCiAKLSAgICAgICAgY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpID0gSlNWYWx1
ZShjYWxsRnJhbWUtPmNhbGxlZSgpKTsKKyAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHZQ
Q1sxXS51Lm9wZXJhbmQpID0gSlNWYWx1ZShjYWxsRnJhbWUtPmNhbGxlZSgpKTsKIAogICAgICAg
ICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfY2FsbGVlKTsKICAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwpAQCAtNDI3Miw3ICs0MjcyLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCku
bm9kZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7Ci0gICAgICAgIGNh
bGxGcmFtZS0+cih0aGlzUmVnaXN0ZXIpID0gSlNWYWx1ZShuZXcgKCZjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSkgSlNPYmplY3Qoc3RydWN0dXJlKSk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVj
a2VkUih0aGlzUmVnaXN0ZXIpID0gSlNWYWx1ZShuZXcgKCZjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSkgSlNPYmplY3Qoc3RydWN0dXJlKSk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfY3JlYXRlX3RoaXMpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC00MjkyLDcg
KzQyOTIsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICBpbnQgdGhpc1JlZ2lzdGVy
ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsID0gY2FsbEZyYW1l
LT5yKHRoaXNSZWdpc3RlcikuanNWYWx1ZSgpOwogICAgICAgICBpZiAodGhpc1ZhbC5uZWVkc1Ro
aXNDb252ZXJzaW9uKCkpCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnIodGhpc1JlZ2lzdGVyKSA9
IEpTVmFsdWUodGhpc1ZhbC50b1RoaXNPYmplY3QoY2FsbEZyYW1lKSk7CisgICAgICAgICAgICBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIodGhpc1JlZ2lzdGVyKSA9IEpTVmFsdWUodGhpc1ZhbC50b1Ro
aXNPYmplY3QoY2FsbEZyYW1lKSk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
Y29udmVydF90aGlzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtNDMxMSw3ICs0
MzExLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgaW50IHRoaXNSZWdpc3RlciA9
IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbCA9IGNhbGxGcmFtZS0+
cih0aGlzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKHRoaXNWYWwuaXNPYmplY3Qo
KSAmJiB0aGlzVmFsLm5lZWRzVGhpc0NvbnZlcnNpb24oKSkKLSAgICAgICAgICAgIGNhbGxGcmFt
ZS0+cih0aGlzUmVnaXN0ZXIpID0gSlNWYWx1ZSh0aGlzVmFsLnRvU3RyaWN0VGhpc09iamVjdChj
YWxsRnJhbWUpKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUih0aGlzUmVnaXN0
ZXIpID0gSlNWYWx1ZSh0aGlzVmFsLnRvU3RyaWN0VGhpc09iamVjdChjYWxsRnJhbWUpKTsKICAg
ICAgICAgCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpc19zdHJp
Y3QpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CkBAIC00MzI1LDcgKzQzMjUsNyBAQCBz
a2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgKi8KICAgICAgICAgaW50IGRzdCA9IHZQQ1sx
XS51Lm9wZXJhbmQ7CiAKLSAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBKU1ZhbHVlKCk7Cisg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZSgpOwogICAgICAgICB2
UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9pbml0X2xhenlfcmVnKTsKICAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwogICAgIH0KQEAgLTQzNDEsOCArNDM0MSw4IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAKICAgICAgICAgaWYgKCFjYWxsRnJhbWUtPnIoZHN0KS5qc1ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudHMo
Y2FsbEZyYW1lKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0gSlNWYWx1ZShhcmd1
bWVudHMpOwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3Rlcihkc3QpKSA9IEpTVmFsdWUoYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihkc3QpID0gSlNWYWx1ZShhcmd1bWVudHMpOworICAgICAgICAgICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihkc3QpKSA9IEpTVmFs
dWUoYXJndW1lbnRzKTsKICAgICAgICAgfQogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChv
cF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpAQCAtNDQz
OCw3ICs0NDM4LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgaW50IHNyYyA9IHZQ
Q1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBjb3VudCA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAK
LSAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBjb25jYXRlbmF0ZVN0cmluZ3MoY2FsbEZyYW1l
LCAmY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtzcmNdLCBjb3VudCk7CisgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gY29uY2F0ZW5hdGVTdHJpbmdzKGNhbGxGcmFtZSwgJmNhbGxG
cmFtZS0+cmVnaXN0ZXJzKClbc3JjXSwgY291bnQpOwogICAgICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OKCk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3N0cmNhdCk7CiAKQEAgLTQ0
NDgsNyArNDQ0OCw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIGludCBkc3QgPSB2
UENbMV0udS5vcGVyYW5kOwogICAgICAgICBpbnQgc3JjID0gdlBDWzJdLnUub3BlcmFuZDsKIAot
ICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGNhbGxGcmFtZS0+cihzcmMpLmpzVmFsdWUoKS50
b1ByaW1pdGl2ZShjYWxsRnJhbWUpOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0
KSA9IGNhbGxGcmFtZS0+cihzcmMpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShjYWxsRnJhbWUpOwog
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF90b19wcmltaXRpdmUpOwogCiAgICAgICAg
IE5FWFRfSU5TVFJVQ1RJT04oKTsKQEAgLTQ0NjUsNyArNDQ2NSw3IEBAIHNraXBfaWRfY3VzdG9t
X3NlbGY6CiAgICAgICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChjYWxsRnJhbWUpOwogICAg
ICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CiAKLSAgICAgICAgY2FsbEZyYW1lLT5yKHNjb3Bl
KSA9IEpTVmFsdWUobyk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihzY29wZSkgPSBK
U1ZhbHVlKG8pOwogICAgICAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbEZyYW1lLT5z
Y29wZUNoYWluKCktPnB1c2gobykpOwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9w
X3B1c2hfc2NvcGUpOwpAQCAtNDUwNiwxMCArNDUwNiwxMCBAQCBza2lwX2lkX2N1c3RvbV9zZWxm
OgogICAgICAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNo
YWluKGNhbGxGcmFtZSkpCiAgICAgICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZSwgbyk7CiAKLSAgICAgICAgY2Fs
bEZyYW1lLT5yKGRzdCkgPSBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwotICAgICAgICBjYWxsRnJh
bWUtPnIoYmFzZSkgPSBKU1ZhbHVlKG8pOwotICAgICAgICBjYWxsRnJhbWUtPnIoaSkgPSBSZWdp
c3Rlcjo6d2l0aEludCgwKTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKHNpemUpID0gUmVnaXN0ZXI6
OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAgICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOworICAgICAgICBj
YWxsRnJhbWUtPnVuY2hlY2tlZFIoYmFzZSkgPSBKU1ZhbHVlKG8pOworICAgICAgICBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoaSkgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAgICAgICAgY2FsbEZy
YW1lLT51bmNoZWNrZWRSKHNpemUpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci0+c2l6ZSgpKTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3Bu
YW1lcyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CkBAIC00NTMyLDEwICs0
NTMyLDEwIEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIHdoaWxlIChjYWxsRnJhbWUt
PnIoaSkuaSgpICE9IGNhbGxGcmFtZS0+cihzaXplKS5pKCkpIHsKICAgICAgICAgICAgIEpTVmFs
dWUga2V5ID0gaXQtPmdldChjYWxsRnJhbWUsIGFzT2JqZWN0KGNhbGxGcmFtZS0+cihiYXNlKS5q
c1ZhbHVlKCkpLCBjYWxsRnJhbWUtPnIoaSkuaSgpKTsKICAgICAgICAgICAgIENIRUNLX0ZPUl9F
WENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihpKSA9IFJlZ2lzdGVyOjp3aXRo
SW50KGNhbGxGcmFtZS0+cihpKS5pKCkgKyAxKTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5j
aGVja2VkUihpKSA9IFJlZ2lzdGVyOjp3aXRoSW50KGNhbGxGcmFtZS0+cihpKS5pKCkgKyAxKTsK
ICAgICAgICAgICAgIGlmIChrZXkpIHsKICAgICAgICAgICAgICAgICBDSEVDS19GT1JfVElNRU9V
VCgpOwotICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ga2V5OworICAgICAgICAg
ICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ga2V5OwogICAgICAgICAgICAgICAg
IHZQQyArPSB0YXJnZXQ7CiAgICAgICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAg
ICAgICAgICAgfQpAQCAtNDU5MSw3ICs0NTkxLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAg
ICAgICAgQVNTRVJUKGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFnbG9iYWxEYXRh
LT5leGNlcHRpb24pOwogICAgICAgICBpbnQgZXggPSB2UENbMV0udS5vcGVyYW5kOwotICAgICAg
ICBjYWxsRnJhbWUtPnIoZXgpID0gZXhjZXB0aW9uVmFsdWU7CisgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihleCkgPSBleGNlcHRpb25WYWx1ZTsKICAgICAgICAgZXhjZXB0aW9uVmFsdWUg
PSBKU1ZhbHVlKCk7CiAKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfY2F0Y2gpOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggMGZhZmY4NTY1ZWEyYWJiNWFlNjk1NWUxMjJlMjVi
NGMxOTM0MmI2MS4uYjIzNGEyNWQ0ZDA2ZWY4NmJjYzU0ZGFkNGE4N2FjYjZhNWIxMzk2YSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xOTM3LDcgKzE5MzcsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihKU09iamVjdCosIG9wX25ld19mdW5jKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKICAgICAKLSAgICBBU1NFUlQoc3RhY2tGcmFtZS5jYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhc3RhY2tGcmFtZS5j
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgc3RhY2tGcmFt
ZS5jYWxsRnJhbWUtPnIoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBBU1NFUlQoc3RhY2tGcmFtZS5jYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhc3RhY2tGcmFt
ZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgc3RhY2tG
cmFtZS5jYWxsRnJhbWUtPnVuY2hlY2tlZFIoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKICAgICByZXR1cm4gc3RhY2tG
cmFtZS5hcmdzWzBdLmZ1bmN0aW9uKCktPm1ha2Uoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNr
RnJhbWUuY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogfQogCkBAIC0yNzQxLDcgKzI3NDEsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV9za2lwKQog
ICAgIGJvb2wgY2hlY2tUb3BMZXZlbCA9IGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlv
bkNvZGUgJiYgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CiAgICAgQVNTRVJUKHNr
aXAgfHwgIWNoZWNrVG9wTGV2ZWwpOwogICAgIGlmIChjaGVja1RvcExldmVsICYmIHNraXAtLSkg
ewotICAgICAgICBpZiAoY2FsbEZyYW1lLT5yKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVy
KCkpLmpzVmFsdWUoKSkKKyAgICAgICAgaWYgKGNhbGxGcmFtZS0+dW5jaGVja2VkUihjb2RlQmxv
Y2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpCiAgICAgICAgICAgICArK2l0ZXI7
CiAgICAgfQogICAgIHdoaWxlIChza2lwLS0pIHsKQEAgLTMxMDMsNyArMzEwMyw3IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2Z1bmNfZXhwKQogCiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IHN0YWNrRnJhbWUuYXJnc1swXS5mdW5jdGlvbigpOwog
ICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+c2NvcGVDaGFpbigpKTsKLSAgICBBU1NFUlQoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29k
ZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwgIWNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm5lZWRz
RnVsbFNjb3BlQ2hhaW4oKSB8fCBjYWxsRnJhbWUtPnIoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlIHx8ICFjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkp
OwogCiAgICAgLyogCiAgICAgICAgIFRoZSBJZGVudGlmaWVyIGluIGEgRnVuY3Rpb25FeHByZXNz
aW9uIGNhbiBiZSByZWZlcmVuY2VkIGZyb20gaW5zaWRlCkBAIC0zMjEwLDcgKzMyMTAsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfYml0b3IpCiBERUZJTkVfU1RV
Ql9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfY2FsbF9ldmFsKQogewogICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLSAgICBBU1NFUlQoc3RhY2tGcmFtZS5jYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhc3RhY2tGcmFt
ZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgc3RhY2tG
cmFtZS5jYWxsRnJhbWUtPnIoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5hY3Rp
dmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBBU1NFUlQoc3RhY2tGcmFtZS5jYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhc3RhY2tG
cmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUtPnVuY2hlY2tlZFIoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKIAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgUmVnaXN0ZXJGaWxlKiBy
ZWdpc3RlckZpbGUgPSBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3OTVhZDFmNzFjMjExMzdkNjE5YWFjZDRlYThmZDg2
NzkyZWU2ZGFmLi4xMTQ3ODU4Nzc3NmI0OGVjNzlhN2E2NWU1OTYzYmYxN2JlNWFkZGNmIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC0yMDIsMTQgKzIwMiwxNCBA
QCBKU1ZhbHVlIEpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aQogICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9
IGFzQWN0aXZhdGlvbihzbG90QmFzZSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShhY3RpdmF0aW9uLT5kKCktPnJlZ2lzdGVycyk7CiAgICAgaW50IGFyZ3Vt
ZW50c1JlZ2lzdGVyID0gYWN0aXZhdGlvbi0+ZCgpLT5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEJ5dGVjb2RlKCkuYXJndW1lbnRzUmVnaXN0ZXIoKTsKLSAgICBpZiAoIWNhbGxGcmFtZS0+
cihhcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpKSB7CisgICAgaWYgKCFjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKSkgewogICAgICAgICBKU1ZhbHVl
IGFyZ3VtZW50cyA9IEpTVmFsdWUobmV3IChjYWxsRnJhbWUpIEFyZ3VtZW50cyhjYWxsRnJhbWUp
KTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGFyZ3VtZW50c1JlZ2lzdGVyKSA9IGFyZ3VtZW50czsK
LSAgICAgICAgY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVu
dHNSZWdpc3RlcikpID0gYXJndW1lbnRzOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
YXJndW1lbnRzUmVnaXN0ZXIpID0gYXJndW1lbnRzOworICAgICAgICBjYWxsRnJhbWUtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkgPSBh
cmd1bWVudHM7CiAgICAgfQogCi0gICAgQVNTRVJUKGNhbGxGcmFtZS0+cihhcmd1bWVudHNSZWdp
c3RlcikuanNWYWx1ZSgpLmluaGVyaXRzKCZBcmd1bWVudHM6OmluZm8pKTsKLSAgICByZXR1cm4g
Y2FsbEZyYW1lLT5yKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGNh
bGxGcmFtZS0+dW5jaGVja2VkUihhcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpLmluaGVyaXRz
KCZBcmd1bWVudHM6OmluZm8pKTsKKyAgICByZXR1cm4gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFy
Z3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCk7CiB9CiAKIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMg
c2VydmUgdGhlIHB1cnBvc2Ugb2YgaXNvbGF0aW5nIHRoZSBjb21tb24gY2FzZSBmcm9tIGEK
</data>
<flag name="review"
          id="65000"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>