<?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>160171</bug_id>
          
          <creation_ts>2016-07-25 13:11:17 -0700</creation_ts>
          <short_desc>AssemblyHelpers should own all of the cell allocation methods</short_desc>
          <delta_ts>2016-07-25 14:05:09 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160125</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214316</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 13:11:17 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214318</commentid>
    <comment_count>1</comment_count>
      <attachid>284518</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 13:14:08 -0700</bug_when>
    <thetext>Created attachment 284518
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214320</commentid>
    <comment_count>2</comment_count>
      <attachid>284518</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-25 13:19:16 -0700</bug_when>
    <thetext>Comment on attachment 284518
the patch

Please fix the build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214322</commentid>
    <comment_count>3</comment_count>
      <attachid>284520</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 13:26:19 -0700</bug_when>
    <thetext>Created attachment 284520
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214324</commentid>
    <comment_count>4</comment_count>
      <attachid>284521</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 13:31:44 -0700</bug_when>
    <thetext>Created attachment 284521
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214331</commentid>
    <comment_count>5</comment_count>
      <attachid>284521</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-25 13:51:03 -0700</bug_when>
    <thetext>Comment on attachment 284521
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=284521&amp;action=review

LGTM

&gt; Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:176
&gt; +    emitAllocateJSObject(resultReg, allocatorReg, TrustedImmPtr(structure), TrustedImmPtr(0), scratchReg, slowCases);

Style suggestion: Maybe it&apos;s worth giving the storage parameter here a temp name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214335</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-25 14:05:09 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/203699</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284518</attachid>
            <date>2016-07-25 13:14:08 -0700</date>
            <delta_ts>2016-07-25 13:26:19 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18301</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE2LTA3LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXNzZW1ibHlIZWxwZXJzIHNob3VsZCBvd24gYWxsIG9mIHRoZSBjZWxsIGFsbG9jYXRpb24gbWV0
aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
MTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBQcmlvciB0byB0aGlzIGNoYW5nZSB3ZSBoYWQgc29tZSBjb2RlIGluIERGR1NwZWN1bGF0
aXZlSklULmggYW5kIHNvbWUgY29kZSBpbiBKSVQuaCB0aGF0CisgICAgICAgIGRpZCBjZWxsIGFs
bG9jYXRpb24uCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBtb3ZlcyBhbGwgb2YgdGhh
dCBjb2RlIGludG8gQXNzZW1ibHlIZWxwZXJzLmguCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlSlNDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVKU09iamVjdFdpdGhLbm93blNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVt
aXRBbGxvY2F0ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFs
bG9jYXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50Q2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmpl
Y3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyk6CisKIDIwMTYtMDctMjUgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgb3BfbXVsL0FyaXRoTXVsKFVudHlwZWQsVW50eXBlZCkgc2hv
dWxkIGJlIGFuIElDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMDM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NDYsMjAgKzI1NDYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQog
ICAgIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmZvcmNlR0NTbG93UGF0aHMoKSkKLSAgICAgICAg
ICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BS
LCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpLCByZXN1bHRHUFIpOwot
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAv
LyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBoYXZlIHdoYXQgd2Uga25vdyBpcyBh
IGZyZXNoIG9iamVjdCwgYnV0Ci0gICAgICAgIC8vIGl0J3Mgc3RpbGwgb24gdGhlIEdDJ3MgZnJl
ZSBsaXN0LgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiksIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9i
amVjdCdzIFN0cnVjdHVyZS4KLSAgICAgICAgbV9qaXQuZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2hHUFIsIHNsb3dQYXRoKTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGFuIG9i
amVjdCBvZiBhIHNwZWNpZmljIHNpemUuCkBAIC0yNTY3LDEwICsyNTU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFs
bG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCiAgICAgICAgIFN0b3JhZ2VUeXBl
IHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoKQogICAgIHsKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgYWxs
b2NhdG9yR1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRl
ci4KLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RvcmFnZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKyAgICAgICAgbV9q
aXQuZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVy
ZSwgc3RvcmFnZSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BSIG9y
IEltbVB0ci4KQEAgLTI1NzgsOSArMjU2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQ
UlJlZyBzY3JhdGNoR1BSMSwKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9y
T2JqZWN0T2ZUeXBlPENsYXNzVHlwZT4oc2l6ZSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihhbGxvY2F0b3IpLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQUjEsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRj
aEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRo
S25vd25TaXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0
Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgsIHNpemUpOwogICAgIH0KIAogICAgIC8vIENv
bnZlbmllbmNlIGFsbG9jYXRvciBmb3IgYSBidWlsdC1pbiBvYmplY3QuCkBAIC0yNTg4LDQyICsy
NTcwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KEdQUlJlZyBy
ZXN1bHRHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBTdG9yYWdlVHlwZSBzdG9yYWdlLAog
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KAotICAgICAgICAgICAgcmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgsCi0g
ICAgICAgICAgICBDbGFzc1R5cGU6OmFsbG9jYXRpb25TaXplKDApKTsKKyAgICAgICAgbV9qaXQu
YWxsb2NhdGVKU09iamVjdDxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzdG9yYWdl
LCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1
Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KICAgICB2b2lk
IGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1
Y3R1cmVUeXBlIHN0cnVjdHVyZSwgR1BSUmVnIGFsbG9jYXRpb25TaXplLCBHUFJSZWcgc2NyYXRj
aEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93
UGF0aCkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRTcGFjZTo6cHJlY2lz
ZVN0ZXAgJiAoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIC0gMSkpLCAiTWFya2VkU3BhY2U6OnBy
ZWNpc2VTdGVwIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoIShNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCAmIChNYXJrZWRTcGFjZTo6aW1wcmVjaXNl
U3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwIG11c3QgYmUgYSBwb3dlciBv
ZiB0d28uIik7Ci0KLSAgICAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZSA9IG1f
aml0LnZtKCktPmhlYXAuc3Vic3BhY2VGb3JPYmplY3RPZlR5cGU8Q2xhc3NUeXBlPigpOwotICAg
ICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIC0g
MSksIGFsbG9jYXRpb25TaXplKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90U21h
bGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBhbGxvY2F0
aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlQ3V0b2ZmKSk7Ci0gICAg
ICAgIG1faml0LnJzaGlmdDMyKGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoZ2V0TFNCU2V0
KE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCkpLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIG1faml0
Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoTWFya2VkQWxsb2NhdG9yKSksIHNjcmF0Y2hHUFIx
LCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIG1faml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigmc3Vic3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbMF0pLCBzY3JhdGNoR1BSMSk7
Ci0KLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2VsZWN0ZWRTbWFsbFNwYWNlID0gbV9q
aXQuanVtcCgpOwotICAgICAgICBub3RTbWFsbC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBh
bGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjppbXByZWNpc2VDdXRvZmYp
KSk7Ci0gICAgICAgIG1faml0LnJzaGlmdDMyKGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIo
Z2V0TFNCU2V0KE1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsKLSAg
ICAgICAgbV9qaXQubXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwg
c2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKLSAgICAgICAgbV9qaXQuYWRkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZzdWJzcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWzBdKSwg
c2NyYXRjaEdQUjEpOwotCi0gICAgICAgIHNlbGVjdGVkU21hbGxTcGFjZS5saW5rKCZtX2ppdCk7
Ci0KLSAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwg
c3RydWN0dXJlLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOworICAg
ICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QocmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIGFsbG9jYXRpb25TaXplLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQ
YXRoKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDbGFzc1R5cGU+CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmpl
Y3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIAogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PFQ+KHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
KTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0PENsYXNzVHlw
ZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1Bh
dGgpOwogICAgIH0KIAogICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjAzNjk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSAr
MzIsMTEgQEAKICNpbmNsdWRlICJDb3B5QmFycmllci5oIgogI2luY2x1ZGUgIkZQUkluZm8uaCIK
ICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklubGlu
ZUNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCkBAIC0xNDA0LDYgKzE0MDYsOTAgQEAgcHVibGljOgog
ICAgIHZvaWQgZW1pdFJhbmRvbVRodW5rKEdQUlJlZyBzY3JhdGNoMCwgR1BSUmVnIHNjcmF0Y2gx
LCBHUFJSZWcgc2NyYXRjaDIsIEdQUlJlZyBzY3JhdGNoMywgRlBSUmVnIHJlc3VsdCk7CiAjZW5k
aWYKICAgICAKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZShHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcg
YWxsb2NhdG9yR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSnVtcExpc3QmIHNsb3dQYXRoKQorICAg
IHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmZvcmNlR0NTbG93UGF0aHMoKSkKKyAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChqdW1wKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVl
TGlzdEhlYWQoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoYnJh
bmNoVGVzdFB0cihaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFsbG9jYXRlZDogd2UgaGF2ZSB3aGF0IHdlIGtub3cg
aXMgYSBmcmVzaCBvYmplY3QsIGJ1dAorICAgICAgICAvLyBpdCdzIHN0aWxsIG9uIHRoZSBHQydz
IGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdEdQUiksIHNjcmF0Y2hH
UFIpOworICAgICAgICBzdG9yZVB0cihzY3JhdGNoR1BSLCBBZGRyZXNzKGFsbG9jYXRvckdQUiwg
TWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7CisgICAgfQorICAgIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+CisgICAgdm9pZCBlbWl0QWxsb2Nh
dGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJl
VHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisg
ICAgeworICAgICAgICBlbWl0QWxsb2NhdGUocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHNjcmF0
Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZv
KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKyAgICB9CisgICAgCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+CisgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgYWxsb2Nh
dG9yR1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgU3RvcmFnZVR5cGUgc3RvcmFnZSwgR1BS
UmVnIHNjcmF0Y2hHUFIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIGVtaXRB
bGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgc3RydWN0dXJlLCBzY3JhdGNo
R1BSLCBzbG93UGF0aCk7CisgICAgICAgIHN0b3JlUHRyKHN0b3JhZ2UsIEFkZHJlc3MocmVzdWx0
R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKyAgICB9CisgICAgCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlLCB0eXBlbmFt
ZSBTdG9yYWdlVHlwZT4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6
ZSgKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0
b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSMSwKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplKQorICAgIHsKKyAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSB2bSgpLT5oZWFwLmFsbG9jYXRvckZvck9i
amVjdE9mVHlwZTxDbGFzc1R5cGU+KHNpemUpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWxsb2NhdG9yKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIxLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIyLCBz
bG93UGF0aCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZSwg
dHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+CisgICAgdm9pZCBl
bWl0QWxsb2NhdGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVj
dHVyZSwgU3RvcmFnZVR5cGUgc3RvcmFnZSwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2Ny
YXRjaEdQUjIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBz
dG9yYWdlLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoLCBDbGFzc1R5cGU6OmFs
bG9jYXRpb25TaXplKDApKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBlbWl0QWxsb2NhdGVWYXJp
YWJsZVNpemVkKEdQUlJlZyByZXN1bHRHUFIsIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3Bh
Y2UsIEdQUlJlZyBhbGxvY2F0aW9uU2l6ZSwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2Ny
YXRjaEdQUjIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoIShNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVw
IC0gMSkpLCAiTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIG11c3QgYmUgYSBwb3dlciBvZiB0d28u
Iik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIShNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCAm
IChNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNlOjppbXByZWNp
c2VTdGVwIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7CisgICAgICAgIAorICAgICAgICBhZGQz
MihUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwIC0gMSksIGFsbG9jYXRpb25T
aXplKTsKKyAgICAgICAgSnVtcCBub3RTbWFsbCA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgYWxs
b2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6cHJlY2lzZUN1dG9mZikpOwor
ICAgICAgICByc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKGdldExTQlNldChN
YXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBtdWwzMihU
cnVzdGVkSW1tMzIoc2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjEpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cigmc3Vic3BhY2UucHJlY2lzZUFs
bG9jYXRvcnNbMF0pLCBzY3JhdGNoR1BSMSk7CisKKyAgICAgICAgSnVtcCBzZWxlY3RlZFNtYWxs
U3BhY2UgPSBqdW1wKCk7CisgICAgICAgIG5vdFNtYWxsLmxpbmsodGhpcyk7CisgICAgICAgIHNs
b3dQYXRoLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIGFsbG9jYXRpb25TaXplLCBUcnVz
dGVkSW1tMzIoTWFya2VkU3BhY2U6OmltcHJlY2lzZUN1dG9mZikpKTsKKyAgICAgICAgcnNoaWZ0
MzIoYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihnZXRMU0JTZXQoTWFya2VkU3BhY2U6Omlt
cHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOworICAgICAgICBtdWwzMihUcnVzdGVkSW1tMzIo
c2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOworICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cigmc3Vic3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1sw
XSksIHNjcmF0Y2hHUFIxKTsKKworICAgICAgICBzZWxlY3RlZFNtYWxsU3BhY2UubGluayh0aGlz
KTsKKyAgICAgICAgCisgICAgICAgIGVtaXRBbGxvY2F0ZShyZXN1bHRHUFIsIHNjcmF0Y2hHUFIx
LCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+CisgICAgdm9pZCBlbWl0QWxs
b2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlVHlw
ZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhbGxvY2F0aW9uU2l6ZSwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBH
UFJSZWcgc2NyYXRjaEdQUjIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIE1h
cmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2UgPSB2bSgpLT5oZWFwLnRlbXBsYXRlIHN1YnNw
YWNlRm9yT2JqZWN0T2ZUeXBlPENsYXNzVHlwZT4oKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlVmFy
aWFibGVTaXplZChyZXN1bHRHUFIsIHN1YnNwYWNlLCBhbGxvY2F0aW9uU2l6ZSwgc2NyYXRjaEdQ
UjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZVdp
dGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUjIpOworICAgICAgICBz
dG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENs
YXNzVHlwZT4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdChHUFJSZWcg
cmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJS
ZWcgc2NyYXRjaEdQUjIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIGVtaXRB
bGxvY2F0ZUpTT2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1Bh
dGgpOworICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mb09m
ZnNldCgpKSk7CisgICAgfQorICAgIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwogICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlz
aW9uIDIwMzY5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0Miw5ICszNDIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJp
ZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIpOwog
Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IC8vIFN0cnVjdHVyZVR5
cGUgY2FuIGJlIFJlZ2lzdGVySUQgb3IgSW1tUHRyLgotICAgICAgICB2b2lkIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0KFJlZ2lzdGVySUQgYWxsb2NhdG9yLCBTdHJ1Y3R1cmVUeXBlLCBSZWdpc3RlcklE
IHJlc3VsdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKLSAgICAgICAgCiAgICAgICAgIC8vIFRoaXMg
YXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSB0byBwcm9maWxlIGlzIGluIHJlZ1QwIGFuZCB0aGF0IHJl
Z1QzIGlzIGF2YWlsYWJsZSBmb3IKICAgICAgICAgLy8gc2NyYXRjaC4KICAgICAgICAgdm9pZCBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDIwMzY5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NDEsMjcgKzk0
MSw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW4KICAgICByZXR1
cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3Rh
bnRPcGVyYW5kKHNyYykuaXNTdHJpbmcoKSAmJiBhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQo
c3JjKS5hc0NlbGwoKSktPmxlbmd0aCgpID09IDE7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0
cnVjdHVyZVR5cGU+Ci1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlZ2lz
dGVySUQgYWxsb2NhdG9yLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCkKLXsKLSAgICBpZiAoT3B0aW9uczo6Zm9yY2VHQ1Nsb3dQ
YXRocygpKQotICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwotICAgIGVsc2UgewotICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJl
ZUxpc3RIZWFkKCkpLCByZXN1bHQpOwotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRy
KFplcm8sIHJlc3VsdCkpOwotICAgIH0KLQotICAgIC8vIHJlbW92ZSB0aGUgb2JqZWN0IGZyb20g
dGhlIGZyZWUgbGlzdAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQpLCBzY3JhdGNoKTsKLSAg
ICBzdG9yZVB0cihzY3JhdGNoLCBBZGRyZXNzKGFsbG9jYXRvciwgTWFya2VkQWxsb2NhdG9yOjpv
ZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7Ci0KLSAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3Qn
cyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDAp
LCBBZGRyZXNzKHJlc3VsdCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSk7Ci0KLSAgICAv
LyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUKLSAgICBlbWl0U3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gpOwotfQotCiBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxlKiB2YWx1ZVByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKHNob3VsZEVtaXRQcm9maWxpbmcoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDM2
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2Jq
ZWN0KEluc3RydWN0aW9uCiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVnVDM7CiAKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBlbWl0
QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JSZWcsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
cmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBhbGxvY2F0b3JSZWcsIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NhdGNoUmVnLCBzbG93Q2FzZXMpOworICAg
IGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHRSZWcpOwogfQogCkBAIC0xMDMxLDcgKzEwMzMsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBjYWxsZWVSZWcsIGNhY2hlZEZ1bmN0aW9uUmVnKSk7CiAg
ICAgaGFzU2Vlbk11bHRpcGxlQ2FsbGVlcy5saW5rKHRoaXMpOwogCi0gICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJl
Zyk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJl
c3VsdFJlZywgYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIFRydXN0ZWRJbW1QdHIoMCksIHNj
cmF0Y2hSZWcsIHNsb3dDYXNlcyk7CisgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBl
bWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3VsdFJlZyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2
aXNpb24gMjAzNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
b2JqZWN0KEluc3RydWN0aW9uCiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVnVDI7CiAK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBl
bWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JSZWcsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgcmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBhbGxvY2F0b3JSZWcsIFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaFJlZywgc2xvd0Nhc2VzKTsK
KyAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKQEAgLTc3MCw3ICs3NzIsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBjYWxsZWVSZWcsIGNhY2hlZEZ1bmN0aW9uUmVnKSk7CiAg
ICAgaGFzU2Vlbk11bHRpcGxlQ2FsbGVlcy5saW5rKHRoaXMpOwogCi0gICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJl
Zyk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJl
c3VsdFJlZywgYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIFRydXN0ZWRJbW1QdHIoMCksIHNj
cmF0Y2hSZWcsIHNsb3dDYXNlcyk7CisgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
fQogCg==
</data>
<flag name="review"
          id="308148"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284520</attachid>
            <date>2016-07-25 13:26:19 -0700</date>
            <delta_ts>2016-07-25 13:31:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18317</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE2LTA3LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXNzZW1ibHlIZWxwZXJzIHNob3VsZCBvd24gYWxsIG9mIHRoZSBjZWxsIGFsbG9jYXRpb24gbWV0
aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
MTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBQcmlvciB0byB0aGlzIGNoYW5nZSB3ZSBoYWQgc29tZSBjb2RlIGluIERGR1NwZWN1bGF0
aXZlSklULmggYW5kIHNvbWUgY29kZSBpbiBKSVQuaCB0aGF0CisgICAgICAgIGRpZCBjZWxsIGFs
bG9jYXRpb24uCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBtb3ZlcyBhbGwgb2YgdGhh
dCBjb2RlIGludG8gQXNzZW1ibHlIZWxwZXJzLmguCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlSlNDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVKU09iamVjdFdpdGhLbm93blNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVt
aXRBbGxvY2F0ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFs
bG9jYXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50Q2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmpl
Y3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyk6CisKIDIwMTYtMDctMjUgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgb3BfbXVsL0FyaXRoTXVsKFVudHlwZWQsVW50eXBlZCkgc2hv
dWxkIGJlIGFuIElDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMDM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NDYsMjAgKzI1NDYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQog
ICAgIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmZvcmNlR0NTbG93UGF0aHMoKSkKLSAgICAgICAg
ICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BS
LCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpLCByZXN1bHRHUFIpOwot
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAv
LyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBoYXZlIHdoYXQgd2Uga25vdyBpcyBh
IGZyZXNoIG9iamVjdCwgYnV0Ci0gICAgICAgIC8vIGl0J3Mgc3RpbGwgb24gdGhlIEdDJ3MgZnJl
ZSBsaXN0LgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiksIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9i
amVjdCdzIFN0cnVjdHVyZS4KLSAgICAgICAgbV9qaXQuZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2hHUFIsIHNsb3dQYXRoKTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGFuIG9i
amVjdCBvZiBhIHNwZWNpZmljIHNpemUuCkBAIC0yNTY3LDEwICsyNTU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFs
bG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCiAgICAgICAgIFN0b3JhZ2VUeXBl
IHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoKQogICAgIHsKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgYWxs
b2NhdG9yR1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRl
ci4KLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RvcmFnZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKyAgICAgICAgbV9q
aXQuZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVy
ZSwgc3RvcmFnZSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BSIG9y
IEltbVB0ci4KQEAgLTI1NzgsOSArMjU2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQ
UlJlZyBzY3JhdGNoR1BSMSwKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9y
T2JqZWN0T2ZUeXBlPENsYXNzVHlwZT4oc2l6ZSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihhbGxvY2F0b3IpLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQUjEsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRj
aEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRo
S25vd25TaXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0
Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgsIHNpemUpOwogICAgIH0KIAogICAgIC8vIENv
bnZlbmllbmNlIGFsbG9jYXRvciBmb3IgYSBidWlsdC1pbiBvYmplY3QuCkBAIC0yNTg4LDQyICsy
NTcwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KEdQUlJlZyBy
ZXN1bHRHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBTdG9yYWdlVHlwZSBzdG9yYWdlLAog
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KAotICAgICAgICAgICAgcmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgsCi0g
ICAgICAgICAgICBDbGFzc1R5cGU6OmFsbG9jYXRpb25TaXplKDApKTsKKyAgICAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlSlNPYmplY3Q8Q2xhc3NUeXBlPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3Rv
cmFnZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gLy8g
U3RydWN0dXJlVHlwZSBhbmQgU3RvcmFnZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCiAgICAg
dm9pZCBlbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhbGxvY2F0aW9uU2l6ZSwgR1BSUmVnIHNj
cmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYg
c2xvd1BhdGgpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkU3BhY2U6OnBy
ZWNpc2VTdGVwICYgKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNl
OjpwcmVjaXNlU3RlcCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwotICAgICAgICBzdGF0aWNf
YXNzZXJ0KCEoTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OmltcHJl
Y2lzZVN0ZXAgLSAxKSksICJNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCBtdXN0IGJlIGEgcG93
ZXIgb2YgdHdvLiIpOwotCi0gICAgICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2Ug
PSBtX2ppdC52bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0T2ZUeXBlPENsYXNzVHlwZT4oKTsK
LSAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3Rl
cCAtIDEpLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dFNtYWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgYWxs
b2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6cHJlY2lzZUN1dG9mZikpOwot
ICAgICAgICBtX2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKGdldExT
QlNldChNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOwotICAgICAgICBt
X2ppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3JhdGNo
R1BSMSwgc2NyYXRjaEdQUjEpOwotICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJnN1YnNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWzBdKSwgc2NyYXRjaEdQ
UjEpOwotCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNlbGVjdGVkU21hbGxTcGFjZSA9
IG1faml0Lmp1bXAoKTsKLSAgICAgICAgbm90U21hbGwubGluaygmbV9qaXQpOwotICAgICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6aW1wcmVjaXNlQ3V0
b2ZmKSkpOwotICAgICAgICBtX2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZElt
bTMyKGdldExTQlNldChNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCkpLCBzY3JhdGNoR1BSMSk7
Ci0gICAgICAgIG1faml0Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoTWFya2VkQWxsb2NhdG9y
KSksIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIG1faml0LmFkZFB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmc3Vic3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1sw
XSksIHNjcmF0Y2hHUFIxKTsKLQotICAgICAgICBzZWxlY3RlZFNtYWxsU3BhY2UubGluaygmbV9q
aXQpOwotCi0gICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQ
UjEsIHN0cnVjdHVyZSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsK
KyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0PENsYXNzVHlw
ZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGFsbG9jYXRpb25TaXplLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNsb3dQYXRoKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVE
ZXN0cnVjdGlibGVPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0PFQ+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVk
SW1tUHRyKDApLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKLSAgICAgICAg
bV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxl
T2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3Jh
dGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2Jq
ZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjAzNjk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJDb3B5QmFycmllci5oIgogI2luY2x1
ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVk
ZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0
T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCkBAIC0xNDA0LDYgKzE0MDYs
OTAgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdFJhbmRvbVRodW5rKEdQUlJlZyBzY3JhdGNoMCwg
R1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIEdQUlJlZyBzY3JhdGNoMywgRlBSUmVn
IHJlc3VsdCk7CiAjZW5kaWYKICAgICAKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZShHUFJSZWcgcmVz
dWx0R1BSLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSnVtcExpc3Qm
IHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmZvcmNlR0NTbG93UGF0aHMo
KSkKKyAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqdW1wKCkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRv
cjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBzbG93
UGF0aC5hcHBlbmQoYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFsbG9jYXRlZDogd2UgaGF2
ZSB3aGF0IHdlIGtub3cgaXMgYSBmcmVzaCBvYmplY3QsIGJ1dAorICAgICAgICAvLyBpdCdzIHN0
aWxsIG9uIHRoZSBHQydzIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3Vs
dEdQUiksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdG9yZVB0cihzY3JhdGNoR1BSLCBBZGRyZXNz
KGFsbG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+CisgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRv
ckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSLCBKdW1wTGlz
dCYgc2xvd1BhdGgpCisgICAgeworICAgICAgICBlbWl0QWxsb2NhdGUocmVzdWx0R1BSLCBhbGxv
Y2F0b3JHUFIsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3Rv
cmFnZVR5cGU+CisgICAgdm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgU3RvcmFnZVR5
cGUgc3RvcmFnZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7
CisgICAgICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgc3Ry
dWN0dXJlLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisgICAgICAgIHN0b3JlUHRyKHN0b3JhZ2Us
IEFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1
cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2Jq
ZWN0V2l0aEtub3duU2l6ZSgKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlVHlw
ZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSMSwKKyAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXpl
KQorICAgIHsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS0+aGVh
cC5hbGxvY2F0b3JGb3JPYmplY3RPZlR5cGU8Q2xhc3NUeXBlPihzaXplKTsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgZW1pdEFs
bG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwgc3RydWN0dXJlLCBzdG9yYWdl
LCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0b3JhZ2VU
eXBlPgorICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3Ry
dWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNo
R1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRH
UFIsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0
aCwgQ2xhc3NUeXBlOjphbGxvY2F0aW9uU2l6ZSgwKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZChHUFJSZWcgcmVzdWx0R1BSLCBNYXJrZWRTcGFjZTo6
U3Vic3BhY2UmIHN1YnNwYWNlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQUlJlZyBzY3JhdGNo
R1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwICYgKE1hcmtlZFNw
YWNlOjpwcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCBtdXN0IGJl
IGEgcG93ZXIgb2YgdHdvLiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkU3BhY2U6
OmltcHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXAgLSAxKSksICJNYXJr
ZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOworICAgICAg
ICAKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCAt
IDEpLCBhbGxvY2F0aW9uU2l6ZSk7CisgICAgICAgIEp1bXAgbm90U21hbGwgPSBicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OnBy
ZWNpc2VDdXRvZmYpKTsKKyAgICAgICAgcnNoaWZ0MzIoYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJ
bW0zMihnZXRMU0JTZXQoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsK
KyAgICAgICAgbXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwgc2Ny
YXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoJnN1
YnNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWzBdKSwgc2NyYXRjaEdQUjEpOworCisgICAgICAgIEp1
bXAgc2VsZWN0ZWRTbWFsbFNwYWNlID0ganVtcCgpOworICAgICAgICBub3RTbWFsbC5saW5rKHRo
aXMpOworICAgICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBhbGxv
Y2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjppbXByZWNpc2VDdXRvZmYpKSk7
CisgICAgICAgIHJzaGlmdDMyKGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoZ2V0TFNCU2V0
KE1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbXVs
MzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwgc2NyYXRjaEdQUjEsIHNj
cmF0Y2hHUFIxKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoJnN1YnNwYWNlLmltcHJl
Y2lzZUFsbG9jYXRvcnNbMF0pLCBzY3JhdGNoR1BSMSk7CisKKyAgICAgICAgc2VsZWN0ZWRTbWFs
bFNwYWNlLmxpbmsodGhpcyk7CisgICAgICAgIAorICAgICAgICBlbWl0QWxsb2NhdGUocmVzdWx0
R1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPgor
ICAgIHZvaWQgZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQUlJl
ZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisg
ICAgeworICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlID0gdm0oKS0+aGVh
cC50ZW1wbGF0ZSBzdWJzcGFjZUZvck9iamVjdE9mVHlwZTxDbGFzc1R5cGU+KCk7CisgICAgICAg
IGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQocmVzdWx0R1BSLCBzdWJzcGFjZSwgYWxsb2NhdGlv
blNpemUsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOworICAgICAgICBlbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIyKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHRH
UFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CisgICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBz
Y3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAg
eworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpKSwgQWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOworICAgIH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBW
TSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCShyZXZpc2lvbiAyMDM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsOSArMzQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2
YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihK
U0NlbGwqIG93bmVyKTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBl
PiAvLyBTdHJ1Y3R1cmVUeXBlIGNhbiBiZSBSZWdpc3RlcklEIG9yIEltbVB0ci4KLSAgICAgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChSZWdpc3RlcklEIGFsbG9jYXRvciwgU3RydWN0dXJl
VHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7Ci0gICAgICAgIAog
ICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgdG8gcHJvZmlsZSBpcyBpbiBy
ZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBhdmFpbGFibGUgZm9yCiAgICAgICAgIC8vIHNjcmF0Y2gu
CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMDM2OTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQxLDI3ICs5NDEsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRD
b25zdGFuCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChz
cmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0
Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPgotaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2Nh
dGVKU09iamVjdChSZWdpc3RlcklEIGFsbG9jYXRvciwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUs
IFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCi17Ci0gICAgaWYgKE9wdGlv
bnM6OmZvcmNlR0NTbG93UGF0aHMoKSkKLSAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGFsbG9jYXRvciwgTWFya2VkQWxsb2Nh
dG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSwgcmVzdWx0KTsKLSAgICAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQpKTsKLSAgICB9Ci0KLSAgICAvLyByZW1vdmUg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
KSwgc2NyYXRjaCk7Ci0gICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1h
cmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwotCi0gICAgLy8gaW5pdGlh
bGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCi0gICAgc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSkpOwotCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCi0gICAg
ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNo
KTsKLX0KLQogaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJv
ZmlsZSogdmFsdWVQcm9maWxlKQogewogICAgIEFTU0VSVChzaG91bGRFbWl0UHJvZmlsaW5nKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMjAzNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDkgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbgogICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJl
ZyA9IHJlZ1QzOwogCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIGFsbG9jYXRv
clJlZyk7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CisgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgYWxsb2NhdG9yUmVn
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjYXRjaFJlZywg
c2xvd0Nhc2VzKTsKKyAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRTdG9yZUNl
bGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVzdWx0UmVnKTsKIH0KIApAQCAt
MTAzMSw3ICsxMDMzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rp
bwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgY2FsbGVlUmVnLCBjYWNoZWRG
dW5jdGlvblJlZykpOwogICAgIGhhc1NlZW5NdWx0aXBsZUNhbGxlZXMubGluayh0aGlzKTsKIAot
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCByZXN1
bHRSZWcsIHNjcmF0Y2hSZWcpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBlbWl0QWxs
b2NhdGVKU09iamVjdChyZXN1bHRSZWcsIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCBUcnVz
dGVkSW1tUHRyKDApLCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOworICAgIGFkZFNsb3dDYXNlKHNs
b3dDYXNlcyk7CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCByZXN1bHRSZWcpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIwMzY5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDkgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbgogICAgIFJlZ2lzdGVySUQgc2NyYXRj
aFJlZyA9IHJlZ1QyOwogCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIGFsbG9j
YXRvclJlZyk7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CisgICAgSnVtcExpc3Qg
c2xvd0Nhc2VzOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgYWxsb2NhdG9y
UmVnLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hS
ZWcsIHNsb3dDYXNlcyk7CisgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCkBA
IC03NzAsNyArNzcyLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rp
bwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgY2FsbGVlUmVnLCBjYWNoZWRG
dW5jdGlvblJlZykpOwogICAgIGhhc1NlZW5NdWx0aXBsZUNhbGxlZXMubGluayh0aGlzKTsKIAot
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCByZXN1
bHRSZWcsIHNjcmF0Y2hSZWcpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBlbWl0QWxs
b2NhdGVKU09iamVjdChyZXN1bHRSZWcsIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCBUcnVz
dGVkSW1tUHRyKDApLCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOworICAgIGFkZFNsb3dDYXNlKHNs
b3dDYXNlcyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284521</attachid>
            <date>2016-07-25 13:31:44 -0700</date>
            <delta_ts>2016-07-25 13:51:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18318</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE2LTA3LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXNzZW1ibHlIZWxwZXJzIHNob3VsZCBvd24gYWxsIG9mIHRoZSBjZWxsIGFsbG9jYXRpb24gbWV0
aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
MTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBQcmlvciB0byB0aGlzIGNoYW5nZSB3ZSBoYWQgc29tZSBjb2RlIGluIERGR1NwZWN1bGF0
aXZlSklULmggYW5kIHNvbWUgY29kZSBpbiBKSVQuaCB0aGF0CisgICAgICAgIGRpZCBjZWxsIGFs
bG9jYXRpb24uCisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBtb3ZlcyBhbGwgb2YgdGhh
dCBjb2RlIGludG8gQXNzZW1ibHlIZWxwZXJzLmguCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlSlNDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVKU09iamVjdFdpdGhLbm93blNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVt
aXRBbGxvY2F0ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFs
bG9jYXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50Q2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmpl
Y3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyk6CisKIDIwMTYtMDctMjUgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgb3BfbXVsL0FyaXRoTXVsKFVudHlwZWQsVW50eXBlZCkgc2hv
dWxkIGJlIGFuIElDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMDM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NDYsMjAgKzI1NDYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQog
ICAgIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmZvcmNlR0NTbG93UGF0aHMoKSkKLSAgICAgICAg
ICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BS
LCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpLCByZXN1bHRHUFIpOwot
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAv
LyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBoYXZlIHdoYXQgd2Uga25vdyBpcyBh
IGZyZXNoIG9iamVjdCwgYnV0Ci0gICAgICAgIC8vIGl0J3Mgc3RpbGwgb24gdGhlIEdDJ3MgZnJl
ZSBsaXN0LgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiksIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9i
amVjdCdzIFN0cnVjdHVyZS4KLSAgICAgICAgbV9qaXQuZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2hHUFIsIHNsb3dQYXRoKTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGFuIG9i
amVjdCBvZiBhIHNwZWNpZmljIHNpemUuCkBAIC0yNTY3LDEwICsyNTU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFs
bG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCiAgICAgICAgIFN0b3JhZ2VUeXBl
IHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoKQogICAgIHsKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgYWxs
b2NhdG9yR1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRl
ci4KLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RvcmFnZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKyAgICAgICAgbV9q
aXQuZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVy
ZSwgc3RvcmFnZSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGFuZCBTdG9yYWdlVHlwZSBjYW4gYmUgR1BSIG9y
IEltbVB0ci4KQEAgLTI1NzgsOSArMjU2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQ
UlJlZyBzY3JhdGNoR1BSMSwKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gJm1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9y
T2JqZWN0T2ZUeXBlPENsYXNzVHlwZT4oc2l6ZSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihhbGxvY2F0b3IpLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQUjEsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRj
aEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRo
S25vd25TaXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0
Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgsIHNpemUpOwogICAgIH0KIAogICAgIC8vIENv
bnZlbmllbmNlIGFsbG9jYXRvciBmb3IgYSBidWlsdC1pbiBvYmplY3QuCkBAIC0yNTg4LDQyICsy
NTcwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KEdQUlJlZyBy
ZXN1bHRHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBTdG9yYWdlVHlwZSBzdG9yYWdlLAog
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KAotICAgICAgICAgICAgcmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgsCi0g
ICAgICAgICAgICBDbGFzc1R5cGU6OmFsbG9jYXRpb25TaXplKDApKTsKKyAgICAgICAgbV9qaXQu
ZW1pdEFsbG9jYXRlSlNPYmplY3Q8Q2xhc3NUeXBlPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc3Rv
cmFnZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gLy8g
U3RydWN0dXJlVHlwZSBhbmQgU3RvcmFnZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCiAgICAg
dm9pZCBlbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhbGxvY2F0aW9uU2l6ZSwgR1BSUmVnIHNj
cmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYg
c2xvd1BhdGgpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkU3BhY2U6OnBy
ZWNpc2VTdGVwICYgKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNl
OjpwcmVjaXNlU3RlcCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwotICAgICAgICBzdGF0aWNf
YXNzZXJ0KCEoTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OmltcHJl
Y2lzZVN0ZXAgLSAxKSksICJNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCBtdXN0IGJlIGEgcG93
ZXIgb2YgdHdvLiIpOwotCi0gICAgICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2Ug
PSBtX2ppdC52bSgpLT5oZWFwLnN1YnNwYWNlRm9yT2JqZWN0T2ZUeXBlPENsYXNzVHlwZT4oKTsK
LSAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3Rl
cCAtIDEpLCBhbGxvY2F0aW9uU2l6ZSk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dFNtYWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgYWxs
b2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6cHJlY2lzZUN1dG9mZikpOwot
ICAgICAgICBtX2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKGdldExT
QlNldChNYXJrZWRTcGFjZTo6cHJlY2lzZVN0ZXApKSwgc2NyYXRjaEdQUjEpOwotICAgICAgICBt
X2ppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKE1hcmtlZEFsbG9jYXRvcikpLCBzY3JhdGNo
R1BSMSwgc2NyYXRjaEdQUjEpOwotICAgICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJnN1YnNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWzBdKSwgc2NyYXRjaEdQ
UjEpOwotCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNlbGVjdGVkU21hbGxTcGFjZSA9
IG1faml0Lmp1bXAoKTsKLSAgICAgICAgbm90U21hbGwubGluaygmbV9qaXQpOwotICAgICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJbW0zMihNYXJrZWRTcGFjZTo6aW1wcmVjaXNlQ3V0
b2ZmKSkpOwotICAgICAgICBtX2ppdC5yc2hpZnQzMihhbGxvY2F0aW9uU2l6ZSwgVHJ1c3RlZElt
bTMyKGdldExTQlNldChNYXJrZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCkpLCBzY3JhdGNoR1BSMSk7
Ci0gICAgICAgIG1faml0Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoTWFya2VkQWxsb2NhdG9y
KSksIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7Ci0gICAgICAgIG1faml0LmFkZFB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmc3Vic3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1sw
XSksIHNjcmF0Y2hHUFIxKTsKLQotICAgICAgICBzZWxlY3RlZFNtYWxsU3BhY2UubGluaygmbV9q
aXQpOwotCi0gICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgc2NyYXRjaEdQ
UjEsIHN0cnVjdHVyZSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsK
KyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0PENsYXNzVHlw
ZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGFsbG9jYXRpb25TaXplLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNsb3dQYXRoKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CiAgICAgdm9pZCBlbWl0QWxsb2NhdGVE
ZXN0cnVjdGlibGVPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0PFQ+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVk
SW1tUHRyKDApLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKLSAgICAgICAg
bV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxl
T2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3Jh
dGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2Jq
ZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjAzNjk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJDb3B5QmFycmllci5oIgogI2luY2x1
ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVk
ZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0
T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCkBAIC0xNDA0LDYgKzE0MDYs
OTAgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdFJhbmRvbVRodW5rKEdQUlJlZyBzY3JhdGNoMCwg
R1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIEdQUlJlZyBzY3JhdGNoMywgRlBSUmVn
IHJlc3VsdCk7CiAjZW5kaWYKICAgICAKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZShHUFJSZWcgcmVz
dWx0R1BSLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgSnVtcExpc3Qm
IHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmZvcmNlR0NTbG93UGF0aHMo
KSkKKyAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqdW1wKCkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRv
cjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBzbG93
UGF0aC5hcHBlbmQoYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFsbG9jYXRlZDogd2UgaGF2
ZSB3aGF0IHdlIGtub3cgaXMgYSBmcmVzaCBvYmplY3QsIGJ1dAorICAgICAgICAvLyBpdCdzIHN0
aWxsIG9uIHRoZSBHQydzIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3Vs
dEdQUiksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdG9yZVB0cihzY3JhdGNoR1BSLCBBZGRyZXNz
KGFsbG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+CisgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRv
ckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSLCBKdW1wTGlz
dCYgc2xvd1BhdGgpCisgICAgeworICAgICAgICBlbWl0QWxsb2NhdGUocmVzdWx0R1BSLCBhbGxv
Y2F0b3JHUFIsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3Rv
cmFnZVR5cGU+CisgICAgdm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgU3RvcmFnZVR5
cGUgc3RvcmFnZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIEp1bXBMaXN0JiBzbG93UGF0aCkKKyAgICB7
CisgICAgICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgc3Ry
dWN0dXJlLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CisgICAgICAgIHN0b3JlUHRyKHN0b3JhZ2Us
IEFkZHJlc3MocmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1
cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KKyAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTT2Jq
ZWN0V2l0aEtub3duU2l6ZSgKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlVHlw
ZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSMSwKKyAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXpl
KQorICAgIHsKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAmdm0oKS0+aGVh
cC5hbGxvY2F0b3JGb3JPYmplY3RPZlR5cGU8Q2xhc3NUeXBlPihzaXplKTsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgZW1pdEFs
bG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwgc3RydWN0dXJlLCBzdG9yYWdl
LCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0b3JhZ2VU
eXBlPgorICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3Ry
dWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNo
R1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRH
UFIsIHN0cnVjdHVyZSwgc3RvcmFnZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0
aCwgQ2xhc3NUeXBlOjphbGxvY2F0aW9uU2l6ZSgwKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZChHUFJSZWcgcmVzdWx0R1BSLCBNYXJrZWRTcGFjZTo6
U3Vic3BhY2UmIHN1YnNwYWNlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQUlJlZyBzY3JhdGNo
R1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwICYgKE1hcmtlZFNw
YWNlOjpwcmVjaXNlU3RlcCAtIDEpKSwgIk1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCBtdXN0IGJl
IGEgcG93ZXIgb2YgdHdvLiIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkU3BhY2U6
OmltcHJlY2lzZVN0ZXAgJiAoTWFya2VkU3BhY2U6OmltcHJlY2lzZVN0ZXAgLSAxKSksICJNYXJr
ZWRTcGFjZTo6aW1wcmVjaXNlU3RlcCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOworICAgICAg
ICAKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjpwcmVjaXNlU3RlcCAt
IDEpLCBhbGxvY2F0aW9uU2l6ZSk7CisgICAgICAgIEp1bXAgbm90U21hbGwgPSBicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6OnBy
ZWNpc2VDdXRvZmYpKTsKKyAgICAgICAgcnNoaWZ0MzIoYWxsb2NhdGlvblNpemUsIFRydXN0ZWRJ
bW0zMihnZXRMU0JTZXQoTWFya2VkU3BhY2U6OnByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsK
KyAgICAgICAgbXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwgc2Ny
YXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoJnN1
YnNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWzBdKSwgc2NyYXRjaEdQUjEpOworCisgICAgICAgIEp1
bXAgc2VsZWN0ZWRTbWFsbFNwYWNlID0ganVtcCgpOworICAgICAgICBub3RTbWFsbC5saW5rKHRo
aXMpOworICAgICAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBhbGxv
Y2F0aW9uU2l6ZSwgVHJ1c3RlZEltbTMyKE1hcmtlZFNwYWNlOjppbXByZWNpc2VDdXRvZmYpKSk7
CisgICAgICAgIHJzaGlmdDMyKGFsbG9jYXRpb25TaXplLCBUcnVzdGVkSW1tMzIoZ2V0TFNCU2V0
KE1hcmtlZFNwYWNlOjppbXByZWNpc2VTdGVwKSksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgbXVs
MzIoVHJ1c3RlZEltbTMyKHNpemVvZihNYXJrZWRBbGxvY2F0b3IpKSwgc2NyYXRjaEdQUjEsIHNj
cmF0Y2hHUFIxKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoJnN1YnNwYWNlLmltcHJl
Y2lzZUFsbG9jYXRvcnNbMF0pLCBzY3JhdGNoR1BSMSk7CisKKyAgICAgICAgc2VsZWN0ZWRTbWFs
bFNwYWNlLmxpbmsodGhpcyk7CisgICAgICAgIAorICAgICAgICBlbWl0QWxsb2NhdGUocmVzdWx0
R1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPgor
ICAgIHZvaWQgZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZEpTT2JqZWN0KEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQUlJl
ZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisg
ICAgeworICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlID0gdm0oKS0+aGVh
cC50ZW1wbGF0ZSBzdWJzcGFjZUZvck9iamVjdE9mVHlwZTxDbGFzc1R5cGU+KCk7CisgICAgICAg
IGVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQocmVzdWx0R1BSLCBzdWJzcGFjZSwgYWxsb2NhdGlv
blNpemUsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOworICAgICAgICBlbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIyKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHRH
UFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CisgICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBz
Y3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCisgICAg
eworICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpKSwgQWRkcmVzcyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOworICAgIH0KKyAgICAKIHByb3RlY3RlZDoKICAgICBW
TSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCShyZXZpc2lvbiAyMDM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsOSArMzQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2
YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihK
U0NlbGwqIG93bmVyKTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBl
PiAvLyBTdHJ1Y3R1cmVUeXBlIGNhbiBiZSBSZWdpc3RlcklEIG9yIEltbVB0ci4KLSAgICAgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU09iamVjdChSZWdpc3RlcklEIGFsbG9jYXRvciwgU3RydWN0dXJl
VHlwZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7Ci0gICAgICAgIAog
ICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgdG8gcHJvZmlsZSBpcyBpbiBy
ZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBhdmFpbGFibGUgZm9yCiAgICAgICAgIC8vIHNjcmF0Y2gu
CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShWYWx1ZVByb2ZpbGUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMDM2OTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQxLDI3ICs5NDEsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRD
b25zdGFuCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChz
cmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5nKCkgJiYgYXNTdHJpbmcoZ2V0
Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgoKSA9PSAxOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPgotaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2Nh
dGVKU09iamVjdChSZWdpc3RlcklEIGFsbG9jYXRvciwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUs
IFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCi17Ci0gICAgaWYgKE9wdGlv
bnM6OmZvcmNlR0NTbG93UGF0aHMoKSkKLSAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGFsbG9jYXRvciwgTWFya2VkQWxsb2Nh
dG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSwgcmVzdWx0KTsKLSAgICAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQpKTsKLSAgICB9Ci0KLSAgICAvLyByZW1vdmUg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
KSwgc2NyYXRjaCk7Ci0gICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1h
cmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwotCi0gICAgLy8gaW5pdGlh
bGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCi0gICAgc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSkpOwotCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCi0gICAg
ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNo
KTsKLX0KLQogaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJv
ZmlsZSogdmFsdWVQcm9maWxlKQogewogICAgIEFTU0VSVChzaG91bGRFbWl0UHJvZmlsaW5nKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMjAzNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDkgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbgogICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJl
ZyA9IHJlZ1QzOwogCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIGFsbG9jYXRv
clJlZyk7Ci0gICAgZW1pdEFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yUmVnLCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CisgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgYWxsb2NhdG9yUmVn
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hSZWcs
IHNsb3dDYXNlcyk7CisgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBlbWl0U3RvcmVD
ZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlc3VsdFJlZyk7CiB9CiAKQEAg
LTEwMzEsNyArMTAzMyw5IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0
aW8KICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIGNhbGxlZVJlZywgY2FjaGVk
RnVuY3Rpb25SZWcpKTsKICAgICBoYXNTZWVuTXVsdGlwbGVDYWxsZWVzLmxpbmsodGhpcyk7CiAK
LSAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgcmVz
dWx0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgZW1pdEFs
bG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgVHJ1
c3RlZEltbVB0cigwKSwgc2NyYXRjaFJlZywgc2xvd0Nhc2VzKTsKKyAgICBhZGRTbG93Q2FzZShz
bG93Q2FzZXMpOwogICAgIGVtaXRTdG9yZUNlbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVzdWx0UmVnKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMDM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw5IEBAIHZvaWQg
SklUOjplbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24KICAgICBSZWdpc3RlcklEIHNjcmF0
Y2hSZWcgPSByZWdUMjsKIAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBhbGxv
Y2F0b3JSZWcpOwotICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywgVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCByZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOworICAgIEp1bXBMaXN0
IHNsb3dDYXNlczsKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRSZWcsIGFsbG9jYXRv
clJlZywgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNo
UmVnLCBzbG93Q2FzZXMpOworICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIApA
QCAtNzcwLDcgKzc3Miw5IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0
aW8KICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIGNhbGxlZVJlZywgY2FjaGVk
RnVuY3Rpb25SZWcpKTsKICAgICBoYXNTZWVuTXVsdGlwbGVDYWxsZWVzLmxpbmsodGhpcyk7CiAK
LSAgICBlbWl0QWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgcmVz
dWx0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgZW1pdEFs
bG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgVHJ1
c3RlZEltbVB0cigwKSwgc2NyYXRjaFJlZywgc2xvd0Nhc2VzKTsKKyAgICBhZGRTbG93Q2FzZShz
bG93Q2FzZXMpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CiB9CiAK
</data>
<flag name="review"
          id="308152"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>