<?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>150831</bug_id>
          
          <creation_ts>2015-11-02 20:35:34 -0800</creation_ts>
          <short_desc>B3::Stackmap should be a superclass of B3::PatchpointValue and B3::CheckValue rather than being one of their members</short_desc>
          <delta_ts>2015-11-03 16:14:39 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138814</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-02 20:35:34 -0800</bug_when>
    <thetext>This will simplify things a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138815</commentid>
    <comment_count>1</comment_count>
      <attachid>264659</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-02 20:36:37 -0800</bug_when>
    <thetext>Created attachment 264659
it&apos;s a start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138982</commentid>
    <comment_count>2</comment_count>
      <attachid>264700</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 11:06:38 -0800</bug_when>
    <thetext>Created attachment 264700
more

Of course it doesn&apos;t compile yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138992</commentid>
    <comment_count>3</comment_count>
      <attachid>264703</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 11:33:22 -0800</bug_when>
    <thetext>Created attachment 264703
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138996</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 11:36:16 -0800</bug_when>
    <thetext>Attachment 264703 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:68:  The parameter name &quot;comma&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:1214:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139117</commentid>
    <comment_count>5</comment_count>
      <attachid>264703</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-03 15:20:52 -0800</bug_when>
    <thetext>Comment on attachment 264703
the patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139166</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 16:14:39 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/191993</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264659</attachid>
            <date>2015-11-02 20:36:37 -0800</date>
            <delta_ts>2015-11-03 11:06:38 -0800</delta_ts>
            <desc>it&apos;s a start</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9804</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RyYWlu
ZWRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQjNDb25zdHJhaW5lZFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisj
aW5jbHVkZSAiQjNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
dm9pZCBDb25zdHJhaW5lZFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7Cisg
ICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKG1fdmFsdWUpLCAiOiIsIG1fcmVwKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdHJhaW5lZFZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RyYWluZWRWYWx1ZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RyYWluZWRWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCM0NvbnN0cmFpbmVkVmFsdWVfaAorI2Rl
ZmluZSBCM0NvbnN0cmFpbmVkVmFsdWVfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkIzVmFsdWVSZXAuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2Ns
YXNzIFZhbHVlOworCitjbGFzcyBDb25zdHJhaW5lZFZhbHVlIHsKK3B1YmxpYzoKKyAgICBDb25z
dHJhaW5lZFZhbHVlKCkKKyAgICB7CisgICAgfQorCisgICAgQ29uc3RyYWluZWRWYWx1ZShWYWx1
ZSogdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX3JlcChWYWx1
ZVJlcDo6U29tZVJlZ2lzdGVyKQorICAgIHsKKyAgICB9CisKKyAgICBDb25zdHJhaW5lZFZhbHVl
KFZhbHVlKiB2YWx1ZSwgY29uc3QgVmFsdWVSZXAmIHJlcCkKKyAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKQorICAgICAgICAsIG1fcmVwKHJlcCkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgfHwgbV9yZXA7IH0KKworICAg
IFZhbHVlKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdCBWYWx1
ZVJlcCYgcmVwKCkgY29uc3QgeyByZXR1cm4gbV9yZXA7IH0KKworICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWYWx1ZSogbV92YWx1ZTsKKyAg
ICBWYWx1ZVJlcCBtX3JlcDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzQ29uc3RyYWluZWRWYWx1ZV9oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCM1N0YWNrbWFwVmFsdWVfaAorI2RlZmluZSBC
M1N0YWNrbWFwVmFsdWVfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzU3Rh
Y2ttYXAuaCIKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeworCitzdHJ1Y3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zIHsKKyAgICAvLyBUaGlz
IGlzIHRoZSBWYWx1ZSBjb250YWluaW5nIHRoZSBzdGFja21hcC4KKyAgICBWYWx1ZSogdmFsdWU7
CisgICAgCisgICAgLy8gVGhpcyBpcyB0aGUgc3RhY2ttYXAuCisgICAgU3RhY2ttYXAqIHN0YWNr
bWFwOworICAgIAorICAgIC8vIFRoaXMgdGVsbHMgeW91IHRoZSBhY3R1YWwgdmFsdWUgcmVwcmVz
ZW50YXRpb25zIHRoYXQgd2VyZSBjaG9zZW4uCisgICAgVmVjdG9yPFZhbHVlUmVwPiByZXBzOwor
ICAgIAorICAgIC8vIFRoaXMgdGVsbHMgeW91IHRoZSByZWdpc3RlcnMgdGhhdCB3ZXJlIHVzZWQu
CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKK307CisKK3R5cGVkZWYgdm9pZCBTdGFj
a21hcEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpOwordHlwZWRlZiBTaGFyZWRUYXNrPFN0YWNrbWFwR2VuZXJhdG9yRnVuY3Rp
b24+IFN0YWNrbWFwR2VuZXJhdG9yOworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTdGFja21h
cFZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRz
KE9wY29kZSBvcGNvZGUpCisgICAgeworICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGluY2x1ZGUg
b3Bjb2RlcyBvZiBhbGwgc3ViY2xhc3Nlcy4KKyAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAg
ICAgICAgY2FzZSBDaGVja0FkZDoKKyAgICAgICAgY2FzZSBDaGVja1N1YjoKKyAgICAgICAgY2Fz
ZSBDaGVja011bDoKKyAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgY2FzZSBQYXRjaHBvaW50
OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+U3RhY2ttYXBWYWx1ZSgp
OworCisgICAgdm9pZCBhZGRDaGlsZChjb25zdCBDb25zdHJhaW5lZFZhbHVlJik7CisKKyAgICBj
b25zdCBWZWN0b3I8VmFsdWVSZXA+JiByZXBzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBzOyB9CisK
KyAgICB2b2lkIGNsb2JiZXIoY29uc3QgUmVnaXN0ZXJTZXQmIHNldCkKKyAgICB7CisgICAgICAg
IG1fY2xvYmJlcmVkLm1lcmdlKHNldCk7CisgICAgfQorCisgICAgY29uc3QgUmVnaXN0ZXJTZXQm
IGNsb2JiZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvYmJlcmVkOyB9CisKKyAgICB2b2lkIHNl
dEdlbmVyYXRvcihSZWZQdHI8U3RhY2ttYXBHZW5lcmF0b3I+IGdlbmVyYXRvcikKKyAgICB7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yID0gZ2VuZXJhdG9yOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBzZXRHZW5lcmF0b3IoY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIG1fZ2VuZXJhdG9yID0gY3JlYXRlU2hhcmVkVGFzazxTdGFj
a21hcEdlbmVyYXRvckZ1bmN0aW9uPihmdW5jdG9yKTsKKyAgICB9CisKKyAgICBjbGFzcyBDb25z
dHJhaW5lZFZhbHVlQ29sbGVjdGlvbiB7CisgICAgcHVibGljOgorICAgICAgICBDb25zdHJhaW5l
ZFZhbHVlQ29sbGVjdGlvbihTdGFja21hcFZhbHVlJiB2YWx1ZSkKKyAgICAgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubnVtQ2hpbGRyZW4oKTsgfQorICAgICAgICAKKyAg
ICAgICAgQ29uc3RyYWluZWRWYWx1ZSBhdCh1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIENvbnN0cmFpbmVkVmFsdWUoCisgICAgICAgICAgICAgICAgbV92YWx1
ZS5jaGlsZChpbmRleCksCisgICAgICAgICAgICAgICAgaW5kZXggPCBtX3ZhbHVlLnJlcHMuc2l6
ZSgpID8gbV92YWx1ZS5tX3JlcHNbaW5kZXhdIDogVmFsdWVSZXAoKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBDb25zdHJhaW5lZFZhbHVlIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIHsgcmV0
dXJuIGF0KGluZGV4KTsgfQorCisgICAgICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25z
dCBDb25zdHJhaW5lZFZhbHVlJiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV92YWx1
ZS5jaGlsZChpbmRleCkgPSB2YWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgbV92YWx1ZS5tX3Jl
cHNbaW5kZXhdID0gdmFsdWUucmVwKCk7CisgICAgICAgIH0KKworICAgICAgICBjbGFzcyBpdGVy
YXRvciB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIGl0ZXJhdG9yKCkKKyAgICAgICAg
ICAgICAgICA6IG1fY29sbGVjdGlvbihudWxscHRyKQorICAgICAgICAgICAgICAgICwgbV9pbmRl
eCgwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpdGVyYXRv
cihjb25zdCBDb25zdHJhaW5lZFZhbHVlQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgdW5zaWduZWQg
aW5kZXgpCisgICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCisgICAg
ICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBDb25zdHJhaW5lZFZhbHVlIG9wZXJhdG9yKigpIGNvbnN0CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY29sbGVjdGlvbi0+YXQobV9pbmRl
eCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX2luZGV4Kys6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb24gPT0gb3RoZXIubV9jb2xsZWN0aW9uKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBwcml2YXRlOgor
ICAgICAgICAgICAgQ29uc3RyYWluZWRWYWx1ZUNvbGxlY3Rpb24qIG1fY29sbGVjdGlvbjsKKyAg
ICAgICAgfTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN0YWNrbWFwVmFsdWUmIG1fdmFsdWU7
CisgICAgfTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZHVtcE1ldGEoUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwor
CisgICAgU3RhY2ttYXBWYWx1ZSh1bnNpZ25lZCBpbmRleCwgT3Bjb2RlIG9wY29kZSwgVHlwZSB0
eXBlLCBPcmlnaW4gb3JpZ2luKTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzU3RhY2ttYXBWYWx1ZV9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264700</attachid>
            <date>2015-11-03 11:06:38 -0800</date>
            <delta_ts>2015-11-03 11:33:22 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>56105</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTE5NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgwLDYgKzI4MCw4IEBACiAJCTBGMzAwQjdDMThBQjFC
MTQwMEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMDBCN0ExOEFCMUIxNDAwQTZE
NzJFIC8qIERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmggKi87IH07CiAJCTBGMzJCRDEw
MUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMyQkQwRTFCQjM0RjE5MDA5M0E1N0YgLyog
SGVhcEhlbHBlclBvb2wuY3BwICovOyB9OwogCQkwRjMyQkQxMTFCQjM0RjE5MDA5M0E1N0YgLyog
SGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMzJCRDBGMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oICovOyB9
OworCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4REVGMUJFOTNB
RDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwICovOyB9OworCQkwRjMzOERGMjFCRTkz
QUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMzOERGMDFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFj
a21hcFZhbHVlLmggKi87IH07CiAJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdVc2VL
aW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MzRCMTQ3MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCAqLzsgfTsKIAkJMEYzNEIx
NEExNkQ0MjAxMzAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdV
c2VLaW5kLmggKi87IH07CiAJCTBGMzhCMDExMTdDRjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5
cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgKi87IH07CkBA
IC03MzcsOCArNzM5LDYgQEAKIAkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2Vk
dXJlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUM4NEUxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5jcHAgKi87IH07CiAJCTBGRUM4
NTJDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RTIxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
UHJvY2VkdXJlLmggKi87IH07CiAJCTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2Nl
ZHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NEUzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMuaCAqLzsg
fTsKLQkJMEZFQzg1MkUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RTQxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzU3RhY2ttYXAuY3BwICovOyB9OwotCQkwRkVDODUyRjFCREFDREFDMDA4MEZG
NzQgLyogQjNTdGFja21hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg0RTUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXAuaCAqLzsgfTsK
IAkJMEZFQzg1MzAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEU2MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5jcHAgKi87IH07CiAJCTBGRUM4NTMxMUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RTcxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
U3RhY2ttYXBTcGVjaWFsLmggKi87IH07CiAJCTBGRUM4NTMyMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1N0YWNrU2xvdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg0RTgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2luZC5jcHAg
Ki87IH07CkBAIC0yMjk5LDYgKzIyOTksOCBAQAogCQkwRjMwMEI3QTE4QUIxQjE0MDBBNkQ3MkUg
LyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjMyQkQwRTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcEhlbHBlclBvb2wuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjMyQkQwRjFCQjM0RjE5MDA5M0E1N0YgLyogSGVh
cEhlbHBlclBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEhlbHBl
clBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMzhERUYxQkU5M0FEMTAw
MTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1N0YWNrbWFwVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNTdGFja21hcFZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMzhERjAxQkU5M0FEMTAwMTND
ODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM1N0YWNrbWFwVmFsdWUuaDsgcGF0aCA9IGIzL0IzU3RhY2ttYXBWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNl
S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdVc2VLaW5k
LmNwcDsgcGF0aCA9IGRmZy9ERkdVc2VLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYzNEIxNDgxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVXNlS2luZC5oOyBwYXRoID0gZGZnL0RGR1VzZUtp
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzOEIwMEYxN0NGMDc3RjAwQjE0
NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5
cG9pbnQuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NjksOCArMjc3MSw2IEBACiAJCTBGRUM4NEUxMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBCM1Byb2NlZHVyZS5jcHA7IHBhdGggPSBiMy9CM1Byb2NlZHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEUyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1By
b2NlZHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1Byb2NlZHVyZS5o
OyBwYXRoID0gYjMvQjNQcm9jZWR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZFQzg0RTMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1Byb2NlZHVyZUlubGluZXMuaDsgcGF0aCA9IGIz
L0IzUHJvY2VkdXJlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkVD
ODRFNDFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBCM1N0YWNrbWFwLmNwcDsgcGF0aCA9IGIzL0IzU3RhY2ttYXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkVDODRFNTFCREFDREFDMDA4MEZG
NzQgLyogQjNTdGFja21hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1N0
YWNrbWFwLmg7IHBhdGggPSBiMy9CM1N0YWNrbWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRUM4NEU2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1N0YWNrbWFwU3BlY2lhbC5j
cHA7IHBhdGggPSBiMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRUM4NEU3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1N0YWNrbWFwU3BlY2lhbC5oOyBw
YXRoID0gYjMvQjNTdGFja21hcFNwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFQzg0RTgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2luZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1N0YWNrU2xvdEtpbmQuY3BwOyBwYXRo
ID0gYjMvQjNTdGFja1Nsb3RLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ0NDQsMTAgKzQ0NDQsMTAgQEAKIAkJCQkwRkVDODRFMzFCREFDREFDMDA4MEZGNzQgLyogQjNQ
cm9jZWR1cmVJbmxpbmVzLmggKi8sCiAJCQkJMEZFQzg1QjcxQkUxNDYyRjAwODBGRjc0IC8qIEIz
UmVkdWNlU3RyZW5ndGguY3BwICovLAogCQkJCTBGRUM4NUI4MUJFMTQ2MkYwMDgwRkY3NCAvKiBC
M1JlZHVjZVN0cmVuZ3RoLmggKi8sCi0JCQkJMEZFQzg0RTQxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
U3RhY2ttYXAuY3BwICovLAotCQkJCTBGRUM4NEU1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNr
bWFwLmggKi8sCiAJCQkJMEZFQzg0RTYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVj
aWFsLmNwcCAqLywKIAkJCQkwRkVDODRFNzFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNw
ZWNpYWwuaCAqLywKKwkJCQkwRjMzOERFRjFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZh
bHVlLmNwcCAqLywKKwkJCQkwRjMzOERGMDFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZh
bHVlLmggKi8sCiAJCQkJMEZFQzg0RTgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2lu
ZC5jcHAgKi8sCiAJCQkJMEZFQzg0RTkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2lu
ZC5oICovLAogCQkJCTBGRUM4NEVBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrU2xvdFZhbHVl
LmNwcCAqLywKQEAgLTY1OTcsNyArNjU5Nyw2IEBACiAJCQkJMEZFQzg1MkMxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUHJvY2VkdXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUyRDFCREFDREFD
MDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEZFQzg1MkYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tT
bG90S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzUxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzU3RhY2tTbG90VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtNjgxOCw2ICs2ODE3LDcgQEAK
IAkJCQk3OUM0QjE1RTFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkMxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
MEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjMzOERGMjFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhl
YWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5RjhGQzFGMUI5RkVEMEYw
MENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODc0RUUxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuaCBpbiBIZWFkZXJz
ICovLApAQCAtODE2NSw3ICs4MTY1LDYgQEAKIAkJCQkwRkVDODUyOTFCREFDREFDMDA4MEZGNzQg
LyogQjNQaGFzZVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTJCMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVCQzFC
RTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkwRkVDODUyRTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkVDODUzMDFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MzIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tT
bG90S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUzNDFCREFDREFDMDA4MEZGNzQg
LyogQjNTdGFja1Nsb3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg0NDIsNiArODQ0MSw3
IEBACiAJCQkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZl
UmVzdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkg
LyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzM4REYxMUJFOTNB
RDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
NUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3Vt
ZW50UmVnVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0FyZ3VtZW50UmVnVmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OSArMzQsOSBAQCBBcmd1bWVudFJlZ1ZhbHVlOjp+QXJndW1lbnRSZWdWYWx1ZSgpCiB7CiB9CiAK
LXZvaWQgQXJndW1lbnRSZWdWYWx1ZTo6ZHVtcE1ldGEoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3ZvaWQgQXJndW1lbnRSZWdWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQobV9yZWcpOworICAgIG91dC5w
cmludChjb21tYSwgbV9yZWcpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHJldmlz
aW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0FyZ3VtZW50UmVnVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgUmVnIGFy
Z3VtZW50UmVnKCkgY29uc3QgeyByZXR1cm4gbV9yZWc7IH0KIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZHVtcE1ldGEoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBN
ZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDcgKzEwMSw4IEBAIENDYWxsSGVscGVyczo6SnVtcCBDaGVja1NwZWNpYWw6OmdlbmVyYXQK
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0
ZShqaXQsIGNvbnRleHQpOwogICAgIEFTU0VSVChmYWlsLmlzU2V0KCkpOwogCi0gICAgVmFsdWUq
IHZhbHVlID0gaW5zdC5vcmlnaW47CisgICAgU3RhY2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9y
aWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKKyAgICBBU1NFUlQodmFsdWUpOwogCiAgICAgVmVj
dG9yPFZhbHVlUmVwPiByZXBzOwogICAgIGlmIChpc0NoZWNrTWF0aCh2YWx1ZS0+b3Bjb2RlKCkp
KSB7CkBAIC0xMjQsMTQgKzEyNSwxMCBAQCBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFs
OjpnZW5lcmF0CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9u
Q29udGV4dCYpIHsKICAgICAgICAgICAgICAgICBmYWlsLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgU3RhY2ttYXAqIHN0YWNrbWFwID0gdmFsdWUtPnN0YWNr
bWFwKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHN0YWNrbWFwKTsKLQogICAgICAgICAgICAg
ICAgIFN0YWNrbWFwOjpHZW5lcmF0aW9uUGFyYW1zIHBhcmFtczsKICAgICAgICAgICAgICAgICBw
YXJhbXMudmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICBwYXJhbXMuc3RhY2ttYXAgPSBz
dGFja21hcDsKICAgICAgICAgICAgICAgICBwYXJhbXMucmVwcyA9IHJlcHM7Ci0gICAgICAgICAg
ICAgICAgcGFyYW1zLnVzZWRSZWdpc3RlcnMgPSBzdGFja21hcC0+bV91c2VkUmVnaXN0ZXJzOwor
ICAgICAgICAgICAgICAgIHBhcmFtcy51c2VkUmVnaXN0ZXJzID0gdmFsdWUtPm1fdXNlZFJlZ2lz
dGVyczsKIAogICAgICAgICAgICAgICAgIHN0YWNrbWFwLT5tX2dlbmVyYXRvci0+cnVuKGppdCwg
cGFyYW1zKTsKICAgICAgICAgICAgIH0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrVmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDaGVja1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMjMg
QEAgQ2hlY2tWYWx1ZTo6fkNoZWNrVmFsdWUoKQogewogfQogCi12b2lkIENoZWNrVmFsdWU6OmR1
bXBNZXRhKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVj
a0FkZCwgQ2hlY2tTdWIsIGFuZCBDaGVja011bC4KK0NoZWNrVmFsdWU6OkNoZWNrVmFsdWUodW5z
aWduZWQgaW5kZXgsIE9wY29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBsZWZ0LCBW
YWx1ZSogcmlnaHQpCisgICAgOiBTdGFja21hcFZhbHVlKGluZGV4LCBvcGNvZGUsIGxlZnQtPnR5
cGUoKSwgb3JpZ2luKQogewotICAgIG91dC5wcmludCgic3RhY2ttYXAgPSAiLCBzdGFja21hcCk7
CisgICAgQVNTRVJUKEIzOjppc0ludCh0eXBlKCkpKTsKKyAgICBBU1NFUlQobGVmdC0+dHlwZSgp
ID09IHJpZ2h0LT50eXBlKCkpOworICAgIEFTU0VSVChvcGNvZGUgPT0gQ2hlY2tBZGQgfHwgb3Bj
b2RlID09IENoZWNrU3ViIHx8IG9wY29kZSA9PSBDaGVja011bCk7CisgICAgYXBwZW5kKGxlZnQp
OworICAgIGFwcGVuZChyaWdodCk7Cit9CisKKyAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVj
ay4KK0NoZWNrVmFsdWU6OkNoZWNrVmFsdWUodW5zaWduZWQgaW5kZXgsIE9wY29kZSBvcGNvZGUs
IE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwcmVkaWNhdGUpCisgICAgOiBTdGFja21hcFZhbHVlKGlu
ZGV4LCBvcGNvZGUsIFZvaWQsIG9yaWdpbikKK3sKKyAgICBBU1NFUlQob3Bjb2RlID09IENoZWNr
KTsKKyAgICBhcHBlbmQocHJlZGljYXRlKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tWYWx1ZS5oCShyZXZpc2lvbiAx
OTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEyICsyOCwxMSBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2lu
Y2x1ZGUgIkIzU3RhY2ttYXAuaCIKLSNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNT
dGFja21hcFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi1jbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBDaGVja1ZhbHVlIDogcHVibGljIFZhbHVlIHsKK2NsYXNzIENo
ZWNrVmFsdWUgOiBwdWJsaWMgU3RhY2ttYXBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKQogICAgIHsKQEAgLTUwLDI5ICs0OSwxNCBAQCBwdWJs
aWM6CiAKICAgICB+Q2hlY2tWYWx1ZSgpOwogCi0gICAgU3RhY2ttYXAgc3RhY2ttYXA7Ci0KLXBy
b3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKIAogICAgIC8vIFVzZSB0
aGlzIGZvcm0gZm9yIENoZWNrQWRkLCBDaGVja1N1YiwgYW5kIENoZWNrTXVsLgotICAgIENoZWNr
VmFsdWUodW5zaWduZWQgaW5kZXgsIE9wY29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBsZWZ0LCBWYWx1ZSogcmlnaHQpCi0gICAgICAgIDogVmFsdWUoaW5kZXgsIG9wY29kZSwgbGVm
dC0+dHlwZSgpLCBvcmlnaW4sIGxlZnQsIHJpZ2h0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKEIz
Ojppc0ludCh0eXBlKCkpKTsKLSAgICAgICAgQVNTRVJUKGxlZnQtPnR5cGUoKSA9PSByaWdodC0+
dHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKG9wY29kZSA9PSBDaGVja0FkZCB8fCBvcGNvZGUgPT0g
Q2hlY2tTdWIgfHwgb3Bjb2RlID09IENoZWNrTXVsKTsKLSAgICB9CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ2hlY2tWYWx1ZSh1bnNpZ25lZCBpbmRleCwgT3Bjb2RlLCBPcmlnaW4sIFZhbHVlKiBs
ZWZ0LCBWYWx1ZSogcmlnaHQpOwogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgQ2hlY2suCi0g
ICAgQ2hlY2tWYWx1ZSh1bnNpZ25lZCBpbmRleCwgT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdp
biwgVmFsdWUqIHByZWRpY2F0ZSkKLSAgICAgICAgOiBWYWx1ZShpbmRleCwgb3Bjb2RlLCBWb2lk
LCBvcmlnaW4sIHByZWRpY2F0ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGUgPT0gQ2hl
Y2spOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBDaGVja1ZhbHVlKHVuc2lnbmVkIGlu
ZGV4LCBPcGNvZGUsIE9yaWdpbiwgVmFsdWUqIHByZWRpY2F0ZSk7CiB9OwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Qz
MlZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3QzMlZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCBWYWx1
ZSogQ29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0YW50KFByCiAgICAgcmV0dXJuIHByb2MuYWRk
PENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgIT0gb3RoZXItPmFzSW50MzIoKSk7CiB9
CiAKLXZvaWQgQ29uc3QzMlZhbHVlOjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
dm9pZCBDb25zdDMyVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1fdmFsdWUpOworICAgIG91dC5wcmlu
dChjb21tYSwgbV92YWx1ZSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgJKHJldmlzaW9uIDE5MTk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogbm90RXF1YWxDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wTWV0YShQcmludFN0cmVhbSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcE1ldGEoQ29tbWFQ
cmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZyaWVuZCBjbGFz
cyBQcm9jZWR1cmU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2
NFZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3Q2NFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCBWYWx1
ZSogQ29uc3Q2NFZhbHVlOjpub3RFcXVhbENvbnN0YW50KFByCiAgICAgcmV0dXJuIHByb2MuYWRk
PENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgIT0gb3RoZXItPmFzSW50NjQoKSk7CiB9
CiAKLXZvaWQgQ29uc3Q2NFZhbHVlOjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
dm9pZCBDb25zdDY0VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1fdmFsdWUpOworICAgIG91dC5wcmlu
dChjb21tYSwgbV92YWx1ZSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgJKHJldmlzaW9uIDE5MTk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogbm90RXF1YWxDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5NjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsOCArNzUsOSBAQCBWYWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6bm90
RXF1YWxDb25zdGFuCiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCks
IG1fdmFsdWUgIT0gb3RoZXItPmFzRG91YmxlKCkpOwogfQogCi12b2lkIENvbnN0RG91YmxlVmFs
dWU6OmR1bXBNZXRhKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit2b2lkIENvbnN0RG91YmxlVmFs
dWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CisgICAgb3V0LnByaW50KGNvbW1hKTsKICAgICBvdXQucHJpbnRmKCIlbGUiLCBtX3ZhbHVl
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91Ymxl
VmFsdWUuaAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3REb3VibGVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICBWYWx1ZSogbm90RXF1YWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFBy
aW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50
ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dHJhaW5lZFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdHJhaW5lZFZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRWYWx1ZS5oIgorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CisKK3ZvaWQgQ29uc3RyYWluZWRWYWx1ZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChwb2ludGVyRHVtcChtX3ZhbHVlKSwgIjoi
LCBtX3JlcCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RyYWlu
ZWRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
cmFpbmVkVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0cmFpbmVkVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQjNDb25z
dHJhaW5lZFZhbHVlX2gKKyNkZWZpbmUgQjNDb25zdHJhaW5lZFZhbHVlX2gKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVlUmVwLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeworCitjbGFzcyBWYWx1ZTsKKworY2xhc3MgQ29uc3RyYWluZWRWYWx1ZSB7
CitwdWJsaWM6CisgICAgQ29uc3RyYWluZWRWYWx1ZSgpCisgICAgeworICAgIH0KKworICAgIENv
bnN0cmFpbmVkVmFsdWUoVmFsdWUqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisg
ICAgICAgICwgbV9yZXAoVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikKKyAgICB7CisgICAgfQorCisg
ICAgQ29uc3RyYWluZWRWYWx1ZShWYWx1ZSogdmFsdWUsIGNvbnN0IFZhbHVlUmVwJiByZXApCisg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX3JlcChyZXApCisgICAgeworICAg
IH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
IHx8IG1fcmVwOyB9CisKKyAgICBWYWx1ZSogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgY29uc3QgVmFsdWVSZXAmIHJlcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwOyB9CisK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
VmFsdWUqIG1fdmFsdWU7CisgICAgVmFsdWVSZXAgbV9yZXA7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKKyNlbmRpZiAvLyBCM0Nv
bnN0cmFpbmVkVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb250
cm9sVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnRyb2xWYWx1ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnRyb2xWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCi0jaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCkBA
IC01MCw5ICs0OSwxMCBAQCB2b2lkIENvbnRyb2xWYWx1ZTo6Y29udmVydFRvSnVtcChjb25zdCBG
CiAgICAgdGhpcy0+b3duZXIgPSBvd25lcjsKIH0KIAotdm9pZCBDb250cm9sVmFsdWU6OmR1bXBN
ZXRhKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit2b2lkIENvbnRyb2xWYWx1ZTo6ZHVtcE1ldGEo
Q29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQu
cHJpbnQobGlzdER1bXAobV9zdWNjZXNzb3JzKSk7CisgICAgZm9yIChGcmVxdWVudGVkQmxvY2sg
c3VjY2Vzc29yIDogbV9zdWNjZXNzb3JzKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsIHN1Y2Nl
c3Nvcik7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29udHJvbFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29udHJvbFZhbHVlLmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnRyb2xWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnRUb0p1bXAoY29uc3QgRnJlcXVl
bnRlZEJsb2NrJiBkZXN0aW5hdGlvbik7CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVXNlIHRoaXMgZm9yIHN1YmNsYXNzZXMuCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwx
MCArNTgsMTAgQEAgc2l6ZV90IE1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSgpIGNvbgogICAg
IH0KIH0KIAotdm9pZCBNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKK3ZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKG1fb2Zmc2V0KQotICAgICAgICBvdXQucHJp
bnQoIm9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAib2Zm
c2V0ID0gIiwgbV9vZmZzZXQpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkocmV2aXNpb24gMTkxOTYx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFjY2Vzc0J5dGVTaXpl
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBQcm9jZWR1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50
U3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0
Y2hwb2ludFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkg
Kzg0LDggQEAgYm9vbCBQYXRjaHBvaW50U3BlY2lhbDo6YWRtaXRzU3RhY2soSW5zdAogQ0NhbGxI
ZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVjaWFsOjpnZW5lcmF0ZSgKICAgICBJbnN0JiBpbnN0
LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
VmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW47Ci0gICAgU3RhY2ttYXAqIHN0YWNrbWFwID0gdmFs
dWUtPnN0YWNrbWFwKCk7Ci0gICAgQVNTRVJUKHN0YWNrbWFwKTsKKyAgICBTdGFja21hcFZhbHVl
KiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOworICAgIEFTU0VSVCh2
YWx1ZSk7CiAKICAgICBWZWN0b3I8VmFsdWVSZXA+IHJlcHM7CiAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gMTsKQEAgLTk2LDkgKzk1LDggQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVj
aWFsOjpnZQogICAgIAogICAgIFN0YWNrbWFwOjpHZW5lcmF0aW9uUGFyYW1zIHBhcmFtczsKICAg
ICBwYXJhbXMudmFsdWUgPSB2YWx1ZTsKLSAgICBwYXJhbXMuc3RhY2ttYXAgPSBzdGFja21hcDsK
ICAgICBwYXJhbXMucmVwcyA9IHJlcHM7Ci0gICAgcGFyYW1zLnVzZWRSZWdpc3RlcnMgPSBzdGFj
a21hcC0+bV91c2VkUmVnaXN0ZXJzOworICAgIHBhcmFtcy51c2VkUmVnaXN0ZXJzID0gdmFsdWUt
Pm1fdXNlZFJlZ2lzdGVyczsKIAogICAgIHN0YWNrbWFwLT5tX2dlbmVyYXRvci0+cnVuKGppdCwg
cGFyYW1zKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBv
aW50VmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQYXRjaHBvaW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBA
IFBhdGNocG9pbnRWYWx1ZTo6flBhdGNocG9pbnRWYWx1ZSgpCiB7CiB9CiAKLXZvaWQgUGF0Y2hw
b2ludFZhbHVlOjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAorUGF0Y2hwb2ludFZh
bHVlOjpQYXRjaHBvaW50VmFsdWUodW5zaWduZWQgaW5kZXgsIFR5cGUgdHlwZSwgT3JpZ2luIG9y
aWdpbikKKyAgICA6IFN0YWNrbWFwVmFsdWUoaW5kZXgsIFBhdGNocG9pbnQsIHR5cGUsIG9yaWdp
bikKIHsKLSAgICBvdXQucHJpbnQoInN0YWNrbWFwID0gIiwgc3RhY2ttYXApOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Bh
dGNocG9pbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1BhdGNocG9pbnRWYWx1ZS5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQYXRjaHBvaW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzcgKzI4
LDIwIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQjNTdGFja21hcC5oIgot
I2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFwVmFsdWUuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFBh
dGNocG9pbnRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitjbGFzcyBQYXRjaHBvaW50VmFsdWUgOiBw
dWJsaWMgU3RhY2ttYXBWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhP
cGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gUGF0Y2hwb2ludDsgfQogCiAgICAgflBh
dGNocG9pbnRWYWx1ZSgpOwogCi0gICAgU3RhY2ttYXAgc3RhY2ttYXA7Ci0KLXByb3RlY3RlZDoK
LSAgICB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7Ci0KIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExpc3RUeXBlPgotICAgIFBhdGNocG9pbnRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgVHlwZSB0eXBl
LCBPcmlnaW4gb3JpZ2luLCBMaXN0VHlwZSYmIGNoaWxkcmVuKQotICAgICAgICA6IFZhbHVlKGlu
ZGV4LCBQYXRjaHBvaW50LCB0eXBlLCBvcmlnaW4sIHN0ZDo6Zm9yd2FyZDxMaXN0VHlwZT4oY2hp
bGRyZW4pKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBJdCdzIHRvdGFsbHkgZmluZSB0byBjcmVh
dGUgYSBQYXRjaHBvaW50VmFsdWUgd2l0aG91dCBhbnkgY2hpbGRyZW4sIGFuZCB0aGVuIGFwcGVu
ZCB0aGUKLSAgICAvLyBjaGlsZHJlbiBhcyB5b3UgYnVpbGQgdXAgdGhlIHN0YWNrbWFwLgotICAg
IFBhdGNocG9pbnRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2lu
KQotICAgICAgICA6IFZhbHVlKGluZGV4LCBQYXRjaHBvaW50LCB0eXBlLCBvcmlnaW4sIEFkamFj
ZW5jeUxpc3QoKSkKLSAgICB7Ci0gICAgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhdGNocG9p
bnRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgVHlwZSwgT3JpZ2luKTsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tTbG90
VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNr
U2xvdFZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2tTbG90VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBA
IFN0YWNrU2xvdFZhbHVlOjp+U3RhY2tTbG90VmFsdWUoKQogewogfQogCi12b2lkIFN0YWNrU2xv
dFZhbHVlOjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAordm9pZCBTdGFja1Nsb3RW
YWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKLSAgICBvdXQucHJpbnQoImJ5dGVTaXplID0gIiwgbV9ieXRlU2l6ZSwgIiwga2luZCA9
ICIsIG1fa2luZCk7CisgICAgb3V0LnByaW50KGNvbW1hLCAiYnl0ZVNpemUgPSAiLCBtX2J5dGVT
aXplLCAiLCBraW5kID0gIiwgbV9raW5kKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja1Nsb3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrU2xvdFZhbHVlLmgJKHJl
dmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrU2xvdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEFpcjo6U3RhY2tTbG90OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwLmNwcAkocmV2aXNpb24gMTkx
OTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkIzU3RhY2ttYXAu
aCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7Ci0KLVN0YWNrbWFwOjpTdGFja21hcCgpCi17
Ci19Ci0KLVN0YWNrbWFwOjp+U3RhY2ttYXAoKQotewotfQotCi12b2lkIFN0YWNrbWFwOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KAotICAgICAgICAie3Jl
cHMgPSAiLCBsaXN0RHVtcChtX3JlcHMpLCAiLCBnZW5lcmF0b3IgPSAiLCBSYXdQb2ludGVyKG1f
Z2VuZXJhdG9yLmdldCgpKSwKLSAgICAgICAgIiwgY2xvYmJlcmVkID0gIiwgbV9jbG9iYmVyZWQs
ICIsIHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICJ9Iik7Ci19Ci0KLX0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKLQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcC5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgQjNTdGFja21hcF9oCi0jZGVmaW5lIEIzU3RhY2ttYXBfaAotCi0jaWYgRU5B
QkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgIkIzVmFsdWVSZXAuaCIKLSNpbmNsdWRlICJDQ2FsbEhl
bHBlcnMuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgotI2luY2x1ZGUgPHd0Zi9TaGFyZWRU
YXNrLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewotCi1jbGFzcyBDaGVja1Nw
ZWNpYWw7Ci1jbGFzcyBTdGFja21hcFNwZWNpYWw7Ci1jbGFzcyBWYWx1ZTsKLQotY2xhc3MgU3Rh
Y2ttYXAgewotcHVibGljOgotICAgIHN0cnVjdCBHZW5lcmF0aW9uUGFyYW1zIHsKLSAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgVmFsdWUgY29udGFpbmluZyB0aGUgc3RhY2ttYXAuCi0gICAgICAgIFZh
bHVlKiB2YWx1ZTsKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFja21hcC4KLSAgICAgICAg
U3RhY2ttYXAqIHN0YWNrbWFwOwotCi0gICAgICAgIC8vIFRoaXMgdGVsbHMgeW91IHRoZSBhY3R1
YWwgdmFsdWUgcmVwcmVzZW50YXRpb25zIHRoYXQgd2VyZSBjaG9zZW4uCi0gICAgICAgIFZlY3Rv
cjxWYWx1ZVJlcD4gcmVwczsKLQotICAgICAgICAvLyBUaGlzIHRlbGxzIHlvdSB0aGUgcmVnaXN0
ZXJzIHRoYXQgd2VyZSB1c2VkLgotICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwot
ICAgIH07Ci0gICAgCi0gICAgdHlwZWRlZiB2b2lkIEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVs
cGVycyYsIGNvbnN0IEdlbmVyYXRpb25QYXJhbXMmKTsKLSAgICB0eXBlZGVmIFNoYXJlZFRhc2s8
R2VuZXJhdG9yRnVuY3Rpb24+IEdlbmVyYXRvcjsKLSAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBTdGFja21hcCgpOwotICAgIH5TdGFja21hcCgpOwotCi0gICAgLy8gQ29uc3RyYWluIGFuIGFy
Z3VtZW50IHRvIHRoZSBWYWx1ZSB0aGF0IHVzZXMgdGhpcyBTdGFja21hcC4gSW4gY2FzZSBvZiBh
IFBhdGNocG9pbnQgdGhhdAotICAgIC8vIHJldHVybnMgYSB2YWx1ZSwgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGlzIHRoZSByZXN1bHQgdmFsdWUuIEluIGFsbCBvdGhlciBjYXNlcywgaW5kZXggemVybyBy
ZWZlcnMKLSAgICAvLyB0byB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhhdCBWYWx1ZSwgZXZlbiBp
ZiB0aGF0IGFyZ3VtZW50IGlzIG5vdCBjb25zdHJhaW5hYmxlLiBGb3IgZXhhbXBsZSwKLSAgICAv
LyBpbiBhIENoZWNrQWRkIHZhbHVlLCBpdCB3b3VsZCBiZSBhbiBlcnJvciB0byBjb25zdHJhaW4g
aW5kaWNlcyAwIGFuZCAxLiBJbiBhIENoZWNrIHZhbHVlLCBpdAotICAgIC8vIHdvdWxkIGJlIGFu
IGVycm9yIHRvIGNvbnN0cmFpbiBpbmRleCAwLiBCdXQsIHdoZW4gdGhlIGdlbmVyYXRpb24gY2Fs
bGJhY2sgaXMgY2FsbGVkLCB5b3UgY2FuCi0gICAgLy8gZGVwZW5kIG9uIHRoZSByZXBzIGZvciB0
aG9zZSBpbmRpY2VzIGJlaW5nIGZpbGxlZCBpbi4KLSAgICB2b2lkIGNvbnN0cmFpbih1bnNpZ25l
ZCBpbmRleCwgY29uc3QgVmFsdWVSZXAmIHJlcCkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCAr
IDEgPj0gbV9yZXBzLnNpemUoKSkKLSAgICAgICAgICAgIG1fcmVwcy5ncm93KGluZGV4ICsgMSk7
Ci0gICAgICAgIG1fcmVwc1tpbmRleF0gPSByZXA7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRD
b25zdHJhaW50KGNvbnN0IFZhbHVlUmVwJiByZXApCi0gICAgewotICAgICAgICBtX3JlcHMuYXBw
ZW5kKHJlcCk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPFZhbHVlUmVwPiYgcmVwcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwczsgfQotCi0gICAgdm9pZCBjbG9iYmVyKGNvbnN0IFJlZ2lzdGVy
U2V0JiBzZXQpCi0gICAgewotICAgICAgICBtX2Nsb2JiZXJlZC5tZXJnZShzZXQpOwotICAgIH0K
LQotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBjbG9iYmVyZWQoKSBjb25zdCB7IHJldHVybiBtX2Ns
b2JiZXJlZDsgfQotCi0gICAgdm9pZCBzZXRHZW5lcmF0b3IoUmVmUHRyPEdlbmVyYXRvcj4gZ2Vu
ZXJhdG9yKQotICAgIHsKLSAgICAgICAgbV9nZW5lcmF0b3IgPSBnZW5lcmF0b3I7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIHNldEdlbmVyYXRvcihj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQotICAgIHsKLSAgICAgICAgbV9nZW5lcmF0b3IgPSBjcmVh
dGVTaGFyZWRUYXNrPEdlbmVyYXRvckZ1bmN0aW9uPihmdW5jdG9yKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIENoZWNrU3BlY2lhbDsKLSAgICBmcmllbmQgY2xhc3MgUGF0Y2hwb2ludFNwZWNpYWw7
Ci0gICAgZnJpZW5kIGNsYXNzIFN0YWNrbWFwU3BlY2lhbDsKLSAgICAKLSAgICBWZWN0b3I8VmFs
dWVSZXA+IG1fcmVwczsKLSAgICBSZWZQdHI8R2VuZXJhdG9yPiBtX2dlbmVyYXRvcjsKLSAgICBS
ZWdpc3RlclNldCBtX2Nsb2JiZXJlZDsKLSAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7
IC8vIFN0YWNrbWFwcyBjb3VsZCBiZSBmdXJ0aGVyIGR1cGxpY2F0ZWQgYnkgQWlyLCBidXQgdGhh
dCdzIHVubGlrZWx5LCBzbyB3ZSBqdXN0IG1lcmdlIHRoZSB1c2VkIHJlZ2lzdGVycyBzZXRzIGlm
IHRoYXQgd2VyZSB0byBoYXBwZW4uCi19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKLQot
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KLSNlbmRpZiAvLyBCM1N0YWNrbWFwX2gKLQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCShy
ZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNw
ZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxOSArNDYsMTkgQEAgU3RhY2ttYXBTcGVj
aWFsOjp+U3RhY2ttYXBTcGVjaWFsKCkKIAogdm9pZCBTdGFja21hcFNwZWNpYWw6OnJlcG9ydFVz
ZWRSZWdpc3RlcnMoSW5zdCYgaW5zdCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMp
CiB7Ci0gICAgVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW47Ci0gICAgU3RhY2ttYXAqIHN0YWNr
bWFwID0gdmFsdWUtPnN0YWNrbWFwKCk7CisgICAgU3RhY2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0
Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKKyAgICBBU1NFUlQodmFsdWUpOwogCiAgICAg
Ly8gRklYTUU6IElmIHRoZSBJbnN0IHRoYXQgdXNlcyB0aGUgU3RhY2ttYXBTcGVjaWFsIGdldHMg
ZHVwbGljYXRlZCwgdGhlbiB3ZSBlbmQgdXAgbWVyZ2luZyB1c2VkCiAgICAgLy8gcmVnaXN0ZXIg
c2V0cyBmcm9tIG11bHRpcGxlIHBsYWNlcy4gVGhpcyBjdXJyZW50bHkgd29uJ3QgaGFwcGVuIHNp
bmNlIEFpciBkb2Vzbid0IGhhdmUgdGFpbGR1cAogICAgIC8vIG9yIHRoaW5ncyBsaWtlIHRoYXQu
IEJ1dCBtYXliZSBldmVudHVhbGx5IGl0IGNvdWxkIGJlIGEgcHJvYmxlbS4KLSAgICBzdGFja21h
cC0+bV91c2VkUmVnaXN0ZXJzLm1lcmdlKHVzZWRSZWdpc3RlcnMpOworICAgIHZhbHVlLT5tX3Vz
ZWRSZWdpc3RlcnMubWVyZ2UodXNlZFJlZ2lzdGVycyk7CiB9CiAKIGNvbnN0IFJlZ2lzdGVyU2V0
JiBTdGFja21hcFNwZWNpYWw6OmV4dHJhQ2xvYmJlcmVkUmVncyhJbnN0JiBpbnN0KQogewotICAg
IFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luOwotICAgIFN0YWNrbWFwKiBzdGFja21hcCA9IHZh
bHVlLT5zdGFja21hcCgpOworICAgIFN0YWNrbWFwVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4t
PmFzPFN0YWNrbWFwVmFsdWU+KCk7CisgICAgQVNTRVJUKHZhbHVlKTsKIAogICAgIHJldHVybiBz
dGFja21hcC0+Y2xvYmJlcmVkKCk7CiB9CkBAIC04NiwxNiArODYsMTMgQEAgYm9vbCBTdGFja21h
cFNwZWNpYWw6OmlzVmFsaWRJbXBsKAogICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVu
c2lnbmVkIG51bUlnbm9yZWRBaXJBcmdzLAogICAgIEluc3QmIGluc3QpCiB7Ci0gICAgVmFsdWUq
IHZhbHVlID0gaW5zdC5vcmlnaW47CisgICAgU3RhY2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9y
aWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKKyAgICBBU1NFUlQodmFsdWUpOwogCiAgICAgLy8g
Q2hlY2sgdGhhdCBpbnNhbmUgdGhpbmdzIGhhdmUgbm90IGhhcHBlbmVkLgogICAgIEFTU0VSVChp
bnN0LmFyZ3Muc2l6ZSgpID49IG51bUlnbm9yZWRBaXJBcmdzKTsKICAgICBBU1NFUlQodmFsdWUt
PmNoaWxkcmVuKCkuc2l6ZSgpID49IG51bUlnbm9yZWRCM0FyZ3MpOwogCi0gICAgU3RhY2ttYXAq
IHN0YWNrbWFwID0gdmFsdWUtPnN0YWNrbWFwKCk7Ci0KLSAgICBBU1NFUlQoc3RhY2ttYXApOwot
CiAgICAgLy8gRm9yIHRoZSBJbnN0IHRvIGJlIHZhbGlkLCBpdCBuZWVkcyB0byBoYXZlIHRoZSBy
aWdodCBudW1iZXIgb2YgYXJndW1lbnRzLgogICAgIGlmIChpbnN0LmFyZ3Muc2l6ZSgpIC0gbnVt
SWdub3JlZEFpckFyZ3MgIT0gdmFsdWUtPmNoaWxkcmVuKCkuc2l6ZSgpIC0gbnVtSWdub3JlZEIz
QXJncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMwLDExICsxMjcsMTEgQEAgYm9vbCBT
dGFja21hcFNwZWNpYWw6OmlzVmFsaWRJbXBsKAogICAgIH0KIAogICAgIC8vIFRoZSBudW1iZXIg
b2YgY29uc3RyYWludHMgaGFzIHRvIGJlIG5vIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIEIz
IGNoaWxkcmVuLgotICAgIEFTU0VSVChzdGFja21hcC0+bV9yZXBzLnNpemUoKSA8PSB2YWx1ZS0+
Y2hpbGRyZW4oKS5zaXplKCkpOworICAgIEFTU0VSVCh2YWx1ZS0+bV9yZXBzLnNpemUoKSA8PSB2
YWx1ZS0+Y2hpbGRyZW4oKS5zaXplKCkpOwogCiAgICAgLy8gVmVyaWZ5IGFueSBleHBsaWNpdGx5
IHN1cHBsaWVkIGNvbnN0cmFpbnRzLgotICAgIGZvciAodW5zaWduZWQgaSA9IG51bUlnbm9yZWRC
M0FyZ3M7IGkgPCBzdGFja21hcC0+bV9yZXBzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFZhbHVl
UmVwJiByZXAgPSBzdGFja21hcC0+bV9yZXBzW2ldOworICAgIGZvciAodW5zaWduZWQgaSA9IG51
bUlnbm9yZWRCM0FyZ3M7IGkgPCB2YWx1ZS0+bV9yZXBzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IFZhbHVlUmVwJiByZXAgPSB2YWx1ZS0+bV9yZXBzW2ldOwogICAgICAgICBBcmcmIGFyZyA9IGlu
c3QuYXJnc1tpIC0gbnVtSWdub3JlZEIzQXJncyArIG51bUlnbm9yZWRBaXJBcmdzXTsKIAogICAg
ICAgICBzd2l0Y2ggKHJlcC5raW5kKCkpIHsKQEAgLTE3MSwxOSArMTY4LDE5IEBAIGJvb2wgU3Rh
Y2ttYXBTcGVjaWFsOjphZG1pdHNTdGFja0ltcGwoCiAgICAgdW5zaWduZWQgbnVtSWdub3JlZEIz
QXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsCiAgICAgSW5zdCYgaW5zdCwgdW5zaWdu
ZWQgYXJnSW5kZXgpCiB7Ci0gICAgVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW47Ci0gICAgU3Rh
Y2ttYXAqIHN0YWNrbWFwID0gdmFsdWUtPnN0YWNrbWFwKCk7CisgICAgU3RhY2ttYXBWYWx1ZSog
dmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKKyAgICBBU1NFUlQodmFs
dWUpOwogCiAgICAgdW5zaWduZWQgc3RhY2ttYXBBcmdJbmRleCA9IGFyZ0luZGV4IC0gbnVtSWdu
b3JlZEFpckFyZ3MgKyBudW1JZ25vcmVkQjNBcmdzOwogCi0gICAgaWYgKHN0YWNrbWFwQXJnSW5k
ZXggPj0gc3RhY2ttYXAtPm1fcmVwcy5zaXplKCkpIHsKKyAgICBpZiAoc3RhY2ttYXBBcmdJbmRl
eCA+PSB2YWx1ZS0+bV9yZXBzLnNpemUoKSkgewogICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
dGhlcmUgd2FzIG5vIGNvbnN0cmFpbnQuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAKICAgICAvLyBXZSBvbmx5IGFkbWl0IHN0YWNrIGZvciBBbnkncywgc2luY2UgU3RhY2sgaXMg
bm90IGEgdmFsaWQgaW5wdXQgY29uc3RyYWludCwgYW5kIFN0YWNrQXJndW1lbnQKICAgICAvLyB0
cmFuc2xhdGVzIHRvIGEgQ2FsbEFyZyBpbiBBaXIuCi0gICAgaWYgKHN0YWNrbWFwLT5tX3JlcHNb
c3RhY2ttYXBBcmdJbmRleF0ua2luZCgpID09IFZhbHVlUmVwOjpBbnkpCisgICAgaWYgKHZhbHVl
LT5tX3JlcHNbc3RhY2ttYXBBcmdJbmRleF0ua2luZCgpID09IFZhbHVlUmVwOjpBbnkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFwVmFsdWUuaCIK
KworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CitTdGFja21hcFZhbHVlOjp+U3RhY2ttYXBWYWx1ZSgpCit7Cit9CisKK3ZvaWQgU3RhY2ttYXBW
YWx1ZTo6YXBwZW5kKGNvbnN0IENvbnN0cmFpbmVkVmFsdWUmIGNvbnN0cmFpbmVkVmFsdWUpCit7
CisgICAgaWYgKGNvbnN0cmFpbmVkVmFsdWUucmVwKCkgPT0gVmFsdWVSZXA6OkFueSkgeworICAg
ICAgICBjaGlsZHJlbigpLmFwcGVuZChjb25zdHJhaW5lZFZhbHVlLnZhbHVlKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKG1fcmVwcy5zaXplKCkgPCBudW1DaGlsZHJl
bigpKQorICAgICAgICBtX3JlcHMuYXBwZW5kKFZhbHVlUmVwOjpBbnkpOworCisgICAgY2hpbGRy
ZW4oKS5hcHBlbmQoY29uc3RyYWluZWRWYWx1ZS52YWx1ZSgpKTsKKyAgICBtX3JlcHMuYXBwZW5k
KGNvbnN0cmFpbmVkVmFsdWUucmVwKCkpOworfQorCit2b2lkIFN0YWNrbWFwVmFsdWU6OnNldENv
bnN0cmFpbmVkQ2hpbGQodW5zaWduZWQgaW5kZXgsIGNvbnN0IENvbnN0cmFpbmVkVmFsdWUmIGNv
bnN0cmFpbmVkVmFsdWUpCit7CisgICAgY2hpbGQoaW5kZXgpID0gY29uc3RyYWluZWRWYWx1ZS52
YWx1ZSgpOworICAgIHNldENvbnN0cmFpbnQoaW5kZXgsIGNvbnN0cmFpbmVkVmFsdWUucmVwKCkp
OworfQorCit2b2lkIFN0YWNrbWFwVmFsdWU6OnNldENvbnN0cmFpbnQodW5zaWduZWQgaW5kZXgs
IGNvbnN0IFZhbHVlUmVwJiByZXApCit7CisgICAgaWYgKHJlcCA9PSBWYWx1ZVJlcDo6QW55KQor
ICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAobV9yZXBzLnNpemUoKSA8PSBpbmRleCkKKyAg
ICAgICAgbV9yZXBzLmFwcGVuZChWYWx1ZVJlcDo6QW55KTsKKworICAgIG1fcmVwc1tpbmRleF0g
PSByZXA7Cit9CisKK3ZvaWQgU3RhY2ttYXBWYWx1ZTo6ZHVtcENoaWxkcmVuKENvbW1hUHJpbnRl
ciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZm9yIChDb25zdHJhaW5l
ZFZhbHVlIHZhbHVlIDogY29uc3RyYWluZWRDaGlsZHJlbigpKQorICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIHZhbHVlKTsKK30KKwordm9pZCBTdGFja21hcFZhbHVlOjpkdW1wTWV0YShDb21tYVBy
aW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KAorICAg
ICAgICBjb21tYSwgImdlbmVyYXRvciA9ICIsIFJhd1BvaW50ZXIobV9nZW5lcmF0b3IuZ2V0KCkp
LCAiLCBjbG9iYmVyZWQgPSAiLCBtX2Nsb2JiZXJlZCwKKyAgICAgICAgIiwgdXNlZFJlZ2lzdGVy
cyA9ICIsIG1fdXNlZFJlZ2lzdGVycyk7Cit9CisKK1N0YWNrbWFwVmFsdWU6OlN0YWNrbWFwVmFs
dWUodW5zaWduZWQgaW5kZXgsIE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdp
bikKKyAgICA6IFZhbHVlKGluZGV4LCBvcGNvZGUsIHR5cGUsIG9yaWdpbikKK3sKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgQjNTdGFja21hcFZhbHVlX2gKKyNkZWZpbmUgQjNTdGFj
a21hcFZhbHVlX2gKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1N0YWNrbWFw
LmgiCisjaW5jbHVkZSAiQjNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKKworc3RydWN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyB7CisgICAgLy8gVGhpcyBpcyB0
aGUgc3RhY2ttYXAgdmFsdWUgdGhhdCB3ZSdyZSBnZW5lcmF0aW5nLgorICAgIFN0YWNrbWFwVmFs
dWUqIHZhbHVlOworICAgIAorICAgIC8vIFRoaXMgdGVsbHMgeW91IHRoZSBhY3R1YWwgdmFsdWUg
cmVwcmVzZW50YXRpb25zIHRoYXQgd2VyZSBjaG9zZW4uIFRoaXMgaXMgdXN1YWxseSBkaWZmZXJl
bnQKKyAgICAvLyBmcm9tIHRoZSBjb25zdHJhaW50cyB3ZSBzdXBwbGllZC4KKyAgICBWZWN0b3I8
VmFsdWVSZXA+IHJlcHM7CisgICAgCisgICAgLy8gVGhpcyB0ZWxscyB5b3UgdGhlIHJlZ2lzdGVy
cyB0aGF0IHdlcmUgdXNlZC4KKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOworfTsKKwor
dHlwZWRlZiB2b2lkIFN0YWNrbWFwR2VuZXJhdG9yRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJik7Cit0eXBlZGVmIFNoYXJlZFRhc2s8U3RhY2tt
YXBHZW5lcmF0b3JGdW5jdGlvbj4gU3RhY2ttYXBHZW5lcmF0b3I7CisKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIFN0YWNrbWFwVmFsdWUgOiBwdWJsaWMgVmFsdWUgeworcHVibGljOgorICAgIHN0
YXRpYyBib29sIGFjY2VwdHMoT3Bjb2RlIG9wY29kZSkKKyAgICB7CisgICAgICAgIC8vIFRoaXMg
bmVlZHMgdG8gaW5jbHVkZSBvcGNvZGVzIG9mIGFsbCBzdWJjbGFzc2VzLgorICAgICAgICBzd2l0
Y2ggKG9wY29kZSkgeworICAgICAgICBjYXNlIENoZWNrQWRkOgorICAgICAgICBjYXNlIENoZWNr
U3ViOgorICAgICAgICBjYXNlIENoZWNrTXVsOgorICAgICAgICBjYXNlIENoZWNrOgorICAgICAg
ICBjYXNlIFBhdGNocG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IH5TdGFja21hcFZhbHVlKCk7CisKKyAgICAvLyBVc2UgdGhpcyB0byBhZGQgY2hpbGRyZW4uIE5v
dGUgdGhhdCB5b3UgY291bGQgYWxzbyBhZGQgY2hpbGRyZW4gYnkgZG9pbmcKKyAgICAvLyBjaGls
ZHJlbigpLmFwcGVuZCgpLiBUaGF0IHdpbGwgd29yayBmaW5lLCBidXQgaXQncyBub3QgcmVjb21t
ZW5kZWQuCisgICAgdm9pZCBhcHBlbmQoY29uc3QgQ29uc3RyYWluZWRWYWx1ZSYpOworCisgICAg
Y29uc3QgVmVjdG9yPFZhbHVlUmVwPiYgcmVwcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwczsgfQor
CisgICAgdm9pZCBjbG9iYmVyKGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQpCisgICAgeworICAgICAg
ICBtX2Nsb2JiZXJlZC5tZXJnZShzZXQpOworICAgIH0KKworICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBjbG9iYmVyZWQoKSBjb25zdCB7IHJldHVybiBtX2Nsb2JiZXJlZDsgfQorCisgICAgdm9pZCBz
ZXRHZW5lcmF0b3IoUmVmUHRyPFN0YWNrbWFwR2VuZXJhdG9yPiBnZW5lcmF0b3IpCisgICAgewor
ICAgICAgICBtX2dlbmVyYXRvciA9IGdlbmVyYXRvcjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgc2V0R2VuZXJhdG9yKGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCisgICAgeworICAgICAgICBtX2dlbmVyYXRvciA9IGNyZWF0ZVNoYXJlZFRhc2s8U3Rh
Y2ttYXBHZW5lcmF0b3JGdW5jdGlvbj4oZnVuY3Rvcik7CisgICAgfQorCisgICAgQ29uc3RyYWlu
ZWRWYWx1ZSBjb25zdHJhaW5lZENoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIENvbnN0cmFpbmVkVmFsdWUoY2hpbGQoaW5kZXgpLCBpbmRleCA8IG1fcmVw
cy5zaXplKCkgPyBtX3JlcHNbaW5kZXhdIDogVmFsdWVSZXAoKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRDb25zdHJhaW5lZENoaWxkKHVuc2lnbmVkIGluZGV4LCBjb25zdCBDb25zdHJhaW5lZFZh
bHVlJik7CisgICAgCisgICAgdm9pZCBzZXRDb25zdHJhaW50KHVuc2lnbmVkIGluZGV4LCBjb25z
dCBWYWx1ZVJlcCYpOworCisgICAgY2xhc3MgQ29uc3RyYWluZWRWYWx1ZUNvbGxlY3Rpb24gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgQ29uc3RyYWluZWRWYWx1ZUNvbGxlY3Rpb24oU3RhY2ttYXBW
YWx1ZSYgdmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
Lm51bUNoaWxkcmVuKCk7IH0KKyAgICAgICAgCisgICAgICAgIENvbnN0cmFpbmVkVmFsdWUgYXQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuY29uc3RyYWluZWRDaGlsZChp
bmRleCk7IH0KKworICAgICAgICBDb25zdHJhaW5lZFZhbHVlIG9wZXJhdG9yW10odW5zaWduZWQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorCisgICAgICAgIHZvaWQgc2V0KHVu
c2lnbmVkIGluZGV4LCBjb25zdCBDb25zdHJhaW5lZFZhbHVlJiB2YWx1ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV92YWx1ZS5zZXRDb25zdHJhaW5lZENoaWxkKGluZGV4LCB2YWx1ZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBjbGFzcyBpdGVyYXRvciB7CisgICAgICAgIHB1YmxpYzoKKyAg
ICAgICAgICAgIGl0ZXJhdG9yKCkKKyAgICAgICAgICAgICAgICA6IG1fY29sbGVjdGlvbihudWxs
cHRyKQorICAgICAgICAgICAgICAgICwgbV9pbmRleCgwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpdGVyYXRvcihjb25zdCBDb25zdHJhaW5lZFZhbHVlQ29s
bGVjdGlvbiYgY29sbGVjdGlvbiwgdW5zaWduZWQgaW5kZXgpCisgICAgICAgICAgICAgICAgOiBt
X2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCisgICAgICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb25zdHJhaW5l
ZFZhbHVlIG9wZXJhdG9yKigpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fY29sbGVjdGlvbi0+YXQobV9pbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtX2luZGV4Kys6CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rp
b24gPT0gb3RoZXIubV9jb2xsZWN0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9pbmRl
eCA9PSBvdGhlci5tX2luZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgQ29uc3RyYWluZWRWYWx1
ZUNvbGxlY3Rpb24qIG1fY29sbGVjdGlvbjsKKyAgICAgICAgfTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIFN0YWNrbWFwVmFsdWUmIG1fdmFsdWU7CisgICAgfTsKKworICAgIENvbnN0cmFpbmVk
VmFsdWVDb2xsZWN0aW9uIGNvbnN0cmFpbmVkQ2hpbGRyZW4oKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIENvbnN0cmFpbmVkVmFsdWVDb2xsZWN0aW9uKCp0aGlzKTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGR1bXBDaGlsZHJlbihDb21tYVByaW50ZXImLCBQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN0YWNrbWFwVmFsdWUodW5zaWduZWQg
aW5kZXgsIE9wY29kZSwgVHlwZSwgT3JpZ2luKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgQ2hlY2tTcGVjaWFsOworICAgIGZyaWVuZCBjbGFzcyBQYXRjaHBvaW50U3BlY2lhbDsKKyAg
ICBmcmllbmQgY2xhc3MgU3RhY2ttYXBTcGVjaWFsOworICAgIAorICAgIFZlY3RvcjxWYWx1ZVJl
cD4gbV9yZXBzOworICAgIFJlZlB0cjxHZW5lcmF0b3I+IG1fZ2VuZXJhdG9yOworICAgIFJlZ2lz
dGVyU2V0IG1fY2xvYmJlcmVkOworICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsgLy8g
U3RhY2ttYXBzIGNvdWxkIGJlIGZ1cnRoZXIgZHVwbGljYXRlZCBieSBBaXIsIGJ1dCB0aGF0J3Mg
dW5saWtlbHksIHNvIHdlIGp1c3QgbWVyZ2UgdGhlIHVzZWQgcmVnaXN0ZXJzIHNldHMgaWYgdGhh
dCB3ZXJlIHRvIGhhcHBlbi4KK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzU3RhY2ttYXBWYWx1ZV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N3aXRjaFZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5jcHAJKHJldmlzaW9u
IDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N3aXRjaFZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDEyIEBAIHZvaWQgU3dpdGNoVmFsdWU6OmFwcGVu
ZENhc2UoY29uc3QgU3dpdGMKICAgICBtX3ZhbHVlcy5hcHBlbmQoc3dpdGNoQ2FzZS5jYXNlVmFs
dWUoKSk7CiB9CiAKLXZvaWQgU3dpdGNoVmFsdWU6OmR1bXBNZXRhKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit2b2lkIFN3aXRjaFZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIC8vIFRoaXMgZGVzdHJ1Y3RpdmVseSBvdmVy
cmlkZXMgQ29udHJvbFZhbHVlJ3MgZHVtcE1ldGEoKS4KLSAgICBvdXQucHJpbnQobGlzdER1bXAo
KnRoaXMpLCAiLCBmYWxsVGhyb3VnaCA9ICIsIGZhbGxUaHJvdWdoKCkpOworICAgIGZvciAoU3dp
dGNoQ2FzZSBzd2l0Y2hDYXNlIDogKnRoaXMpCisgICAgICAgIG91dC5wcmludChjb21tYSwgc3dp
dGNoQ2FzZSk7CisgICAgb3V0LnByaW50KGNvbW1hLCAiZmFsbFRocm91Z2ggPSAiLCBmYWxsVGhy
b3VnaCgpKTsKIH0KIAogU3dpdGNoVmFsdWU6OlN3aXRjaFZhbHVlKHVuc2lnbmVkIGluZGV4LCBP
cmlnaW4gb3JpZ2luLCBjb25zdCBGcmVxdWVudGVkQmxvY2smIGZhbGxUaHJvdWdoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5oCShyZXZpc2lvbiAxOTE5NjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kQ2FzZShjb25z
dCBTd2l0Y2hDYXNlJik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBQcm9jZWR1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVcHNpbG9uVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Vwc2lsb25W
YWx1ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Vwc2lsb25WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCwxNCBAQCBVcHNp
bG9uVmFsdWU6On5VcHNpbG9uVmFsdWUoKQogewogfQogCi12b2lkIFVwc2lsb25WYWx1ZTo6ZHVt
cE1ldGEoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgVXBzaWxvblZhbHVlOjpkdW1wTWV0
YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlm
IChtX3BoaSkKLSAgICAgICAgb3V0LnByaW50KCJeIiwgbV9waGktPmluZGV4KCkpOworICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJeIiwgbV9waGktPmluZGV4KCkpOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBXZSB3YW50IHRvIGhhdmUgYSBkdW1wIGZvciB3aGVuIHRoZSBQaGkgaXNuJ3Qgc2V0
IHlldCwgc2luY2UgYWx0aG91Z2ggc3VjaCBJUiB3b24ndCBwYXNzCiAgICAgICAgIC8vIHZhbGlk
YXRpb24sIHdlIG1heSBoYXZlIHN1Y2ggSVIgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAuCi0gICAg
ICAgIG91dC5wcmludCgiXihudWxsKSIpOworICAgICAgICBvdXQucHJpbnQoY29tbWEsICJeKG51
bGwpIik7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVcHNp
bG9uVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVcHNp
bG9uVmFsdWUuaAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVXBzaWxvblZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoUHJpbnRTdHJlYW0mKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2Nl
ZHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA4LDE2ICszMDgsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIHZhbGlkYXRlU3RhY2ttYXAoVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgU3Rh
Y2ttYXAqIHN0YWNrbWFwID0gdmFsdWUtPnN0YWNrbWFwKCk7Ci0gICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID49IHN0YWNrbWFwLT5yZXBzKCkuc2l6ZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICBTdGFja21hcFZhbHVlKiBzdGFja21hcCA9IHZhbHVlLT5hczxTdGFj
a21hcFZhbHVlPigpOworICAgICAgICBWQUxJREFURShzdGFja21hcCwgKCJBdCAiLCAqdmFsdWUp
KTsKKyAgICAgICAgVkFMSURBVEUoc3RhY2ttYXAtPm51bUNoaWxkcmVuKCkgPj0gc3RhY2ttYXAt
PnJlcHMoKS5zaXplKCksICgiQXQgIiwgKnN0YWNrbWFwKSk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzdGFja21hcC0+cmVwcygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBjb25zdCBWYWx1ZVJlcCYgcmVwID0gc3RhY2ttYXAtPnJlcHMoKVtpXTsKICAgICAgICAgICAg
IGlmIChyZXAua2luZCgpICE9IFZhbHVlUmVwOjpSZWdpc3RlcikKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmIChyZXAucmVnKCkuaXNHUFIoKSkKLSAgICAgICAgICAg
ICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoaSktPnR5cGUoKSksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQoc3RhY2ttYXAtPmNoaWxkKGkp
LT50eXBlKCkpLCAoIkF0ICIsICpzdGFja21hcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPmNoaWxkKGkpLT50eXBlKCkpLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQoc3RhY2ttYXAt
PmNoaWxkKGkpLT50eXBlKCkpLCAoIkF0ICIsICpzdGFja21hcCkpOwogICAgICAgICB9CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDI1ICs3OCwyNCBAQCB2b2lkIFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAgICAgb3V0LnByaW50KGR1bXBQcmVmaXgsIG1faW5kZXgpOwogfQogCit2b2lkIFZh
bHVlOjpkdW1wQ2hpbGRyZW4oQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKK3sKKyAgICBmb3IgKFZhbHVlKiBjaGlsZCA6IGNoaWxkcmVuKCkpCisgICAgICAgIG91
dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAoY2hpbGQpKTsKK30KKwogdm9pZCBWYWx1ZTo6ZGVl
cER1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQobV90eXBlLCAi
ICIsICp0aGlzLCAiID0gIiwgbV9vcGNvZGUpOwogCiAgICAgb3V0LnByaW50KCIoIik7CiAgICAg
Q29tbWFQcmludGVyIGNvbW1hOwotICAgIGZvciAoVmFsdWUqIGNoaWxkIDogY2hpbGRyZW4oKSkK
LSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChjaGlsZCkpOworICAgIGR1bXBD
aGlsZHJlbihjb21tYSwgb3V0KTsKIAogICAgIGlmIChtX29yaWdpbikKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCBtX29yaWdpbik7CiAKLSAgICB7Ci0gICAgICAgIFN0cmluZ1ByaW50U3RyZWFt
IHN0cmluZ091dDsKLSAgICAgICAgZHVtcE1ldGEoc3RyaW5nT3V0KTsKLSAgICAgICAgQ1N0cmlu
ZyBzdHJpbmcgPSBzdHJpbmdPdXQudG9DU3RyaW5nKCk7Ci0gICAgICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIHN0cmluZyk7Ci0gICAgfQorICAg
IGR1bXBNZXRhKGNvbW1hLCBvdXQpOwogCiAgICAgewogICAgICAgICBDU3RyaW5nIHN0cmluZyA9
IHRvQ1N0cmluZyhlZmZlY3RzKCkpOwpAQCAtMjg0LDcgKzI4Myw3IEBAIHZvaWQgVmFsdWU6OnBl
cmZvcm1TdWJzdGl0dXRpb24oKQogICAgIH0KIH0KIAotdm9pZCBWYWx1ZTo6ZHVtcE1ldGEoUHJp
bnRTdHJlYW0mKSBjb25zdAordm9pZCBWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJp
bnRTdHJlYW0mKSBjb25zdAogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCM09wY29kZS5o
IgogI2luY2x1ZGUgIkIzT3JpZ2luLmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSA8
d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEJhc2ljQmxvY2s7CiBjbGFzcyBQcm9jZWR1cmU7Ci1j
bGFzcyBTdGFja21hcDsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgVmFsdWUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFZhbHVlKTsKQEAgLTE0OSwxNSArMTQ5LDE0IEBAIHB1YmxpYzoK
ICAgICAKICAgICBFZmZlY3RzIGVmZmVjdHMoKSBjb25zdDsKIAotICAgIFN0YWNrbWFwKiBzdGFj
a21hcCgpOwotCiAgICAgLy8gTWFrZXMgc3VyZSB0aGF0IG5vbmUgb2YgdGhlIGNoaWxkcmVuIGFy
ZSBJZGVudGl0eSdzLiBJZiBhIGNoaWxkIHBvaW50cyB0byBJZGVudGl0eSwgdGhpcyB3aWxsCiAg
ICAgLy8gcmVwb2ludCBpdCBhdCB0aGUgSWRlbnRpdHkncyBjaGlsZC4gRm9yIHNpbXBsaWNpdHks
IHRoaXMgd2lsbCBmb2xsb3cgYXJiaXRyYXJpbHkgbG9uZyBjaGFpbnMKICAgICAvLyBvZiBJZGVu
dGl0eSdzLgogICAgIHZvaWQgcGVyZm9ybVN1YnN0aXR1dGlvbigpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGR1bXBDaGlsZHJlbihDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNv
bnN0OwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE5MTk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzgsMTUgKzE3OCw2IEBAIGlubGluZSBUIFZhbHVlOjphc051bWJlcigpIGNv
bnN0CiAgICAgfQogfQogCi1pbmxpbmUgU3RhY2ttYXAqIFZhbHVlOjpzdGFja21hcCgpCi17Ci0g
ICAgaWYgKENoZWNrVmFsdWUqIGNoZWNrID0gYXM8Q2hlY2tWYWx1ZT4oKSkKLSAgICAgICAgcmV0
dXJuICZjaGVjay0+c3RhY2ttYXA7Ci0gICAgaWYgKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IGFzPFBhdGNocG9pbnRWYWx1ZT4oKSkKLSAgICAgICAgcmV0dXJuICZwYXRjaHBvaW50LT5z
dGFja21hcDsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA3LDE1ICsxMjA3LDExIEBAIHZvaWQg
dGVzdFNpbXBsZVBhdGNocG9pbnQoKQogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CiAgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgVmFsdWUqIGFy
ZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgVmFsdWU6OkFkamFjZW5jeUxpc3QgY2hpbGRyZW47
Ci0gICAgY2hpbGRyZW4uYXBwZW5kKGFyZzEpOwotICAgIGNoaWxkcmVuLmFwcGVuZChhcmcyKTsK
LSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hw
b2ludFZhbHVlPigKLSAgICAgICAgcHJvYywgSW50MzIsIE9yaWdpbigpLCBXVEY6Om1vdmUoY2hp
bGRyZW4pKTsKLSAgICBwYXRjaHBvaW50LT5zdGFja21hcC5hcHBlbmRDb25zdHJhaW50KFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOwotICAgIHBhdGNocG9pbnQtPnN0YWNrbWFwLmFwcGVuZENvbnN0
cmFpbnQoVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0gICAgcGF0Y2hwb2ludC0+c3RhY2ttYXAu
c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcDo6R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIs
IE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoYXJnMSk7CisgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGFyZzIpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAg
WyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAzKTsKICAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkpOwogICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnJlcHNbMV0uaXNHUFIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJJbnN0LmgiCiAjaW5jbHVkZSAiQWlyT3Bjb2Rl
VXRpbHMuaCIKICNpbmNsdWRlICJBaXJTcGVjaWFsLmgiCi0jaW5jbHVkZSAiQjNTdGFja21hcC5o
IgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264703</attachid>
            <date>2015-11-03 11:33:22 -0800</date>
            <delta_ts>2015-11-03 15:20:52 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>69386</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxOTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOSBA
