<?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>188900</bug_id>
          
          <creation_ts>2018-08-23 13:35:32 -0700</creation_ts>
          <short_desc>Move vmEntryGlobalObject() to VM from CallFrame.</short_desc>
          <delta_ts>2018-08-23 15:57:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1453198</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-23 13:35:32 -0700</bug_when>
    <thetext>It doesn&apos;t really belong in CallFrame to begin with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453200</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-23 13:36:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/43655753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453230</commentid>
    <comment_count>2</comment_count>
      <attachid>347955</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-23 14:42:06 -0700</bug_when>
    <thetext>Created attachment 347955
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453239</commentid>
    <comment_count>3</comment_count>
      <attachid>347958</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-23 15:01:53 -0700</bug_when>
    <thetext>Created attachment 347958
proposed patch w/ GTK build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453266</commentid>
    <comment_count>4</comment_count>
      <attachid>347958</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-08-23 15:51:36 -0700</bug_when>
    <thetext>Comment on attachment 347958
proposed patch w/ GTK build fix.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453273</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-23 15:57:48 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r235254: &lt;http://trac.webkit.org/r235254&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347955</attachid>
            <date>2018-08-23 14:42:06 -0700</date>
            <delta_ts>2018-08-23 15:01:53 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-188900.patch</filename>
            <type>text/plain</type>
            <size>40766</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1MjQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBA
CisyMDE4LTA4LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHZtRW50cnlHbG9iYWxPYmplY3QoKSB0byBWTSBmcm9tIENhbGxGcmFtZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODkwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDM2NTU3NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyBpbnRyb2R1Y2VkIENhbGxGcmFtZTo6aXNHbG9iYWxFeGVj
KCkgd2hpY2ggbWFrZXMgdXNlIG9mIG9uZSBwcm9wZXJ0eSBvZgorICAgICAgICBHbG9iYWxFeGVj
cyB0byBpZGVudGlmeSB0aGVtIGkuZS4gR2xvYmFsRXhlY3MgaGF2ZSBudWxsIGNhbGxlckZyYW1l
IGFuZCByZXR1cm5QQ3MuCisgICAgICAgIENhbGxGcmFtZTo6aW5pdEdsb2JhbEV4ZWMoKSBlbnN1
cmVzIHRoaXMuCisKKyAgICAgICAgSW4gY29udHJhc3QsIG5vcm1hbCBDYWxsRnJhbWVzIGFsd2F5
cyBoYXZlIGEgY2FsbGVyRnJhbWUgKGJlY2F1c2UgdGhleSBtdXN0IGF0CisgICAgICAgIGxlYXN0
IGJlIHByZWNlZGVkIGJ5IGEgVk0gRW50cnlGcmFtZSkgYW5kIGEgcmV0dXJuUEMgKGF0IGxlYXN0
IHJldHVybiB0byB0aGUKKyAgICAgICAgVk0gZW50cnkgZ2x1ZSkuCisKKyAgICAgICAgKiBBUEkv
QVBJVXRpbHMuaDoKKyAgICAgICAgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAg
KHNldEV4Y2VwdGlvbik6CisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgIChKU0V2
YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKEpTQ2hlY2tTY3JpcHRTeW50YXgpOgorICAgICAgICAq
IEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0UmV0YWluKToK
KyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAoSlNHbG9iYWxDb250
ZXh0Q29weU5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAg
IChKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChK
U0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChKU0ds
b2JhbENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRp
b25zKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNr
V2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0R2V0RGVi
dWdnZXJSdW5Mb29wKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9v
cCk6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAocmVwb3J0RXhjZXB0
aW9uVG9JbnNwZWN0b3IpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NsYXNzLmNwcDoKKyAgICAg
ICAgKGpzY0NvbnRleHRGb3JPYmplY3QpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHQu
Y3BwOgorICAgICAgICAoanNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0KToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpwYXVzZUlm
TmVlZGVkKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGlu
dGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNjb3BlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpub0NhbGxlcik6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6aXNHbG9iYWxFeGVjIGNvbnN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Om5vdGlmeURlYnVnZ2VyT2ZVbndpbmRpbmcp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRv
QmVUaHJvd24pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZGVidWcpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FsbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpwcm9maWxlZENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToK
KyAgICAgICAgKEpTQzo6cHJvZmlsZWRFdmFsdWF0ZSk6CisgICAgICAgIChKU0M6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxl
KToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICogcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvZmlsZWRDb25zdHJ1Y3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1Ry
YWNlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnRocm93
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnZtRW50cnlHbG9iYWxPYmplY3QgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wOC0yMyAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBZQVJSOiBOZWVkIHRvIEpJVCBjb21waWxl
IGEgUmVnRXhwIGJlZm9yZSB1c2luZyBjb250YWluc05lc3RlZFN1YnBhdHRlcm5zIGZsYWcKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJVXRpbHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVV0aWxzLmgJKHJldmlzaW9uIDIzNTIzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQCBpbmxpbmUgRXhjZXB0aW9uU3RhdHVzIGhhbmRsZUV4Y2VwdGlvbklmCiAg
ICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25SZWYgPSB0b1JlZihleGVjLCBleGNlcHRpb24t
PnZhbHVlKCkpOwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsK
KyAgICAgICAgc2NvcGUudm0oKS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkucmVwb3J0QVBJRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3c7CiAgICAgfQpAQCAtNTcs
NyArNTcsOCBAQCBpbmxpbmUgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqCiAgICAg
aWYgKHJldHVybmVkRXhjZXB0aW9uUmVmKQogICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25SZWYg
PSB0b1JlZihleGVjLCBleGNlcHRpb24pOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQot
ICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJl
cG9ydEFQSUV4Y2VwdGlvbihleGVjLCBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCks
IGV4Y2VwdGlvbikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgdm0udm1FbnRyeUds
b2JhbE9iamVjdChleGVjKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlv
bihleGVjLCBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBleGNlcHRpb24pKTsKICNlbmRpZgog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAyMzUy
MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDE0ICs1NCwxNSBAQCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250
ZXh0UmVmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAgICAgSlNPYmplY3Qq
IGpzVGhpc09iamVjdCA9IHRvSlModGhpc09iamVjdCk7CiAKICAgICBzdGFydGluZ0xpbmVOdW1i
ZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCiAgICAgLy8gZXZhbHVhdGUg
c2V0cyAidGhpcyIgdG8gdGhlIGdsb2JhbCBvYmplY3QgaWYgaXQgaXMgTlVMTAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3Qo
ZXhlYyk7CiAgICAgYXV0byBzb3VyY2VVUkxTdHJpbmcgPSBzb3VyY2VVUkwgPyBzb3VyY2VVUkwt
PnN0cmluZygpIDogU3RyaW5nKCk7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNl
KHNjcmlwdC0+c3RyaW5nKCksIFNvdXJjZU9yaWdpbiB7IHNvdXJjZVVSTFN0cmluZyB9LCBzb3Vy
Y2VVUkxTdHJpbmcsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQo
c3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSk7CiAKQEAgLTEwNSwxNCArMTA2
LDE0IEBAIGJvb2wgSlNDaGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3QKICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgU291cmNlT3JpZ2lu
IHsgc291cmNlVVJMU3RyaW5nIH0sIHNvdXJjZVVSTFN0cmluZywgVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVt
YmVyKCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRheEV4Y2VwdGlvbjsKLSAgICBib29sIGlz
VmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKKyAgICBib29sIGlzVmFsaWRT
eW50YXggPSBjaGVja1N5bnRheCh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5nbG9iYWxF
eGVjKCksIHNvdXJjZSwgJnN5bnRheEV4Y2VwdGlvbik7CiAKICAgICBpZiAoIWlzVmFsaWRTeW50
YXgpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0
b1JlZihleGVjLCBzeW50YXhFeGNlcHRpb24pOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBz
eW50YXhFeGNlcHRpb24pOwotICAgICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsK
KyAgICAgICAgdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogI2VuZGlmCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MiwxMCArMTYyLDEw
IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUKIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4oSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tl
cihleGVjKTsKLQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgZ2NQcm90ZWN0KGV4ZWMt
PnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisK
KyAgICBnY1Byb3RlY3Qodm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKSk7CiAgICAgdm0ucmVm
KCk7CiAgICAgcmV0dXJuIGN0eDsKIH0KQEAgLTE3MywxMCArMTczLDEwIEBAIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4KIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFz
ZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBib29sIHByb3RlY3RDb3VudElzWmVybyA9IEhlYXA6OmhlYXAoZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+dW5wcm90ZWN0KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisKKyAgICBib29sIHByb3RlY3RD
b3VudElzWmVybyA9IHZtLmhlYXAudW5wcm90ZWN0KHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhl
YykpOwogICAgIGlmIChwcm90ZWN0Q291bnRJc1plcm8pCiAgICAgICAgIHZtLmhlYXAucmVwb3J0
QWJhbmRvbmVkT2JqZWN0R3JhcGgoKTsKICAgICB2bS5kZXJlZigpOwpAQCAtMjI1LDkgKzIyNSwx
MCBAQCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFtZShKU0dsCiAgICAgfQogCiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKIAotICAgIFN0cmluZyBuYW1lID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5u
YW1lKCk7CisgICAgU3RyaW5nIG5hbWUgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5u
YW1lKCk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0y
NDIsOSArMjQzLDEwIEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnQK
ICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIodm0pOwogCi0gICAgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5zZXRO
YW1lKG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IFN0cmluZygpKTsKKyAgICB2bS52bUVudHJ5R2xv
YmFsT2JqZWN0KGV4ZWMpLT5zZXROYW1lKG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IFN0cmluZygp
KTsKIH0KIAogCkBAIC0zMjUsOSArMzI3LDEwIEBAIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVt
b3RlSW5zcGVjdGlvbkUKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUds
b2JhbE9iamVjdCgpLT5yZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIHZtLnZt
RW50cnlHbG9iYWxPYmplY3QoZXhlYyktPnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKTsKIH0KIAog
dm9pZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENv
bnRleHRSZWYgY3R4LCBib29sIGVuYWJsZWQpCkBAIC0zMzgsOSArMzQxLDEwIEBAIHZvaWQgSlNH
bG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkUKICAgICB9CiAKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+c2V0UmVtb3RlRGVidWdnaW5n
RW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgpCkBAIC0zNTIsOSArMzU2LDEwIEBAIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNO
YXRpdmVDYWwKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbmNsdWRlc05hdGl2ZUNhbGxTdGFja1do
ZW5SZXBvcnRpbmdFeGNlcHRpb25zKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjdHgpOwpA
QCAtMzcxLDkgKzM3NiwxMCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZl
Q2FsCiAgICAgfQogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKTsKICAgICBnbG9iYWxPYmplY3QtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRp
bmdFeGNlcHRpb25zKGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGN0eCk7CkBAIC0zOTEsOSArMzk3LDEwIEBAIENGUnVuTG9vcFJlZiBKU0dsb2JhbENv
bnRleHRHZXREZWJ1Z2dlclIKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICByZXR1cm4gZXhlYy0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JEZWJ1Z2dhYmxlKCkudGFyZ2V0UnVuTG9vcCgpOwor
ICAgIHJldHVybiB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5pbnNwZWN0b3JEZWJ1Z2dh
YmxlKCkudGFyZ2V0UnVuTG9vcCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3R4KTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTQwOSw5ICs0MTYsMTAgQEAgdm9pZCBKU0dsb2JhbENvbnRl
eHRTZXREZWJ1Z2dlclJ1bkxvb3AoSgogICAgIH0KIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKIAotICAgIGV4ZWMtPnZtRW50cnlH
bG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yRGVidWdnYWJsZSgpLnNldFRhcmdldFJ1bkxvb3AocnVu
TG9vcCk7CisgICAgdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+aW5zcGVjdG9yRGVidWdn
YWJsZSgpLnNldFRhcmdldFJ1bkxvb3AocnVuTG9vcCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjdHgpOwogICAgIFVOVVNFRF9QQVJBTShydW5Mb29wKTsKQEAgLTQyOCw4ICs0MzYsOSBAQCBJ
bnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlCiAgICAgfQogCiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCi0g
ICAgcmV0dXJuICZleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKKyAgICByZXR1cm4gJnZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZS5tbQkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NzQsOCArNjc0LDkgQEAgSlNDb250YWluZXJD
b252ZXJ0b3I6OlRhc2sgSlNDb250YWluZXJDbwogc3RhdGljIHZvaWQgcmVwb3J0RXhjZXB0aW9u
VG9JbnNwZWN0b3IoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBleGNl
cHRpb25WYWx1ZSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7
Ci0gICAgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhjZXB0aW9uVmFsdWUpOwotICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNl
cHRpb24pOworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0M6OkV4Y2VwdGlv
biogZXhjZXB0aW9uID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgZXhjZXB0aW9uVmFsdWUp
OworICAgIHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAJKHJldmlzaW9u
IDIzNTIzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOCw5ICsxMjgsMTEgQEAgc3RhdGljIEpTQ2xhc3NSZWYgd3Jh
cHBlZE9iamVjdENsYXNzKEpTQwogc3RhdGljIEdSZWZQdHI8SlNDQ29udGV4dD4ganNjQ29udGV4
dEZvck9iamVjdChKU0M6OkpTT2JqZWN0KiBqc09iamVjdCkKIHsKICAgICBBU1NFUlQoaXNXcmFw
cGVkT2JqZWN0KGpzT2JqZWN0KSk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBqc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc09iamVjdC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBpZiAoanNPYmpl
Y3QtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdsb2JhbFNjb3BlRXh0
ZW5zaW9uID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUV4dGVuc2lv
bigpKQorICAgICAgICBKU0M6OlZNJiB2bSA9ICpnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgICAg
IGlmIChhdXRvKiBnbG9iYWxTY29wZUV4dGVuc2lvbiA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3Qo
ZXhlYyktPmdsb2JhbFNjb3BlRXh0ZW5zaW9uKCkpCiAgICAgICAgICAgICBleGVjID0gSlNDOjpK
U1Njb3BlOjpvYmplY3RBdFNjb3BlKGdsb2JhbFNjb3BlRXh0ZW5zaW9uKS0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKTsKICAgICB9CiAgICAgcmV0dXJuIGpzY0NvbnRleHRHZXRPckNyZWF0
ZSh0b0dsb2JhbFJlZihleGVjKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4MCw4
ICs4ODAsOSBAQCBKU0NWYWx1ZSoganNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0CiAgICAg
SlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPiBvYmplY3RDb250ZXh0KEFkb3B0LAogICAg
ICAgICBpbnN0YW5jZSA/IGpzY0NsYXNzQ3JlYXRlQ29udGV4dFdpdGhKU1dyYXBwZXIob2JqZWN0
Q2xhc3MsIGluc3RhbmNlKSA6IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoanNjVmlydHVh
bE1hY2hpbmVHZXRDb250ZXh0R3JvdXAoY29udGV4dC0+cHJpdi0+dm0uZ2V0KCkpLCBudWxscHRy
KSk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKG9iamVjdENvbnRleHQuZ2V0KCkp
OwotICAgIGF1dG8qIGpzT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwotICAg
IGpzT2JqZWN0LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU0M6OkpTV2l0aFNjb3BlOjpjcmVh
dGUoZXhlYy0+dm0oKSwganNPYmplY3QsIGpzT2JqZWN0LT5nbG9iYWxTY29wZSgpLCB0b0pTKEpT
Q29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0LT5wcml2LT5qc0NvbnRleHQuZ2V0KCkpKSkp
OworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvKiBqc09iamVjdCA9IHZt
LnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyk7CisgICAganNPYmplY3QtPnNldEdsb2JhbFNjb3Bl
RXh0ZW5zaW9uKEpTQzo6SlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwganNPYmplY3QsIGpzT2JqZWN0
LT5nbG9iYWxTY29wZSgpLCB0b0pTKEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0LT5w
cml2LT5qc0NvbnRleHQuZ2V0KCkpKSkpOwogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVs
bHB0cjsKICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGV2YWx1YXRlU2NyaXB0SW5Db250ZXh0KG9i
amVjdENvbnRleHQuZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0
cmxlbihjb2RlKSA6IGxlbmd0aCksIHVyaSwgbGluZU51bWJlciwgJmV4Y2VwdGlvbik7CiAgICAg
aWYgKGpzY0NvbnRleHRIYW5kbGVFeGNlcHRpb25JZk5lZWRlZChjb250ZXh0LCBleGNlcHRpb24p
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShy
ZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6
cGF1c2VJZk5lZWRlZChDYWxsRnJhbWUqIAogICAgIC8vIHJlc2V0aW5nIHRoZSBwYXVzZSBzdGF0
ZSBiZWZvcmUgZXhlY3V0aW5nIGFueSBicmVha3BvaW50IGFjdGlvbnMuCiAgICAgVGVtcG9yYXJ5
UGF1c2VkU3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIHZt
RW50cnlHbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3Qodm0pOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0ID0gdm0udm1FbnRyeUdsb2Jh
bE9iamVjdChjYWxsRnJhbWUpOwogCiAgICAgaWYgKGRpZEhpdEJyZWFrcG9pbnQpIHsKICAgICAg
ICAgaGFuZGxlQnJlYWtwb2ludEhpdCh2bUVudHJ5R2xvYmFsT2JqZWN0LCBicmVha3BvaW50KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcg
KzExOCw4IEBAIEpTQzo6SlNHbG9iYWxPYmplY3QqIERlYnVnZ2VyQ2FsbEZyYW1lOjoKICAgICBB
U1NFUlQoaXNWYWxpZCgpKTsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIG1fdmFsaWRNYWNoaW5lRnJhbWUtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKTsKKyAgICBWTSYgdm0gPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT52bSgpOworICAgIHJldHVy
biB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KG1fdmFsaWRNYWNoaW5lRnJhbWUpOwogfQogCiBTb3Vy
Y2VJRCBEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSUQoKSBjb25zdApAQCAtMjUyLDcgKzI1Myw3
IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFMKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGNhbGxGcmFtZSk7CiAg
ICAgaWYgKHNjb3BlRXh0ZW5zaW9uT2JqZWN0KSB7CiAgICAgICAgIEpTU2NvcGUqIGlnbm9yZWRQ
cmV2aW91c1Njb3BlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpOwogICAgICAgICBnbG9i
YWxPYmplY3QtPnNldEdsb2JhbFNjb3BlRXh0ZW5zaW9uKEpTV2l0aFNjb3BlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgaWdub3JlZFByZXZpb3VzU2NvcGUsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgdm9p
ZCBFeGVjU3RhdGU6OmluaXRHbG9iYWxFeGVjKEV4ZWNTdGF0ZQogICAgIGdsb2JhbEV4ZWMtPnNl
dFJldHVyblBDKDApOwogICAgIGdsb2JhbEV4ZWMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKDApOwogICAgIGdsb2JhbEV4ZWMtPnNldENhbGxlZShnbG9iYWxDYWxsZWUpOworICAgIEFT
U0VSVChnbG9iYWxFeGVjLT5pc0dsb2JhbEV4ZWMoKSk7CiB9CiAKIGJvb2wgQ2FsbEZyYW1lOjpj
YWxsU2l0ZUJpdHNBcmVCeXRlY29kZU9mZnNldCgpIGNvbnN0CkBAIC0xODcsMzQgKzE4OCw2IEBA
IFJlZ2lzdGVyKiBDYWxsRnJhbWU6OnRvcE9mRnJhbWVJbnRlcm5hbCgKICAgICByZXR1cm4gcmVn
aXN0ZXJzKCkgKyBjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpOwogfQogCi1KU0dsb2Jh
bE9iamVjdCogQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0KCkKLXsKLSAgICBSRUxFQVNF
X0FTU0VSVChjYWxsZWUoKS5pc0NlbGwoKSk7Ci0gICAgaWYgKGNhbGxlZSgpLmFzQ2VsbCgpLT5p
c09iamVjdCgpKSB7IAotICAgICAgICBpZiAodGhpcyA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSkKLSAgICAgICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0KCk7
Ci0gICAgfQotICAgIC8vIElmIHdlJ3JlIG5vdCBhbiBvYmplY3QsIHdlJ3JlIHdhc20sIGFuZCB0
aGVyZWZvcmUgd2UncmUgZXhlY3V0aW5nIGNvZGUgYW5kIHRoZSBiZWxvdyBpcyBzYWZlLgotCi0g
ICAgLy8gRm9yIGFueSBFeGVjU3RhdGUgdGhhdCdzIG5vdCBhIGdsb2JhbEV4ZWMsIHRoZSAKLSAg
ICAvLyBkeW5hbWljIGdsb2JhbCBvYmplY3QgbXVzdCBiZSBzZXQgc2luY2UgY29kZSBpcyBydW5u
aW5nCi0gICAgQVNTRVJUKHZtKCkuZW50cnlTY29wZSk7Ci0gICAgcmV0dXJuIHZtKCkuZW50cnlT
Y29wZS0+Z2xvYmFsT2JqZWN0KCk7Ci19Ci0KLUpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OnZt
RW50cnlHbG9iYWxPYmplY3QoVk0mIHZtKQotewotICAgIGlmIChjYWxsZWUoKS5pc0NlbGwoKSAm
JiBjYWxsZWUoKS5hc0NlbGwoKS0+aXNPYmplY3QoKSkgewotICAgICAgICBpZiAodGhpcyA9PSBs
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkKLSAgICAgICAgICAgIHJldHVybiBs
ZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgfQotCi0gICAgLy8gRm9yIGFueSBFeGVjU3RhdGUg
dGhhdCdzIG5vdCBhIGdsb2JhbEV4ZWMsIHRoZSAKLSAgICAvLyBkeW5hbWljIGdsb2JhbCBvYmpl
Y3QgbXVzdCBiZSBzZXQgc2luY2UgY29kZSBpcyBydW5uaW5nCi0gICAgQVNTRVJUKHZtLmVudHJ5
U2NvcGUpOwotICAgIHJldHVybiB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKTsKLX0KLQog
SlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6d2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdChW
TSYgdm0pCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMjM1MjM3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTE1
LDE4ICsxMTUsMTMgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAgICAgQVNTRVJUKHRoaXNb
c2NvcGVSZWdpc3Rlck9mZnNldF0uUmVnaXN0ZXI6OnNjb3BlKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVnaXN0ZXI6OnNjb3BlKCk7CiAgICAgICAg
IH0KLSAgICAgICAgLy8gR2xvYmFsIG9iamVjdCBpbiB3aGljaCBleGVjdXRpb24gYmVnYW4uCi0g
ICAgICAgIC8vIFRoaXMgdmFyaWFudCBpcyBub3Qgc2FmZSB0byBjYWxsIGZyb20gYSBXYXNtIGZy
YW1lLgotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogdm1FbnRyeUds
b2JhbE9iamVjdCgpOwotICAgICAgICAvLyBUaGlzIHZhcmlhbnQgaXMgc2FmZSB0byBjYWxsIGZy
b20gYSBXYXNtIGZyYW1lLgotICAgICAgICBKU0dsb2JhbE9iamVjdCogdm1FbnRyeUdsb2JhbE9i
amVjdChWTSYpOwogCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiB3YXNtQXdhcmVMZXhpY2FsR2xv
YmFsT2JqZWN0KFZNJik7CiAKICAgICAgICAgYm9vbCBpc0FueVdhc21DYWxsZWUoKTsKIAogICAg
ICAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNv
ZGUgd2FzIGRlZmluZWQuCi0gICAgICAgIC8vIERpZmZlcnMgZnJvbSB2bUVudHJ5R2xvYmFsT2Jq
ZWN0KCkgZHVyaW5nIGZ1bmN0aW9uIGNhbGxzIGFjcm9zcyB3ZWIgYnJvd3NlciBmcmFtZXMuCisg
ICAgICAgIC8vIERpZmZlcnMgZnJvbSBWTTo6dm1FbnRyeUdsb2JhbE9iamVjdCgpIGR1cmluZyBm
dW5jdGlvbiBjYWxscyBhY3Jvc3Mgd2ViIGJyb3dzZXIgZnJhbWVzLgogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiAgICAgICAgIC8vIERpZmZl
cnMgZnJvbSBsZXhpY2FsR2xvYmFsT2JqZWN0IGJlY2F1c2UgdGhpcyB3aWxsIGhhdmUgRE9NIHdp
bmRvdyBzaGVsbCByYXRoZXIgdGhhbgpAQCAtMjU1LDcgKzI1MCwxMSBAQCBuYW1lc3BhY2UgSlND
ICB7CiAKICAgICAgICAgc3RhdGljIGludCBvZmZzZXRGb3Ioc2l6ZV90IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSB7IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxG
cmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAtIDE7IH0KIAotICAgICAgICBzdGF0aWMgQ2FsbEZyYW1l
KiBub0NhbGxlcigpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgc3RhdGljIENhbGxGcmFtZSogbm9D
YWxsZXIoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgICAgIGJvb2wgaXNHbG9iYWxFeGVjKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1lQW5kUEMoKS5j
YWxsZXJGcmFtZSA9PSBub0NhbGxlcigpICYmIGNhbGxlckZyYW1lQW5kUEMoKS5wYyA9PSBudWxs
cHRyOworICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhpbnQgY291bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50XS5wYXlsb2FkKCkgPSBjb3VudDsgfQogICAgICAgICB2b2lkIHNl
dENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylb
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlXSA9IGNhbGxlZTsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMzUy
MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MzUsNyArNjM1LDcgQEAgcHJpdmF0ZToKIEFMV0FZU19JTkxJ
TkUgc3RhdGljIHZvaWQgbm90aWZ5RGVidWdnZXJPZlVud2luZGluZyhWTSYgdm0sIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwotICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlH
bG9iYWxPYmplY3Qodm0pLT5kZWJ1Z2dlcigpKSB7CisgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dl
ciA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3QoY2FsbEZyYW1lKS0+ZGVidWdnZXIoKSkgewogICAg
ICAgICBTdXNwZW5kRXhjZXB0aW9uU2NvcGUgc2NvcGUoJnZtKTsKICAgICAgICAgaWYgKGNhbGxG
cmFtZS0+aXNBbnlXYXNtQ2FsbGVlKCkKICAgICAgICAgICAgIHx8IChjYWxsRnJhbWUtPmNhbGxl
ZSgpLmlzQ2VsbCgpICYmIGNhbGxGcmFtZS0+Y2FsbGVlKCkuYXNDZWxsKCktPmluaGVyaXRzPEpT
RnVuY3Rpb24+KHZtKSkpCkBAIC03NTQsNyArNzU0LDcgQEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJ
bmZvKiBJbnRlcnByZXRlcjo6dQogCiB2b2lkIEludGVycHJldGVyOjpub3RpZnlEZWJ1Z2dlck9m
RXhjZXB0aW9uVG9CZVRocm93bihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFeGNlcHRp
b24qIGV4Y2VwdGlvbikKIHsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZt
RW50cnlHbG9iYWxPYmplY3Qodm0pLT5kZWJ1Z2dlcigpOworICAgIERlYnVnZ2VyKiBkZWJ1Z2dl
ciA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3QoY2FsbEZyYW1lKS0+ZGVidWdnZXIoKTsKICAgICBp
ZiAoZGVidWdnZXIgJiYgZGVidWdnZXItPm5lZWRzRXhjZXB0aW9uQ2FsbGJhY2tzKCkgJiYgIWV4
Y2VwdGlvbi0+ZGlkTm90aWZ5SW5zcGVjdG9yT2ZUaHJvdygpKSB7CiAgICAgICAgIC8vIFRoaXMg
Y29kZSBhc3N1bWVzIHRoYXQgaWYgdGhlIGRlYnVnZ2VyIGlzIGVuYWJsZWQgdGhlbiB0aGVyZSBp
cyBubyBpbmxpbmluZy4KICAgICAgICAgLy8gSWYgdGhhdCBhc3N1bXB0aW9uIHR1cm5zIG91dCB0
byBiZSBmYWxzZSB0aGVuIHdlJ2xsIGlnbm9yZSB0aGUgaW5saW5lZCBjYWxsCkBAIC0xMzI3LDcg
KzEzMjcsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsCiB7CiAg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50
cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSB2
bS52bUVudHJ5R2xvYmFsT2JqZWN0KGNhbGxGcmFtZSktPmRlYnVnZ2VyKCk7CiAgICAgaWYgKCFk
ZWJ1Z2dlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWxsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FsbERhdGEuY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEzICs1
NywxNSBAQCBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1CiAKIEpTVmFs
dWUgcHJvZmlsZWRDYWxsKEV4ZWNTdGF0ZSogZXhlYywgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwg
SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRh
JiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0g
ICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUoZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpLCByZWFzb24pOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgU2NyaXB0
UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUodm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVj
KSwgcmVhc29uKTsKICAgICByZXR1cm4gY2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogfQogCiBKU1ZhbHVlIHByb2ZpbGVkQ2Fs
bChFeGVjU3RhdGUqIGV4ZWMsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24sIEpTVmFsdWUgZnVuY3Rp
b25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKLSAgICBTY3JpcHRQcm9maWxpbmdTY29wZSBwcm9maWxp
bmdTY29wZShleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIHJlYXNvbik7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBTY3JpcHRQcm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZSh2
bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLCByZWFzb24pOwogICAgIHJldHVybiBjYWxsKGV4
ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywg
cmV0dXJuZWRFeGNlcHRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcg
Kzk4LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAogICAgIENv
ZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhp
c1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHRoaXNWYWx1ZSA9IGV4ZWMtPnZt
RW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgdGhpc1ZhbHVlID0gdm0udm1FbnRyeUdsb2Jh
bE9iamVjdChleGVjKTsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+
KHRoaXNWYWx1ZS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9ncmFtKHNvdXJjZSwgZXhlYywgdGhpc09i
aik7CiAKQEAgLTExNCwxMyArMTE0LDE1IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCAKIAogSlNWYWx1ZSBwcm9maWxlZEV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7Ci0g
ICAgU2NyaXB0UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUoZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpLCByZWFzb24pOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgU2NyaXB0
UHJvZmlsaW5nU2NvcGUgcHJvZmlsaW5nU2NvcGUodm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVj
KSwgcmVhc29uKTsKICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUs
IHJldHVybmVkRXhjZXB0aW9uKTsKIH0KIAogSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmplY3Qq
IHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2Vw
dGlvbikKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyk7CiAKICAg
ICBpZiAoc2NvcGVFeHRlbnNpb25PYmplY3QpIHsKICAgICAgICAgSlNTY29wZSogaWdub3JlZFBy
ZXZpb3VzU2NvcGUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCk7CkBAIC0xNjEsNyArMTYz
LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZQogICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHJldHVybiBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPm1vZHVsZUxvYWRlcigpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRp
ZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1l
KSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVybiB2bS52bUVudHJ5R2xv
YmFsT2JqZWN0KGV4ZWMpLT5tb2R1bGVMb2FkZXIoKS0+bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4
ZWMsIGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
bW9kdWxlTmFtZSkpLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAogSlNJbnRlcm5h
bFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMTc0LDcgKzE3Niw3
IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUKIAogICAgIFN5bWJv
bCoga2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CiAKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0
KGV4ZWMpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBnaXZlbiBzb3VyY2UgY29kZSB0byB0aGUgTW9k
dWxlTG9hZGVyIHJlZ2lzdHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lzdHJ5IGVudHJ5LgogICAgIGds
b2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGVGZXRjaChleGVjLCBrZXksIHNvdXJj
ZSk7CkBAIC0xOTAsNyArMTkyLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhl
Y1N0YXRlKgogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhy
ZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHJldHVybiBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxlKGV4ZWMs
IGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9k
dWxlTmFtZSkpLCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKKyAgICByZXR1cm4gdm0udm1F
bnRyeUdsb2JhbE9iamVjdChleGVjKS0+bW9kdWxlTG9hZGVyKCktPmxvYWRNb2R1bGUoZXhlYywg
aWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1
bGVOYW1lKSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogfQogCiBKU0ludGVybmFsUHJv
bWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjAzLDcgKzIwNSw3IEBAIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSoKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRl
U3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpOwogCiAgICAg
Ly8gSW5zZXJ0IHRoZSBnaXZlbiBzb3VyY2UgY29kZSB0byB0aGUgTW9kdWxlTG9hZGVyIHJlZ2lz
dHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lzdHJ5IGVudHJ5LgogICAgIC8vIEZJWE1FOiBJbnRyb2R1
Y2UgSlNTb3VyY2VDb2RlIG9iamVjdCB0byB3cmFwIGFyb3VuZCB0aGlzIHNvdXJjZS4KQEAgLTIy
MCw3ICsyMjIsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqCiAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJl
bnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xs
ZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKTsKICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+bGlua0FuZEV2YWx1YXRlTW9kdWxlKGV4
ZWMsIGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIG1vZHVsZUtleSksIHNjcmlwdEZldGNoZXIpOwog
fQogCkBAIC0yMzEsNyArMjMzLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShF
eGVjU3RhdAogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gVGhy
ZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIHJldHVybiBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5yZXF1ZXN0SW1wb3J0TW9k
dWxlKGV4ZWMsIG1vZHVsZUtleSwgcGFyYW1ldGVycywgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0
dXJuIHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyktPm1vZHVsZUxvYWRlcigpLT5yZXF1ZXN0
SW1wb3J0TW9kdWxlKGV4ZWMsIG1vZHVsZUtleSwgcGFyYW1ldGVycywgc2NyaXB0RmV0Y2hlcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw3ICs1OCw4IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBK
U1YKIAogSlNPYmplY3QqIHByb2ZpbGVkQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgUHJvZmls
aW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgQ29uc3RydWN0VHlw
ZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25z
dCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKLSAgICBTY3JpcHRQcm9maWxp
bmdTY29wZSBwcm9maWxpbmdTY29wZShleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIHJlYXNv
bik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBTY3JpcHRQcm9maWxpbmdTY29wZSBw
cm9maWxpbmdTY29wZSh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLCByZWFzb24pOwogICAg
IHJldHVybiBjb25zdHJ1Y3QoZXhlYywgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUs
IGNvbnN0cnVjdERhdGEsIGFyZ3MsIG5ld1RhcmdldCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcg
KzE2OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IGdldFMKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CiAgICAgdm0uaW50ZXJwcmV0ZXItPmdldFN0
YWNrVHJhY2Uob2JqLCAqc3RhY2tUcmFjZSwgZnJhbWVzVG9Ta2lwLCBlcnJvckNvbnN0cnVjdG9y
LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZSgpKTsKICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1w
dHkoKSkKLSAgICAgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFt
ZSB8fCBleGVjID09IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpIHx8
IGV4ZWMgPT0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpOworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMgPT0gdm0udG9wQ2FsbEZyYW1lIHx8IGV4ZWMt
PmlzR2xvYmFsRXhlYygpKTsKICAgICByZXR1cm4gc3RhY2tUcmFjZTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzIsNyAr
ODMyLDcgQEAgdm9pZCBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLAogICAgICAg
ICBDUkFTSCgpOwogICAgIH0KIAotICAgIEFTU0VSVChleGVjID09IHRvcENhbGxGcmFtZSB8fCBl
eGVjID09IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpIHx8IGV4ZWMg
PT0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpOworICAgIEFTU0VS
VChleGVjID09IHRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0dsb2JhbEV4ZWMoKSk7CiAKICAgICBp
bnRlcnByZXRlci0+bm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRvQmVUaHJvd24oKnRoaXMsIGV4
ZWMsIGV4Y2VwdGlvbik7CiAKQEAgLTEyNjMsNCArMTI2MywxNSBAQCB2b2lkIFZNOjpjbGVhclNj
cmF0Y2hCdWZmZXJzKCkKICAgICAgICAgc2NyYXRjaEJ1ZmZlci0+c2V0QWN0aXZlTGVuZ3RoKDAp
OwogfQogCitKU0dsb2JhbE9iamVjdCogVk06OnZtRW50cnlHbG9iYWxPYmplY3QoY29uc3QgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpIGNvbnN0Cit7CisgICAgaWYgKGNhbGxGcmFtZSAmJiBjYWxsRnJh
bWUtPmlzR2xvYmFsRXhlYygpKSB7CisgICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPmNhbGxlZSgp
LmlzQ2VsbCgpICYmIGNhbGxGcmFtZS0+Y2FsbGVlKCkuYXNDZWxsKCktPmlzT2JqZWN0KCkpOwor
ICAgICAgICBBU1NFUlQoY2FsbEZyYW1lID09IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCkpOworICAgICAgICByZXR1cm4gY2FsbEZyYW1lLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7CisgICAgfQorICAgIEFTU0VSVChlbnRyeVNjb3BlKTsKKyAgICByZXR1cm4g
ZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiAr
MTcyLDggQEAgc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIHN0cnVjdCBW
YWx1ZVByb2ZpbGU7CiAKK3R5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKKwogc3RydWN0IExv
Y2FsVGltZU9mZnNldENhY2hlIHsKICAgICBMb2NhbFRpbWVPZmZzZXRDYWNoZSgpCiAgICAgICAg
IDogc3RhcnQoMC4wKQpAQCAtMjkzLDYgKzI5NSw5IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBib29sIGlzRW50ZXJlZCgpIGNvbnN0IHsg
cmV0dXJuICEhZW50cnlTY29wZTsgfQogCisgICAgLy8gR2xvYmFsIG9iamVjdCBpbiB3aGljaCBl
eGVjdXRpb24gYmVnYW4uCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QqIHZt
RW50cnlHbG9iYWxPYmplY3QoY29uc3QgQ2FsbEZyYW1lKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbmV4dElEKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTIzNykK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMz
IEBACisyMDE4LTA4LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIHZtRW50cnlHbG9iYWxPYmplY3QoKSB0byBWTSBmcm9tIENhbGxGcmFtZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODkwMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDM2NTU3NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCBiZWNhdXNlIHRoaXMgcGF0
Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbGVyR2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01HbG9iYWxPYmplY3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpmaXJzdERPTVdpbmRvdyk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5LmNwcDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgIChXZWJDb3JlOjph
ZGRFeGNlcHRpb25Ub0NvbnNvbGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNT
dGF0ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9PYmpjT2JqZWN0KToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX3V0aWxpdHkubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0
VmFsdWVUb09iamNWYWx1ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKToKKwogMjAxOC0wOC0y
MyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVk
aWFTdHJlYW1dIFN0b3JlIHZpZGVvIHByZXNldCBzaXplcyBpbiBhIG1hcApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw4IEBA
IEV4Y2VwdGlvbk9yPFJlZjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4KICAgICBpZiAoIXJlc29s
dmVyT2JqZWN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZU1pc21hdGNoRXJyb3Ig
fTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKHN0
YXRlLnZtKCksIHJlc29sdmVyT2JqZWN0LCBhc0pTRE9NV2luZG93KHN0YXRlLnZtRW50cnlHbG9i
YWxPYmplY3QoKSkpKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKHZtLCByZXNvbHZlck9iamVjdCwgYXNK
U0RPTVdpbmRvdyh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KCZzdGF0ZSkpKSk7CiB9CiAKIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcihWTSYgdm0sIEpTT2Jq
ZWN0KiBjdXN0b21SZXNvbHZlciwgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCwxMSBAQCBKU0RPTUdsb2Jh
bE9iamVjdCYgY2FsbGVyR2xvYmFsT2JqZWN0KEV4CiAKICAgICBHZXRDYWxsZXJHbG9iYWxPYmpl
Y3RGdW5jdG9yIGl0ZXI7CiAgICAgc3RhdGUuaXRlcmF0ZShpdGVyKTsKLSAgICByZXR1cm4gKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGl0ZXIuZ2xvYmFsT2JqZWN0KCkgPyBpdGVyLmdsb2Jh
bE9iamVjdCgpIDogc3RhdGUudm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoaXRlci5n
bG9iYWxPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihpdGVyLmdsb2JhbE9iamVjdCgpKTsKKworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
cmV0dXJuICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih2bS52bUVudHJ5R2xvYmFsT2JqZWN0
KCZzdGF0ZSkpOwogfQogCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNyArMjY5LDggQEAgRE9NV2luZG93
JiBhY3RpdmVET01XaW5kb3coRXhlY1N0YXRlJiBzdAogCiBET01XaW5kb3cmIGZpcnN0RE9NV2lu
ZG93KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coc3RhdGUu
dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+d3JhcHBlZCgpOworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgcmV0dXJuIGFzSlNET01XaW5kb3codm0udm1FbnRyeUdsb2JhbE9iamVjdCgmc3Rh
dGUpKS0+d3JhcHBlZCgpOwogfQogCiBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudChFeGVj
U3RhdGUmIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCShy
ZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgY29udmVydFZhbHVlVG9OUFZh
cmlhbnQoRXhlY1N0YXRlKiAKICAgICAgICAgICAgICAgICBPQkpFQ1RfVE9fTlBWQVJJQU5UKG9i
aiwgKnJlc3VsdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50
cnlHbG9iYWxPYmplY3QoZXhlYyk7CiAKICAgICAgICAgICAgIFJvb3RPYmplY3QqIHJvb3RPYmpl
Y3QgPSBmaW5kUm9vdE9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgaWYgKHJvb3RP
YmplY3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0JKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw4IEBAIGlk
IGNyZWF0ZUpTV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QKIAogc3RhdGljIHZvaWQgYWRk
RXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpFeGNlcHRpb24qIGV4Y2Vw
dGlvbikKIHsKLSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT52
bUVudHJ5R2xvYmFsT2JqZWN0KCkpOworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBKU0RPTVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRvdyh2bS52bUVudHJ5R2xvYmFsT2Jq
ZWN0KGV4ZWMpKTsKICAgICBpZiAoIXdpbmRvdyB8fCAhZXhjZXB0aW9uKQogICAgICAgICByZXR1
cm47CiAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDIzNTIzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDggKzg4LDggQEAgdm9pZCBPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNl
cHRpb25UbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFzX2V4Y2VwdGlvbkVu
dmlyb25tZW50IHx8IHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPT0gZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIGlmICgh
c19leGNlcHRpb25FbnZpcm9ubWVudCB8fCBzX2V4Y2VwdGlvbkVudmlyb25tZW50ID09IHZtLnZt
RW50cnlHbG9iYWxPYmplY3QoZXhlYykpIHsKKyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIHNjb3BlLCBzX2V4Y2VwdGlvbik7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZp
c2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsOCBAQCBKU1ZhbHVlIE9iamNGaWVsZDo6
dmFsdWVGcm9tSW5zdGFuY2UoRXhlCiAKIHN0YXRpYyBpZCBjb252ZXJ0VmFsdWVUb09iamNPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFJlZlB0cjxSb290T2Jq
ZWN0PiByb290T2JqZWN0ID0gZmluZFJvb3RPYmplY3QoZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJlZlB0cjxSb290T2JqZWN0PiBy
b290T2JqZWN0ID0gZmluZFJvb3RPYmplY3Qodm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKSk7
CiAgICAgaWYgKCFyb290T2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBb
d2ViU2NyaXB0T2JqZWN0Q2xhc3MoKSBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6dmFsdWUgb3Jp
Z2luUm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgpIHJvb3RPYmplY3Q6cm9vdE9iamVjdC5nZXQo
KV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCShy
ZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxp
dHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDkgKzg4LDEwIEBAIE9iamNWYWx1ZSBjb252ZXJ0
VmFsdWVUb09iamNWYWx1ZShFeGVjU3QKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBj
YXNlIE9iamNPYmplY3RUeXBlOiB7Ci0gICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKKyAgICAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
ICpvcmlnaW5HbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCAqb3JpZ2luR2xvYmFsT2JqZWN0ID0gdm0udm1FbnRyeUds
b2JhbE9iamVjdChleGVjKTsKICAgICAgICAgICAgIFJvb3RPYmplY3QqIG9yaWdpblJvb3RPYmpl
Y3QgPSBmaW5kUm9vdE9iamVjdChvcmlnaW5HbG9iYWxPYmplY3QpOwogCiAgICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEyMiw3ICs0MTIyLDcgQEAgYm9v
bCBJbnRlcm5hbHM6OmlzUmVhZGFibGVTdHJlYW1EaXN0dXJiZQogSlNWYWx1ZSBJbnRlcm5hbHM6
OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGJ1ZmZlciwg
SlNWYWx1ZSBzcmNCeXRlT2Zmc2V0LCBKU1ZhbHVlIHNyY0xlbmd0aCkKIHsKICAgICBKU0M6OlZN
JiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0
YXRlLnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdCgmc3RhdGUpOwogICAgIEpTVk1DbGllbnREYXRh
KiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0
aW5OYW1lcygpLmNsb25lQXJyYXlCdWZmZXJQcml2YXRlTmFtZSgpOwogICAgIEpTVmFsdWUgdmFs
dWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzUyMzcpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0wOC0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSB2bUVudHJ5R2xvYmFsT2JqZWN0KCkgdG8gVk0gZnJvbSBDYWxsRnJhbWUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg5MDAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzNjU1NzUzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5t
bToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQpOgorCiAyMDE4LTA4
LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlcGxhY2Ug
Ym9vbGVhbnMgZm9yIG1vZGlmaWVyIGtleXMgaW4gVUlFdmVudFdpdGhLZXlTdGF0ZSB3aXRoIE9w
dGlvblNldDxNb2RpZmllcj4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQkocmV2aXNpb24gMjM1MjM3KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNyArOTMsOCBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQ
YXJzZWQoRXhlCiAgICAgTlNVUkwgKm5zVVJMID0gdG9OU1VSTChzb3VyY2VQcm92aWRlci0+dXJs
KCkpOwogICAgIGludCBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigp
Lm1fbGluZS5vbmVCYXNlZEludCgpOwogCi0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJG
cmFtZShleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gdG9XZWJGcmFtZSh2bS52bUVudHJ5R2xvYmFs
T2JqZWN0KGV4ZWMpKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXdd
OwogICAgIFdlYlNjcmlwdERlYnVnRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1l
bnRhdGlvbnMgPSBXZWJWaWV3R2V0U2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347958</attachid>
            <date>2018-08-23 15:01:53 -0700</date>
            <delta_ts>2018-08-23 15:51:36 -0700</delta_ts>
            <desc>proposed patch w/ GTK build fix.</desc>
            <filename>bug-188900.patch</filename>
            <type>text/plain</type>
            <size>40765</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1MjQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBA
CisyMDE4LTA4LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHZtRW50cnlHbG9iYWxPYmplY3QoKSB0byBWTSBmcm9tIENhbGxGcmFtZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODkwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDM2NTU3NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxzbyBpbnRyb2R1Y2VkIENhbGxGcmFtZTo6aXNHbG9iYWxFeGVj
KCkgd2hpY2ggbWFrZXMgdXNlIG9mIG9uZSBwcm9wZXJ0eSBvZgorICAgICAgICBHbG9iYWxFeGVj
cyB0byBpZGVudGlmeSB0aGVtIGkuZS4gR2xvYmFsRXhlY3MgaGF2ZSBudWxsIGNhbGxlckZyYW1l
IGFuZCByZXR1cm5QQ3MuCisgICAgICAgIENhbGxGcmFtZTo6aW5pdEdsb2JhbEV4ZWMoKSBlbnN1
cmVzIHRoaXMuCisKKyAgICAgICAgSW4gY29udHJhc3QsIG5vcm1hbCBDYWxsRnJhbWVzIGFsd2F5
cyBoYXZlIGEgY2FsbGVyRnJhbWUgKGJlY2F1c2UgdGhleSBtdXN0IGF0CisgICAgICAgIGxlYXN0
IGJlIHByZWNlZGVkIGJ5IGEgVk0gRW50cnlGcmFtZSkgYW5kIGEgcmV0dXJuUEMgKGF0IGxlYXN0
IHJldHVybiB0byB0aGUKKyAgICAgICAgVk0gZW50cnkgZ2x1ZSkuCisKKyAgICAgICAgKiBBUEkv
QVBJVXRpbHMuaDoKKyAgICAgICAgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKToKKyAgICAgICAg
KHNldEV4Y2VwdGlvbik6CisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgIChKU0V2
YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKEpTQ2hlY2tTY3JpcHRTeW50YXgpOgorICAgICAgICAq
IEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0UmV0YWluKToK
KyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAoSlNHbG9iYWxDb250
ZXh0Q29weU5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAg
IChKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChK
U0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChKU0ds
b2JhbENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRp
b25zKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNr
V2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0R2V0RGVi
dWdnZXJSdW5Mb29wKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9v
cCk6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAocmVwb3J0RXhjZXB0
aW9uVG9JbnNwZWN0b3IpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NsYXNzLmNwcDoKKyAgICAg
ICAgKGpzY0NvbnRleHRGb3JPYmplY3QpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHQu
Y3BwOgorICAgICAgICAoanNjX2NvbnRleHRfZXZhbHVhdGVfaW5fb2JqZWN0KToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpwYXVzZUlm
TmVlZGVkKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGlu
dGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNjb3BlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpub0NhbGxlcik6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6aXNHbG9iYWxFeGVjIGNvbnN0KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Om5vdGlmeURlYnVnZ2VyT2ZVbndpbmRpbmcp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdGlvblRv
QmVUaHJvd24pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZGVidWcpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FsbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpwcm9maWxlZENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToK
KyAgICAgICAgKEpTQzo6cHJvZmlsZWRFdmFsdWF0ZSk6CisgICAgICAgIChKU0M6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxl
KToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICogcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvZmlsZWRDb25zdHJ1Y3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1Ry
YWNlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnRocm93
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnZtRW50cnlHbG9iYWxPYmplY3QgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wOC0yMyAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBZQVJSOiBOZWVkIHRvIEpJVCBjb21waWxl
IGEgUmVnRXhwIGJlZm9yZSB1c2luZyBjb250YWluc05lc3RlZFN1YnBhdHRlcm5zIGZsYWcKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJVXRpbHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVV0aWxzLmgJKHJldmlzaW9uIDIzNTIzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQCBpbmxpbmUgRXhjZXB0aW9uU3RhdHVzIGhhbmRsZUV4Y2VwdGlvbklmCiAg
ICAgICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25SZWYgPSB0b1JlZihleGVjLCBleGNlcHRpb24t
PnZhbHVlKCkpOwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsK
KyAgICAgICAgc2NvcGUudm0oKS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkucmVwb3J0QVBJRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3c7CiAgICAgfQpAQCAtNTcs
NyArNTcsOCBAQCBpbmxpbmUgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqCiAgICAg
aWYgKHJldHVybmVkRXhjZXB0aW9uUmVmKQogICAgICAgICAqcmV0dXJuZWRFeGNlcHRpb25SZWYg
PSB0b1JlZihleGVjLCBleGNlcHRpb24pOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQot
ICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJl
cG9ydEFQSUV4Y2VwdGlvbihleGVjLCBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCks
IGV4Y2VwdGlvbikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgdm0udm1FbnRyeUds
b2JhbE9iamVjdChleGVjKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlv
bihleGVjLCBKU0M6OkV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBleGNlcHRpb24pKTsKICNlbmRpZgog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAyMzUy
MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDE0ICs1NCwxNSBAQCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250
ZXh0UmVmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAgICAgSlNPYmplY3Qq
IGpzVGhpc09iamVjdCA9IHRvSlModGhpc09iamVjdCk7CiAKICAgICBzdGFydGluZ0xpbmVOdW1i
ZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCiAgICAgLy8gZXZhbHVhdGUg
c2V0cyAidGhpcyIgdG8gdGhlIGdsb2JhbCBvYmplY3QgaWYgaXQgaXMgTlVMTAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3Qo
ZXhlYyk7CiAgICAgYXV0byBzb3VyY2VVUkxTdHJpbmcgPSBzb3VyY2VVUkwgPyBzb3VyY2VVUkwt
PnN0cmluZygpIDogU3RyaW5nKCk7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNl
KHNjcmlwdC0+c3RyaW5nKCksIFNvdXJjZU9yaWdpbiB7IHNvdXJjZVVSTFN0cmluZyB9LCBzb3Vy
Y2VVUkxTdHJpbmcsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQo
c3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSk7CiAKQEAgLTEwNSwxNCArMTA2
LDE0IEBAIGJvb2wgSlNDaGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3QKICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgU291cmNlT3JpZ2lu
IHsgc291cmNlVVJMU3RyaW5nIH0sIHNvdXJjZVVSTFN0cmluZywgVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVt
YmVyKCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRheEV4Y2VwdGlvbjsKLSAgICBib29sIGlz
VmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKKyAgICBib29sIGlzVmFsaWRT
eW50YXggPSBjaGVja1N5bnRheCh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5nbG9iYWxF
eGVjKCksIHNvdXJjZSwgJnN5bnRheEV4Y2VwdGlvbik7CiAKICAgICBpZiAoIWlzVmFsaWRTeW50
YXgpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0
b1JlZihleGVjLCBzeW50YXhFeGNlcHRpb24pOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjo6Y3JlYXRlKHZtLCBz
eW50YXhFeGNlcHRpb24pOwotICAgICAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsK
KyAgICAgICAgdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogI2VuZGlmCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MiwxMCArMTYyLDEw
IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUKIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4oSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tl
cihleGVjKTsKLQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgZ2NQcm90ZWN0KGV4ZWMt
PnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisK
KyAgICBnY1Byb3RlY3Qodm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKSk7CiAgICAgdm0ucmVm
KCk7CiAgICAgcmV0dXJuIGN0eDsKIH0KQEAgLTE3MywxMCArMTczLDEwIEBAIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4KIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFz
ZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBib29sIHByb3RlY3RDb3VudElzWmVybyA9IEhlYXA6OmhlYXAoZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+dW5wcm90ZWN0KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisKKyAgICBib29sIHByb3RlY3RD
b3VudElzWmVybyA9IHZtLmhlYXAudW5wcm90ZWN0KHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhl
YykpOwogICAgIGlmIChwcm90ZWN0Q291bnRJc1plcm8pCiAgICAgICAgIHZtLmhlYXAucmVwb3J0
QWJhbmRvbmVkT2JqZWN0R3JhcGgoKTsKICAgICB2bS5kZXJlZigpOwpAQCAtMjI1LDkgKzIyNSwx
MCBAQCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRDb3B5TmFtZShKU0dsCiAgICAgfQogCiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KHZtKTsKIAotICAgIFN0cmluZyBuYW1lID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5u
YW1lKCk7CisgICAgU3RyaW5nIG5hbWUgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5u
YW1lKCk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0y
NDIsOSArMjQzLDEwIEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnQK
ICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIodm0pOwogCi0gICAgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5zZXRO
YW1lKG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IFN0cmluZygpKTsKKyAgICB2bS52bUVudHJ5R2xv
YmFsT2JqZWN0KGV4ZWMpLT5zZXROYW1lKG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IFN0cmluZygp
KTsKIH0KIAogCkBAIC0zMjUsOSArMzI3LDEwIEBAIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVt
b3RlSW5zcGVjdGlvbkUKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUds
b2JhbE9iamVjdCgpLT5yZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIHZtLnZt
RW50cnlHbG9iYWxPYmplY3QoZXhlYyktPnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKTsKIH0KIAog
dm9pZCBKU0dsb2JhbENvbnRleHRTZXRSZW1vdGVJbnNwZWN0aW9uRW5hYmxlZChKU0dsb2JhbENv
bnRleHRSZWYgY3R4LCBib29sIGVuYWJsZWQpCkBAIC0zMzgsOSArMzQxLDEwIEBAIHZvaWQgSlNH
bG9iYWxDb250ZXh0U2V0UmVtb3RlSW5zcGVjdGlvbkUKICAgICB9CiAKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+c2V0UmVtb3RlRGVidWdnaW5n
RW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBKU0dsb2JhbENvbnRleHRHZXRJbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgpCkBAIC0zNTIsOSArMzU2LDEwIEBAIGJvb2wgSlNHbG9iYWxDb250ZXh0R2V0SW5jbHVkZXNO
YXRpdmVDYWwKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbmNsdWRlc05hdGl2ZUNhbGxTdGFja1do
ZW5SZXBvcnRpbmdFeGNlcHRpb25zKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjdHgpOwpA
QCAtMzcxLDkgKzM3NiwxMCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZl
Q2FsCiAgICAgfQogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKTsKICAgICBnbG9iYWxPYmplY3QtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRp
bmdFeGNlcHRpb25zKGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGN0eCk7CkBAIC0zOTEsOSArMzk3LDEwIEBAIENGUnVuTG9vcFJlZiBKU0dsb2JhbENv
bnRleHRHZXREZWJ1Z2dlclIKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICByZXR1cm4gZXhlYy0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JEZWJ1Z2dhYmxlKCkudGFyZ2V0UnVuTG9vcCgpOwor
ICAgIHJldHVybiB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5pbnNwZWN0b3JEZWJ1Z2dh
YmxlKCkudGFyZ2V0UnVuTG9vcCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3R4KTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTQwOSw5ICs0MTYsMTAgQEAgdm9pZCBKU0dsb2JhbENvbnRl
eHRTZXREZWJ1Z2dlclJ1bkxvb3AoSgogICAgIH0KIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKIAotICAgIGV4ZWMtPnZtRW50cnlH
bG9iYWxPYmplY3QoKS0+aW5zcGVjdG9yRGVidWdnYWJsZSgpLnNldFRhcmdldFJ1bkxvb3AocnVu
TG9vcCk7CisgICAgdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+aW5zcGVjdG9yRGVidWdn
YWJsZSgpLnNldFRhcmdldFJ1bkxvb3AocnVuTG9vcCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjdHgpOwogICAgIFVOVVNFRF9QQVJBTShydW5Mb29wKTsKQEAgLTQyOCw4ICs0MzYsOSBAQCBJ
bnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlCiAgICAgfQogCiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogCi0g
ICAgcmV0dXJuICZleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKKyAgICByZXR1cm4gJnZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZS5tbQkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NzQsOCArNjc0LDkgQEAgSlNDb250YWluZXJD
b252ZXJ0b3I6OlRhc2sgSlNDb250YWluZXJDbwogc3RhdGljIHZvaWQgcmVwb3J0RXhjZXB0aW9u
VG9JbnNwZWN0b3IoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBleGNl
cHRpb25WYWx1ZSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7
Ci0gICAgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IEpTQzo6RXhjZXB0aW9uOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhjZXB0aW9uVmFsdWUpOwotICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlcG9ydEFQSUV4Y2VwdGlvbihleGVjLCBleGNl
cHRpb24pOworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0M6OkV4Y2VwdGlv
biogZXhjZXB0aW9uID0gSlNDOjpFeGNlcHRpb246OmNyZWF0ZSh2bSwgZXhjZXB0aW9uVmFsdWUp
OworICAgIHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5yZXBvcnRBUElFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAJKHJldmlzaW9u
IDIzNTIzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOCw5ICsxMjgsMTEgQEAgc3RhdGljIEpTQ2xhc3NSZWYgd3Jh
cHBlZE9iamVjdENsYXNzKEpTQwogc3RhdGljIEdSZWZQdHI8SlNDQ29udGV4dD4ganNjQ29udGV4
dEZvck9iamVjdChKU0M6OkpTT2JqZWN0KiBqc09iamVjdCkKIHsKICAgICBBU1NFUlQoaXNXcmFw
cGVkT2JqZWN0KGpzT2JqZWN0KSk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBqc09iamVj
dC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc09iamVjdC0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBpZiAoanNPYmpl
Y3QtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdsb2JhbFNjb3BlRXh0
ZW5zaW9uID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUV4dGVuc2lv
bigpKQorICAgICAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAg
aWYgKGF1dG8qIGdsb2JhbFNjb3BlRXh0ZW5zaW9uID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChl
eGVjKS0+Z2xvYmFsU2NvcGVFeHRlbnNpb24oKSkKICAgICAgICAgICAgIGV4ZWMgPSBKU0M6OkpT
U2NvcGU6Om9iamVjdEF0U2NvcGUoZ2xvYmFsU2NvcGVFeHRlbnNpb24pLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpOwogICAgIH0KICAgICByZXR1cm4ganNjQ29udGV4dEdldE9yQ3JlYXRl
KHRvR2xvYmFsUmVmKGV4ZWMpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgwLDgg
Kzg4MCw5IEBAIEpTQ1ZhbHVlKiBqc2NfY29udGV4dF9ldmFsdWF0ZV9pbl9vYmplY3QKICAgICBK
U1JldGFpblB0cjxKU0dsb2JhbENvbnRleHRSZWY+IG9iamVjdENvbnRleHQoQWRvcHQsCiAgICAg
ICAgIGluc3RhbmNlID8ganNjQ2xhc3NDcmVhdGVDb250ZXh0V2l0aEpTV3JhcHBlcihvYmplY3RD
bGFzcywgaW5zdGFuY2UpIDogSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFs
TWFjaGluZUdldENvbnRleHRHcm91cChjb250ZXh0LT5wcml2LT52bS5nZXQoKSksIG51bGxwdHIp
KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMob2JqZWN0Q29udGV4dC5nZXQoKSk7
Ci0gICAgYXV0byoganNPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7Ci0gICAg
anNPYmplY3QtPnNldEdsb2JhbFNjb3BlRXh0ZW5zaW9uKEpTQzo6SlNXaXRoU2NvcGU6OmNyZWF0
ZShleGVjLT52bSgpLCBqc09iamVjdCwganNPYmplY3QtPmdsb2JhbFNjb3BlKCksIHRvSlMoSlND
b250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQtPnByaXYtPmpzQ29udGV4dC5nZXQoKSkpKSk7
CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGpzT2JqZWN0ID0gdm0u
dm1FbnRyeUdsb2JhbE9iamVjdChleGVjKTsKKyAgICBqc09iamVjdC0+c2V0R2xvYmFsU2NvcGVF
eHRlbnNpb24oSlNDOjpKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBqc09iamVjdCwganNPYmplY3Qt
Pmdsb2JhbFNjb3BlKCksIHRvSlMoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQtPnBy
aXYtPmpzQ29udGV4dC5nZXQoKSkpKSk7CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxs
cHRyOwogICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gZXZhbHVhdGVTY3JpcHRJbkNvbnRleHQob2Jq
ZWN0Q29udGV4dC5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChjb2RlLCBsZW5ndGggPCAwID8gc3Ry
bGVuKGNvZGUpIDogbGVuZ3RoKSwgdXJpLCBsaW5lTnVtYmVyLCAmZXhjZXB0aW9uKTsKICAgICBp
ZiAoanNjQ29udGV4dEhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGNvbnRleHQsIGV4Y2VwdGlvbikp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJl
dmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxOCw3ICs3MTgsNyBAQCB2b2lkIERlYnVnZ2VyOjpw
YXVzZUlmTmVlZGVkKENhbGxGcmFtZSogCiAgICAgLy8gcmVzZXRpbmcgdGhlIHBhdXNlIHN0YXRl
IGJlZm9yZSBleGVjdXRpbmcgYW55IGJyZWFrcG9pbnQgYWN0aW9ucy4KICAgICBUZW1wb3JhcnlQ
YXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogdm1F
bnRyeUdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCh2bSk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFs
T2JqZWN0KGNhbGxGcmFtZSk7CiAKICAgICBpZiAoZGlkSGl0QnJlYWtwb2ludCkgewogICAgICAg
ICBoYW5kbGVCcmVha3BvaW50SGl0KHZtRW50cnlHbG9iYWxPYmplY3QsIGJyZWFrcG9pbnQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyAr
MTE4LDggQEAgSlNDOjpKU0dsb2JhbE9iamVjdCogRGVidWdnZXJDYWxsRnJhbWU6OgogICAgIEFT
U0VSVChpc1ZhbGlkKCkpOwogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gbV92YWxpZE1hY2hpbmVGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpOworICAgIFZNJiB2bSA9IG1fdmFsaWRNYWNoaW5lRnJhbWUtPnZtKCk7CisgICAgcmV0dXJu
IHZtLnZtRW50cnlHbG9iYWxPYmplY3QobV92YWxpZE1hY2hpbmVGcmFtZSk7CiB9CiAKIFNvdXJj
ZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkBAIC0yNTIsNyArMjUzLDcg
QEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoUwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3QoY2FsbEZyYW1lKTsKICAg
ICBpZiAoc2NvcGVFeHRlbnNpb25PYmplY3QpIHsKICAgICAgICAgSlNTY29wZSogaWdub3JlZFBy
ZXZpb3VzU2NvcGUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCk7CiAgICAgICAgIGdsb2Jh
bE9iamVjdC0+c2V0R2xvYmFsU2NvcGVFeHRlbnNpb24oSlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBpZ25vcmVkUHJldmlvdXNTY29wZSwgc2NvcGVFeHRlbnNpb25PYmplY3Qp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCB2b2lk
IEV4ZWNTdGF0ZTo6aW5pdEdsb2JhbEV4ZWMoRXhlY1N0YXRlCiAgICAgZ2xvYmFsRXhlYy0+c2V0
UmV0dXJuUEMoMCk7CiAgICAgZ2xvYmFsRXhlYy0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoMCk7CiAgICAgZ2xvYmFsRXhlYy0+c2V0Q2FsbGVlKGdsb2JhbENhbGxlZSk7CisgICAgQVNT
RVJUKGdsb2JhbEV4ZWMtPmlzR2xvYmFsRXhlYygpKTsKIH0KIAogYm9vbCBDYWxsRnJhbWU6OmNh
bGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QKQEAgLTE4NywzNCArMTg4LDYgQEAg
UmVnaXN0ZXIqIENhbGxGcmFtZTo6dG9wT2ZGcmFtZUludGVybmFsKAogICAgIHJldHVybiByZWdp
c3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCk7CiB9CiAKLUpTR2xvYmFs
T2JqZWN0KiBDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QoKQotewotICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxlZSgpLmlzQ2VsbCgpKTsKLSAgICBpZiAoY2FsbGVlKCkuYXNDZWxsKCktPmlz
T2JqZWN0KCkpIHsgCi0gICAgICAgIGlmICh0aGlzID09IGxleGljYWxHbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpKQotICAgICAgICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsK
LSAgICB9Ci0gICAgLy8gSWYgd2UncmUgbm90IGFuIG9iamVjdCwgd2UncmUgd2FzbSwgYW5kIHRo
ZXJlZm9yZSB3ZSdyZSBleGVjdXRpbmcgY29kZSBhbmQgdGhlIGJlbG93IGlzIHNhZmUuCi0KLSAg
ICAvLyBGb3IgYW55IEV4ZWNTdGF0ZSB0aGF0J3Mgbm90IGEgZ2xvYmFsRXhlYywgdGhlIAotICAg
IC8vIGR5bmFtaWMgZ2xvYmFsIG9iamVjdCBtdXN0IGJlIHNldCBzaW5jZSBjb2RlIGlzIHJ1bm5p
bmcKLSAgICBBU1NFUlQodm0oKS5lbnRyeVNjb3BlKTsKLSAgICByZXR1cm4gdm0oKS5lbnRyeVNj
b3BlLT5nbG9iYWxPYmplY3QoKTsKLX0KLQotSlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6dm1F
bnRyeUdsb2JhbE9iamVjdChWTSYgdm0pCi17Ci0gICAgaWYgKGNhbGxlZSgpLmlzQ2VsbCgpICYm
IGNhbGxlZSgpLmFzQ2VsbCgpLT5pc09iamVjdCgpKSB7Ci0gICAgICAgIGlmICh0aGlzID09IGxl
eGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKQotICAgICAgICAgICAgcmV0dXJuIGxl
eGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICB9Ci0KLSAgICAvLyBGb3IgYW55IEV4ZWNTdGF0ZSB0
aGF0J3Mgbm90IGEgZ2xvYmFsRXhlYywgdGhlIAotICAgIC8vIGR5bmFtaWMgZ2xvYmFsIG9iamVj
dCBtdXN0IGJlIHNldCBzaW5jZSBjb2RlIGlzIHJ1bm5pbmcKLSAgICBBU1NFUlQodm0uZW50cnlT
Y29wZSk7Ci0gICAgcmV0dXJuIHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpOwotfQotCiBK
U0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjp3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0KFZN
JiB2bSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyMzUyMzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtl
bGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTUs
MTggKzExNSwxMyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgICAgICBBU1NFUlQodGhpc1tz
Y29wZVJlZ2lzdGVyT2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdGhpc1tzY29wZVJlZ2lzdGVyT2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKTsKICAgICAgICAg
fQotICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIGV4ZWN1dGlvbiBiZWdhbi4KLSAg
ICAgICAgLy8gVGhpcyB2YXJpYW50IGlzIG5vdCBzYWZlIHRvIGNhbGwgZnJvbSBhIFdhc20gZnJh
bWUuCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xv
YmFsT2JqZWN0KCk7Ci0gICAgICAgIC8vIFRoaXMgdmFyaWFudCBpcyBzYWZlIHRvIGNhbGwgZnJv
bSBhIFdhc20gZnJhbWUuCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2Jq
ZWN0KFZNJik7CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIHdhc21Bd2FyZUxleGljYWxHbG9i
YWxPYmplY3QoVk0mKTsKIAogICAgICAgICBib29sIGlzQW55V2FzbUNhbGxlZSgpOwogCiAgICAg
ICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29k
ZSB3YXMgZGVmaW5lZC4KLSAgICAgICAgLy8gRGlmZmVycyBmcm9tIHZtRW50cnlHbG9iYWxPYmpl
Y3QoKSBkdXJpbmcgZnVuY3Rpb24gY2FsbHMgYWNyb3NzIHdlYiBicm93c2VyIGZyYW1lcy4KKyAg
ICAgICAgLy8gRGlmZmVycyBmcm9tIFZNOjp2bUVudHJ5R2xvYmFsT2JqZWN0KCkgZHVyaW5nIGZ1
bmN0aW9uIGNhbGxzIGFjcm9zcyB3ZWIgYnJvd3NlciBmcmFtZXMuCiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAKICAgICAgICAgLy8gRGlmZmVy
cyBmcm9tIGxleGljYWxHbG9iYWxPYmplY3QgYmVjYXVzZSB0aGlzIHdpbGwgaGF2ZSBET00gd2lu
ZG93IHNoZWxsIHJhdGhlciB0aGFuCkBAIC0yNTUsNyArMjUwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
IHsKIAogICAgICAgICBzdGF0aWMgaW50IG9mZnNldEZvcihzaXplX3QgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZy
YW1lU2xvdDo6dGhpc0FyZ3VtZW50IC0gMTsgfQogCi0gICAgICAgIHN0YXRpYyBDYWxsRnJhbWUq
IG5vQ2FsbGVyKCkgeyByZXR1cm4gMDsgfQorICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBub0Nh
bGxlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICAgICAgYm9vbCBpc0dsb2JhbEV4ZWMoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWVBbmRQQygpLmNh
bGxlckZyYW1lID09IG5vQ2FsbGVyKCkgJiYgY2FsbGVyRnJhbWVBbmRQQygpLnBjID09IG51bGxw
dHI7CisgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0NhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0
Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtD
YWxsRnJhbWVTbG90OjpjYWxsZWVdID0gY2FsbGVlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIzNTIz
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzNSw3ICs2MzUsNyBAQCBwcml2YXRlOgogQUxXQVlTX0lOTElO
RSBzdGF0aWMgdm9pZCBub3RpZnlEZWJ1Z2dlck9mVW53aW5kaW5nKFZNJiB2bSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7Ci0gICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRyeUds
b2JhbE9iamVjdCh2bSktPmRlYnVnZ2VyKCkpIHsKKyAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2Vy
ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChjYWxsRnJhbWUpLT5kZWJ1Z2dlcigpKSB7CiAgICAg
ICAgIFN1c3BlbmRFeGNlcHRpb25TY29wZSBzY29wZSgmdm0pOwogICAgICAgICBpZiAoY2FsbEZy
YW1lLT5pc0FueVdhc21DYWxsZWUoKQogICAgICAgICAgICAgfHwgKGNhbGxGcmFtZS0+Y2FsbGVl
KCkuaXNDZWxsKCkgJiYgY2FsbEZyYW1lLT5jYWxsZWUoKS5hc0NlbGwoKS0+aW5oZXJpdHM8SlNG
dW5jdGlvbj4odm0pKSkKQEAgLTc1NCw3ICs3NTQsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlcklu
Zm8qIEludGVycHJldGVyOjp1CiAKIHZvaWQgSW50ZXJwcmV0ZXI6Om5vdGlmeURlYnVnZ2VyT2ZF
eGNlcHRpb25Ub0JlVGhyb3duKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEV4Y2VwdGlv
biogZXhjZXB0aW9uKQogewotICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1F
bnRyeUdsb2JhbE9iamVjdCh2bSktPmRlYnVnZ2VyKCk7CisgICAgRGVidWdnZXIqIGRlYnVnZ2Vy
ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChjYWxsRnJhbWUpLT5kZWJ1Z2dlcigpOwogICAgIGlm
IChkZWJ1Z2dlciAmJiBkZWJ1Z2dlci0+bmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSAmJiAhZXhj
ZXB0aW9uLT5kaWROb3RpZnlJbnNwZWN0b3JPZlRocm93KCkpIHsKICAgICAgICAgLy8gVGhpcyBj
b2RlIGFzc3VtZXMgdGhhdCBpZiB0aGUgZGVidWdnZXIgaXMgZW5hYmxlZCB0aGVuIHRoZXJlIGlz
IG5vIGlubGluaW5nLgogICAgICAgICAvLyBJZiB0aGF0IGFzc3VtcHRpb24gdHVybnMgb3V0IHRv
IGJlIGZhbHNlIHRoZW4gd2UnbGwgaWdub3JlIHRoZSBpbmxpbmVkIGNhbGwKQEAgLTEzMjcsNyAr
MTMyNyw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWwKIHsKICAg
ICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOworICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IHZt
LnZtRW50cnlHbG9iYWxPYmplY3QoY2FsbEZyYW1lKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRl
YnVnZ2VyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWxsRGF0YS5jcHAJKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3
LDE1IEBAIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnUKIAogSlNWYWx1
ZSBwcm9maWxlZENhbGwoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxpbmdSZWFzb24gcmVhc29uLCBK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
IGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAg
ICBTY3JpcHRQcm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZShleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCksIHJlYXNvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBTY3JpcHRQ
cm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZSh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMp
LCByZWFzb24pOwogICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CiAKIEpTVmFsdWUgcHJvZmlsZWRDYWxs
KEV4ZWNTdGF0ZSogZXhlYywgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEV4Y2VwdGlvbj4m
IHJldHVybmVkRXhjZXB0aW9uKQogewotICAgIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHByb2ZpbGlu
Z1Njb3BlKGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgcmVhc29uKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHByb2ZpbGluZ1Njb3BlKHZt
LnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyksIHJlYXNvbik7CiAgICAgcmV0dXJuIGNhbGwoZXhl
YywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgCiAgICAgQ29k
ZVByb2ZpbGluZyBwcm9maWxlKHNvdXJjZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpOworICAgICAgICB0aGlzVmFsdWUgPSB2bS52bUVudHJ5R2xvYmFs
T2JqZWN0KGV4ZWMpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2JqZWN0Kj4o
dGhpc1ZhbHVlLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZVByb2dyYW0oc291cmNlLCBleGVjLCB0aGlzT2Jq
KTsKIApAQCAtMTE0LDEzICsxMTQsMTUgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IAogCiBKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9maWxpbmdSZWFzb24gcmVhc29uLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKLSAg
ICBTY3JpcHRQcm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZShleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCksIHJlYXNvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBTY3JpcHRQ
cm9maWxpbmdTY29wZSBwcm9maWxpbmdTY29wZSh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMp
LCByZWFzb24pOwogICAgIHJldHVybiBldmFsdWF0ZShleGVjLCBzb3VyY2UsIHRoaXNWYWx1ZSwg
cmV0dXJuZWRFeGNlcHRpb24pOwogfQogCiBKU1ZhbHVlIGV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCog
c2NvcGVFeHRlbnNpb25PYmplY3QsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0
aW9uKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKTsKIAogICAg
IGlmIChzY29wZUV4dGVuc2lvbk9iamVjdCkgewogICAgICAgICBKU1Njb3BlKiBpZ25vcmVkUHJl
dmlvdXNTY29wZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKTsKQEAgLTE2MSw3ICsxNjMs
NyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlCiAgICAgUkVMRUFT
RV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgcmV0dXJuIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKS0+bW9kdWxlTG9hZGVyKCktPmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBpZGVudGlm
aWVyVG9KU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUp
KSwgcGFyYW1ldGVycywgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0dXJuIHZtLnZtRW50cnlHbG9i
YWxPYmplY3QoZXhlYyktPm1vZHVsZUxvYWRlcigpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhl
YywgaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBt
b2R1bGVOYW1lKSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOwogfQogCiBKU0ludGVybmFs
UHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0xNzQsNyArMTc2LDcg
QEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZQogCiAgICAgU3ltYm9s
KiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIAotICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7Cisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3Qo
ZXhlYyk7CiAKICAgICAvLyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1
bGVMb2FkZXIgcmVnaXN0cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCiAgICAgZ2xv
YmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZUZldGNoKGV4ZWMsIGtleSwgc291cmNl
KTsKQEAgLTE5MCw3ICsxOTIsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVj
U3RhdGUqCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJl
YWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
dm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgcmV0dXJuIGV4ZWMt
PnZtRW50cnlHbG9iYWxPYmplY3QoKS0+bW9kdWxlTG9hZGVyKCktPmxvYWRNb2R1bGUoZXhlYywg
aWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1
bGVOYW1lKSksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOworICAgIHJldHVybiB2bS52bUVu
dHJ5R2xvYmFsT2JqZWN0KGV4ZWMpLT5tb2R1bGVMb2FkZXIoKS0+bG9hZE1vZHVsZShleGVjLCBp
ZGVudGlmaWVyVG9KU1ZhbHVlKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVs
ZU5hbWUpKSwgcGFyYW1ldGVycywgc2NyaXB0RmV0Y2hlcik7CiB9CiAKIEpTSW50ZXJuYWxQcm9t
aXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMDMsNyArMjA1LDcgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKgogCiAgICAgU3ltYm9sKiBrZXkgPSBjcmVhdGVT
eW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyk7CiAKICAgICAv
LyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1bGVMb2FkZXIgcmVnaXN0
cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCiAgICAgLy8gRklYTUU6IEludHJvZHVj
ZSBKU1NvdXJjZUNvZGUgb2JqZWN0IHRvIHdyYXAgYXJvdW5kIHRoaXMgc291cmNlLgpAQCAtMjIw
LDcgKzIyMiw3IEBAIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSoKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVu
dCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxl
Y3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpOwogICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhl
YywgaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlS2V5KSwgc2NyaXB0RmV0Y2hlcik7CiB9
CiAKQEAgLTIzMSw3ICsyMzMsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4
ZWNTdGF0CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJl
YWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCgh
dm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgcmV0dXJuIGV4ZWMt
PnZtRW50cnlHbG9iYWxPYmplY3QoKS0+bW9kdWxlTG9hZGVyKCktPnJlcXVlc3RJbXBvcnRNb2R1
bGUoZXhlYywgbW9kdWxlS2V5LCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsKKyAgICByZXR1
cm4gdm0udm1FbnRyeUdsb2JhbE9iamVjdChleGVjKS0+bW9kdWxlTG9hZGVyKCktPnJlcXVlc3RJ
bXBvcnRNb2R1bGUoZXhlYywgbW9kdWxlS2V5LCBwYXJhbWV0ZXJzLCBzY3JpcHRGZXRjaGVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDggQEAgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VgogCiBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxp
bmdSZWFzb24gcmVhc29uLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBDb25zdHJ1Y3RUeXBl
IGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewotICAgIFNjcmlwdFByb2ZpbGlu
Z1Njb3BlIHByb2ZpbGluZ1Njb3BlKGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgcmVhc29u
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHBy
b2ZpbGluZ1Njb3BlKHZtLnZtRW50cnlHbG9iYWxPYmplY3QoZXhlYyksIHJlYXNvbik7CiAgICAg
cmV0dXJuIGNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSwgYXJncywgbmV3VGFyZ2V0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyAr
MTY5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0UwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5pbnRlcnByZXRlci0+Z2V0U3Rh
Y2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAsIGVycm9yQ29uc3RydWN0b3It
PnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlKCkpOwogICAgIGlmICghc3RhY2tUcmFjZS0+aXNFbXB0
eSgpKQotICAgICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMgPT0gdm0udG9wQ2FsbEZyYW1l
IHx8IGV4ZWMgPT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkgfHwg
ZXhlYyA9PSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+
aXNHbG9iYWxFeGVjKCkpOwogICAgIHJldHVybiBzdGFja1RyYWNlOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzMiw3ICs4
MzIsNyBAQCB2b2lkIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAg
IENSQVNIKCk7CiAgICAgfQogCi0gICAgQVNTRVJUKGV4ZWMgPT0gdG9wQ2FsbEZyYW1lIHx8IGV4
ZWMgPT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkgfHwgZXhlYyA9
PSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CisgICAgQVNTRVJU
KGV4ZWMgPT0gdG9wQ2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpKTsKIAogICAgIGlu
dGVycHJldGVyLT5ub3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bigqdGhpcywgZXhl
YywgZXhjZXB0aW9uKTsKIApAQCAtMTI2Myw0ICsxMjYzLDE1IEBAIHZvaWQgVk06OmNsZWFyU2Ny
YXRjaEJ1ZmZlcnMoKQogICAgICAgICBzY3JhdGNoQnVmZmVyLT5zZXRBY3RpdmVMZW5ndGgoMCk7
CiB9CiAKK0pTR2xvYmFsT2JqZWN0KiBWTTo6dm1FbnRyeUdsb2JhbE9iamVjdChjb25zdCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgY29uc3QKK3sKKyAgICBpZiAoY2FsbEZyYW1lICYmIGNhbGxGcmFt
ZS0+aXNHbG9iYWxFeGVjKCkpIHsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Y2FsbGVlKCku
aXNDZWxsKCkgJiYgY2FsbEZyYW1lLT5jYWxsZWUoKS5hc0NlbGwoKS0+aXNPYmplY3QoKSk7Cisg
ICAgICAgIEFTU0VSVChjYWxsRnJhbWUgPT0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSk7CisgICAgICAgIHJldHVybiBjYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICB9CisgICAgQVNTRVJUKGVudHJ5U2NvcGUpOworICAgIHJldHVybiBl
bnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsx
NzIsOCBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEluc3RydWN0aW9uOwogc3RydWN0IFZh
bHVlUHJvZmlsZTsKIAordHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOworCiBzdHJ1Y3QgTG9j
YWxUaW1lT2Zmc2V0Q2FjaGUgewogICAgIExvY2FsVGltZU9mZnNldENhY2hlKCkKICAgICAgICAg
OiBzdGFydCgwLjApCkBAIC0yOTMsNiArMjk1LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGJvb2wgaXNFbnRlcmVkKCkgY29uc3QgeyBy
ZXR1cm4gISFlbnRyeVNjb3BlOyB9CiAKKyAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIGV4
ZWN1dGlvbiBiZWdhbi4KKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogdm1F
bnRyeUdsb2JhbE9iamVjdChjb25zdCBDYWxsRnJhbWUqKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBuZXh0SUQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1MjM3KQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTgtMDgtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgdm1FbnRyeUdsb2JhbE9iamVjdCgpIHRvIFZNIGZyb20gQ2FsbEZyYW1lLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4OTAwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80MzY1NTc1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkIGJlY2F1c2UgdGhpcyBwYXRj
aCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsZXJHbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTUdsb2JhbE9iamVjdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmZpcnN0RE9NV2luZG93KToKKyAgICAgICAgKiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9OUFZhcmlhbnQpOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZEV4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5j
ZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0
YXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFsdWVUb09iamNPYmplY3QpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfdXRpbGl0eS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRW
YWx1ZVRvT2JqY1ZhbHVlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIpOgorCiAyMDE4LTA4LTIz
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRp
YVN0cmVhbV0gU3RvcmUgdmlkZW8gcHJlc2V0IHNpemVzIGluIGEgbWFwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDggQEAg
RXhjZXB0aW9uT3I8UmVmPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPgogICAgIGlmICghcmVzb2x2
ZXJPYmplY3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlTWlzbWF0Y2hFcnJvciB9
OwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIoc3Rh
dGUudm0oKSwgcmVzb2x2ZXJPYmplY3QsIGFzSlNET01XaW5kb3coc3RhdGUudm1FbnRyeUdsb2Jh
bE9iamVjdCgpKSkpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIodm0sIHJlc29sdmVyT2JqZWN0LCBhc0pT
RE9NV2luZG93KHZtLnZtRW50cnlHbG9iYWxPYmplY3QoJnN0YXRlKSkpKTsKIH0KIAogSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXI6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKFZNJiB2bSwgSlNPYmpl
Y3QqIGN1c3RvbVJlc29sdmVyLCBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0KQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjM1MjM3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDExIEBAIEpTRE9NR2xvYmFs
T2JqZWN0JiBjYWxsZXJHbG9iYWxPYmplY3QoRXgKIAogICAgIEdldENhbGxlckdsb2JhbE9iamVj
dEZ1bmN0b3IgaXRlcjsKICAgICBzdGF0ZS5pdGVyYXRlKGl0ZXIpOwotICAgIHJldHVybiAqanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oaXRlci5nbG9iYWxPYmplY3QoKSA/IGl0ZXIuZ2xvYmFs
T2JqZWN0KCkgOiBzdGF0ZS52bUVudHJ5R2xvYmFsT2JqZWN0KCkpOworICAgIGlmIChpdGVyLmds
b2JhbE9iamVjdCgpKQorICAgICAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGl0ZXIuZ2xvYmFsT2JqZWN0KCkpOworCisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBy
ZXR1cm4gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHZtLnZtRW50cnlHbG9iYWxPYmplY3Qo
JnN0YXRlKSk7CiB9CiAKIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJ
KHJldmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksOCBAQCBET01XaW5kb3cm
IGFjdGl2ZURPTVdpbmRvdyhFeGVjU3RhdGUmIHN0CiAKIERPTVdpbmRvdyYgZmlyc3RET01XaW5k
b3coRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhzdGF0ZS52
bUVudHJ5R2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCk7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KCZzdGF0
ZSkpLT53cmFwcGVkKCk7CiB9CiAKIERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KEV4ZWNT
dGF0ZSYgc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAJKHJl
dmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudChFeGVjU3RhdGUqIAogICAgICAgICAgICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQob2Jq
LCAqcmVzdWx0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCk7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udm1FbnRy
eUdsb2JhbE9iamVjdChleGVjKTsKIAogICAgICAgICAgICAgUm9vdE9iamVjdCogcm9vdE9iamVj
dCA9IGZpbmRSb290T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBpZiAocm9vdE9i
amVjdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDggQEAgaWQg
Y3JlYXRlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVjdAogCiBzdGF0aWMgdm9pZCBhZGRF
eGNlcHRpb25Ub0NvbnNvbGUoRXhlY1N0YXRlKiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0
aW9uKQogewotICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPnZt
RW50cnlHbG9iYWxPYmplY3QoKSk7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTRE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KHZtLnZtRW50cnlHbG9iYWxPYmpl
Y3QoZXhlYykpOwogICAgIGlmICghd2luZG93IHx8ICFleGNlcHRpb24pCiAgICAgICAgIHJldHVy
bjsKICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMjM1MjM3KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtODgsOCArODgsOCBAQCB2b2lkIE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2Vw
dGlvblRvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXNfZXhjZXB0aW9uRW52
aXJvbm1lbnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCkpIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgaWYgKCFz
X2V4Y2VwdGlvbkVudmlyb25tZW50IHx8IHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPT0gdm0udm1F
bnRyeUdsb2JhbE9iamVjdChleGVjKSkgeworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIHNfZXhjZXB0aW9uKTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlz
aW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw4IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2
YWx1ZUZyb21JbnN0YW5jZShFeGUKIAogc3RhdGljIGlkIGNvbnZlcnRWYWx1ZVRvT2JqY09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPFJvb3RPYmpl
Y3Q+IHJvb3RPYmplY3QgPSBmaW5kUm9vdE9iamVjdChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUmVmUHRyPFJvb3RPYmplY3Q+IHJv
b3RPYmplY3QgPSBmaW5kUm9vdE9iamVjdCh2bS52bUVudHJ5R2xvYmFsT2JqZWN0KGV4ZWMpKTsK
ICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFt3
ZWJTY3JpcHRPYmplY3RDbGFzcygpIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTp2YWx1ZSBvcmln
aW5Sb290T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCkgcm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgp
XTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHJl
dmlzaW9uIDIzNTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtODgsOSArODgsMTAgQEAgT2JqY1ZhbHVlIGNvbnZlcnRW
YWx1ZVRvT2JqY1ZhbHVlKEV4ZWNTdAogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNh
c2UgT2JqY09iamVjdFR5cGU6IHsKLSAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qg
Km9yaWdpbkdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0ICpvcmlnaW5HbG9iYWxPYmplY3QgPSB2bS52bUVudHJ5R2xv
YmFsT2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgUm9vdE9iamVjdCogb3JpZ2luUm9vdE9iamVj
dCA9IGZpbmRSb290T2JqZWN0KG9yaWdpbkdsb2JhbE9iamVjdCk7CiAKICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjM1MjM3KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTIyLDcgKzQxMjIsNyBAQCBib29s
IEludGVybmFsczo6aXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlCiBKU1ZhbHVlIEludGVybmFsczo6
Y2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYnVmZmVyLCBK
U1ZhbHVlIHNyY0J5dGVPZmZzZXQsIEpTVmFsdWUgc3JjTGVuZ3RoKQogewogICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUudm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Rh
dGUudm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB2bS52bUVudHJ5R2xvYmFsT2JqZWN0KCZzdGF0ZSk7CiAgICAgSlNWTUNsaWVudERhdGEq
IGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwogICAgIGNvbnN0IElkZW50aWZpZXImIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRp
bk5hbWVzKCkuY2xvbmVBcnJheUJ1ZmZlclByaXZhdGVOYW1lKCk7CiAgICAgSlNWYWx1ZSB2YWx1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTIzNykKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE4LTA4LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIHZtRW50cnlHbG9iYWxPYmplY3QoKSB0byBWTSBmcm9tIENhbGxGcmFtZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODkwMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDM2NTU3NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1t
OgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6CisKIDIwMTgtMDgt
MjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBi
b29sZWFucyBmb3IgbW9kaWZpZXIga2V5cyBpbiBVSUV2ZW50V2l0aEtleVN0YXRlIHdpdGggT3B0
aW9uU2V0PE1vZGlmaWVyPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCShyZXZpc2lvbiAyMzUyMzcpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw3ICs5Myw4IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBh
cnNlZChFeGUKICAgICBOU1VSTCAqbnNVUkwgPSB0b05TVVJMKHNvdXJjZVByb3ZpZGVyLT51cmwo
KSk7CiAgICAgaW50IGZpcnN0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCku
bV9saW5lLm9uZUJhc2VkSW50KCk7CiAKLSAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSB0b1dlYkZy
YW1lKGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSB0b1dlYkZyYW1lKHZtLnZtRW50cnlHbG9iYWxP
YmplY3QoZXhlYykpOwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUgd2ViVmlld107
CiAgICAgV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVu
dGF0aW9ucyA9IFdlYlZpZXdHZXRTY3JpcHREZWJ1Z0RlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdl
YlZpZXcpOwogCg==
</data>
<flag name="review"
          id="365660"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>