<?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>199462</bug_id>
          
          <creation_ts>2019-07-03 13:48:18 -0700</creation_ts>
          <short_desc>[WHLSL] &quot;Semantic&quot; should be held by a unique_ptr, not an Optional</short_desc>
          <delta_ts>2019-07-03 15:12:19 -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>WebGPU</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="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1549982</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 13:48:18 -0700</bug_when>
    <thetext>Most StructureElement, FunctionDeclaration and (especially) VariableDeclaration don&apos;t have a &apos;Semantic&apos; field.
Using an Optional&lt;Semantic&gt; to represent this is a major memory waste, as Semantic is 56 bytes, so Optional&lt;Semantic&gt; is 64 bytes!
Putting one level of indirection through a unique_ptr thus saves 56 bytes for each VariableDeclaration (and FunctionDeclaration and StructureElement) that does not have a Semantic, at the low cost of one pointer dereference when accessing the field for those that have one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549983</commentid>
    <comment_count>1</comment_count>
      <attachid>373413</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-03 13:51:56 -0700</bug_when>
    <thetext>Created attachment 373413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550018</commentid>
    <comment_count>2</comment_count>
      <attachid>373413</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-03 15:11:42 -0700</bug_when>
    <thetext>Comment on attachment 373413
Patch

Clearing flags on attachment: 373413

Committed r247110: &lt;https://trac.webkit.org/changeset/247110&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550019</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-03 15:11:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550021</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-03 15:12:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/52614048&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373413</attachid>
            <date>2019-07-03 13:51:56 -0700</date>
            <delta_ts>2019-07-03 15:11:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199462-20190703135154.patch</filename>
            <type>text/plain</type>
            <size>42450</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU0NTZlZWVhOTc1MTI5