QAorMjAxNS0xMS0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzOjpTdGFja21hcCBzaG91bGQgYmUgYSBzdXBlcmNsYXNzIG9mIEIzOjpQYXRjaHBvaW50VmFs
dWUgYW5kIEIzOjpDaGVja1ZhbHVlIHJhdGhlciB0aGFuIGJlaW5nIG9uZSBvZiB0aGVpciBtZW1i
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2
aW91c2x5LCBTdGFja21hcCB3YXMgYSB2YWx1ZSB0aGF0IFBhdGNocG9pbnRWYWx1ZSBhbmQgQ2hl
Y2tWYWx1ZSB3b3VsZCBob2xkIGFzIGEgZmllbGQuCisgICAgICAgIFdlJ2QgaGF2ZSBjb252ZW5p
ZW50IHdheXMgb2YgZ2V0dGluZyB0aGlzIGZpZWxkLCBsaWtlIHZpYSBWYWx1ZTo6c3RhY2ttYXAo
KS4gQnV0IHRoaXMgd2FzIGEKKyAgICAgICAgYml0IHJpZGljdWxvdXMsIHNpbmNlIFN0YWNrbWFw
IGlzIGxvZ2ljYWxseSBqdXN0IGEgY29tbW9uIHN1cGVydHlwZSBmb3IgUGF0Y2hwb2ludHZhbHVl
IGFuZAorICAgICAgICBDaGVja1ZhbHVlLiBUaGlzIHBhdGNoIG1ha2VzIHRoaXMgcmVhbGl0eSBi
eSByZXBsYWNpbmcgU3RhY2ttYXAgd2l0aCBTdGFja21hcFZhbHVlLiBUaGlzIG1ha2VzCisgICAg
ICAgIHRoZSBjb2RlIGEgbG90IG1vcmUgcmVhc29uYWJsZS4KKworICAgICAgICBJIGFsc28gbmVl
ZGVkIHRvIG1ha2UgZHVtcGluZyBhIGJpdCBtb3JlIGN1c3RvbWl6YWJsZSwgc28gSSBjaGFuZ2Vk
IGR1bXBNZXRhKCkgdG8gdGFrZSBhCisgICAgICAgIENvbW1hUHJpbnRlciYuIFRoaXMgZ2l2ZXMg
c3ViY2xhc3NlcyBiZXR0ZXIgY29udHJvbCBvdmVyIHdoZXRoZXIgb3Igbm90IHRvIGVtaXQgYSBj
b21tYS4gQWxzbworICAgICAgICBpdCdzIG5vdyBwb3NzaWJsZSBmb3Igc3ViY2xhc3NlcyBvZiBW
YWx1ZSB0byBjdXN0b21pemUgaG93IGNoaWxkcmVuIGFyZSBwcmludGVkLiBTdGFja21hcFZhbHVl
CisgICAgICAgIHVzZXMgdGhpcyB0byBwcmludCB0aGUgY2hpbGRyZW4gYW5kIHRoZWlyIHJlcHMg
dG9nZXRoZXIgbGlrZToKKworICAgICAgICAgICAgSW50MzIgQDIgPSBQYXRjaHBvaW50KEAwOlNv
bWVSZWdpc3RlciwgQDE6U29tZVJlZ2lzdGVyLCBnZW5lcmF0b3IgPSAweDExMDdlYzAxMCwgY2xv
YmJlcmVkID0gW10sIHVzZWRSZWdpc3RlcnMgPSBbXSwgRXhpdHNTaWRld2F5c3xDb250cm9sRGVw
ZW5kZW50fFdyaXRlczpUb3B8UmVhZHM6VG9wKQorCisgICAgICAgIFRoaXMgaGFzIG5vIGJlaGF2
aW9yIGNoYW5nZSwgaXQncyBqdXN0IGEgYmlnIHJlZmFjdG9yaW5nLiBZb3UgY2FuIHNlZSBob3cg
bXVjaCBzaW1wbGVyIHRoaXMKKyAgICAgICAgbWFrZXMgdGhpbmdzIGJ5IGxvb2tpbmcgYXQgdGhl
IHRlc3RTaW1wbGVQYXRjaHBvaW50KCkgdGVzdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFy
Z3VtZW50UmVnVmFsdWU6On5Bcmd1bWVudFJlZ1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OkFy
Z3VtZW50UmVnVmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKiBiMy9CM0FyZ3VtZW50UmVnVmFs
dWUuaDoKKyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpDaGVja1NwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM0NoZWNrVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tWYWx1ZTo6fkNoZWNrVmFsdWUpOgorICAgICAgICAo
SlNDOjpCMzo6Q2hlY2tWYWx1ZTo6Q2hlY2tWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1ZhbHVlOjpkdW1wTWV0YSk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNDaGVja1ZhbHVlLmg6
CisgICAgICAgIChKU0M6OkIzOjpDaGVja1ZhbHVlOjphY2NlcHRzKToKKyAgICAgICAgKiBiMy9C
M0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6Om5vdEVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpkdW1wTWV0YSk6
CisgICAgICAgICogYjMvQjNDb25zdDMyVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0NjRW
YWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3Rh
bnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjpkdW1wTWV0YSk6CisgICAgICAg
ICogYjMvQjNDb25zdDY0VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0RG91YmxlVmFsdWUu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFu
dCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJsZVZhbHVlOjpkdW1wTWV0YSk6CisgICAg
ICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25zdHJhaW5l
ZFZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpDb25zdHJhaW5lZFZhbHVlOjpk
dW1wKToKKyAgICAgICAgKiBiMy9CM0NvbnN0cmFpbmVkVmFsdWUuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkIzOjpDb25zdHJhaW5lZFZhbHVlOjpDb25zdHJhaW5lZFZhbHVlKToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0cmFpbmVkVmFsdWU6Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAoSlND
OjpCMzo6Q29uc3RyYWluZWRWYWx1ZTo6dmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3Ry
YWluZWRWYWx1ZTo6cmVwKToKKyAgICAgICAgKiBiMy9CM0NvbnRyb2xWYWx1ZS5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpDb250cm9sVmFsdWU6OmNvbnZlcnRUb0p1bXApOgorICAgICAgICAoSlND
OjpCMzo6Q29udHJvbFZhbHVlOjpkdW1wTWV0YSk6CisgICAgICAgICogYjMvQjNDb250cm9sVmFs
dWUuaDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjp0cnlQYXRjaHBvaW50KToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSk6
CisgICAgICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6ZHVtcE1ldGEpOgorICAgICAgICAqIGIz
L0IzTWVtb3J5VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsOjpnZW5lcmF0ZSk6CisgICAgICAg
ICogYjMvQjNQYXRjaHBvaW50VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UGF0Y2hwb2lu
dFZhbHVlOjp+UGF0Y2hwb2ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRW
YWx1ZTo6UGF0Y2hwb2ludFZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRWYWx1
ZTo6ZHVtcE1ldGEpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFZhbHVlLmg6
CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50VmFsdWU6OmFjY2VwdHMpOgorICAgICAgICAq
IGIzL0IzU3RhY2tTbG90VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2tTbG90VmFs
dWU6On5TdGFja1Nsb3RWYWx1ZSk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja1Nsb3RWYWx1ZTo6
ZHVtcE1ldGEpOgorICAgICAgICAqIGIzL0IzU3RhY2tTbG90VmFsdWUuaDoKKyAgICAgICAgKiBi
My9CM1N0YWNrbWFwLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiMy9CM1N0YWNrbWFwLmg6IFJl
bW92ZWQuCisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlND
OjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBvcnRVc2VkUmVnaXN0ZXJzKToKKyAgICAgICAgKEpT
Qzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6ZXh0cmFDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKEpT
Qzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6Zm9yRWFjaEFyZ0ltcGwpOgorICAgICAgICAoSlNDOjpC
Mzo6U3RhY2ttYXBTcGVjaWFsOjppc1ZhbGlkSW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFj
a21hcFNwZWNpYWw6OmFkbWl0c1N0YWNrSW1wbCk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNw
ZWNpYWwuaDoKKyAgICAgICAgKiBiMy9CM1N0YWNrbWFwVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OlN0YWNrbWFwVmFsdWU6On5TdGFja21hcFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6QjM6OlN0YWNrbWFwVmFsdWU6OmFwcGVuZCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21h
cFZhbHVlOjpzZXRDb25zdHJhaW5lZENoaWxkKToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFw
VmFsdWU6OnNldENvbnN0cmFpbnQpOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBWYWx1ZTo6
ZHVtcENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwVmFsdWU6OmR1bXBNZXRh
KToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwVmFsdWU6OlN0YWNrbWFwVmFsdWUpOgorICAg
ICAgICAqIGIzL0IzU3RhY2ttYXBWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiMy9CM1N3aXRj
aFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN3aXRjaFZhbHVlOjphcHBlbmRDYXNlKToK
KyAgICAgICAgKEpTQzo6QjM6OlN3aXRjaFZhbHVlOjpkdW1wTWV0YSk6CisgICAgICAgIChKU0M6
OkIzOjpTd2l0Y2hWYWx1ZTo6U3dpdGNoVmFsdWUpOgorICAgICAgICAqIGIzL0IzU3dpdGNoVmFs
dWUuaDoKKyAgICAgICAgKiBiMy9CM1Vwc2lsb25WYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpVcHNpbG9uVmFsdWU6On5VcHNpbG9uVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6VXBzaWxv
blZhbHVlOjpkdW1wTWV0YSk6CisgICAgICAgICogYjMvQjNVcHNpbG9uVmFsdWUuaDoKKyAgICAg
ICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlOjpkdW1wKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpkdW1w
Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmRlZXBEdW1wKToKKyAgICAgICAg
KEpTQzo6QjM6OlZhbHVlOjpwZXJmb3JtU3Vic3RpdHV0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6
OlZhbHVlOjpkdW1wTWV0YSk6CisgICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIz
L0IzVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YXNOdW1iZXIpOgor
ICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnN0YWNrbWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM1ZhbHVlUmVwLmg6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6a2luZCk6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkIzOjpW
YWx1ZVJlcDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6b3BlcmF0
b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6aXNBbnkpOgorICAgICAgICAq
IGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0U2ltcGxlUGF0Y2hwb2ludCk6CisKIDIwMTUtMTEtMDIgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCMy9BaXIgc2hvdWxkIHVzZSBi
dWJibGUgc29ydCBmb3IgdGhlaXIgaW5zZXJ0aW9uIHNldHMsIGJlY2F1c2UgaXQncyBmYXN0ZXIg
dGhhbiBzdGQ6OnN0YWJsZV9zb3J0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBiMy9CM0Jhc2ljQmxvY2suY3BwCiAgICAgYjMvQjNDaGVja1NwZWNpYWwu
Y3BwCiAgICAgYjMvQjNDaGVja1ZhbHVlLmNwcAorICAgIGIzL0IzQ29uc3RyYWluZWRWYWx1ZS5j
cHAKICAgICBiMy9CM0NvbW1vbi5jcHAKICAgICBiMy9CM0NvbW11dGF0aXZpdHkuY3BwCiAgICAg
YjMvQjNDb25zdDMyVmFsdWUuY3BwCkBAIC0xMTIsOCArMTEzLDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBiMy9CM1BoYXNlU2NvcGUuY3BwCiAgICAgYjMvQjNQcm9jZWR1cmUu
Y3BwCiAgICAgYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKLSAgICBiMy9CM1N0YWNrbWFwLmNwcAog
ICAgIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAorICAgIGIzL0IzU3RhY2ttYXBWYWx1ZS5jcHAK
ICAgICBiMy9CM1N0YWNrU2xvdEtpbmQuY3BwCiAgICAgYjMvQjNTdGFja1Nsb3RWYWx1ZS5jcHAK
ICAgICBiMy9CM1N3aXRjaENhc2UuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsy
ODAsMTAgQEAKIAkJMEYzMDBCN0MxOEFCMUIxNDAwQTZENzJFIC8qIERGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjMwMEI3QTE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5n
UGhhc2UuaCAqLzsgfTsKIAkJMEYzMkJEMTAxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQ
b29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgKi87IH07CiAJCTBG
MzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdG
IC8qIEhlYXBIZWxwZXJQb29sLmggKi87IH07CisJCTBGMzM4REYxMUJFOTNBRDEwMDEzQzg4RiAv
KiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzMzhERUYxQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5j
cHAgKi87IH07CisJCTBGMzM4REYyMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4REYw
MUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuaCAqLzsgfTsKKwkJMEYzMzhERjUx
QkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMzOERGMzFCRTkzRDU1MDAxM0M4OEYg
LyogQjNDb25zdHJhaW5lZFZhbHVlLmNwcCAqLzsgfTsKKwkJMEYzMzhERjYxQkU5M0Q1NTAwMTND
ODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzMzhERjQxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWlu
ZWRWYWx1ZS5oICovOyB9OwogCQkwRjM0QjE0OTE2RDQyMDEwMDAxQ0RBNUEgLyogREZHVXNlS2lu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM0
QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi87IH07CiAJCTBGMzRCMTRB
MTZENDIwMTMwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM0QjE0ODE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNl
S2luZC5oICovOyB9OwogCQkwRjM4QjAxMTE3Q0YwNzgwMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MzhCMDBGMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovOyB9OwpAQCAt
NzM3LDggKzc0MSw2IEBACiAJCTBGRUM4NTJCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVy
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVD
ODRFMTFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuY3BwICovOyB9OwogCQkwRkVDODUy
QzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEUyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1By
b2NlZHVyZS5oICovOyB9OwogCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1
cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODRFMzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggKi87IH07
Ci0JCTBGRUM4NTJFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEU0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM1N0YWNrbWFwLmNwcCAqLzsgfTsKLQkJMEZFQzg1MkYxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzU3RhY2ttYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUM4NEU1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwLmggKi87IH07CiAJ
CTBGRUM4NTMwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRFNjFCREFDREFD
MDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3BwICovOyB9OwogCQkwRkVDODUzMTFCREFD
REFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEU3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0
YWNrbWFwU3BlY2lhbC5oICovOyB9OwogCQkwRkVDODUzMjFCREFDREFDMDA4MEZGNzQgLyogQjNT
dGFja1Nsb3RLaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUM4NEU4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrU2xvdEtpbmQuY3BwICov
OyB9OwpAQCAtMjI5OSw2ICsyMzAxLDEwIEBACiAJCTBGMzAwQjdBMThBQjFCMTQwMEE2RDcyRSAv
KiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwSGVscGVyUG9vbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzJCRDBGMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFw
SGVscGVyUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSGVscGVy
UG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMzOERFRjFCRTkzQUQxMDAx
M0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEIzU3RhY2ttYXBWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM1N0YWNrbWFwVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMzOERGMDFCRTkzQUQxMDAxM0M4
OEYgLyogQjNTdGFja21hcFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzU3RhY2ttYXBWYWx1ZS5oOyBwYXRoID0gYjMvQjNTdGFja21hcFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzM4REYzMUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0
cmFpbmVkVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjND
b25zdHJhaW5lZFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzQ29uc3RyYWluZWRWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzM4REY0MUJFOTNENTUwMDEzQzg4RiAvKiBC
M0NvbnN0cmFpbmVkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjND
b25zdHJhaW5lZFZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0cmFpbmVkVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIxNDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1Vz
ZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVXNlS2lu
ZC5jcHA7IHBhdGggPSBkZmcvREZHVXNlS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1VzZUtpbmQuaDsgcGF0aCA9IGRmZy9ERkdVc2VL
aW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzhCMDBGMTdDRjA3N0YwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRy
eXBvaW50LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzY5LDggKzI3NzUsNiBAQAogCQkwRkVDODRFMTFCREFDREFD
MDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQjNQcm9jZWR1cmUuY3BwOyBwYXRoID0gYjMvQjNQcm9jZWR1cmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODRFMjFCREFDREFDMDA4MEZGNzQgLyogQjNQ
cm9jZWR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNQcm9jZWR1cmUu
aDsgcGF0aCA9IGIzL0IzUHJvY2VkdXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUM4NEUzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNQcm9jZWR1cmVJbmxpbmVzLmg7IHBhdGggPSBi
My9CM1Byb2NlZHVyZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZF
Qzg0RTQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja21hcC5jcHA7IHBhdGggPSBiMy9CM1N0YWNrbWFw
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg0RTUxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzU3RhY2ttYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNT
dGFja21hcC5oOyBwYXRoID0gYjMvQjNTdGFja21hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkVDODRFNjFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja21hcFNwZWNpYWwu
Y3BwOyBwYXRoID0gYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkVDODRFNzFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTdGFja21hcFNwZWNpYWwuaDsg
cGF0aCA9IGIzL0IzU3RhY2ttYXBTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRUM4NEU4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrU2xvdEtpbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja1Nsb3RLaW5kLmNwcDsgcGF0
aCA9IGIzL0IzU3RhY2tTbG90S2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NDA4LDYgKzQ0MTIsOCBAQAogCQkJCTBGRUM4NEM3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Nv
bnN0RG91YmxlVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEM4MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0NvbnN0RG91YmxlVmFsdWUuaCAqLywKIAkJCQkwRkVDODVCMjFCREVEOTU3MDA4MEZGNzQgLyog
QjNDb25zdFB0clZhbHVlLmggKi8sCisJCQkJMEYzMzhERjMxQkU5M0Q1NTAwMTNDODhGIC8qIEIz
Q29uc3RyYWluZWRWYWx1ZS5jcHAgKi8sCisJCQkJMEYzMzhERjQxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oICovLAogCQkJCTBGRUM4NEM5MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0NvbnRyb2xWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0Q0ExQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQ29udHJvbFZhbHVlLmggKi8sCiAJCQkJMEZFQzg1QzQxQkUxNkY1QTAwODBGRjc0IC8qIEIz
RWZmZWN0cy5jcHAgKi8sCkBAIC00NDQ0LDEwICs0NDUwLDEwIEBACiAJCQkJMEZFQzg0RTMxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oICovLAogCQkJCTBGRUM4NUI3MUJF
MTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmNwcCAqLywKIAkJCQkwRkVDODVCODFC
RTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oICovLAotCQkJCTBGRUM4NEU0MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwLmNwcCAqLywKLQkJCQkwRkVDODRFNTFCREFDREFD
MDA4MEZGNzQgLyogQjNTdGFja21hcC5oICovLAogCQkJCTBGRUM4NEU2MUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5jcHAgKi8sCiAJCQkJMEZFQzg0RTcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggKi8sCisJCQkJMEYzMzhERUYxQkU5M0FEMTAwMTND
ODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5jcHAgKi8sCisJCQkJMEYzMzhERjAxQkU5M0FEMTAwMTND
ODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5oICovLAogCQkJCTBGRUM4NEU4MUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1N0YWNrU2xvdEtpbmQuY3BwICovLAogCQkJCTBGRUM4NEU5MUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1N0YWNrU2xvdEtpbmQuaCAqLywKIAkJCQkwRkVDODRFQTFCREFDREFDMDA4MEZGNzQg
LyogQjNTdGFja1Nsb3RWYWx1ZS5jcHAgKi8sCkBAIC02NTk3LDcgKzY2MDMsNiBAQAogCQkJCTBG
RUM4NTJDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1QkQxQkUxNDYyRjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5n
dGguaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRUM4NTJGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0
YWNrbWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyog
QjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTMzMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1N0YWNrU2xvdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrU2xvdFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAg
LTY4MTgsNiArNjgyMyw3IEBACiAJCQkJNzlDNEIxNUUxQkEyMTU4RjAwRkQ1OTJFIC8qIERGR0xp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMzhERjIxQkU5M0FEMTAwMTNDODhGIC8qIEIz
U3RhY2ttYXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNE
OTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTg3NEVFMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdN
YXlFeGl0LmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTgsNiArNzAyNCw3IEBACiAJCQkJQTVFQTcx
MDUxOUY2REU3NDAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwNjE5RjZERTc2MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVFQTcxMDcxOUY2REU3ODAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29udmVyc2lvbl9o
ZWxwZXJzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMzhERjYxQkU5M0Q1NTAwMTNDODhGIC8q
IEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMDgxOUY2REU3
QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA5MTlGNkRFN0MwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTBBMTlGNkRF
N0UwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weSBpbiBIZWFkZXJz
ICovLApAQCAtODE2NSw3ICs4MTcyLDYgQEAKIAkJCQkwRkVDODUyOTFCREFDREFDMDA4MEZGNzQg
LyogQjNQaGFzZVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTJCMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVCQzFC
RTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkwRkVDODUyRTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkVDODUzMDFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MzIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tT
bG90S2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUzNDFCREFDREFDMDA4MEZGNzQg
LyogQjNTdGFja1Nsb3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg0NDIsNiArODQ0OCw3
IEBACiAJCQkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZl
UmVzdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkg
LyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzM4REYxMUJFOTNB
RDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
NUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTg3NjUsNiArODc3Miw3IEBACiAJCQkJOTMzMDQwMkMwRTZB
NzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhG
MkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYzMzhERjUxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRDNDE1RjZCNkJC
MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1Zh
bHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QXJndW1lbnRSZWdWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAgQXJn
dW1lbnRSZWdWYWx1ZTo6fkFyZ3VtZW50UmVnVmFsdWUoKQogewogfQogCi12b2lkIEFyZ3VtZW50
UmVnVmFsdWU6OmR1bXBNZXRhKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit2b2lkIEFyZ3VtZW50
UmVnVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1fcmVnKTsKKyAgICBvdXQucHJpbnQoY29tbWEsIG1f
cmVnKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQXJndW1lbnRSZWdWYWx1ZS5oCShyZXZpc2lvbiAxOTE5NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFJlZyBhcmd1bWVudFJlZygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFBy
aW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50
ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVj
a1NwZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrU3BlY2lhbC5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsOCBA
QCBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0CiAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGZhaWwgPSBoaWRkZW5CcmFuY2goaW5zdCkuZ2VuZXJhdGUoaml0LCBjb250ZXh0
KTsKICAgICBBU1NFUlQoZmFpbC5pc1NldCgpKTsKIAotICAgIFZhbHVlKiB2YWx1ZSA9IGluc3Qu
b3JpZ2luOworICAgIFN0YWNrbWFwVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4tPmFzPFN0YWNr
bWFwVmFsdWU+KCk7CisgICAgQVNTRVJUKHZhbHVlKTsKIAogICAgIFZlY3RvcjxWYWx1ZVJlcD4g
cmVwczsKICAgICBpZiAoaXNDaGVja01hdGgodmFsdWUtPm9wY29kZSgpKSkgewpAQCAtMTI0LDE2
ICsxMjUsMTIgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIENoZWNrU3BlY2lhbDo6Z2VuZXJhdAogICAg
ICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgICAgICAgICAgZmFpbC5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIFN0YWNrbWFwKiBzdGFja21hcCA9IHZhbHVlLT5zdGFja21hcCgpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChzdGFja21hcCk7Ci0KLSAgICAgICAgICAgICAgICBTdGFja21hcDo6
R2VuZXJhdGlvblBhcmFtcyBwYXJhbXM7CisgICAgICAgICAgICAgICAgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zIHBhcmFtczsKICAgICAgICAgICAgICAgICBwYXJhbXMudmFsdWUgPSB2YWx1ZTsK
LSAgICAgICAgICAgICAgICBwYXJhbXMuc3RhY2ttYXAgPSBzdGFja21hcDsKICAgICAgICAgICAg
ICAgICBwYXJhbXMucmVwcyA9IHJlcHM7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLnVzZWRSZWdp
c3RlcnMgPSBzdGFja21hcC0+bV91c2VkUmVnaXN0ZXJzOworICAgICAgICAgICAgICAgIHBhcmFt
cy51c2VkUmVnaXN0ZXJzID0gdmFsdWUtPm1fdXNlZFJlZ2lzdGVyczsKIAotICAgICAgICAgICAg
ICAgIHN0YWNrbWFwLT5tX2dlbmVyYXRvci0+cnVuKGppdCwgcGFyYW1zKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZS0+bV9nZW5lcmF0b3ItPnJ1bihqaXQsIHBhcmFtcyk7CiAgICAgICAgICAgICB9
KSk7CiAKICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wKCk7IC8vIEFzIGZhciBhcyBBaXIg
dGhpbmtzLCB3ZSBhcmUgbm90IGEgdGVybWluYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1ZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2hlY2tWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0
LDIzIEBAIENoZWNrVmFsdWU6On5DaGVja1ZhbHVlKCkKIHsKIH0KIAotdm9pZCBDaGVja1ZhbHVl
OjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAorLy8gVXNlIHRoaXMgZm9ybSBmb3Ig
Q2hlY2tBZGQsIENoZWNrU3ViLCBhbmQgQ2hlY2tNdWwuCitDaGVja1ZhbHVlOjpDaGVja1ZhbHVl
KHVuc2lnbmVkIGluZGV4LCBPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogbGVm
dCwgVmFsdWUqIHJpZ2h0KQorICAgIDogU3RhY2ttYXBWYWx1ZShpbmRleCwgb3Bjb2RlLCBsZWZ0
LT50eXBlKCksIG9yaWdpbikKIHsKLSAgICBvdXQucHJpbnQoInN0YWNrbWFwID0gIiwgc3RhY2tt
YXApOworICAgIEFTU0VSVChCMzo6aXNJbnQodHlwZSgpKSk7CisgICAgQVNTRVJUKGxlZnQtPnR5
cGUoKSA9PSByaWdodC0+dHlwZSgpKTsKKyAgICBBU1NFUlQob3Bjb2RlID09IENoZWNrQWRkIHx8
IG9wY29kZSA9PSBDaGVja1N1YiB8fCBvcGNvZGUgPT0gQ2hlY2tNdWwpOworICAgIGFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGxlZnQsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBhcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShyaWdodCwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworfQor
CisvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVjay4KK0NoZWNrVmFsdWU6OkNoZWNrVmFsdWUodW5z
aWduZWQgaW5kZXgsIE9wY29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwcmVkaWNh
dGUpCisgICAgOiBTdGFja21hcFZhbHVlKGluZGV4LCBvcGNvZGUsIFZvaWQsIG9yaWdpbikKK3sK
KyAgICBBU1NFUlQob3Bjb2RlID09IENoZWNrKTsKKyAgICBhcHBlbmQocHJlZGljYXRlKTsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ2hlY2tWYWx1ZS5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxMSBAQAog
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzU3RhY2ttYXAuaCIKLSNpbmNsdWRl
ICJCM1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDaGVja1ZhbHVl
IDogcHVibGljIFZhbHVlIHsKK2NsYXNzIENoZWNrVmFsdWUgOiBwdWJsaWMgU3RhY2ttYXBWYWx1
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKQogICAg
IHsKQEAgLTUwLDI5ICs0OSwxNCBAQCBwdWJsaWM6CiAKICAgICB+Q2hlY2tWYWx1ZSgpOwogCi0g
ICAgU3RhY2ttYXAgc3RhY2ttYXA7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFBy
aW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFByb2NlZHVyZTsKIAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIENoZWNrQWRkLCBDaGVja1N1
YiwgYW5kIENoZWNrTXVsLgotICAgIENoZWNrVmFsdWUodW5zaWduZWQgaW5kZXgsIE9wY29kZSBv
cGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCi0gICAgICAg
IDogVmFsdWUoaW5kZXgsIG9wY29kZSwgbGVmdC0+dHlwZSgpLCBvcmlnaW4sIGxlZnQsIHJpZ2h0
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKEIzOjppc0ludCh0eXBlKCkpKTsKLSAgICAgICAgQVNT
RVJUKGxlZnQtPnR5cGUoKSA9PSByaWdodC0+dHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKG9wY29k
ZSA9PSBDaGVja0FkZCB8fCBvcGNvZGUgPT0gQ2hlY2tTdWIgfHwgb3Bjb2RlID09IENoZWNrTXVs
KTsKLSAgICB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ2hlY2tWYWx1ZSh1bnNpZ25lZCBpbmRl
eCwgT3Bjb2RlLCBPcmlnaW4sIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpOwogCiAgICAgLy8g
VXNlIHRoaXMgZm9ybSBmb3IgQ2hlY2suCi0gICAgQ2hlY2tWYWx1ZSh1bnNpZ25lZCBpbmRleCwg
T3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHByZWRpY2F0ZSkKLSAgICAgICAg
OiBWYWx1ZShpbmRleCwgb3Bjb2RlLCBWb2lkLCBvcmlnaW4sIHByZWRpY2F0ZSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChvcGNvZGUgPT0gQ2hlY2spOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBDaGVja1ZhbHVlKHVuc2lnbmVkIGluZGV4LCBPcGNvZGUsIE9yaWdpbiwgVmFsdWUqIHBy
ZWRpY2F0ZSk7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzUsOSArNzUsOSBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0
YW50KFByCiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFs
dWUgIT0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKLXZvaWQgQ29uc3QzMlZhbHVlOjpkdW1wTWV0
YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAordm9pZCBDb25zdDMyVmFsdWU6OmR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KG1fdmFsdWUpOworICAgIG91dC5wcmludChjb21tYSwgbV92YWx1ZSk7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3QzMlZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3QzMlZhbHVlLmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0MzJWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICBWYWx1ZSogbm90RXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdW1wTWV0YShQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzUsOSArNzUsOSBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpub3RFcXVhbENvbnN0
YW50KFByCiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFs
dWUgIT0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKLXZvaWQgQ29uc3Q2NFZhbHVlOjpkdW1wTWV0
YShQcmludFN0cmVhbSYgb3V0KSBjb25zdAordm9pZCBDb25zdDY0VmFsdWU6OmR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KG1fdmFsdWUpOworICAgIG91dC5wcmludChjb21tYSwgbV92YWx1ZSk7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3Q2NFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3Q2NFZhbHVlLmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0NjRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICBWYWx1ZSogbm90RXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwg
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1
cmU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91Ymxl
VmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdERvdWJsZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsOSBAQCBW
YWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFuCiAgICAgcmV0dXJuIHByb2Mu
YWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgIT0gb3RoZXItPmFzRG91YmxlKCkp
OwogfQogCi12b2lkIENvbnN0RG91YmxlVmFsdWU6OmR1bXBNZXRhKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit2b2lkIENvbnN0RG91YmxlVmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29t
bWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CisgICAgb3V0LnByaW50KGNvbW1hKTsKICAg
ICBvdXQucHJpbnRmKCIlbGUiLCBtX3ZhbHVlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAkocmV2aXNpb24gMTkxOTYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogbm90RXF1YWxDb25zdGFu
dChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIz
Q29uc3RyYWluZWRWYWx1ZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIz
VmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK3ZvaWQgQ29uc3Ry
YWluZWRWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmlu
dChwb2ludGVyRHVtcChtX3ZhbHVlKSwgIjoiLCBtX3JlcCk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RyYWluZWRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgQjNDb25zdHJhaW5lZFZhbHVlX2gKKyNkZWZpbmUgQjNDb25z
dHJhaW5lZFZhbHVlX2gKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJCM1ZhbHVl
UmVwLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBWYWx1ZTsK
KworY2xhc3MgQ29uc3RyYWluZWRWYWx1ZSB7CitwdWJsaWM6CisgICAgQ29uc3RyYWluZWRWYWx1
ZSgpCisgICAgeworICAgIH0KKworICAgIENvbnN0cmFpbmVkVmFsdWUoVmFsdWUqIHZhbHVlKQor
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9yZXAoVmFsdWVSZXA6OkFueSkK
KyAgICB7CisgICAgfQorCisgICAgQ29uc3RyYWluZWRWYWx1ZShWYWx1ZSogdmFsdWUsIGNvbnN0
IFZhbHVlUmVwJiByZXApCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX3Jl
cChyZXApCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlIHx8IG1fcmVwOyB9CisKKyAgICBWYWx1ZSogdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgY29uc3QgVmFsdWVSZXAmIHJlcCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwOyB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgVmFsdWUqIG1fdmFsdWU7CisgICAgVmFsdWVSZXAgbV9yZXA7Cit9
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CisKKyNlbmRpZiAvLyBCM0NvbnN0cmFpbmVkVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb250cm9sVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnRyb2xWYWx1ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnRyb2xWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNCYXNp
Y0Jsb2NrLmgiCi0jaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCkBAIC01MCw5ICs0OSwxMCBAQCB2b2lkIENvbnRyb2xWYWx1ZTo6Y29u
dmVydFRvSnVtcChjb25zdCBGCiAgICAgdGhpcy0+b3duZXIgPSBvd25lcjsKIH0KIAotdm9pZCBD
b250cm9sVmFsdWU6OmR1bXBNZXRhKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit2b2lkIENvbnRy
b2xWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKLSAgICBvdXQucHJpbnQobGlzdER1bXAobV9zdWNjZXNzb3JzKSk7CisgICAgZm9y
IChGcmVxdWVudGVkQmxvY2sgc3VjY2Vzc29yIDogbV9zdWNjZXNzb3JzKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIHN1Y2Nlc3Nvcik7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29udHJvbFZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29udHJvbFZhbHVlLmgJKHJldmlzaW9u
IDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnRyb2xWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnRU
b0p1bXAoY29uc3QgRnJlcXVlbnRlZEJsb2NrJiBkZXN0aW5hdGlvbik7CiAKIHByb3RlY3RlZDoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wTWV0YShDb21tYVByaW50
ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVXNlIHRoaXMgZm9y
IHN1YmNsYXNzZXMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDE5MTk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MzksMjYgKzczOSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChwYXRjaHBv
aW50VmFsdWUtPnR5cGUoKSAhPSBWb2lkKQogICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZCh0
bXAocGF0Y2hwb2ludFZhbHVlKSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhdGNocG9pbnRWYWx1ZS0+bnVtQ2hpbGRyZW4oKTsgKytpKSB7Ci0gICAgICAgICAgICBWYWx1
ZVJlcCByZXA7Ci0gICAgICAgICAgICBpZiAoaSA8IHBhdGNocG9pbnRWYWx1ZS0+c3RhY2ttYXAu
cmVwcygpLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXAgPSBwYXRjaHBvaW50VmFsdWUtPnN0
YWNrbWFwLnJlcHMoKVtpXTsKLQorICAgICAgICBmb3IgKENvbnN0cmFpbmVkVmFsdWUgdmFsdWUg
OiBwYXRjaHBvaW50VmFsdWUtPmNvbnN0cmFpbmVkQ2hpbGRyZW4oKSkgewogICAgICAgICAgICAg
QXJnIGFyZzsKLSAgICAgICAgICAgIHN3aXRjaCAocmVwLmtpbmQoKSkgeworICAgICAgICAgICAg
c3dpdGNoICh2YWx1ZS5yZXAoKS5raW5kKCkpIHsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6
OkFueToKLSAgICAgICAgICAgICAgICBhcmcgPSBpbW1PclRtcChwYXRjaHBvaW50VmFsdWUtPmNo
aWxkKGkpKTsKKyAgICAgICAgICAgICAgICBhcmcgPSBpbW1PclRtcCh2YWx1ZS52YWx1ZSgpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVS
ZWdpc3RlcjoKLSAgICAgICAgICAgICAgICBhcmcgPSB0bXAocGF0Y2hwb2ludFZhbHVlLT5jaGls
ZChpKSk7CisgICAgICAgICAgICAgICAgYXJnID0gdG1wKHZhbHVlLnZhbHVlKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6UmVnaXN0ZXI6Ci0g
ICAgICAgICAgICAgICAgYXJnID0gVG1wKHJlcC5yZWcoKSk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kKE1vdmUsIGltbU9yVG1wKHBhdGNocG9pbnRWYWx1ZS0+Y2hpbGQoaSkpLCBhcmcpOworICAg
ICAgICAgICAgICAgIGFyZyA9IFRtcCh2YWx1ZS5yZXAoKS5yZWcoKSk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kKE1vdmUsIGltbU9yVG1wKHZhbHVlLnZhbHVlKCkpLCBhcmcpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoK
LSAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcocmVwLm9mZnNldEZyb21TUCgpKTsK
LSAgICAgICAgICAgICAgICBhcHBlbmRTdG9yZShwYXRjaHBvaW50VmFsdWUtPmNoaWxkKGkpLCBh
cmcpOworICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5vZmZz
ZXRGcm9tU1AoKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUoKSwg
YXJnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsMTAgKzU4LDEwIEBAIHNpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUo
KSBjb24KICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5VmFsdWU6OmR1bXBNZXRhKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit2b2lkIE1lbW9yeVZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNv
bW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmIChtX29mZnNldCkKLSAgICAg
ICAgb3V0LnByaW50KCJvZmZzZXQgPSAiLCBtX29mZnNldCk7CisgICAgICAgIG91dC5wcmludChj
b21tYSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJKHJldmlz
aW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBhY2Nl
c3NCeXRlU2l6ZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBkdW1wTWV0YShQcmlu
dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcE1ldGEoQ29tbWFQcmludGVy
JiBjb21tYSwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgUHJvY2VkdXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UGF0Y2hwb2ludFNwZWNpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NCw5ICs4NCw4IEBAIGJvb2wgUGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c1N0YWNrKElu
c3QKIENDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUoCiAgICAg
SW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0
KQogewotICAgIFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luOwotICAgIFN0YWNrbWFwKiBzdGFj
a21hcCA9IHZhbHVlLT5zdGFja21hcCgpOwotICAgIEFTU0VSVChzdGFja21hcCk7CisgICAgU3Rh
Y2ttYXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKKyAg
ICBBU1NFUlQodmFsdWUpOwogCiAgICAgVmVjdG9yPFZhbHVlUmVwPiByZXBzOwogICAgIHVuc2ln
bmVkIG9mZnNldCA9IDE7CkBAIC05NCwxMyArOTMsMTIgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIFBh
dGNocG9pbnRTcGVjaWFsOjpnZQogICAgICAgICByZXBzLmFwcGVuZChyZXBGb3JBcmcoKmNvbnRl
eHQuY29kZSwgaW5zdC5hcmdzW29mZnNldCsrXSkpOwogICAgIGFwcGVuZFJlcHNJbXBsKGNvbnRl
eHQsIG9mZnNldCwgaW5zdCwgcmVwcyk7CiAgICAgCi0gICAgU3RhY2ttYXA6OkdlbmVyYXRpb25Q
YXJhbXMgcGFyYW1zOworICAgIFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyBwYXJhbXM7CiAgICAg
cGFyYW1zLnZhbHVlID0gdmFsdWU7Ci0gICAgcGFyYW1zLnN0YWNrbWFwID0gc3RhY2ttYXA7CiAg
ICAgcGFyYW1zLnJlcHMgPSByZXBzOwotICAgIHBhcmFtcy51c2VkUmVnaXN0ZXJzID0gc3RhY2tt
YXAtPm1fdXNlZFJlZ2lzdGVyczsKKyAgICBwYXJhbXMudXNlZFJlZ2lzdGVycyA9IHZhbHVlLT5t
X3VzZWRSZWdpc3RlcnM7CiAKLSAgICBzdGFja21hcC0+bV9nZW5lcmF0b3ItPnJ1bihqaXQsIHBh
cmFtcyk7CisgICAgdmFsdWUtPm1fZ2VuZXJhdG9yLT5ydW4oaml0LCBwYXJhbXMpOwogCiAgICAg
cmV0dXJuIENDYWxsSGVscGVyczo6SnVtcCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUGF0Y2hwb2ludFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQYXRjaHBvaW50VmFsdWUuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50VmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw5ICszNCw5IEBAIFBhdGNocG9pbnRWYWx1ZTo6flBhdGNocG9pbnRWYWx1ZSgp
CiB7CiB9CiAKLXZvaWQgUGF0Y2hwb2ludFZhbHVlOjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0
KSBjb25zdAorUGF0Y2hwb2ludFZhbHVlOjpQYXRjaHBvaW50VmFsdWUodW5zaWduZWQgaW5kZXgs
IFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbikKKyAgICA6IFN0YWNrbWFwVmFsdWUoaW5kZXgsIFBh
dGNocG9pbnQsIHR5cGUsIG9yaWdpbikKIHsKLSAgICBvdXQucHJpbnQoInN0YWNrbWFwID0gIiwg
c3RhY2ttYXApOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRWYWx1ZS5oCShyZXZpc2lvbiAxOTE5NjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50VmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMzcgKzI4LDIwIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5j
bHVkZSAiQjNTdGFja21hcC5oIgotI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlICJCM1N0
YWNrbWFwVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLWNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFBhdGNocG9pbnRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitjbGFz
cyBQYXRjaHBvaW50VmFsdWUgOiBwdWJsaWMgU3RhY2ttYXBWYWx1ZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gUGF0
Y2hwb2ludDsgfQogCiAgICAgflBhdGNocG9pbnRWYWx1ZSgpOwogCi0gICAgU3RhY2ttYXAgc3Rh
Y2ttYXA7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RUeXBlPgotICAgIFBhdGNocG9pbnRWYWx1ZSh1bnNp
Z25lZCBpbmRleCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBMaXN0VHlwZSYmIGNoaWxkcmVu
KQotICAgICAgICA6IFZhbHVlKGluZGV4LCBQYXRjaHBvaW50LCB0eXBlLCBvcmlnaW4sIHN0ZDo6
Zm9yd2FyZDxMaXN0VHlwZT4oY2hpbGRyZW4pKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBJdCdz
IHRvdGFsbHkgZmluZSB0byBjcmVhdGUgYSBQYXRjaHBvaW50VmFsdWUgd2l0aG91dCBhbnkgY2hp
bGRyZW4sIGFuZCB0aGVuIGFwcGVuZCB0aGUKLSAgICAvLyBjaGlsZHJlbiBhcyB5b3UgYnVpbGQg
dXAgdGhlIHN0YWNrbWFwLgotICAgIFBhdGNocG9pbnRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgVHlw
ZSB0eXBlLCBPcmlnaW4gb3JpZ2luKQotICAgICAgICA6IFZhbHVlKGluZGV4LCBQYXRjaHBvaW50
LCB0eXBlLCBvcmlnaW4sIEFkamFjZW5jeUxpc3QoKSkKLSAgICB7Ci0gICAgfQorICAgIEpTX0VY
UE9SVF9QUklWQVRFIFBhdGNocG9pbnRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgVHlwZSwgT3JpZ2lu
KTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2tTbG90VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrU2xvdFZhbHVlLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tTbG90VmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw5ICszNCw5IEBAIFN0YWNrU2xvdFZhbHVlOjp+U3RhY2tTbG90VmFsdWUoKQog
ewogfQogCi12b2lkIFN0YWNrU2xvdFZhbHVlOjpkdW1wTWV0YShQcmludFN0cmVhbSYgb3V0KSBj
b25zdAordm9pZCBTdGFja1Nsb3RWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoImJ5dGVTaXplID0gIiwg
bV9ieXRlU2l6ZSwgIiwga2luZCA9ICIsIG1fa2luZCk7CisgICAgb3V0LnByaW50KGNvbW1hLCAi
Ynl0ZVNpemUgPSAiLCBtX2J5dGVTaXplLCAiLCBraW5kID0gIiwgbV9raW5kKTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja1Nsb3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrU2xvdFZhbHVlLmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1N0YWNrU2xvdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1ldGEoUHJpbnRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYs
IFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEFpcjo6U3RhY2tTbG90OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Rh
Y2ttYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNr
bWFwLmNwcAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkIzU3RhY2ttYXAuaCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRl
IDx3dGYvTGlzdER1bXAuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7Ci0KLVN0
YWNrbWFwOjpTdGFja21hcCgpCi17Ci19Ci0KLVN0YWNrbWFwOjp+U3RhY2ttYXAoKQotewotfQot
Ci12b2lkIFN0YWNrbWFwOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0
LnByaW50KAotICAgICAgICAie3JlcHMgPSAiLCBsaXN0RHVtcChtX3JlcHMpLCAiLCBnZW5lcmF0
b3IgPSAiLCBSYXdQb2ludGVyKG1fZ2VuZXJhdG9yLmdldCgpKSwKLSAgICAgICAgIiwgY2xvYmJl
cmVkID0gIiwgbV9jbG9iYmVyZWQsICIsIHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3Rl
cnMsICJ9Iik7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwotCi0jZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcC5oCShy
ZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQjNTdGFja21hcF9oCi0jZGVmaW5lIEIz
U3RhY2ttYXBfaAotCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQotI2luY2x1ZGUgIkIzVmFsdWVSZXAu
aCIKLSNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgot
I2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewotCi1jbGFzcyBDaGVja1NwZWNpYWw7Ci1jbGFzcyBTdGFja21hcFNwZWNpYWw7Ci1jbGFz
cyBWYWx1ZTsKLQotY2xhc3MgU3RhY2ttYXAgewotcHVibGljOgotICAgIHN0cnVjdCBHZW5lcmF0
aW9uUGFyYW1zIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgVmFsdWUgY29udGFpbmluZyB0aGUg
c3RhY2ttYXAuCi0gICAgICAgIFZhbHVlKiB2YWx1ZTsKLQotICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBzdGFja21hcC4KLSAgICAgICAgU3RhY2ttYXAqIHN0YWNrbWFwOwotCi0gICAgICAgIC8vIFRo
aXMgdGVsbHMgeW91IHRoZSBhY3R1YWwgdmFsdWUgcmVwcmVzZW50YXRpb25zIHRoYXQgd2VyZSBj
aG9zZW4uCi0gICAgICAgIFZlY3RvcjxWYWx1ZVJlcD4gcmVwczsKLQotICAgICAgICAvLyBUaGlz
IHRlbGxzIHlvdSB0aGUgcmVnaXN0ZXJzIHRoYXQgd2VyZSB1c2VkLgotICAgICAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzOwotICAgIH07Ci0gICAgCi0gICAgdHlwZWRlZiB2b2lkIEdlbmVy
YXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIGNvbnN0IEdlbmVyYXRpb25QYXJhbXMmKTsKLSAg
ICB0eXBlZGVmIFNoYXJlZFRhc2s8R2VuZXJhdG9yRnVuY3Rpb24+IEdlbmVyYXRvcjsKLSAgICAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBTdGFja21hcCgpOwotICAgIH5TdGFja21hcCgpOwotCi0g
ICAgLy8gQ29uc3RyYWluIGFuIGFyZ3VtZW50IHRvIHRoZSBWYWx1ZSB0aGF0IHVzZXMgdGhpcyBT
dGFja21hcC4gSW4gY2FzZSBvZiBhIFBhdGNocG9pbnQgdGhhdAotICAgIC8vIHJldHVybnMgYSB2
YWx1ZSwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSByZXN1bHQgdmFsdWUuIEluIGFsbCBvdGhl
ciBjYXNlcywgaW5kZXggemVybyByZWZlcnMKLSAgICAvLyB0byB0aGUgZmlyc3QgYXJndW1lbnQg
dG8gdGhhdCBWYWx1ZSwgZXZlbiBpZiB0aGF0IGFyZ3VtZW50IGlzIG5vdCBjb25zdHJhaW5hYmxl
LiBGb3IgZXhhbXBsZSwKLSAgICAvLyBpbiBhIENoZWNrQWRkIHZhbHVlLCBpdCB3b3VsZCBiZSBh
biBlcnJvciB0byBjb25zdHJhaW4gaW5kaWNlcyAwIGFuZCAxLiBJbiBhIENoZWNrIHZhbHVlLCBp
dAotICAgIC8vIHdvdWxkIGJlIGFuIGVycm9yIHRvIGNvbnN0cmFpbiBpbmRleCAwLiBCdXQsIHdo
ZW4gdGhlIGdlbmVyYXRpb24gY2FsbGJhY2sgaXMgY2FsbGVkLCB5b3UgY2FuCi0gICAgLy8gZGVw
ZW5kIG9uIHRoZSByZXBzIGZvciB0aG9zZSBpbmRpY2VzIGJlaW5nIGZpbGxlZCBpbi4KLSAgICB2
b2lkIGNvbnN0cmFpbih1bnNpZ25lZCBpbmRleCwgY29uc3QgVmFsdWVSZXAmIHJlcCkKLSAgICB7
Ci0gICAgICAgIGlmIChpbmRleCArIDEgPj0gbV9yZXBzLnNpemUoKSkKLSAgICAgICAgICAgIG1f
cmVwcy5ncm93KGluZGV4ICsgMSk7Ci0gICAgICAgIG1fcmVwc1tpbmRleF0gPSByZXA7Ci0gICAg
fQotCi0gICAgdm9pZCBhcHBlbmRDb25zdHJhaW50KGNvbnN0IFZhbHVlUmVwJiByZXApCi0gICAg
ewotICAgICAgICBtX3JlcHMuYXBwZW5kKHJlcCk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9y
PFZhbHVlUmVwPiYgcmVwcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwczsgfQotCi0gICAgdm9pZCBj
bG9iYmVyKGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQpCi0gICAgewotICAgICAgICBtX2Nsb2JiZXJl
ZC5tZXJnZShzZXQpOwotICAgIH0KLQotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBjbG9iYmVyZWQo
KSBjb25zdCB7IHJldHVybiBtX2Nsb2JiZXJlZDsgfQotCi0gICAgdm9pZCBzZXRHZW5lcmF0b3Io
UmVmUHRyPEdlbmVyYXRvcj4gZ2VuZXJhdG9yKQotICAgIHsKLSAgICAgICAgbV9nZW5lcmF0b3Ig
PSBnZW5lcmF0b3I7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAg
ICB2b2lkIHNldEdlbmVyYXRvcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotICAgIHsKLSAgICAg
ICAgbV9nZW5lcmF0b3IgPSBjcmVhdGVTaGFyZWRUYXNrPEdlbmVyYXRvckZ1bmN0aW9uPihmdW5j
dG9yKTsKLSAgICB9Ci0KLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAK
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIENoZWNrU3BlY2lhbDsKLSAgICBmcmllbmQgY2xh
c3MgUGF0Y2hwb2ludFNwZWNpYWw7Ci0gICAgZnJpZW5kIGNsYXNzIFN0YWNrbWFwU3BlY2lhbDsK
LSAgICAKLSAgICBWZWN0b3I8VmFsdWVSZXA+IG1fcmVwczsKLSAgICBSZWZQdHI8R2VuZXJhdG9y
PiBtX2dlbmVyYXRvcjsKLSAgICBSZWdpc3RlclNldCBtX2Nsb2JiZXJlZDsKLSAgICBSZWdpc3Rl
clNldCBtX3VzZWRSZWdpc3RlcnM7IC8vIFN0YWNrbWFwcyBjb3VsZCBiZSBmdXJ0aGVyIGR1cGxp
Y2F0ZWQgYnkgQWlyLCBidXQgdGhhdCdzIHVubGlrZWx5LCBzbyB3ZSBqdXN0IG1lcmdlIHRoZSB1
c2VkIHJlZ2lzdGVycyBzZXRzIGlmIHRoYXQgd2VyZSB0byBoYXBwZW4uCi19OwotCi19IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjMKLQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KLSNlbmRpZiAv
LyBCM1N0YWNrbWFwX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tt
YXBTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja21hcFNwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwyMSAr
NDYsMjEgQEAgU3RhY2ttYXBTcGVjaWFsOjp+U3RhY2ttYXBTcGVjaWFsKCkKIAogdm9pZCBTdGFj
a21hcFNwZWNpYWw6OnJlcG9ydFVzZWRSZWdpc3RlcnMoSW5zdCYgaW5zdCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiB7Ci0gICAgVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW47
Ci0gICAgU3RhY2ttYXAqIHN0YWNrbWFwID0gdmFsdWUtPnN0YWNrbWFwKCk7CisgICAgU3RhY2tt
YXBWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKKyAgICBB
U1NFUlQodmFsdWUpOwogCiAgICAgLy8gRklYTUU6IElmIHRoZSBJbnN0IHRoYXQgdXNlcyB0aGUg
U3RhY2ttYXBTcGVjaWFsIGdldHMgZHVwbGljYXRlZCwgdGhlbiB3ZSBlbmQgdXAgbWVyZ2luZyB1
c2VkCiAgICAgLy8gcmVnaXN0ZXIgc2V0cyBmcm9tIG11bHRpcGxlIHBsYWNlcy4gVGhpcyBjdXJy
ZW50bHkgd29uJ3QgaGFwcGVuIHNpbmNlIEFpciBkb2Vzbid0IGhhdmUgdGFpbGR1cAogICAgIC8v
IG9yIHRoaW5ncyBsaWtlIHRoYXQuIEJ1dCBtYXliZSBldmVudHVhbGx5IGl0IGNvdWxkIGJlIGEg
cHJvYmxlbS4KLSAgICBzdGFja21hcC0+bV91c2VkUmVnaXN0ZXJzLm1lcmdlKHVzZWRSZWdpc3Rl
cnMpOworICAgIHZhbHVlLT5tX3VzZWRSZWdpc3RlcnMubWVyZ2UodXNlZFJlZ2lzdGVycyk7CiB9
CiAKIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcFNwZWNpYWw6OmV4dHJhQ2xvYmJlcmVkUmVn
cyhJbnN0JiBpbnN0KQogewotICAgIFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luOwotICAgIFN0
YWNrbWFwKiBzdGFja21hcCA9IHZhbHVlLT5zdGFja21hcCgpOworICAgIFN0YWNrbWFwVmFsdWUq
IHZhbHVlID0gaW5zdC5vcmlnaW4tPmFzPFN0YWNrbWFwVmFsdWU+KCk7CisgICAgQVNTRVJUKHZh
bHVlKTsKIAotICAgIHJldHVybiBzdGFja21hcC0+Y2xvYmJlcmVkKCk7CisgICAgcmV0dXJuIHZh
bHVlLT5jbG9iYmVyZWQoKTsKIH0KIAogdm9pZCBTdGFja21hcFNwZWNpYWw6OmZvckVhY2hBcmdJ
bXBsKApAQCAtODYsMTYgKzg2LDEzIEBAIGJvb2wgU3RhY2ttYXBTcGVjaWFsOjppc1ZhbGlkSW1w
bCgKICAgICB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWly
QXJncywKICAgICBJbnN0JiBpbnN0KQogewotICAgIFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2lu
OworICAgIFN0YWNrbWFwVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4tPmFzPFN0YWNrbWFwVmFs
dWU+KCk7CisgICAgQVNTRVJUKHZhbHVlKTsKIAogICAgIC8vIENoZWNrIHRoYXQgaW5zYW5lIHRo
aW5ncyBoYXZlIG5vdCBoYXBwZW5lZC4KICAgICBBU1NFUlQoaW5zdC5hcmdzLnNpemUoKSA+PSBu
dW1JZ25vcmVkQWlyQXJncyk7CiAgICAgQVNTRVJUKHZhbHVlLT5jaGlsZHJlbigpLnNpemUoKSA+
PSBudW1JZ25vcmVkQjNBcmdzKTsKIAotICAgIFN0YWNrbWFwKiBzdGFja21hcCA9IHZhbHVlLT5z
dGFja21hcCgpOwotCi0gICAgQVNTRVJUKHN0YWNrbWFwKTsKLQogICAgIC8vIEZvciB0aGUgSW5z
dCB0byBiZSB2YWxpZCwgaXQgbmVlZHMgdG8gaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIGFyZ3Vt
ZW50cy4KICAgICBpZiAoaW5zdC5hcmdzLnNpemUoKSAtIG51bUlnbm9yZWRBaXJBcmdzICE9IHZh
bHVlLT5jaGlsZHJlbigpLnNpemUoKSAtIG51bUlnbm9yZWRCM0FyZ3MpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEzMCwxMSArMTI3LDExIEBAIGJvb2wgU3RhY2ttYXBTcGVjaWFsOjppc1Zh
bGlkSW1wbCgKICAgICB9CiAKICAgICAvLyBUaGUgbnVtYmVyIG9mIGNvbnN0cmFpbnRzIGhhcyB0
byBiZSBubyBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBCMyBjaGlsZHJlbi4KLSAgICBBU1NF
UlQoc3RhY2ttYXAtPm1fcmVwcy5zaXplKCkgPD0gdmFsdWUtPmNoaWxkcmVuKCkuc2l6ZSgpKTsK
KyAgICBBU1NFUlQodmFsdWUtPm1fcmVwcy5zaXplKCkgPD0gdmFsdWUtPmNoaWxkcmVuKCkuc2l6
ZSgpKTsKIAogICAgIC8vIFZlcmlmeSBhbnkgZXhwbGljaXRseSBzdXBwbGllZCBjb25zdHJhaW50
cy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1JZ25vcmVkQjNBcmdzOyBpIDwgc3RhY2ttYXAt
Pm1fcmVwcy5zaXplKCk7ICsraSkgewotICAgICAgICBWYWx1ZVJlcCYgcmVwID0gc3RhY2ttYXAt
Pm1fcmVwc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1JZ25vcmVkQjNBcmdzOyBpIDwg
dmFsdWUtPm1fcmVwcy5zaXplKCk7ICsraSkgeworICAgICAgICBWYWx1ZVJlcCYgcmVwID0gdmFs
dWUtPm1fcmVwc1tpXTsKICAgICAgICAgQXJnJiBhcmcgPSBpbnN0LmFyZ3NbaSAtIG51bUlnbm9y
ZWRCM0FyZ3MgKyBudW1JZ25vcmVkQWlyQXJnc107CiAKICAgICAgICAgc3dpdGNoIChyZXAua2lu
ZCgpKSB7CkBAIC0xNzEsMTkgKzE2OCwxOSBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6YWRtaXRz
U3RhY2tJbXBsKAogICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVuc2lnbmVkIG51bUln
bm9yZWRBaXJBcmdzLAogICAgIEluc3QmIGluc3QsIHVuc2lnbmVkIGFyZ0luZGV4KQogewotICAg
IFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luOwotICAgIFN0YWNrbWFwKiBzdGFja21hcCA9IHZh
bHVlLT5zdGFja21hcCgpOworICAgIFN0YWNrbWFwVmFsdWUqIHZhbHVlID0gaW5zdC5vcmlnaW4t
PmFzPFN0YWNrbWFwVmFsdWU+KCk7CisgICAgQVNTRVJUKHZhbHVlKTsKIAogICAgIHVuc2lnbmVk
IHN0YWNrbWFwQXJnSW5kZXggPSBhcmdJbmRleCAtIG51bUlnbm9yZWRBaXJBcmdzICsgbnVtSWdu
b3JlZEIzQXJnczsKIAotICAgIGlmIChzdGFja21hcEFyZ0luZGV4ID49IHN0YWNrbWFwLT5tX3Jl
cHMuc2l6ZSgpKSB7CisgICAgaWYgKHN0YWNrbWFwQXJnSW5kZXggPj0gdmFsdWUtPm1fcmVwcy5z
aXplKCkpIHsKICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZXJlIHdhcyBubyBjb25zdHJh
aW50LgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgLy8gV2Ugb25seSBh
ZG1pdCBzdGFjayBmb3IgQW55J3MsIHNpbmNlIFN0YWNrIGlzIG5vdCBhIHZhbGlkIGlucHV0IGNv
bnN0cmFpbnQsIGFuZCBTdGFja0FyZ3VtZW50CiAgICAgLy8gdHJhbnNsYXRlcyB0byBhIENhbGxB
cmcgaW4gQWlyLgotICAgIGlmIChzdGFja21hcC0+bV9yZXBzW3N0YWNrbWFwQXJnSW5kZXhdLmtp
bmQoKSA9PSBWYWx1ZVJlcDo6QW55KQorICAgIGlmICh2YWx1ZS0+bV9yZXBzW3N0YWNrbWFwQXJn
SW5kZXhdLmtpbmQoKSA9PSBWYWx1ZVJlcDo6QW55KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNr
bWFwU3BlY2lhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrbWFwU3BlY2lhbC5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBaXJTcGVjaWFsLmgiCi0jaW5jbHVk
ZSAiQjNTdGFja21hcC5oIgorI2luY2x1ZGUgIkIzVmFsdWVSZXAuaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrbWFwVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrbWFwVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2ttYXBWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNf
SklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworU3RhY2ttYXBWYWx1ZTo6
flN0YWNrbWFwVmFsdWUoKQoreworfQorCit2b2lkIFN0YWNrbWFwVmFsdWU6OmFwcGVuZChjb25z
dCBDb25zdHJhaW5lZFZhbHVlJiBjb25zdHJhaW5lZFZhbHVlKQoreworICAgIGlmIChjb25zdHJh
aW5lZFZhbHVlLnJlcCgpID09IFZhbHVlUmVwKFZhbHVlUmVwOjpBbnkpKSB7CisgICAgICAgIGNo
aWxkcmVuKCkuYXBwZW5kKGNvbnN0cmFpbmVkVmFsdWUudmFsdWUoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB3aGlsZSAobV9yZXBzLnNpemUoKSA8IG51bUNoaWxkcmVuKCkpCisg
ICAgICAgIG1fcmVwcy5hcHBlbmQoVmFsdWVSZXA6OkFueSk7CisKKyAgICBjaGlsZHJlbigpLmFw
cGVuZChjb25zdHJhaW5lZFZhbHVlLnZhbHVlKCkpOworICAgIG1fcmVwcy5hcHBlbmQoY29uc3Ry
YWluZWRWYWx1ZS5yZXAoKSk7Cit9CisKK3ZvaWQgU3RhY2ttYXBWYWx1ZTo6c2V0Q29uc3RyYWlu
ZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgY29uc3QgQ29uc3RyYWluZWRWYWx1ZSYgY29uc3RyYWlu
ZWRWYWx1ZSkKK3sKKyAgICBjaGlsZChpbmRleCkgPSBjb25zdHJhaW5lZFZhbHVlLnZhbHVlKCk7
CisgICAgc2V0Q29uc3RyYWludChpbmRleCwgY29uc3RyYWluZWRWYWx1ZS5yZXAoKSk7Cit9CisK
K3ZvaWQgU3RhY2ttYXBWYWx1ZTo6c2V0Q29uc3RyYWludCh1bnNpZ25lZCBpbmRleCwgY29uc3Qg
VmFsdWVSZXAmIHJlcCkKK3sKKyAgICBpZiAocmVwID09IFZhbHVlUmVwKFZhbHVlUmVwOjpBbnkp
KQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAobV9yZXBzLnNpemUoKSA8PSBpbmRleCkK
KyAgICAgICAgbV9yZXBzLmFwcGVuZChWYWx1ZVJlcDo6QW55KTsKKworICAgIG1fcmVwc1tpbmRl
eF0gPSByZXA7Cit9CisKK3ZvaWQgU3RhY2ttYXBWYWx1ZTo6ZHVtcENoaWxkcmVuKENvbW1hUHJp
bnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZm9yIChDb25zdHJh
aW5lZFZhbHVlIHZhbHVlIDogY29uc3RyYWluZWRDaGlsZHJlbigpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsIHZhbHVlKTsKK30KKwordm9pZCBTdGFja21hcFZhbHVlOjpkdW1wTWV0YShDb21t
YVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmlu
dCgKKyAgICAgICAgY29tbWEsICJnZW5lcmF0b3IgPSAiLCBSYXdQb2ludGVyKG1fZ2VuZXJhdG9y
LmdldCgpKSwgIiwgY2xvYmJlcmVkID0gIiwgbV9jbG9iYmVyZWQsCisgICAgICAgICIsIHVzZWRS
ZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMpOworfQorCitTdGFja21hcFZhbHVlOjpTdGFj
a21hcFZhbHVlKHVuc2lnbmVkIGluZGV4LCBPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUsIE9yaWdp
biBvcmlnaW4pCisgICAgOiBWYWx1ZShpbmRleCwgb3Bjb2RlLCB0eXBlLCBvcmlnaW4pCit7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEIzU3RhY2ttYXBWYWx1ZV9oCisjZGVmaW5l
IEIzU3RhY2ttYXBWYWx1ZV9oCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjND
b25zdHJhaW5lZFZhbHVlLmgiCisjaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgIkIzVmFs
dWVSZXAuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNl
dC5oIgorI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeworCitjbGFzcyBTdGFja21hcFZhbHVlOworCitzdHJ1Y3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zIHsKKyAgICAvLyBUaGlzIGlzIHRoZSBzdGFja21hcCB2YWx1ZSB0aGF0IHdl
J3JlIGdlbmVyYXRpbmcuCisgICAgU3RhY2ttYXBWYWx1ZSogdmFsdWU7CisgICAgCisgICAgLy8g
VGhpcyB0ZWxscyB5b3UgdGhlIGFjdHVhbCB2YWx1ZSByZXByZXNlbnRhdGlvbnMgdGhhdCB3ZXJl
IGNob3Nlbi4gVGhpcyBpcyB1c3VhbGx5IGRpZmZlcmVudAorICAgIC8vIGZyb20gdGhlIGNvbnN0
cmFpbnRzIHdlIHN1cHBsaWVkLgorICAgIFZlY3RvcjxWYWx1ZVJlcD4gcmVwczsKKyAgICAKKyAg
ICAvLyBUaGlzIHRlbGxzIHlvdSB0aGUgcmVnaXN0ZXJzIHRoYXQgd2VyZSB1c2VkLgorICAgIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7Cit9OworCit0eXBlZGVmIHZvaWQgU3RhY2ttYXBHZW5l
cmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKTsKK3R5cGVkZWYgU2hhcmVkVGFzazxTdGFja21hcEdlbmVyYXRvckZ1bmN0aW9uPiBTdGFj
a21hcEdlbmVyYXRvcjsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU3RhY2ttYXBWYWx1ZSA6
IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUg
b3Bjb2RlKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIG9wY29kZXMg
b2YgYWxsIHN1YmNsYXNzZXMuCisgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAgICAgIGNh
c2UgQ2hlY2tBZGQ6CisgICAgICAgIGNhc2UgQ2hlY2tTdWI6CisgICAgICAgIGNhc2UgQ2hlY2tN
dWw6CisgICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAgIGNhc2UgUGF0Y2hwb2ludDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgflN0YWNrbWFwVmFsdWUoKTsKKworICAg
IC8vIFVzZSB0aGlzIHRvIGFkZCBjaGlsZHJlbi4gTm90ZSB0aGF0IHlvdSBjb3VsZCBhbHNvIGFk
ZCBjaGlsZHJlbiBieSBkb2luZworICAgIC8vIGNoaWxkcmVuKCkuYXBwZW5kKCkuIFRoYXQgd2ls
bCB3b3JrIGZpbmUsIGJ1dCBpdCdzIG5vdCByZWNvbW1lbmRlZC4KKyAgICB2b2lkIGFwcGVuZChj
b25zdCBDb25zdHJhaW5lZFZhbHVlJik7CisKKyAgICBjb25zdCBWZWN0b3I8VmFsdWVSZXA+JiBy
ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBzOyB9CisKKyAgICB2b2lkIGNsb2JiZXIoY29uc3Qg
UmVnaXN0ZXJTZXQmIHNldCkKKyAgICB7CisgICAgICAgIG1fY2xvYmJlcmVkLm1lcmdlKHNldCk7
CisgICAgfQorCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGNsb2JiZXJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xvYmJlcmVkOyB9CisKKyAgICB2b2lkIHNldEdlbmVyYXRvcihSZWZQdHI8U3RhY2tt
YXBHZW5lcmF0b3I+IGdlbmVyYXRvcikKKyAgICB7CisgICAgICAgIG1fZ2VuZXJhdG9yID0gZ2Vu
ZXJhdG9yOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9p
ZCBzZXRHZW5lcmF0b3IoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIG1f
Z2VuZXJhdG9yID0gY3JlYXRlU2hhcmVkVGFzazxTdGFja21hcEdlbmVyYXRvckZ1bmN0aW9uPihm
dW5jdG9yKTsKKyAgICB9CisKKyAgICBDb25zdHJhaW5lZFZhbHVlIGNvbnN0cmFpbmVkQ2hpbGQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQ29uc3RyYWluZWRW
YWx1ZShjaGlsZChpbmRleCksIGluZGV4IDwgbV9yZXBzLnNpemUoKSA/IG1fcmVwc1tpbmRleF0g
OiBWYWx1ZVJlcCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbnN0cmFpbmVkQ2hpbGQodW5z
aWduZWQgaW5kZXgsIGNvbnN0IENvbnN0cmFpbmVkVmFsdWUmKTsKKyAgICAKKyAgICB2b2lkIHNl
dENvbnN0cmFpbnQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFZhbHVlUmVwJik7CisKKyAgICBjbGFz
cyBDb25zdHJhaW5lZFZhbHVlQ29sbGVjdGlvbiB7CisgICAgcHVibGljOgorICAgICAgICBDb25z
dHJhaW5lZFZhbHVlQ29sbGVjdGlvbihjb25zdCBTdGFja21hcFZhbHVlJiB2YWx1ZSkKKyAgICAg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUubnVtQ2hpbGRyZW4oKTsgfQor
ICAgICAgICAKKyAgICAgICAgQ29uc3RyYWluZWRWYWx1ZSBhdCh1bnNpZ25lZCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZS5jb25zdHJhaW5lZENoaWxkKGluZGV4KTsgfQorCisgICAgICAg
IENvbnN0cmFpbmVkVmFsdWUgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1
cm4gYXQoaW5kZXgpOyB9CisKKyAgICAgICAgY2xhc3MgaXRlcmF0b3IgeworICAgICAgICBwdWJs
aWM6CisgICAgICAgICAgICBpdGVyYXRvcigpCisgICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rp
b24obnVsbHB0cikKKyAgICAgICAgICAgICAgICAsIG1faW5kZXgoMCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaXRlcmF0b3IoY29uc3QgQ29uc3RyYWluZWRW
YWx1ZUNvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIHVuc2lnbmVkIGluZGV4KQorICAgICAgICAgICAg
ICAgIDogbV9jb2xsZWN0aW9uKCZjb2xsZWN0aW9uKQorICAgICAgICAgICAgICAgICwgbV9pbmRl
eChpbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29u
c3RyYWluZWRWYWx1ZSBvcGVyYXRvciooKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBtX2NvbGxlY3Rpb24tPmF0KG1faW5kZXgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbV9pbmRleCsrOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9j
b2xsZWN0aW9uID09IG90aGVyLm1fY29sbGVjdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGNvbnN0IENv
bnN0cmFpbmVkVmFsdWVDb2xsZWN0aW9uKiBtX2NvbGxlY3Rpb247CisgICAgICAgICAgICB1bnNp
Z25lZCBtX2luZGV4OworICAgICAgICB9OworCisgICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CisgICAgICAgIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBjb25zdCBTdGFja21hcFZhbHVlJiBtX3ZhbHVlOworICAgIH07CisKKyAgICBD
b25zdHJhaW5lZFZhbHVlQ29sbGVjdGlvbiBjb25zdHJhaW5lZENoaWxkcmVuKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb25zdHJhaW5lZFZhbHVlQ29sbGVjdGlvbigqdGhpcyk7Cisg
ICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBkdW1wQ2hpbGRyZW4oQ29tbWFQcmludGVyJiwg
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJp
bnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdGFja21hcFZhbHVl
KHVuc2lnbmVkIGluZGV4LCBPcGNvZGUsIFR5cGUsIE9yaWdpbik7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIENoZWNrU3BlY2lhbDsKKyAgICBmcmllbmQgY2xhc3MgUGF0Y2hwb2ludFNw
ZWNpYWw7CisgICAgZnJpZW5kIGNsYXNzIFN0YWNrbWFwU3BlY2lhbDsKKyAgICAKKyAgICBWZWN0
b3I8VmFsdWVSZXA+IG1fcmVwczsKKyAgICBSZWZQdHI8U3RhY2ttYXBHZW5lcmF0b3I+IG1fZ2Vu
ZXJhdG9yOworICAgIFJlZ2lzdGVyU2V0IG1fY2xvYmJlcmVkOworICAgIFJlZ2lzdGVyU2V0IG1f
dXNlZFJlZ2lzdGVyczsgLy8gU3RhY2ttYXBzIGNvdWxkIGJlIGZ1cnRoZXIgZHVwbGljYXRlZCBi
eSBBaXIsIGJ1dCB0aGF0J3MgdW5saWtlbHksIHNvIHdlIGp1c3QgbWVyZ2UgdGhlIHVzZWQgcmVn
aXN0ZXJzIHNldHMgaWYgdGhhdCB3ZXJlIHRvIGhhcHBlbi4KK307CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzU3Rh
Y2ttYXBWYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N3aXRjaFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hW
YWx1ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N3aXRjaFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDEyIEBAIHZvaWQg
U3dpdGNoVmFsdWU6OmFwcGVuZENhc2UoY29uc3QgU3dpdGMKICAgICBtX3ZhbHVlcy5hcHBlbmQo
c3dpdGNoQ2FzZS5jYXNlVmFsdWUoKSk7CiB9CiAKLXZvaWQgU3dpdGNoVmFsdWU6OmR1bXBNZXRh
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit2b2lkIFN3aXRjaFZhbHVlOjpkdW1wTWV0YShDb21t
YVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIC8vIFRoaXMg
ZGVzdHJ1Y3RpdmVseSBvdmVycmlkZXMgQ29udHJvbFZhbHVlJ3MgZHVtcE1ldGEoKS4KLSAgICBv
dXQucHJpbnQobGlzdER1bXAoKnRoaXMpLCAiLCBmYWxsVGhyb3VnaCA9ICIsIGZhbGxUaHJvdWdo
KCkpOworICAgIGZvciAoU3dpdGNoQ2FzZSBzd2l0Y2hDYXNlIDogKnRoaXMpCisgICAgICAgIG91
dC5wcmludChjb21tYSwgc3dpdGNoQ2FzZSk7CisgICAgb3V0LnByaW50KGNvbW1hLCAiZmFsbFRo
cm91Z2ggPSAiLCBmYWxsVGhyb3VnaCgpKTsKIH0KIAogU3dpdGNoVmFsdWU6OlN3aXRjaFZhbHVl
KHVuc2lnbmVkIGluZGV4LCBPcmlnaW4gb3JpZ2luLCBjb25zdCBGcmVxdWVudGVkQmxvY2smIGZh
bGxUaHJvdWdoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3dpdGNoVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hWYWx1ZS5o
CShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTd2l0Y2hW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgYXBwZW5kQ2FzZShjb25zdCBTd2l0Y2hDYXNlJik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lk
IGR1bXBNZXRhKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wTWV0
YShDb21tYVByaW50ZXImLCBQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNVcHNpbG9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Vwc2lsb25WYWx1ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Vwc2lsb25WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDE0ICszNCwxNCBAQCBVcHNpbG9uVmFsdWU6On5VcHNpbG9uVmFsdWUoKQogewogfQogCi12b2lk
IFVwc2lsb25WYWx1ZTo6ZHVtcE1ldGEoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgVXBz
aWxvblZhbHVlOjpkdW1wTWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewogICAgIGlmIChtX3BoaSkKLSAgICAgICAgb3V0LnByaW50KCJeIiwgbV9waGkt
PmluZGV4KCkpOworICAgICAgICBvdXQucHJpbnQoY29tbWEsICJeIiwgbV9waGktPmluZGV4KCkp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBXZSB3YW50IHRvIGhhdmUgYSBkdW1wIGZvciB3aGVu
IHRoZSBQaGkgaXNuJ3Qgc2V0IHlldCwgc2luY2UgYWx0aG91Z2ggc3VjaCBJUiB3b24ndCBwYXNz
CiAgICAgICAgIC8vIHZhbGlkYXRpb24sIHdlIG1heSBoYXZlIHN1Y2ggSVIgYXMgYW4gaW50ZXJt
ZWRpYXRlIHN0ZXAuCi0gICAgICAgIG91dC5wcmludCgiXihudWxsKSIpOworICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJeKG51bGwpIik7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNVcHNpbG9uVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNVcHNpbG9uVmFsdWUuaAkocmV2aXNpb24gMTkxOTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVXBzaWxvblZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZHVtcE1l
dGEoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1h
UHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWxpZGF0ZS5jcHAJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDE2ICszMDgsMTcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlU3RhY2ttYXAoVmFsdWUqIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgU3RhY2ttYXAqIHN0YWNrbWFwID0gdmFsdWUtPnN0YWNrbWFwKCk7Ci0g
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID49IHN0YWNrbWFwLT5yZXBzKCku
c2l6ZSgpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICBTdGFja21hcFZhbHVlKiBzdGFja21h
cCA9IHZhbHVlLT5hczxTdGFja21hcFZhbHVlPigpOworICAgICAgICBWQUxJREFURShzdGFja21h
cCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgVkFMSURBVEUoc3RhY2ttYXAtPm51bUNoaWxk
cmVuKCkgPj0gc3RhY2ttYXAtPnJlcHMoKS5zaXplKCksICgiQXQgIiwgKnN0YWNrbWFwKSk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGFja21hcC0+cmVwcygpLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBjb25zdCBWYWx1ZVJlcCYgcmVwID0gc3RhY2ttYXAtPnJlcHMo
KVtpXTsKICAgICAgICAgICAgIGlmIChyZXAua2luZCgpICE9IFZhbHVlUmVwOjpSZWdpc3RlcikK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChyZXAucmVnKCkuaXNH
UFIoKSkKLSAgICAgICAgICAgICAgICBWQUxJREFURShpc0ludCh2YWx1ZS0+Y2hpbGQoaSktPnR5
cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQo
c3RhY2ttYXAtPmNoaWxkKGkpLT50eXBlKCkpLCAoIkF0ICIsICpzdGFja21hcCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPmNoaWxk
KGkpLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KGlzRmxvYXQoc3RhY2ttYXAtPmNoaWxkKGkpLT50eXBlKCkpLCAoIkF0ICIsICpzdGFja21hcCkp
OwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDI1ICs3OCwyNCBAQCB2b2lkIFZhbHVlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KGR1bXBQcmVmaXgsIG1faW5k
ZXgpOwogfQogCit2b2lkIFZhbHVlOjpkdW1wQ2hpbGRyZW4oQ29tbWFQcmludGVyJiBjb21tYSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBmb3IgKFZhbHVlKiBjaGlsZCA6IGNoaWxk
cmVuKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXAoY2hpbGQpKTsKK30K
Kwogdm9pZCBWYWx1ZTo6ZGVlcER1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBv
dXQucHJpbnQobV90eXBlLCAiICIsICp0aGlzLCAiID0gIiwgbV9vcGNvZGUpOwogCiAgICAgb3V0
LnByaW50KCIoIik7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwotICAgIGZvciAoVmFsdWUqIGNo
aWxkIDogY2hpbGRyZW4oKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChj
aGlsZCkpOworICAgIGR1bXBDaGlsZHJlbihjb21tYSwgb3V0KTsKIAogICAgIGlmIChtX29yaWdp
bikKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBtX29yaWdpbik7CiAKLSAgICB7Ci0gICAgICAg
IFN0cmluZ1ByaW50U3RyZWFtIHN0cmluZ091dDsKLSAgICAgICAgZHVtcE1ldGEoc3RyaW5nT3V0
KTsKLSAgICAgICAgQ1N0cmluZyBzdHJpbmcgPSBzdHJpbmdPdXQudG9DU3RyaW5nKCk7Ci0gICAg
ICAgIGlmIChzdHJpbmcubGVuZ3RoKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIHN0
cmluZyk7Ci0gICAgfQorICAgIGR1bXBNZXRhKGNvbW1hLCBvdXQpOwogCiAgICAgewogICAgICAg
ICBDU3RyaW5nIHN0cmluZyA9IHRvQ1N0cmluZyhlZmZlY3RzKCkpOwpAQCAtMjg0LDcgKzI4Myw3
IEBAIHZvaWQgVmFsdWU6OnBlcmZvcm1TdWJzdGl0dXRpb24oKQogICAgIH0KIH0KIAotdm9pZCBW
YWx1ZTo6ZHVtcE1ldGEoUHJpbnRTdHJlYW0mKSBjb25zdAordm9pZCBWYWx1ZTo6ZHVtcE1ldGEo
Q29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdAogewogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJCM09wY29kZS5oIgogI2luY2x1ZGUgIkIzT3JpZ2luLmgiCiAjaW5jbHVkZSAiQjNU
eXBlLmgiCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTQwLDcgKzQxLDYg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEJhc2ljQmxvY2s7CiBj
bGFzcyBQcm9jZWR1cmU7Ci1jbGFzcyBTdGFja21hcDsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgVmFsdWUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZhbHVlKTsKQEAgLTE0OSwxNSAr
MTQ5LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICBFZmZlY3RzIGVmZmVjdHMoKSBjb25zdDsKIAot
ICAgIFN0YWNrbWFwKiBzdGFja21hcCgpOwotCiAgICAgLy8gTWFrZXMgc3VyZSB0aGF0IG5vbmUg
b2YgdGhlIGNoaWxkcmVuIGFyZSBJZGVudGl0eSdzLiBJZiBhIGNoaWxkIHBvaW50cyB0byBJZGVu
dGl0eSwgdGhpcyB3aWxsCiAgICAgLy8gcmVwb2ludCBpdCBhdCB0aGUgSWRlbnRpdHkncyBjaGls
ZC4gRm9yIHNpbXBsaWNpdHksIHRoaXMgd2lsbCBmb2xsb3cgYXJiaXRyYXJpbHkgbG9uZyBjaGFp
bnMKICAgICAvLyBvZiBJZGVudGl0eSdzLgogICAgIHZvaWQgcGVyZm9ybVN1YnN0aXR1dGlvbigp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGR1bXBNZXRhKFByaW50U3RyZWFtJikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGR1bXBDaGlsZHJlbihDb21tYVByaW50ZXImLCBQcmlu
dFN0cmVhbSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkdW1wTWV0YShDb21tYVByaW50ZXIm
LCBQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
UHJvY2VkdXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVz
LmgJKHJldmlzaW9uIDE5MTk2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMTUgKzE3OCw2IEBAIGlubGluZSBUIFZh
bHVlOjphc051bWJlcigpIGNvbnN0CiAgICAgfQogfQogCi1pbmxpbmUgU3RhY2ttYXAqIFZhbHVl
OjpzdGFja21hcCgpCi17Ci0gICAgaWYgKENoZWNrVmFsdWUqIGNoZWNrID0gYXM8Q2hlY2tWYWx1
ZT4oKSkKLSAgICAgICAgcmV0dXJuICZjaGVjay0+c3RhY2ttYXA7Ci0gICAgaWYgKFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IGFzPFBhdGNocG9pbnRWYWx1ZT4oKSkKLSAgICAgICAgcmV0
dXJuICZwYXRjaHBvaW50LT5zdGFja21hcDsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjEsNiArMTIxLDI5IEBAIHB1YmxpYzoKIAogICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJu
IG1fa2luZDsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhbHVlUmVwJiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChraW5kKCkgIT0gb3RoZXIua2luZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBj
YXNlIFJlZ2lzdGVyOgorICAgICAgICAgICAgcmV0dXJuIHUucmVnID09IG90aGVyLnUucmVnOwor
ICAgICAgICBjYXNlIFN0YWNrOgorICAgICAgICAgICAgcmV0dXJuIHUub2Zmc2V0RnJvbUZQID09
IG90aGVyLnUub2Zmc2V0RnJvbUZQOworICAgICAgICBjYXNlIFN0YWNrQXJndW1lbnQ6CisgICAg
ICAgICAgICByZXR1cm4gdS5vZmZzZXRGcm9tU1AgPT0gb3RoZXIudS5vZmZzZXRGcm9tU1A7Cisg
ICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAgICAgICByZXR1cm4gdS52YWx1ZSA9PSBvdGhl
ci51LnZhbHVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVmFsdWVSZXAmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
IH0KKwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBraW5kKCkg
IT0gQW55OyB9CiAKICAgICBib29sIGlzQW55KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEFu
eTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDE5MTk2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjA3LDE1ICsxMjA3LDExIEBAIHZvaWQgdGVzdFNpbXBsZVBhdGNocG9pbnQoKQogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFyZzEgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CiAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAg
VmFsdWU6OkFkamFjZW5jeUxpc3QgY2hpbGRyZW47Ci0gICAgY2hpbGRyZW4uYXBwZW5kKGFyZzEp
OwotICAgIGNoaWxkcmVuLmFwcGVuZChhcmcyKTsKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPigKLSAgICAgICAgcHJvYywg
SW50MzIsIE9yaWdpbigpLCBXVEY6Om1vdmUoY2hpbGRyZW4pKTsKLSAgICBwYXRjaHBvaW50LT5z
dGFja21hcC5hcHBlbmRDb25zdHJhaW50KFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotICAgIHBh
dGNocG9pbnQtPnN0YWNrbWFwLmFwcGVuZENvbnN0cmFpbnQoVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cik7Ci0gICAgcGF0Y2hwb2ludC0+c3RhY2ttYXAuc2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcDo6R2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50
LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7
CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6
OlNvbWVSZWdpc3RlcikpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAg
WyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAzKTsKICAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkpOwogICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnJlcHNbMV0uaXNHUFIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCShyZXZpc2lvbiAxOTE5NjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBaXJJbnN0LmgiCiAjaW5jbHVkZSAiQWlyT3Bjb2Rl
VXRpbHMuaCIKICNpbmNsdWRlICJBaXJTcGVjaWFsLmgiCi0jaW5jbHVkZSAiQjNTdGFja21hcC5o
IgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewo=
</data>
<flag name="review"
          id="289793"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>