YTFhMzRmNGZkOTEzY2U3ZTJmMzU4NzQzMS4uYmExOGFiMWFhN2IyMTM3NTNlODBmZjMzNGI0MWUx
NzU4NzQ2YWYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA3LTAzICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSAiU2Vt
YW50aWMiIHNob3VsZCBiZSBoZWxkIGJ5IGEgdW5pcXVlX3B0ciwgbm90IGFuIE9wdGlvbmFsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk0NjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0IFN0cnVj
dHVyZUVsZW1lbnQsIEZ1bmN0aW9uRGVjbGFyYXRpb24gYW5kIChlc3BlY2lhbGx5KSBWYXJpYWJs
ZURlY2xhcmF0aW9uIGRvbid0IGhhdmUgYSAnU2VtYW50aWMnIGZpZWxkLgorICAgICAgICBVc2lu
ZyBhbiBPcHRpb25hbDxTZW1hbnRpYz4gdG8gcmVwcmVzZW50IHRoaXMgaXMgYSBtYWpvciBtZW1v
cnkgd2FzdGUsIGFzIFNlbWFudGljIGlzIDU2IGJ5dGVzLCBzbyBPcHRpb25hbDxTZW1hbnRpYz4g
aXMgNjQgYnl0ZXMhCisgICAgICAgIFB1dHRpbmcgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uIHRo
cm91Z2ggYSB1bmlxdWVfcHRyIHRodXMgc2F2ZXMgNTYgYnl0ZXMgZm9yIGVhY2ggVmFyaWFibGVE
ZWNsYXJhdGlvbiAoYW5kIEZ1bmN0aW9uRGVjbGFyYXRpb24gYW5kIFN0cnVjdHVyZUVsZW1lbnQp
IHRoYXQgZG9lcyBub3QgaGF2ZSBhIFNlbWFudGljLAorICAgICAgICBhdCB0aGUgbG93IGNvc3Qg
b2Ygb25lIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBhY2Nlc3NpbmcgdGhlIGZpZWxkIGZvciB0
aG9zZSB0aGF0IGhhdmUgb25lLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZW9yZGVycyB0
aGUgZmllbGRzIG9mIEZ1bmN0aW9uRGVmaW5pdGlvbiB0byBzYXZlIGFub3RoZXIgOCBieXRlcy4K
KworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhlcmUgaXMgbm8gaW50ZW5kZWQgZnVuY3Rpb25h
bCBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5j
dGlvbkRlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uOjpGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246OnNlbWFudGljKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpTdHJ1Y3R1cmVFbGVtZW50OjpTdHJ1Y3R1cmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlN0cnVjdHVyZUVsZW1lbnQ6OnNlbWFudGljKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uOjpWYXJpYWJsZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb246OnNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVXaXRoT3BlcmF0b3JB
bmRlckluZGV4ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVXaXRoT3BlcmF0
b3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnJlc29sdmVXaXRoUmVmZXJlbmNl
Q29tcGFyYXRvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xHYXRoZXJF
bnRyeVBvaW50SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkdhdGhlcmVyOjp2
aXNpdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Z2F0aGVyRW50cnlQb2ludEl0ZW1zKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVNlbWFudGljKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6cHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjp3cmFwQW5kZXJDYWxsQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UHJvcGVydHlSZXNvbHZlcjo6
dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUFy
cmF5T3BlcmF0b3JMZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnN5bnRoZXNp
emVBcnJheU9wZXJhdG9yTGVuZ3RoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OnN5bnRoZXNpemVDb25zdHJ1Y3RvcnMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6c3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyk6
CisKIDIwMTktMDctMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDEzKTogVGFwcGluZyBhbiBlbGVtZW50IHdpdGggYSBj
bGljayBldmVudCBoYW5kbGVyIG5vIGxvbmdlciBjbGVhcnMgdGhlIHNlbGVjdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rp
b25EZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCmluZGV4IDUyYWI2YTU1NmQxZmU1M2JkYWYyZDMy
ZTY1ODRiNzFiNmY1NjY0MDEuLjBjMDMwNGIzNDViZDU1Y2I1ZjU4MDYzMmYxNTc0NTI0OTY5YTEx
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTQ1LDE1ICs0NSwx
NSBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHB1Ymxp
YyBOb2RlIHsKIHB1YmxpYzoKLSAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbiYm
IG9yaWdpbiwgQXR0cmlidXRlQmxvY2smJiBhdHRyaWJ1dGVCbG9jaywgT3B0aW9uYWw8RW50cnlQ
b2ludFR5cGU+IGVudHJ5UG9pbnRUeXBlLCBVbmlxdWVSZWY8VW5uYW1lZFR5cGU+JiYgdHlwZSwg
U3RyaW5nJiYgbmFtZSwgVmFyaWFibGVEZWNsYXJhdGlvbnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25h
bDxTZW1hbnRpYz4mJiBzZW1hbnRpYywgYm9vbCBpc09wZXJhdG9yKQorICAgIEZ1bmN0aW9uRGVj
bGFyYXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9jayYmIGF0dHJpYnV0
ZUJsb2NrLCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFVuaXF1ZVJl
ZjxVbm5hbWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xhcmF0aW9u
cyYmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpYywgYm9v
bCBpc09wZXJhdG9yKQogICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKICAgICAg
ICAgLCBtX2F0dHJpYnV0ZUJsb2NrKFdURk1vdmUoYXR0cmlidXRlQmxvY2spKQogICAgICAgICAs
IG1fZW50cnlQb2ludFR5cGUoZW50cnlQb2ludFR5cGUpCisgICAgICAgICwgbV9pc09wZXJhdG9y
KFdURk1vdmUoaXNPcGVyYXRvcikpCiAgICAgICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCiAg
ICAgICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJzKFdU
Rk1vdmUocGFyYW1ldGVycykpCiAgICAgICAgICwgbV9zZW1hbnRpYyhXVEZNb3ZlKHNlbWFudGlj
KSkKLSAgICAgICAgLCBtX2lzT3BlcmF0b3IoV1RGTW92ZShpc09wZXJhdG9yKSkKICAgICB7CiAg
ICAgfQogCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZSA9PSAib3BlcmF0b3IgY2FzdCI7IH0KICAgICBjb25zdCBWYXJpYWJs
ZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsg
fQogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zJiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzOyB9Ci0gICAgT3B0aW9uYWw8U2VtYW50aWM+JiBzZW1hbnRpYygpIHsgcmV0dXJuIG1f
c2VtYW50aWM7IH0KKyAgICBTZW1hbnRpYyogc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGlj
LmdldCgpOyB9CiAgICAgYm9vbCBpc09wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc09wZXJh
dG9yOyB9CiAgICAgTGV4ZXI6OlRva2VuIG9yaWdpbigpIHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAK
QEAgLTgyLDExICs4MiwxMSBAQCBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsK
ICAgICBBdHRyaWJ1dGVCbG9jayBtX2F0dHJpYnV0ZUJsb2NrOwogICAgIE9wdGlvbmFsPEVudHJ5
UG9pbnRUeXBlPiBtX2VudHJ5UG9pbnRUeXBlOworICAgIGJvb2wgbV9pc09wZXJhdG9yOwogICAg
IFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAg
VmFyaWFibGVEZWNsYXJhdGlvbnMgbV9wYXJhbWV0ZXJzOwotICAgIE9wdGlvbmFsPFNlbWFudGlj
PiBtX3NlbWFudGljOwotICAgIGJvb2wgbV9pc09wZXJhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTZW1hbnRpYz4gbV9zZW1hbnRpYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCmluZGV4IDQ1ZTNjZmE3MDJh
YzhkNTRjM2U1YWQ4MzZiYTE5YjVhYjMwNzg4NjcuLjE3ZTEwOWEyOWI0MjhkZjBiZjRlNjRjNzU5
MmFmMjVlZWQzNTZlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uLmgKQEAgLTExOCw4ICsxMTgsOCBAQCBwcml2YXRlOgogICAgIFJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4g
bGVmdFZhbHVlKQogICAgICAgICA6IEV4cHJlc3Npb24oTGV4ZXI6OlRva2VuKG9yaWdpbikpCiAg
ICAgICAgICwgbV9sZWZ0VmFsdWUoV1RGTW92ZShsZWZ0VmFsdWUpKQotICAgICAgICAsIG1fb2xk
VmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4ob3Jp
Z2luKSwgUXVhbGlmaWVycygpLCBXVEY6Om51bGxvcHQsIFN0cmluZygpLCBXVEY6Om51bGxvcHQs
IG51bGxwdHIpKQotICAgICAgICAsIG1fbmV3VmFsdWUobWFrZVVuaXF1ZVJlZjxWYXJpYWJsZURl
Y2xhcmF0aW9uPihXVEZNb3ZlKG9yaWdpbiksIFF1YWxpZmllcnMoKSwgV1RGOjpudWxsb3B0LCBT
dHJpbmcoKSwgV1RGOjpudWxsb3B0LCBudWxscHRyKSkKKyAgICAgICAgLCBtX29sZFZhbHVlKG1h
a2VVbmlxdWVSZWY8VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKG9yaWdpbiksIFF1
YWxpZmllcnMoKSwgV1RGOjpudWxsb3B0LCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpCisg
ICAgICAgICwgbV9uZXdWYWx1ZShtYWtlVW5pcXVlUmVmPFZhcmlhYmxlRGVjbGFyYXRpb24+KFdU
Rk1vdmUob3JpZ2luKSwgUXVhbGlmaWVycygpLCBXVEY6Om51bGxvcHQsIFN0cmluZygpLCBudWxs
cHRyLCBudWxscHRyKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50
LmgKaW5kZXggODQ3MmY1Yzk2MmM4N2NhZTBkNzE3MGVmNDM4ZWQ0N2RhYmRkMDM5Yi4uNGU0MGJh
NjJmZDlmOTlmNzZlOTQ1ZmQzODhjMmY0ZmI5Y2YzMTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVy
ZUVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgU3Ry
dWN0dXJlRWxlbWVudCA6IHB1YmxpYyBOb2RlIHsKIHB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVFbGVt
ZW50KExleGVyOjpUb2tlbiYmIG9yaWdpbiwgUXVhbGlmaWVycyYmIHF1YWxpZmllcnMsIFVuaXF1
ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxTZW1hbnRp
Yz4gc2VtYW50aWMpCisgICAgU3RydWN0dXJlRWxlbWVudChMZXhlcjo6VG9rZW4mJiBvcmlnaW4s
IFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzLCBVbmlxdWVSZWY8VW5uYW1lZFR5cGU+JiYgdHlwZSwg
U3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljKQogICAg
ICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKICAgICAgICAgLCBtX3F1YWxpZmllcnMo
V1RGTW92ZShxdWFsaWZpZXJzKSkKICAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkKQEAg
LTU5LDE0ICs1OSwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gbV90eXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1l
OyB9Ci0gICAgT3B0aW9uYWw8U2VtYW50aWM+JiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50
aWM7IH0KKyAgICBTZW1hbnRpYyogc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljLmdldCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOwogICAgIFF1YWxpZmll
cnMgbV9xdWFsaWZpZXJzOwogICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwogICAg
IFN0cmluZyBtX25hbWU7Ci0gICAgT3B0aW9uYWw8U2VtYW50aWM+IG1fc2VtYW50aWM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNlbWFudGljPiBtX3NlbWFudGljOwogfTsKIAogdXNpbmcgU3RydWN0
dXJlRWxlbWVudHMgPSBWZWN0b3I8U3RydWN0dXJlRWxlbWVudD47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJp
YWJsZURlY2xhcmF0aW9uLmgKaW5kZXggYmUwYTA1OGExZmNkNTBlNGY2N2Y5NWNjNDIyMWZjOTc0
M2UzMGY1Yy4uNmE0MzkzYThhMjlhYjIwMmJmNWJhMjFiMmNmNGJkZGI0ZjY4Y2RhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3Bh
Y2UgQVNUIHsKIGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gOiBwdWJsaWMgVmFsdWUgewogICAg
IHVzaW5nIEJhc2UgPSBWYWx1ZTsKIHB1YmxpYzoKLSAgICBWYXJpYWJsZURlY2xhcmF0aW9uKExl
eGVyOjpUb2tlbiYmIG9yaWdpbiwgUXVhbGlmaWVycyYmIHF1YWxpZmllcnMsIE9wdGlvbmFsPFVu
aXF1ZVJlZjxVbm5hbWVkVHlwZT4+JiYgdHlwZSwgU3RyaW5nJiYgbmFtZSwgT3B0aW9uYWw8U2Vt
YW50aWM+JiYgc2VtYW50aWMsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluaXRpYWxp
emVyKQorICAgIFZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBRdWFs
aWZpZXJzJiYgcXVhbGlmaWVycywgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRUeXBlPj4mJiB0
eXBlLCBTdHJpbmcmJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWMs
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiYmIGluaXRpYWxpemVyKQogICAgICAgICA6IEJh
c2UoV1RGTW92ZShvcmlnaW4pKQogICAgICAgICAsIG1fcXVhbGlmaWVycyhXVEZNb3ZlKHF1YWxp
ZmllcnMpKQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQpAQCAtNzQsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIGNvbnN0IE9wdGlvbmFsPFVuaXF1ZVJlZjxVbm5hbWVkVHlw
ZT4+JiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgVW5uYW1lZFR5cGUqIHR5
cGUoKSB7IHJldHVybiBtX3R5cGUgPyAmKm1fdHlwZSA6IG51bGxwdHI7IH0KLSAgICBPcHRpb25h
bDxTZW1hbnRpYz4mIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYzsgfQorICAgIFNlbWFu
dGljKiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50aWMuZ2V0KCk7IH0KICAgICBFeHByZXNz
aW9uKiBpbml0aWFsaXplcigpIHsgcmV0dXJuIG1faW5pdGlhbGl6ZXIuZ2V0KCk7IH0KICAgICBi
b29sIGlzQW5vbnltb3VzKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzTnVsbCgpOyB9CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IHRha2VJbml0aWFsaXplcigpIHsgcmV0dXJuIFdU
Rk1vdmUobV9pbml0aWFsaXplcik7IH0KQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBR
dWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKICAgICBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5
cGU+PiBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBPcHRpb25hbDxTZW1hbnRpYz4g
bV9zZW1hbnRpYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+IG1fc2VtYW50aWM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1faW5pdGlhbGl6ZXI7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNw
cAppbmRleCAyMmJmNjBiYzgxOGI4MTc5ODEwYmJlNTEyZmE5ZGM0Y2Y5OTI3ZWU0Li5lYjFmYTk4
M2JkZDZkYWYwMzc4Y2U5YTI5Y2I3ZGE4NjU0MTdmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTEyMiw5ICsx
MjIsOSBAQCBzdGF0aWMgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIHJlc29sdmVXaXRo
T3BlcmF0b3JBbmRlckluZGV4ZXIoTGV4ZXI6OlRvawogICAgIGNvbnN0IGJvb2wgaXNPcGVyYXRv
ciA9IHRydWU7CiAgICAgYXV0byByZXR1cm5UeXBlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlBvaW50
ZXJUeXBlPihMZXhlcjo6VG9rZW4ob3JpZ2luKSwgZmlyc3RBcmd1bWVudC5hZGRyZXNzU3BhY2Uo
KSwgZmlyc3RBcmd1bWVudC5lbGVtZW50VHlwZSgpLmNsb25lKCkpOwogICAgIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5p
cXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKG9yaWdpbiksIEFT
VDo6UXVhbGlmaWVycygpLCBmaXJzdEFyZ3VtZW50LmNsb25lKCksIFN0cmluZygpLCBXVEY6Om51
bGxvcHQsIG51bGxwdHIpKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKG9yaWdpbiksIEFTVDo6UXVhbGlm
aWVycygpLCBVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4oQVNUOjpUeXBlUmVmZXJlbmNlOjp3
cmFwKExleGVyOjpUb2tlbihvcmlnaW4pLCBpbnRyaW5zaWNzLnVpbnRUeXBlKCkpKSwgU3RyaW5n
KCksIFdURjo6bnVsbG9wdCwgbnVsbHB0cikpOwotICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbihvcmln
aW4pLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXR1cm5U
eXBlKSwgU3RyaW5nKCJvcGVyYXRvciZbXSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsKKyAgICBw
YXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4o
TGV4ZXI6OlRva2VuKG9yaWdpbiksIEFTVDo6UXVhbGlmaWVycygpLCBmaXJzdEFyZ3VtZW50LmNs
b25lKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgcGFyYW1ldGVycy5hcHBl
bmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihv
cmlnaW4pLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+KEFT
VDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4ob3JpZ2luKSwgaW50cmluc2ljcy51
aW50VHlwZSgpKSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgcmV0dXJuIEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4
ZXI6OlRva2VuKG9yaWdpbiksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHJldHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yJltdIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3Ip
KTsKIH0KIAogc3RhdGljIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiByZXNvbHZlV2l0
aE9wZXJhdG9yTGVuZ3RoKExleGVyOjpUb2tlbiBvcmlnaW4sIEFTVDo6VW5uYW1lZFR5cGUmIGZp
cnN0QXJndW1lbnQsIGNvbnN0IEludHJpbnNpY3MmIGludHJpbnNpY3MpCkBAIC0xMzIsOCArMTMy
LDggQEAgc3RhdGljIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiByZXNvbHZlV2l0aE9w
ZXJhdG9yTGVuZ3RoKExleGVyOjpUb2tlbiBvcmkKICAgICBjb25zdCBib29sIGlzT3BlcmF0b3Ig
PSB0cnVlOwogICAgIGF1dG8gcmV0dXJuVHlwZSA9IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChM
ZXhlcjo6VG9rZW4ob3JpZ2luKSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKICAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQobWFr
ZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihvcmlnaW4p
LCBBU1Q6OlF1YWxpZmllcnMoKSwgZmlyc3RBcmd1bWVudC5jbG9uZSgpLCBTdHJpbmcoKSwgV1RG
OjpudWxsb3B0LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKG9yaWdpbiksIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJldHVyblR5cGUpLCBT
dHJpbmcoIm9wZXJhdG9yLmxlbmd0aCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsKKyAgICBwYXJh
bWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4
ZXI6OlRva2VuKG9yaWdpbiksIEFTVDo6UXVhbGlmaWVycygpLCBmaXJzdEFyZ3VtZW50LmNsb25l
KCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgcmV0dXJuIEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2Vu
KG9yaWdpbiksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJl
dHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yLmxlbmd0aCIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yKSk7CiB9
CiAKIHN0YXRpYyBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gcmVzb2x2ZVdpdGhSZWZl
cmVuY2VDb21wYXJhdG9yKExleGVyOjpUb2tlbiBvcmlnaW4sIFJlc29sdmluZ1R5cGUmIGZpcnN0
QXJndW1lbnQsIFJlc29sdmluZ1R5cGUmIHNlY29uZEFyZ3VtZW50LCBjb25zdCBJbnRyaW5zaWNz
JiBpbnRyaW5zaWNzKQpAQCAtMTUzLDkgKzE1Myw5IEBAIHN0YXRpYyBBU1Q6Ok5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24gcmVzb2x2ZVdpdGhSZWZlcmVuY2VDb21wYXJhdG9yKExleGVyOjpUb2tl
CiAgICAgICAgIH0pKTsKICAgICB9KSk7CiAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBw
YXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4ob3JpZ2luKSwgQVNUOjpRdWFsaWZpZXJzKCks
IGFyZ3VtZW50VHlwZS0+Y2xvbmUoKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0cikp
OwotICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uPihMZXhlcjo6VG9rZW4ob3JpZ2luKSwgQVNUOjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJl
ZjxBU1Q6OlVubmFtZWRUeXBlPihXVEZNb3ZlKGFyZ3VtZW50VHlwZSkpLCBTdHJpbmcoKSwgV1RG
OjpudWxsb3B0LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKG9yaWdpbiksIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJldHVyblR5cGUpLCBT
dHJpbmcoIm9wZXJhdG9yPT0iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSk7CisgICAgcGFyYW1ldGVy
cy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpU
b2tlbihvcmlnaW4pLCBBU1Q6OlF1YWxpZmllcnMoKSwgYXJndW1lbnRUeXBlLT5jbG9uZSgpLCBT
dHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VV
bmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4ob3JpZ2luKSwg
QVNUOjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihXVEZNb3ZlKGFy
Z3VtZW50VHlwZSkpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIHJldHVybiBB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKExl
eGVyOjpUb2tlbihvcmlnaW4pLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwg
V1RGTW92ZShyZXR1cm5UeXBlKSwgU3RyaW5nKCJvcGVyYXRvcj09IiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3Ip
KTsKIH0KIAogZW51bSBjbGFzcyBBY2NlcHRhYmlsaXR5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMR2F0aGVyRW50cnlQ
b2ludEl0ZW1zLmNwcAppbmRleCBhYTI0OWMwMmI3MjY4NjE1MWI3Y2Q5ODU2NjMwZDFjMzFmZmNl
NzkwLi43Mjc0NTM2ZGVmNjZiZmY1MTlmYjY5M2MzZjdkOWNhZGM4OWY4MGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9p
bnRJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9u
LnN0cnVjdHVyZUVsZW1lbnRzKCkpIHsKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVFbGVtZW50
LnNlbWFudGljKCkpCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSAmKnN0cnVj
dHVyZUVsZW1lbnQuc2VtYW50aWMoKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRTZW1hbnRp
YyA9IHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKTsKICAgICAgICAgICAgIG1fcGF0aC5hcHBl
bmQoc3RydWN0dXJlRWxlbWVudC5uYW1lKCkpOwogICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN0cnVjdHVyZUVsZW1lbnQpOwogICAgICAgICAgICAgbV9wYXRoLnRha2VMYXN0KCk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2N1cnJl
bnRTZW1hbnRpYyk7CiAgICAgICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkp
Ci0gICAgICAgICAgICBtX2N1cnJlbnRTZW1hbnRpYyA9ICYqdmFyaWFibGVEZWNsYXJhdGlvbi5z
ZW1hbnRpYygpOworICAgICAgICAgICAgbV9jdXJyZW50U2VtYW50aWMgPSB2YXJpYWJsZURlY2xh
cmF0aW9uLnNlbWFudGljKCk7CiAgICAgICAgIEFTU0VSVCh2YXJpYWJsZURlY2xhcmF0aW9uLnR5
cGUoKSk7CiAgICAgICAgIG1fcGF0aC5hcHBlbmQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkp
OwogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgp
KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBPcHRpb25hbDxFbnRyeVBvaW50SXRlbXM+IGdhdGhlckVu
dHJ5UG9pbnRJdGVtcyhjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzLCBBUwogICAgICAgICBp
ZiAoaW5wdXRHYXRoZXJlci5lcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9Ci0gICAgR2F0aGVyZXIgb3V0cHV0R2F0aGVyZXIoaW50cmluc2ljcywgZnVuY3Rp
b25EZWZpbml0aW9uLnNlbWFudGljKCkgPyAmKmZ1bmN0aW9uRGVmaW5pdGlvbi5zZW1hbnRpYygp
IDogbnVsbHB0cik7CisgICAgR2F0aGVyZXIgb3V0cHV0R2F0aGVyZXIoaW50cmluc2ljcywgZnVu
Y3Rpb25EZWZpbml0aW9uLnNlbWFudGljKCkpOwogICAgIGlmICgqZnVuY3Rpb25EZWZpbml0aW9u
LmVudHJ5UG9pbnRUeXBlKCkgIT0gQVNUOjpFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZSkKICAgICAg
ICAgb3V0cHV0R2F0aGVyZXIuY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi50
eXBlKCkpOwogICAgIGlmIChvdXRwdXRHYXRoZXJlci5lcnJvcigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDc1YTA4
NzRmNDNkNjg5MWE3N2EwYWU4MTFlZDE3ZGZiODI1NDczNmUuLjQwZjI2OWRmMWUzMDg1MDViNTk3
MjBiMjNlNzJiNjc1MmE2NGYwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAgLTY4OCwyOCArNjg4LDI4IEBAIGF1dG8g
UGFyc2VyOjpwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpIC0+IEV4cGVjdGVkPEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljLCBFcnJvCiAgICAgcmV0dXJuIEFTVDo6U3RhZ2VJbk91dFNlbWFudGljKFdU
Rk1vdmUoKm9yaWdpbiksICppbmRleCk7CiB9CiAKLWF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGlj
KCkgLT4gRXhwZWN0ZWQ8T3B0aW9uYWw8QVNUOjpTZW1hbnRpYz4sIEVycm9yPgorYXV0byBQYXJz
ZXI6OnBhcnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTZW1h
bnRpYz4sIEVycm9yPgogewogICAgIGlmICghdHJ5VHlwZShMZXhlcjo6VG9rZW46OlR5cGU6OkNv
bG9uKSkKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7
IG51bGxwdHIgfTsKIAogICAgIFBFRUsodG9rZW4pOwogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUp
IHsKICAgICBjYXNlIExleGVyOjpUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7CiAgICAgICAgIFBB
UlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgQVNUOjpT
ZW1hbnRpYyhXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2Vf
dW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNh
c2UgTGV4ZXI6OlRva2VuOjpUeXBlOjpTcGVjaWFsaXplZDogIHsKICAgICAgICAgUEFSU0UocmVz
dWx0LCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBB
U1Q6OlNlbWFudGljKFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6
bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAg
ICAgY2FzZSBMZXhlcjo6VG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJTRShy
ZXN1bHQsIFJlc291cmNlU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBBU1Q6OlNlbWFudGlj
KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8
QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgZGVmYXVsdDog
IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMpOwotICAgICAgICByZXR1
cm4geyBBU1Q6OlNlbWFudGljKFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7
IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmgKaW5kZXggMjc2ZTFjNWU1NDZiNjMyNmFiZmUyMDQzMGJiYzMyMDIxNTg3
ODRkMy4uNjU3NWRkNmM0MDJlMGQwM2E3ZmQwMGJkNjYyMmIwMzVhNGRiMDIxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCkBAIC0x
NzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDxBU1Q6OlJlc291cmNlU2VtYW50
aWMsIEVycm9yPiBwYXJzZVJlc291cmNlU2VtYW50aWMoKTsKICAgICBFeHBlY3RlZDxBU1Q6OlNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYywgRXJyb3I+IHBhcnNlU3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljKCk7CiAgICAgRXhwZWN0ZWQ8QVNUOjpTdGFnZUluT3V0U2VtYW50aWMs
IEVycm9yPiBwYXJzZVN0YWdlSW5PdXRTZW1hbnRpYygpOwotICAgIEV4cGVjdGVkPE9wdGlvbmFs
PEFTVDo6U2VtYW50aWM+LCBFcnJvcj4gcGFyc2VTZW1hbnRpYygpOworICAgIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+IHBhcnNlU2VtYW50aWMoKTsKICAg
ICBBU1Q6OlF1YWxpZmllcnMgcGFyc2VRdWFsaWZpZXJzKCk7CiAgICAgRXhwZWN0ZWQ8QVNUOjpT
dHJ1Y3R1cmVFbGVtZW50LCBFcnJvcj4gcGFyc2VTdHJ1Y3R1cmVFbGVtZW50KCk7CiAgICAgRXhw
ZWN0ZWQ8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uLCBFcnJvcj4gcGFyc2VTdHJ1Y3R1cmVEZWZp
bml0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcAppbmRl
eCBmYzc1NGJiYjJmYmJhYWY2MDU5YzY4MzQ5ODQ3YWZjMmIwYzk2ODM4Li5lMTE4YzA4ZThmZWE3
OTUxNjE4YTY1NjlmZWRmNjdlOGY4MDExODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlc2VydmVWYXJp
YWJsZUxpZmV0aW1lcy5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgaXNFbnRyeVBvaW50ID0gISFmdW5jdGlvbkRlZmluaXRpb24uZW50cnlQb2ludFR5cGUoKTsK
ICAgICAgICAgaWYgKGlzRW50cnlQb2ludCkgewogICAgICAgICAgICAgYXV0byBzdHJ1Y3RWYXJp
YWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+
KGZ1bmN0aW9uRGVmaW5pdGlvbi5vcmlnaW4oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAg
ICAgICAgICAgbV9zdHJ1Y3RUeXBlLT5jbG9uZSgpLCBTdHJpbmcoKSwgV1RGOjpudWxsb3B0LCBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICBtX3N0cnVjdFR5cGUtPmNsb25lKCksIFN0cmluZygp
LCBudWxscHRyLCBudWxscHRyKTsKIAogICAgICAgICAgICAgYXV0byBzdHJ1Y3RWYXJpYWJsZVJl
ZmVyZW5jZSA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oQVNUOjpWYXJp
YWJsZVJlZmVyZW5jZTo6d3JhcChzdHJ1Y3RWYXJpYWJsZURlY2xhcmF0aW9uKSk7CiAgICAgICAg
ICAgICBzdHJ1Y3RWYXJpYWJsZVJlZmVyZW5jZS0+c2V0VHlwZShtX3N0cnVjdFR5cGUtPmNsb25l
KCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1ha2VQb2ludGVy
RXhwcmVzc2lvbi0+c2V0VHlwZUFubm90YXRpb24oQVNUOjpSaWdodFZhbHVlKCkpOwogCiAgICAg
ICAgICAgICBhdXRvIHBvaW50ZXJEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uPihmdW5jdGlvbkRlZmluaXRpb24ub3JpZ2luKCksIEFTVDo6UXVhbGlm
aWVycygpLAotICAgICAgICAgICAgICAgIG1fcG9pbnRlclRvU3RydWN0VHlwZS0+Y2xvbmUoKSwg
IndyYXBwZXIiX3MsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShtYWtlUG9pbnRlckV4cHJlc3Npb24p
KTsKKyAgICAgICAgICAgICAgICBtX3BvaW50ZXJUb1N0cnVjdFR5cGUtPmNsb25lKCksICJ3cmFw
cGVyIl9zLCBudWxscHRyLCBXVEZNb3ZlKG1ha2VQb2ludGVyRXhwcmVzc2lvbikpOwogICAgICAg
ICAgICAgbV9zdHJ1Y3RWYXJpYWJsZSA9ICZwb2ludGVyRGVjbGFyYXRpb247CiAKICAgICAgICAg
ICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcG9pbnRlclZhcmlhYmxlRGVjbGFyYXRpb25z
OwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZ1bmN0aW9uRGVmaW5p
dGlvbi5ibG9jaygpLnN0YXRlbWVudHMoKS5pbnNlcnQoMSwgV1RGTW92ZShwb2ludGVyRGVjbGFy
YXRpb25TdGF0ZW1lbnQpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcG9p
bnRlckRlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+
KGZ1bmN0aW9uRGVmaW5pdGlvbi5vcmlnaW4oKSwgQVNUOjpRdWFsaWZpZXJzKCksCi0gICAgICAg
ICAgICAgICAgbV9wb2ludGVyVG9TdHJ1Y3RUeXBlLT5jbG9uZSgpLCAid3JhcHBlciJfcywgV1RG
OjpudWxsb3B0LCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBtX3BvaW50ZXJUb1N0cnVjdFR5
cGUtPmNsb25lKCksICJ3cmFwcGVyIl9zLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAg
IG1fc3RydWN0VmFyaWFibGUgPSAmcG9pbnRlckRlY2xhcmF0aW9uOwogICAgICAgICAgICAgZnVu
Y3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKS5hcHBlbmQoV1RGTW92ZShwb2ludGVyRGVjbGFy
YXRpb24pKTsKICAgICAgICAgfQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgcHJlc2VydmVWYXJp
YWJsZUxpZmV0aW1lcyhQcm9ncmFtJiBwcm9ncmFtKQogICAgIGZvciAoYXV0byYgcGFpciA6IGVz
Y2FwZWRWYXJpYWJsZXMpIHsKICAgICAgICAgYXV0byogdmFyaWFibGUgPSBwYWlyLmtleTsKICAg
ICAgICAgU3RyaW5nIG5hbWUgPSBwYWlyLnZhbHVlOwotICAgICAgICBlbGVtZW50cy5hcHBlbmQo
QVNUOjpTdHJ1Y3R1cmVFbGVtZW50IHsgTGV4ZXI6OlRva2VuKHZhcmlhYmxlLT5vcmlnaW4oKSks
IHsgfSwgdmFyaWFibGUtPnR5cGUoKS0+Y2xvbmUoKSwgV1RGTW92ZShuYW1lKSwgV1RGOjpudWxs
b3B0IH0pOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50IHsg
TGV4ZXI6OlRva2VuKHZhcmlhYmxlLT5vcmlnaW4oKSksIHsgfSwgdmFyaWFibGUtPnR5cGUoKS0+
Y2xvbmUoKSwgV1RGTW92ZShuYW1lKSwgbnVsbHB0ciB9KTsKICAgICB9CiAKICAgICAvLyBOYW1l
IG9mIHRoaXMgZG9lc24ndCBtYXR0ZXIsIHNpbmNlIHdlIGRvbid0IHVzZSBzdHJ1Y3QgbmFtZXMg
d2hlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKaW5kZXggMTdmYjA5NTRjN2FkOGZmYjE5Mjkx
ZTQ3N2RhYWZlOGM1ZGQwNWNmYy4uNzc1ZDE5MzdkOTc3MDE5NzAwNWM5MjhkN2IxMjM5N2Y0MTQx
YTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9wZXJ0eVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPEFuZGVyQ2FsbEFyZ3VtZW50UmVzdWx0PiB3cmFwQW5kZXJDYWxsQXJndW1l
bnQoVW5pcXVlUmVmPEFTVDo6RXgKICAgICB9CiAgICAgaWYgKHRocmVhZEFuZGVyRnVuY3Rpb24p
IHsKICAgICAgICAgYXV0byBvcmlnaW4gPSBleHByZXNzaW9uLT5vcmlnaW4oKTsKLSAgICAgICAg
YXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24+KExleGVyOjpUb2tlbihvcmlnaW4pLCBBU1Q6OlF1YWxpZmllcnMoKSwgYmFzZVR5
cGUtPmNsb25lKCksIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIG51bGxwdHIpOworICAgICAgICBh
dXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbj4oTGV4ZXI6OlRva2VuKG9yaWdpbiksIEFTVDo6UXVhbGlmaWVycygpLCBiYXNlVHlw
ZS0+Y2xvbmUoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8g
dmFyaWFibGVSZWZlcmVuY2UxID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNl
PihBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlOjp3cmFwKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKICAg
ICAgICAgdmFyaWFibGVSZWZlcmVuY2UxLT5zZXRUeXBlKGJhc2VUeXBlLT5jbG9uZSgpKTsKQEAg
LTMxMiwxNCArMzEyLDE0IEBAIHN0YXRpYyBPcHRpb25hbDxNb2RpZnlSZXN1bHQ+IG1vZGlmeShB
U1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2NlCiAgICAgQVNUOjpFeHBy
ZXNzaW9uJiBpbm5lckxlZnRFeHByZXNzaW9uID0gbGVmdEV4cHJlc3Npb247CiAKICAgICAvLyBD
cmVhdGUgInAiIHZhcmlhYmxlLgotICAgIGF1dG8gcG9pbnRlclZhcmlhYmxlID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihsZWZ0RXhwcmVzc2lv
bi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5
cGU+KG1ha2VVbmlxdWVSZWY8QVNUOjpQb2ludGVyVHlwZT4oTGV4ZXI6OlRva2VuKGxlZnRFeHBy
ZXNzaW9uLT5vcmlnaW4oKSksICpsZWZ0RXhwcmVzc2lvbi0+dHlwZUFubm90YXRpb24oKS5sZWZ0
QWRkcmVzc1NwYWNlKCksIGxlZnRFeHByZXNzaW9uLT5yZXNvbHZlZFR5cGUoKS5jbG9uZSgpKSks
IFN0cmluZygpLCBXVEY6Om51bGxvcHQsIG51bGxwdHIpOworICAgIGF1dG8gcG9pbnRlclZhcmlh
YmxlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tl
bihsZWZ0RXhwcmVzc2lvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVm
PEFTVDo6VW5uYW1lZFR5cGU+KG1ha2VVbmlxdWVSZWY8QVNUOjpQb2ludGVyVHlwZT4oTGV4ZXI6
OlRva2VuKGxlZnRFeHByZXNzaW9uLT5vcmlnaW4oKSksICpsZWZ0RXhwcmVzc2lvbi0+dHlwZUFu
bm90YXRpb24oKS5sZWZ0QWRkcmVzc1NwYWNlKCksIGxlZnRFeHByZXNzaW9uLT5yZXNvbHZlZFR5
cGUoKS5jbG9uZSgpKSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIC8vIENy
ZWF0ZSAicSIgYW5kICJyIiB2YXJpYWJsZXMuCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24+PiBpbnRlcm1lZGlhdGVWYXJpYWJsZXM7CiAgICAgaW50ZXJtZWRp
YXRlVmFyaWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2hhaW4uc2l6ZSgpIC0gMSk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBjaGFpbi5zaXplKCk7ICsraSkgewogICAgICAgICBh
dXRvJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24gPSBzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbiY+KGNoYWluW2ldKTsKLSAgICAgICAgaW50ZXJtZWRpYXRlVmFyaWFi
bGVzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4oTGV4ZXI6OlRva2VuKHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSksIEFTVDo6
UXVhbGlmaWVycygpLCBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkuY2xv
bmUoKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0cikpOworICAgICAgICBpbnRlcm1l
ZGlhdGVWYXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4ocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdp
bigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5yZXNvbHZl
ZFR5cGUoKS5jbG9uZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIH0KIAog
ICAgIC8vIENvbnNpZGVyIGFbZm9vKCldW2JdID0gYzsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8TW9kaWZ5UmVzdWx0PiBtb2RpZnkoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24mIHByb3BlcnR5QWNjZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgYXV0byYgaW5kZXhFeHByZXNzaW9uID0gZG93bmNhc3Q8QVNUOjpJbmRleEV4cHJlc3Np
b24+KHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik7Ci0gICAgICAgIGluZGV4VmFyaWFibGVzLnVu
Y2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4
ZXI6OlRva2VuKHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSksIEFTVDo6UXVhbGlm
aWVycygpLCBpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkucmVzb2x2ZWRUeXBlKCku
Y2xvbmUoKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0cikpOworICAgICAgICBpbmRl
eFZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24+KExleGVyOjpUb2tlbihwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCkp
LCBBU1Q6OlF1YWxpZmllcnMoKSwgaW5kZXhFeHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpLnJl
c29sdmVkVHlwZSgpLmNsb25lKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
fQogCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+PiBleHByZXNzaW9uczsK
QEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIFByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KEFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiYgcmVhZE1vZGlmeVdyaXRlRXhwcgogICAgICAgICBhdXRv
IGJhc2VUeXBlID0gcmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKS5yZXNvbHZl
ZFR5cGUoKS5jbG9uZSgpOwogICAgICAgICBhdXRvIHBvaW50ZXJUeXBlID0gbWFrZVVuaXF1ZVJl
ZjxBU1Q6OlBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5sZWZ0VmFsdWUoKS5vcmlnaW4oKSksICpyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxlZnRW
YWx1ZSgpLnR5cGVBbm5vdGF0aW9uKCkubGVmdEFkZHJlc3NTcGFjZSgpLCBiYXNlVHlwZS0+Y2xv
bmUoKSk7CiAKLSAgICAgICAgYXV0byBwb2ludGVyVmFyaWFibGUgPSBtYWtlVW5pcXVlUmVmPEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKHJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24ubGVmdFZhbHVlKCkub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVm
PEFTVDo6VW5uYW1lZFR5cGU+KHBvaW50ZXJUeXBlLT5jbG9uZSgpKSwgU3RyaW5nKCksIFdURjo6
bnVsbG9wdCwgbnVsbHB0cik7CisgICAgICAgIGF1dG8gcG9pbnRlclZhcmlhYmxlID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihyZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCks
IFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihwb2ludGVyVHlwZS0+Y2xvbmUoKSksIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgICAgICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6
RXhwcmVzc2lvbj4+IGV4cHJlc3Npb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUFy
cmF5T3BlcmF0b3JMZW5ndGguY3BwCmluZGV4IDlhZDdmYzUwZWE0OWQwYTVlZDA3MWFlNWMzOGVm
M2U1MTgxODM2OGIuLmVmYmUxNzJlNjJkYTIyOGQ0ZjU5Mjc3ZDcyM2FmOTM5NDBhNTBkOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguY3BwCkBAIC02
NSwxMCArNjUsMTAgQEAgYm9vbCBzeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aChQcm9ncmFt
JiBwcm9ncmFtKQogICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IGFycmF5VHlwZSA6IGFycmF5VHlwZXMpIHsKLSAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0
aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tl
bihhcnJheVR5cGUuZ2V0KCkub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgYXJyYXlUeXBl
LmdldCgpLmNsb25lKCksIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIG51bGxwdHIpOworICAgICAg
ICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKGFycmF5VHlwZS5nZXQoKS5vcmlnaW4oKSksIEFTVDo6
UXVhbGlmaWVycygpLCBhcnJheVR5cGUuZ2V0KCkuY2xvbmUoKSwgU3RyaW5nKCksIG51bGxwdHIs
IG51bGxwdHIpOwogICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7
CiAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikp
OwotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGFycmF5VHlw
ZS5nZXQoKS5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBB
U1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGFycmF5VHlwZS5nZXQoKS5vcmln
aW4oKSksIHByb2dyYW0uaW50cmluc2ljcygpLnVpbnRUeXBlKCkpLCAib3BlcmF0b3IubGVuZ3Ro
Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvcikpOwor
ICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGFycmF5VHlwZS5n
ZXQoKS5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGFycmF5VHlwZS5nZXQoKS5vcmlnaW4o
KSksIHByb2dyYW0uaW50cmluc2ljcygpLnVpbnRUeXBlKCkpLCAib3BlcmF0b3IubGVuZ3RoIl9z
dHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IpKTsKICAgICAgICAg
aWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29u
c3RydWN0b3JzLmNwcAppbmRleCAwMDMxZjk5Zjk4NWIxZmI0NmIxYjcwYzcwMzU4OGY4MzRkNDUx
M2Q3Li41NzJjOTg5Njc4MDcyNGVjMjMzMjM0Y2IzOGIyYzZiYWE5YWM2M2IyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25z
dHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTE1NywxMyArMTU3LDEzIEBAIGJvb2wg
c3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgIGZvciAoYXV0byYg
dW5uYW1lZFR5cGVLZXkgOiB1bm5hbWVkVHlwZXMpIHsKICAgICAgICAgYXV0byYgdW5uYW1lZFR5
cGUgPSB1bm5hbWVkVHlwZUtleS51bm5hbWVkVHlwZSgpOwogCi0gICAgICAgIGF1dG8gdmFyaWFi
bGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihM
ZXhlcjo6VG9rZW4odW5uYW1lZFR5cGUub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgdW5u
YW1lZFR5cGUuY2xvbmUoKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0cik7CisgICAg
ICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4odW5uYW1lZFR5cGUub3JpZ2luKCkpLCBBU1Q6OlF1
YWxpZmllcnMoKSwgdW5uYW1lZFR5cGUuY2xvbmUoKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxw
dHIpOwogICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAg
ICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAg
ICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9yKEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4odW5uYW1lZFR5cGUub3JpZ2luKCkpLCBB
U1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgdW5uYW1lZFR5cGUuY2xvbmUoKSwg
Im9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBp
c09wZXJhdG9yKSk7CisgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb3B5
Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbih1bm5hbWVk
VHlwZS5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCB1bm5h
bWVkVHlwZS5jbG9uZSgpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBudWxscHRyLCBpc09wZXJhdG9yKSk7CiAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUo
Y29weUNvbnN0cnVjdG9yKSk7CiAKLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRv
a2VuKHVubmFtZWRUeXBlLm9yaWdpbigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51
bGxvcHQsIHVubmFtZWRUeXBlLmNsb25lKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMoKSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSk7CisgICAgICAg
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbih1bm5hbWVkVHlwZS5vcmlnaW4oKSksIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCB1bm5hbWVkVHlwZS5jbG9uZSgpLCAi
b3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIs
IGlzT3BlcmF0b3IpKTsKICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1
bHRDb25zdHJ1Y3RvcikpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE3
NCwxMCArMTc0LDEwIEBAIGJvb2wgc3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9n
cmFtKQogICAgICAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0YXRpY19j
YXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkgJiYgZG93bmNhc3Q8QVNUOjpOYXRpdmVU
eXBlRGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSku
aXNBdG9taWMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gdmFyaWFi
bGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihM
ZXhlcjo6VG9rZW4obmFtZWRUeXBlLmdldCgpLm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCks
IFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4
ZXI6OlRva2VuKG5hbWVkVHlwZS5nZXQoKS5vcmlnaW4oKSksIG5hbWVkVHlwZS5nZXQoKSkpLCBT
dHJpbmcoKSwgV1RGOjpudWxsb3B0LCBudWxscHRyKTsKKyAgICAgICAgYXV0byB2YXJpYWJsZURl
Y2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVy
OjpUb2tlbihuYW1lZFR5cGUuZ2V0KCkub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5p
cXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+KEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6
VG9rZW4obmFtZWRUeXBlLmdldCgpLm9yaWdpbigpKSwgbmFtZWRUeXBlLmdldCgpKSksIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
cyBwYXJhbWV0ZXJzOwogICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxl
RGVjbGFyYXRpb24pKTsKLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNv
cHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKG5hbWVk
VHlwZS5nZXQoKS5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0
LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKG5hbWVkVHlwZS5nZXQoKS5v
cmlnaW4oKSksIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUo
cGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvcikpOworICAgICAgICBBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbihMZXhlcjo6VG9rZW4obmFtZWRUeXBlLmdldCgpLm9yaWdpbigpKSwgQVNUOjpBdHRy
aWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhl
cjo6VG9rZW4obmFtZWRUeXBlLmdldCgpLm9yaWdpbigpKSwgbmFtZWRUeXBlLmdldCgpKSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRv
cikpOwogICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGNvcHlDb25zdHJ1Y3RvcikpOwog
CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGljX2Nhc3Q8
QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKSkgewpAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wg
c3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAgaWYg
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24gZGVmYXVsdENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9r
ZW4obmFtZWRUeXBlLmdldCgpLm9yaWdpbigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6
Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4obmFtZWRUeXBl
LmdldCgpLm9yaWdpbigpKSwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwg
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsK
KyAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3Rv
cihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKG5hbWVkVHlwZS5nZXQoKS5v
cmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVS
ZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKG5hbWVkVHlwZS5nZXQoKS5vcmlnaW4oKSksIG5h
bWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvcikpOwogICAgICAgICBpZiAoIXByb2dyYW0uYXBw
ZW5kKFdURk1vdmUoZGVmYXVsdENvbnN0cnVjdG9yKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMuY3BwCmluZGV4IGFmNzQxNjBkZmNiZGVkODk4MmQxYmM4ZTE0ZTkwOGZlMGM1ZjA1ZTcuLmRk
NjUyOTFjNWQyY2M1YWEwMzBhMDIwNjNmZTk3MzFjYmE2MWRlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9u
RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKQEAgLTQxLDM5ICs0MSwzOSBA
QCBib29sIHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQog
ICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7CiAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSkgewogICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24xID0gbWFrZVVuaXF1ZVJlZjxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRp
b24tPm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRU
eXBlPihBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVm
aW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pKSwgU3RyaW5nKCksIFdU
Rjo6bnVsbG9wdCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRp
b24yID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tl
bihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIFVu
aXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6
OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmlu
aXRpb24pKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0cik7CisgICAgICAgICAgICBh
dXRvIHZhcmlhYmxlRGVjbGFyYXRpb24xID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb24+KExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwg
QVNUOjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihBU1Q6OlR5cGVS
ZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2lu
KCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIp
OworICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uMiA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0
aW9uLT5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVycygpLCBVbmlxdWVSZWY8QVNUOjpVbm5hbWVk
VHlwZT4oQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRl
ZmluaXRpb24tPm9yaWdpbigpKSwgZW51bWVyYXRpb25EZWZpbml0aW9uKSksIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbjEpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUo
dmFyaWFibGVEZWNsYXJhdGlvbjIpKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
TGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBwcm9ncmFtLmlu
dHJpbnNpY3MoKS5ib29sVHlwZSgpKSwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2lu
KCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwg
cHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSksICJvcGVyYXRvcj09Il9zdHIsIFdURk1v
dmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IpKTsKICAgICAgICAgICAgIGlmICgh
cHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAg
ICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdp
bigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pKSwgU3RyaW5nKCksIFdURjo6bnVsbG9w
dCwgbnVsbHB0cik7CisgICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtl
VW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKGVudW1lcmF0
aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVmPEFT
VDo6VW5uYW1lZFR5cGU+KEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oZW51
bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikpLCBT
dHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZN
b3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24t
PnR5cGUoKS5jbG9uZSgpLCAib3BlcmF0b3IudmFsdWUiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkp
LCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgZW51bWVyYXRpb25EZWZpbml0
aW9uLT50eXBlKCkuY2xvbmUoKSwgIm9wZXJhdG9yLnZhbHVlIl9zdHIsIFdURk1vdmUocGFyYW1l
dGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IpKTsKICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5h
cHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0
byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24+KExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwgQVNU
OjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPihBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkp
LCBlbnVtZXJhdGlvbkRlZmluaXRpb24pKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0
cik7CisgICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVm
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5p
dGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgVW5pcXVlUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+KEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25E
ZWZpbml0aW9uLT5vcmlnaW4oKSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikpLCBTdHJpbmcoKSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25z
IHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlh
YmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihM
ZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmli
dXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS5j
bG9uZSgpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51
bGxvcHQsIGlzT3BlcmF0b3IpKTsKKyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
bihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0
cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUo
KS5jbG9uZSgpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxs
cHRyLCBpc09wZXJhdG9yKSk7CiAgICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1v
dmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gdmFyaWFibGVE
ZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihMZXhl
cjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVy
cygpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS5jbG9uZSgpLCBTdHJpbmcoKSwgV1RG
OjpudWxsb3B0LCBudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlv
biA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4o
ZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVycygpLCBlbnVt
ZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS5jbG9uZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVs
bHB0cik7CiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7
CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRp
b24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4o
ZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwg
V1RGOjpudWxsb3B0LCBVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4oQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwg
ZW51bWVyYXRpb25EZWZpbml0aW9uKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFy
YW1ldGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvcikpOworICAgICAgICAgICAgQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9y
aWdpbigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIFVuaXF1ZVJlZjxB
U1Q6OlVubmFtZWRUeXBlPihBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pKSwg
Im9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVy
YXRvcikpOwogICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24pKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwCmlu
ZGV4IDI5YTZmZGI1Y2JmMDVhYTM3NTYxMDdmZTM3Y2FjNGJkM2Q3MWM2MzAuLjZkNzk4MDkyN2Yz
OWUwNjk3OWZmOGUxZTc2ODM2NTNhZjQyYjk1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVz
aXplU3RydWN0dXJlQWNjZXNzb3JzLmNwcApAQCAtNDcsMTEgKzQ3LDExIEBAIGJvb2wgc3ludGhl
c2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAgLy8g
VGhlIGFuZGVyOiBvcGVyYXRvciYuZmllbGQKICAgICAgICAgICAgIGF1dG8gY3JlYXRlQW5kZXIg
PSBbJl0oQVNUOjpBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKSAtPiBBU1Q6Ok5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24gewogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRUeXBlID0gbWFr
ZVVuaXF1ZVJlZjxBU1Q6OlBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVu
dC5vcmlnaW4oKSksIGFkZHJlc3NTcGFjZSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVy
OjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgc3RydWN0dXJlRGVmaW5pdGlvbikp
OwotICAgICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9IG1ha2VVbmlxdWVS
ZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVu
dC5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVycygpLCBVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4oV1RGTW92ZShhcmd1bWVudFR5cGUpKSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgbnVsbHB0
cik7CisgICAgICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1
ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVt
ZW50Lm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRU
eXBlPihXVEZNb3ZlKGFyZ3VtZW50VHlwZSkpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwog
ICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJh
dGlvbikpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuVHlwZSA9IG1ha2VVbmlxdWVSZWY8
QVNUOjpQb2ludGVyVHlwZT4oTGV4ZXI6OlRva2VuKHN0cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkp
LCBhZGRyZXNzU3BhY2UsIHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpLmNsb25lKCkpOwotICAgICAg
ICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oc3RydWN0dXJl
RWxlbWVudC5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHJldHVyblR5cGUpLCBtYWtlU3RyaW5nKCJvcGVyYXRvciYuIiwgc3RydWN0dXJlRWxl
bWVudC5uYW1lKCkpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0
b3IpKTsKKyAgICAgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRv
a2VuKHN0cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdU
Rjo6bnVsbG9wdCwgV1RGTW92ZShyZXR1cm5UeXBlKSwgbWFrZVN0cmluZygib3BlcmF0b3ImLiIs
IHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwg
aXNPcGVyYXRvcikpOwogICAgICAgICAgICAgICAgIHJldHVybiBuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQo
Y3JlYXRlQW5kZXIoQVNUOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50KSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>