<?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>176165</bug_id>
          
          <creation_ts>2017-08-31 09:44:59 -0700</creation_ts>
          <short_desc>Implement FileSystemEntry.getParent()</short_desc>
          <delta_ts>2017-09-01 10:37:06 -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>WebCore Misc.</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>https://wicg.github.io/entries-api/#dom-filesystementry-getparent</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343954</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-31 09:44:59 -0700</bug_when>
    <thetext>Implement FileSystemEntry.getParent():
- https://wicg.github.io/entries-api/#dom-filesystementry-getparent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343955</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-31 09:45:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/34187743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344278</commentid>
    <comment_count>2</comment_count>
      <attachid>319564</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-31 19:11:59 -0700</bug_when>
    <thetext>Created attachment 319564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344431</commentid>
    <comment_count>3</comment_count>
      <attachid>319564</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-09-01 09:54:51 -0700</bug_when>
    <thetext>Comment on attachment 319564
Patch

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

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:92
&gt; +    return !virtualPath.isEmpty() &amp;&amp; virtualPath[0] == &apos;/&apos;;

The isEmpty() check here is redundant but I hate that operator[] API returns a null character for invalid indices so let&apos;s not even care about that.

&gt; Source/WebCore/Modules/entriesapi/FileSystemEntry.cpp:67
&gt; +void FileSystemEntry::getParent(ScriptExecutionContext&amp; context, RefPtr&lt;FileSystemEntryCallback&gt;&amp;&amp; successCallback, RefPtr&lt;ErrorCallback&gt;&amp;&amp; errorCallback)

If we have neither successCallback or errorCallback, we could just early return here, no need to do work. Silly that the API allows this at all.

&gt; Source/WebCore/Modules/entriesapi/FileSystemEntry.cpp:74
&gt; +        if (result.hasException()) {
&gt; +            if (errorCallback)
&gt; +                errorCallback-&gt;handleEvent(DOMException::create(result.releaseException()));
&gt; +            return;
&gt; +        }

This is not covered by the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344434</commentid>
    <comment_count>4</comment_count>
      <attachid>319607</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-01 09:59:06 -0700</bug_when>
    <thetext>Created attachment 319607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344435</commentid>
    <comment_count>5</comment_count>
      <attachid>319607</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 10:01:56 -0700</bug_when>
    <thetext>Comment on attachment 319607
Patch

Rejecting attachment 319607 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 319607, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Ansdreas Kling found in /Volumes/Data/EWS/WebKit/LayoutTests/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/4427131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344438</commentid>
    <comment_count>6</comment_count>
      <attachid>319609</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-01 10:14:20 -0700</bug_when>
    <thetext>Created attachment 319609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344445</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-09-01 10:20:51 -0700</bug_when>
    <thetext>r=hans</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344448</commentid>
    <comment_count>8</comment_count>
      <attachid>319609</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 10:37:04 -0700</bug_when>
    <thetext>Comment on attachment 319609
Patch

Clearing flags on attachment: 319609

Committed r221481: &lt;http://trac.webkit.org/changeset/221481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344449</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 10:37:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319564</attachid>
            <date>2017-08-31 19:11:59 -0700</date>
            <delta_ts>2017-09-01 09:59:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176165-20170831191158.patch</filename>
            <type>text/plain</type>
            <size>37765</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY4ODYwNTcwMTkwZWE5
ZWM1MzIxYTVhZDIyMDU0NDA4Mzk2MGNjYi4uNjgxYmQ3MmZjYWM4NWJjNzk4YTY1N2JiYzllZWNj
NDA0YjkzNDJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc2IEBACiAyMDE3LTA4LTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1FbnRyeS5nZXRQYXJlbnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2MTY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
RmlsZVN5c3RlbUVudHJ5LmdldFBhcmVudCgpOgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRo
dWIuaW8vZW50cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZW50cnktZ2V0cGFyZW50CisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQ
YXJlbnQtcm9vdC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvRmlsZVN5c3RlbUVudHJpZXMpOgorICAgICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBub3cgdGhhdCBGaWxlU3lzdGVtRW50cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0
LgorCisgICAgICAgIChXZWJDb3JlOjppc0Fic29sdXRlVmlydHVhbFBhdGgpOgorICAgICAgICBB
ZGQgdXRpbGl0eSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSB2aXJ0dWFsIHBhdGggaXMgYWJz
b2x1dGU6CisgICAgICAgIC0gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jYWJz
b2x1dGUtcGF0aAorCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpyb290KToKKyAg
ICAgICAgVGFrZSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbm93IHRoYXQgRmlsZVN5c3RlbUVu
dHJ5IGlzIGFuIEFjdGl2ZURPTU9iamVjdC4KKworICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5
c3RlbTo6ZmlsZUFzRW50cnkpOgorICAgICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBub3cgdGhhdCBGaWxlU3lzdGVtRW50cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0LgorCisgICAg
ICAgIChXZWJDb3JlOjpyZXNvbHZlUmVsYXRpdmVQYXRoKToKKyAgICAgICAgQWRkIGltcGxlbWVu
dGF0aW9uIGZvcjoKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBp
LyNyZXNvbHZlLWEtcmVsYXRpdmUtcGF0aAorCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgVGFrZSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgbm93IHRoYXQgRmlsZVN5c3RlbUVudHJ5IGlzIGFuIEFjdGl2ZURPTU9iamVjdC4KKworICAg
ICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KToKKyAgICAgICAgQWRkIGlt
cGxlbWVudGF0aW9uIG9mIGdldFBhcmVudCgpIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3dp
Y2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNkb20tZmlsZXN5c3RlbWVudHJ5LWdldHBhcmVudAor
CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZUVudHJ5Rm9yRmlsZSk6CisgICAgICAgICog
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkpOgor
ICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50
cmllcyk6CisgICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyB0aGF0IEZp
bGVTeXN0ZW1FbnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3QuCisKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1FbnRyeTo6RmlsZVN5c3RlbUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1FbnRyeTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlU3lzdGVtRW50cnk6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUVudHJ5OjpnZXRQYXJlbnQpOgorICAgICAgICAq
IE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmlkbDoKKyAgICAgICAgLSBBZGQgaW1wbGVtZW50
YXRpb24gb2YgRmlsZVN5c3RlbUVudHJ5LmdldFBhcmVudCgpIHdoaWNoIHJlbGllcyBvbgorICAg
ICAgICAgIERPTUZpbGVTeXN0ZW06OmdldFBhcmVudCgpCisgICAgICAgIC0gTWFrZSBGaWxlU3lz
dGVtRW50cnkgYW4gQWN0aXZlRE9NT2JqZWN0IGFzIGdldFBhcmVudCgpIGlzIGFuIGFzeW5jaHJv
bm91cworICAgICAgICAgIG9wZXJhdGlvbiB3aGljaCBjYXVzZXMgZGVsYXllZCBKUyBleGVjdXRp
b24uCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUVudHJ5OjpGaWxlU3lzdGVtRmls
ZUVudHJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRy
eS5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlckl0ZW06OmdldEFzRW50cnkgY29uc3QpOgorICAgICAgICAqIGRvbS9E
YXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsOgor
ICAgICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cgdGhhdCBGaWxlU3lzdGVt
RW50cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0LgorCisyMDE3LTA4LTMxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgZ2V0RmlsZU1ldGFkYXRhKCkgZG9lcyBub3Qg
d29yayBhcyBleHBlY3RlZCBmb3Igc3ltYm9saWMgbGlua3MKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE0MwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggMzhjMzU0ZTU1
ZWI1OWE4ZjlkNzUzYTQyNDcyYjE4YjFlZmQ2ODBmYi4uMjU1MGJjMzkzYjNiODU2NzNlZjRjYTMx
MGFiMGNkODExNTQ3NWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMzEsOCArMzEsMTAgQEAKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3
dGYvVVVJRC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0
b3I8TGlzdGVkQ2hpbGQ+PiBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYK
ICAgICByZXR1cm4gV1RGTW92ZShsaXN0ZWRDaGlsZHJlbik7CiB9CiAKLXN0YXRpYyBFeGNlcHRp
b25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiB0b0ZpbGVTeXN0ZW1FbnRyaWVzKERP
TUZpbGVTeXN0ZW0mIGZpbGVTeXN0ZW0sIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+
JiYgbGlzdGVkQ2hpbGRyZW4sIGNvbnN0IFN0cmluZyYgcGFyZW50VmlydHVhbFBhdGgpCitzdGF0
aWMgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4gdG9GaWxlU3lzdGVt
RW50cmllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01GaWxlU3lzdGVtJiBm
aWxlU3lzdGVtLCBFeGNlcHRpb25PcjxWZWN0b3I8TGlzdGVkQ2hpbGQ+PiYmIGxpc3RlZENoaWxk
cmVuLCBjb25zdCBTdHJpbmcmIHBhcmVudFZpcnR1YWxQYXRoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgaWYgKGxpc3RlZENoaWxkcmVuLmhhc0V4Y2VwdGlvbigpKQpAQCAt
NzMsMTAgKzc1LDEwIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1F
bnRyeT4+PiB0b0ZpbGVTeXN0ZW1FbnRyaWVzKERPTUZpbGVTeXN0CiAgICAgICAgIFN0cmluZyB2
aXJ0dWFsUGF0aCA9IHBhcmVudFZpcnR1YWxQYXRoICsgIi8iICsgY2hpbGQuZmlsZW5hbWU7CiAg
ICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNZXRhZGF0YTo6
VHlwZUZpbGU6Ci0gICAgICAgICAgICBlbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChGaWxlU3lzdGVt
RmlsZUVudHJ5OjpjcmVhdGUoZmlsZVN5c3RlbSwgdmlydHVhbFBhdGgpKTsKKyAgICAgICAgICAg
IGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZShjb250
ZXh0LCBmaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5OgotICAgICAgICAgICAgZW50cmll
cy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoZmlsZVN5
c3RlbSwgdmlydHVhbFBhdGgpKTsKKyAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5k
KEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVTeXN0ZW0sIHZp
cnR1YWxQYXRoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtODUsNiArODcsMTEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9NRmlsZVN5c3QK
ICAgICByZXR1cm4gV1RGTW92ZShlbnRyaWVzKTsKIH0KIAorc3RhdGljIGJvb2wgaXNBYnNvbHV0
ZVZpcnR1YWxQYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCit7CisgICAgcmV0dXJuICF2
aXJ0dWFsUGF0aC5pc0VtcHR5KCkgJiYgdmlydHVhbFBhdGhbMF0gPT0gJy8nOworfQorCiBET01G
aWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCiAgICAgOiBtX25hbWUo
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQogICAgICwgbV9maWxlKFdURk1vdmUoZmlsZSkp
CkBAIC05OCwxNiArMTA1LDQ4IEBAIERPTUZpbGVTeXN0ZW06On5ET01GaWxlU3lzdGVtKCkKIHsK
IH0KIAotUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9vdCgp
CitSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCBBU0NJSUxpdGVyYWwoIi8iKSk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCBBU0NJSUxp
dGVyYWwoIi8iKSk7CiB9CiAKLVJlZjxGaWxlU3lzdGVtRW50cnk+IERPTUZpbGVTeXN0ZW06OmZp
bGVBc0VudHJ5KCkKK1JlZjxGaWxlU3lzdGVtRW50cnk+IERPTUZpbGVTeXN0ZW06OmZpbGVBc0Vu
dHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fZmlsZS0+
aXNEaXJlY3RvcnkoKSkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6
Y3JlYXRlKCp0aGlzLCAiLyIgKyBtX2ZpbGUtPm5hbWUoKSk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0
ZW1GaWxlRW50cnk6OmNyZWF0ZSgqdGhpcywgIi8iICsgbV9maWxlLT5uYW1lKCkpOworICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMs
ICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbUZpbGVFbnRyeTo6
Y3JlYXRlKGNvbnRleHQsICp0aGlzLCAiLyIgKyBtX2ZpbGUtPm5hbWUoKSk7Cit9CisKKy8vIGh0
dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI3Jlc29sdmUtYS1yZWxhdGl2ZS1wYXRo
CitzdGF0aWMgU3RyaW5nIHJlc29sdmVSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFs
UGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCit7CisgICAgQVNTRVJUKHZpcnR1YWxQ
YXRoWzBdID09ICcvJyk7CisgICAgaWYgKGlzQWJzb2x1dGVWaXJ0dWFsUGF0aChyZWxhdGl2ZVBh
dGgpKQorICAgICAgICByZXR1cm4gcmVsYXRpdmVQYXRoOworCisgICAgYXV0byB2aXJ0dWFsUGF0
aFNlZ21lbnRzID0gdmlydHVhbFBhdGguc3BsaXQoJy8nKTsKKyAgICBhdXRvIHJlbGF0aXZlUGF0
aFNlZ21lbnRzID0gcmVsYXRpdmVQYXRoLnNwbGl0KCcvJyk7CisgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogcmVsYXRpdmVQYXRoU2VnbWVudHMpIHsKKyAgICAgICAgQVNTRVJUKCFzZWdtZW50Lmlz
RW1wdHkoKSk7CisgICAgICAgIGlmIChzZWdtZW50ID09ICIuIikKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoc2VnbWVudCA9PSAiLi4iKSB7CisgICAgICAgICAgICBpZiAoIXZp
cnR1YWxQYXRoU2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHZpcnR1YWxQYXRo
U2VnbWVudHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgdmlydHVhbFBhdGhTZWdtZW50cy5hcHBlbmQoc2VnbWVudCk7CisgICAgfQorCisg
ICAgaWYgKHZpcnR1YWxQYXRoU2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCIvIik7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChh
dXRvJiBzZWdtZW50IDogdmlydHVhbFBhdGhTZWdtZW50cykgeworICAgICAgICBidWlsZGVyLmFw
cGVuZCgnLycpOworICAgICAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50KTsKKyAgICB9CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5p
by9lbnRyaWVzLWFwaS8jZXZhbHVhdGUtYS1wYXRoCkBAIC0xMzIsNyArMTcxLDcgQEAgU3RyaW5n
IERPTUZpbGVTeXN0ZW06OmV2YWx1YXRlUGF0aChjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKQog
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVk
Q29tcG9uZW50cyk7CiB9CiAKLXZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNr
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
JiBkaXJlY3RvcnksIERpcmVjdG9yeUxpc3RpbmdDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCgmZGlyZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsKIApAQCAt
MTQwLDE1ICsxNzksMzMgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5LCBEaXJlY3RvcnkKICAgICBhdXRvIGZ1bGxQ
YXRoID0gZXZhbHVhdGVQYXRoKGRpcmVjdG9yeVZpcnR1YWxQYXRoKTsKICAgICBpZiAoZnVsbFBh
dGggPT0gbV9yb290UGF0aCkgewogICAgICAgICBWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+
IGNoaWxkcmVuOwotICAgICAgICBjaGlsZHJlbi5hcHBlbmQoZmlsZUFzRW50cnkoKSk7CisgICAg
ICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeShjb250ZXh0KSk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY2hpbGRyZW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnVsbFBhdGggPSBmdWxsUGF0aC5pc29sYXRlZENv
cHkoKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRl
ZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNv
bnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXJl
Y3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgewogICAgICAgICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdp
dGhNZXRhZGF0YShmdWxsUGF0aCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxk
cmVuID0gY3Jvc3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBh
dGggPSBkaXJlY3RvcnlWaXJ0dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoKnRoaXMsIFdU
Rk1vdmUobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4g
PSBjcm9zc1RocmVhZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9
IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcyhjb250ZXh0LCAqdGhp
cywgV1RGTW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCit2b2lkIERPTUZpbGVTeXN0ZW06OmdldFBhcmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRW50cnkmIGVudHJ5LCBHZXRQ
YXJlbnRDYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKK3sKKyAgICBTdHJpbmcgdmlydHVh
bFBhdGggPSByZXNvbHZlUmVsYXRpdmVQYXRoKGVudHJ5LnZpcnR1YWxQYXRoKCksIEFTQ0lJTGl0
ZXJhbCgiLi4iKSk7CisgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CisgICAgU3Ry
aW5nIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKKyAgICBtX3dvcmtRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBmdWxsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KHZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0
aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFj
ayldIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRXhjZXB0aW9uIHsgTm90
Rm91bmRFcnJvciwgIlBhdGggbm8gbG9uZ2VyIGV4aXN0cyBvciBpcyBubyBsb25nZXIgYSBkaXJl
Y3RvcnkiIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29udGV4dCA9IFdURk1vdmUoY29u
dGV4dCksIHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29tcGxl
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2soRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29u
dGV4dCwgKnRoaXMsIHZpcnR1YWxQYXRoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5k
ZXggNmQzYzVkMzEyMWUwZDNmODBjYmI3M2ExZTA1NDA1Y2Q2N2Y3YmFhZS4uZDVhNDg5YzkyOWMy
ZWI1NTkzYzc4NzUxYzY4Mzk2N2VhMDdiZTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCkBAIC0zNiwyOCArMzYsMzIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmlsZTsKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeTsKIGNsYXNzIEZpbGVTeXN0ZW1FbnRyeTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJs
aWMgUmVmQ291bnRlZDxET01GaWxlU3lzdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxG
aWxlU3lzdGVtRW50cnk+IGNyZWF0ZUVudHJ5Rm9yRmlsZShSZWY8RmlsZT4mJiBmaWxlKQorICAg
IHN0YXRpYyBSZWY8RmlsZVN5c3RlbUVudHJ5PiBjcmVhdGVFbnRyeUZvckZpbGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPEZpbGU+JiYgZmlsZSkKICAgICB7CiAgICAgICAg
IGF1dG8gZmlsZVN5c3RlbSA9IGFkb3B0UmVmKCpuZXcgRE9NRmlsZVN5c3RlbShXVEZNb3ZlKGZp
bGUpKSk7Ci0gICAgICAgIHJldHVybiBmaWxlU3lzdGVtLT5maWxlQXNFbnRyeSgpOworICAgICAg
ICByZXR1cm4gZmlsZVN5c3RlbS0+ZmlsZUFzRW50cnkoY29udGV4dCk7CiAgICAgfQogCiAgICAg
fkRPTUZpbGVTeXN0ZW0oKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQotICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IHJvb3QoKTsK
KyAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiByb290KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKIAogICAgIHVzaW5nIERpcmVjdG9yeUxpc3RpbmdDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmKT47
Ci0gICAgdm9pZCBsaXN0RGlyZWN0b3J5KEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYsIERpcmVj
dG9yeUxpc3RpbmdDYWxsYmFjayYmKTsKKyAgICB2b2lkIGxpc3REaXJlY3RvcnkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYsIERpcmVjdG9yeUxpc3Rp
bmdDYWxsYmFjayYmKTsKKworICAgIHVzaW5nIEdldFBhcmVudENhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+PiYmKT47
CisgICAgdm9pZCBnZXRQYXJlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1F
bnRyeSYsIEdldFBhcmVudENhbGxiYWNrJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYpOwogCiAgICAgU3RyaW5nIGV2YWx1YXRlUGF0aChjb25z
dCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKLSAgICBSZWY8RmlsZVN5c3RlbUVudHJ5PiBmaWxlQXNF
bnRyeSgpOworICAgIFJlZjxGaWxlU3lzdGVtRW50cnk+IGZpbGVBc0VudHJ5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVmPEZpbGU+IG1fZmls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmlkbAppbmRleCBiMjVlYzY1MGY5Mzk3ZmQ1YTYyNjRjZWRkNzZlNGIwZGVjOTA5ZGQ0Li5j
MTk3MmNlOWZhY2RiNmZmNTQ3Mjk3YjIyNTRiNmNjZDMzNGMzMjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaWRsCkBAIC0yOSw1
ICsyOSw1IEBACiAgICAgSW50ZXJmYWNlTmFtZT1GaWxlU3lzdGVtLAogXSBpbnRlcmZhY2UgRE9N
RmlsZVN5c3RlbSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBuYW1lOwotICAg
IFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkgcm9vdDsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSByZWFkb25seSBhdHRyaWJ1dGUgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5IHJv
b3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAppbmRleCBjOTE1YjAwZTEyMGQwNmUz
ZmJhOGNkNTcyNjhmNmY1YWNkMWI5NmYyLi42YWU4Njc1MmM0MzY2MzBlNTkyNTg4NTYxMDMyMWE2
NDIzN2FlNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcApAQCAtMzIsOCArMzIsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Rmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0
cmluZyYgdmlydHVhbFBhdGgpCi0gICAgOiBGaWxlU3lzdGVtRW50cnkoZmlsZXN5c3RlbSwgdmly
dHVhbFBhdGgpCitGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01GaWxlU3lzdGVtJiBmaWxl
c3lzdGVtLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKQorICAgIDogRmlsZVN5c3RlbUVudHJ5
KGNvbnRleHQsIGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5LmgKaW5kZXggOGRiNmY5Mzk1ZDMxZmYxZDRiYThiODIxYzkxMGYzYzI4NDRiNDQzZS4u
M2NkZmU5YjhlMTdkZDkzOTA2YjVlZTcwN2U3YmU1MmE3Yjg1N2ZmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCiBjbGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgZmluYWwgOiBwdWJsaWMgRmlsZVN5
c3RlbUVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgpCisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01GaWxlU3lzdGVtJiBmaWxlc3lz
dGVtLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5KGZpbGVzeXN0ZW0sIHZpcnR1YWxQ
YXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAogICAgIFJl
ZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpOwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wg
aXNEaXJlY3RvcnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBh
dGgpOworICAgIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IDA3
ZDgxNjg4ZjQ0YjI3NzVmNTcxMWU0YWU3YzE4YzY4OGQxYjAxODkuLjQzZjI4YTQxYTA2OWIwODA4
ZDBkNGM2ZDAyNTFmZGRiOGYwZmMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUVudHJpZXND
YWxsYmFjay5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OCw5ICs3OSw5
IEBAIHZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmCiAKICAgICBtX2lzUmVhZGluZyA9IHRydWU7CiAg
ICAgYXV0byBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nl
c3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBwZW5k
aW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSldKCkgbXV0YWJsZSB7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIHN1Y2Nl
c3NDYWxsYmFjayA9IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdU
Rk1vdmUoZXJyb3JDYWxsYmFjayksIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0Fj
dGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9pc1JlYWRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0ZW0oKS5saXN0RGlyZWN0b3J5KG1fZGlyZWN0b3J5LCBb
dGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNh
bGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92
ZShwZW5kaW5nQWN0aXZpdHkpXShFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRy
eT4+PiYmIHJlc3VsdCkgeworICAgICAgICBtX2RpcmVjdG9yeS0+ZmlsZXN5c3RlbSgpLmxpc3RE
aXJlY3RvcnkoY29udGV4dCwgbV9kaXJlY3RvcnksIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBX
VEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2Fs
bGJhY2spLCBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSldKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYgcmVzdWx0KSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgbV9lcnJv
ciA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9y
Q2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IDZhYWU4MmNiNWY1MzhiM2YzZjI2MDQyMjA0MmYzYmI2
MTJiOTE2NWUuLmQ1MDFkMGM3ZGYwNGY1YjEzYjVlMmEwNDNhN2VjYmEwZGJiODdmNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50
cnkuY3BwCkBAIC0yNiwxNiArMjYsMjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtRW50cnkuaCIKIAorI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgogI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgor
I2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVTeXN0ZW1FbnRy
eTo6RmlsZVN5c3RlbUVudHJ5KERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgdmlydHVhbFBhdGgpCi0gICAgOiBtX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSkKK0ZpbGVTeXN0
ZW1FbnRyeTo6RmlsZVN5c3RlbUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCisg
ICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5
c3RlbSkKICAgICAsIG1fbmFtZShwYXRoR2V0RmlsZU5hbWUodmlydHVhbFBhdGgpKQogICAgICwg
bV92aXJ0dWFsUGF0aCh2aXJ0dWFsUGF0aCkKIHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0K
IAogRmlsZVN5c3RlbUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KCkKQEAgLTQ3LDUgKzU0LDI4IEBA
IERPTUZpbGVTeXN0ZW0mIEZpbGVTeXN0ZW1FbnRyeTo6ZmlsZXN5c3RlbSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZmlsZXN5c3RlbS5nZXQoKTsKIH0KIAorY29uc3QgY2hhciogRmlsZVN5c3RlbUVu
dHJ5OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIkZpbGVTeXN0
ZW1FbnRyeSI7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbUVudHJ5OjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgp
OworfQorCit2b2lkIEZpbGVTeXN0ZW1FbnRyeTo6Z2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFJlZlB0cjxGaWxlU3lzdGVtRW50cnlDYWxsYmFjaz4mJiBzdWNjZXNz
Q2FsbGJhY2ssIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAg
ZmlsZXN5c3RlbSgpLmdldFBhcmVudChjb250ZXh0LCAqdGhpcywgW3BlbmRpbmdBY3Rpdml0eSA9
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShh
dXRvJiYgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KERPTUV4Y2VwdGlvbjo6Y3JlYXRlKHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3Vj
Y2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIH0pOworfQorCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuaAppbmRleCBhNzRkODdlNzg5YWNlOTAzNDMyMTQ2NzNmZTI4MjM0YzFk
OGFkZDg2Li4zZTc2ZTc4M2QwNGU1MjhiZjJkNGM3ODI2MDg1M2E0ZDY0ZWU4Yjg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMyLDggKzMz
LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW07CitjbGFz
cyBFcnJvckNhbGxiYWNrOworY2xhc3MgRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s7CiAKLWNsYXNz
IEZpbGVTeXN0ZW1FbnRyeSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3Vu
dGVkPEZpbGVTeXN0ZW1FbnRyeT4geworY2xhc3MgRmlsZVN5c3RlbUVudHJ5IDogcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFJlZkNvdW50ZWQ8
RmlsZVN5c3RlbUVudHJ5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsZVN5c3RlbUVudHJ5
KCk7CiAKQEAgLTQ0LDEwICs0NywxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB2aXJ0
dWFsUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFBhdGg7IH0KICAgICBET01GaWxlU3lz
dGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7CiAKKyAgICB2b2lkIGdldFBhcmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8
RXJyb3JDYWxsYmFjaz4mJik7CisKIHByb3RlY3RlZDoKLSAgICBGaWxlU3lzdGVtRW50cnkoRE9N
RmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpOworICAgIEZpbGVTeXN0ZW1F
bnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmlu
ZyYgdmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKKwogICAgIFJlZjxET01GaWxlU3lzdGVtPiBtX2ZpbGVz
eXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92aXJ0dWFsUGF0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50
cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRy
eS5pZGwKaW5kZXggZjcxNjQwMTVjMDZhZjJkNjdjMjg1OWEyM2IyNTVmYTI5NGQzMmFjOC4uYmUw
NjkyZjkxZWQwMjI5MWU0NGJlOTNjM2JlZDY3OWZjMjYwOGRkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5pZGwKQEAgLTMz
LDUgKzMzLDUgQEAKICAgICBbSW1wbGVtZW50ZWRBcz12aXJ0dWFsUGF0aF0gcmVhZG9ubHkgYXR0
cmlidXRlIFVTVlN0cmluZyBmdWxsUGF0aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NRmls
ZVN5c3RlbSBmaWxlc3lzdGVtOwogCi0gICAgLy8gdm9pZCBnZXRQYXJlbnQob3B0aW9uYWwgRmls
ZVN5c3RlbUVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxi
YWNrIGVycm9yQ2FsbGJhY2spOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSB2b2lkIGdldFBhcmVudChvcHRpb25hbCBGaWxlU3lzdGVtRW50cnlDYWxsYmFjaz8gc3VjY2Vz
c0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZp
bGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bUZpbGVFbnRyeS5jcHAKaW5kZXggNzgwYTVmMGEyNDc2ZWE3MzYzNzVjYjBlZWQwYTg3ZmQxYzQz
MzIyNy4uYjgwYjY1YjhjYjRkNTk3NjcyMGQ3OGM5MzBjNGI4ODU4MmJhMTA0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmls
ZUVudHJ5LmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZp
bGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKLSAgICA6IEZpbGVTeXN0ZW1FbnRy
eShmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkKK0ZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0
ZW1GaWxlRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3Rl
bSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKKyAgICA6IEZpbGVTeXN0
ZW1FbnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmgKaW5kZXggMWZhM2FjYzU5Y2QzMGQ2NGEyNGUzNjU5ZWNlOWZlMTJjNDAxNmFkOC4uODli
ZThkZjQxM2NiMjQ0ZDU0YzAwZTRlMzQ0NGQ1ZDEwNzEzZDZmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBA
IC0zNSw5ICszNSw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZp
bGVTeXN0ZW1GaWxlRW50cnkgZmluYWwgOiBwdWJsaWMgRmlsZVN5c3RlbUVudHJ5IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1GaWxlRW50cnk+IGNyZWF0ZShET01GaWxlU3lz
dGVtJiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKQorICAgIHN0YXRpYyBS
ZWY8RmlsZVN5c3RlbUZpbGVFbnRyeT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBh
dGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRmlsZUVu
dHJ5KGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGVTeXN0ZW1GaWxlRW50cnkoY29udGV4dCwgZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgp
KTsKICAgICB9CiAKICAgICB2b2lkIGZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0
cjxGaWxlQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmID0gbnVsbHB0cik7CkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGaWxlU3lzdGVtRmlsZUVudHJ5KERPTUZp
bGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKKyAgICBGaWxlU3lzdGVtRmls
ZUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01GaWxlU3lzdGVtJiwgY29uc3QgU3Ry
aW5nJiB2aXJ0dWFsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKaW5kZXggZTMyMjgyYjk3ODE2ODhhMjhkNjI5
ZWQ4MzM0ZjM5OGE1NmE2OWYwYi4uODMxOTA0Y2NhYjA1YzhiNWYwMDQ0Y2FmMWExMDgzNjdiYTdj
MDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcApAQCAtMTA1LDEz
ICsxMDUsMTMgQEAgUmVmUHRyPEZpbGU+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZmlsZS5jb3B5UmVmKCk7CiB9CiAKLVJlZlB0cjxGaWxlU3lzdGVt
RW50cnk+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRW50cnkoKSBjb25zdAorUmVmUHRyPEZpbGVT
eXN0ZW1FbnRyeT4gRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGF1dG8gZmlsZSA9IGdldEFzRmlsZSgpOwog
ICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKCpmaWxlKTsKKyAgICByZXR1cm4gRE9NRmls
ZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKGNvbnRleHQsICpmaWxlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlckl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKaW5kZXgg
NzEzMzA0MzFiOWQ0YzkzMDdkZjBkMjBkODc2MWVlODRiZTZjNDNmOC4uOWFjMTFlN2NiMzM1Zjcz
MTAwM2ZhMTY1YTE4NjI0ZmU3ZmFlZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0
OwogICAgIHZvaWQgZ2V0QXNTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxT
dHJpbmdDYWxsYmFjaz4mJikgY29uc3Q7CiAgICAgUmVmUHRyPEZpbGU+IGdldEFzRmlsZSgpIGNv
bnN0OwotICAgIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IGdldEFzRW50cnkoKSBjb25zdDsKKyAg
ICBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5PiBnZXRBc0VudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRhVHJhbnNmZXJJdGVtKFdlYWtQdHI8RGF0
YVRyYW5zZmVySXRlbUxpc3Q+JiYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaWRsCmluZGV4IGNkNTJmNTA2ZmI5MzhhZmZlYmZlNWNhZGY4NzYyOTBi
NDIyMmVhOGYuLmU3ZDFlMDNjYjEwZmIzOWM1YmQyOWZmYzVhMWU2NGQ4MWUzMGM3OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwKQEAgLTQwLDYgKzQwLDYgQEAKICAg
ICBGaWxlIGdldEFzRmlsZSgpOwogCiAgICAgLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRy
aWVzLWFwaS8jaHRtbC1kYXRhCi0gICAgW0ltcGxlbWVudGVkQXM9Z2V0QXNFbnRyeV0gRmlsZVN5
c3RlbUVudHJ5PyB3ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9Z2V0QXNFbnRyeV0gRmlsZVN5c3RlbUVudHJ5PyB3
ZWJraXRHZXRBc0VudHJ5KCk7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzBjYjdlZDNlZGVhNmM4ZmJiZGE5NWQ0
ZmZkZDQ3NGJmZDk2MzViYi4uMDI4NzA3OWMyZjZlMjU0YWY4YjEzODVmYzYyNDNhMGRhY2MxZWZh
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA4LTMxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1FbnRyeS5nZXRQYXJl
bnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2
MTY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50
LXJvb3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50LXJvb3QuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVu
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZ2V0UGFyZW50Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWw6
IEFkZGVkLgorICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIEZpbGVTeXN0ZW1F
bnRyeS5nZXRQYXJlbnQoKS4KKworICAgICAgICAqIGh0dHAvd3B0L2VudHJpZXMtYXBpL2ludGVy
ZmFjZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3Qgbm93IHRoYXQgb25l
IG1vcmUgY2hlY2sgaXMgcGFzc2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICBTa2lwIG5ldyB0ZXN0cyBvbiBXSzIgc2luY2UgdGhleSByZWx5
IG9uIGJlZ2luRHJhZ1dpdGhGaWxlcy4KKwogMjAxNy0wOC0zMSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlcXVlc3QgYm9keSBz
dHJlYW0gY2xvbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGEzNDU5NjBjY2Y4NGU4YjkwZjY4YmZlNjQzYmQx
OGNkZmQyMmFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOCBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5LmdldFBh
cmVudCgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRhdGFUcmFuc2Zl
ci5pdGVtcy5sZW5ndGggaXMgMgorUEFTUyBmaXJzdEVudHJ5UGFyZW50Lm5hbWUgaXMgIiIKK1BB
U1MgZmlyc3RFbnRyeVBhcmVudC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgZmlyc3RFbnRyeVBhcmVu
dC5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGZpcnN0RW50cnlQYXJlbnQuaXNGaWxlIGlzIGZh
bHNlCitQQVNTIHNlY29uZEVudHJ5UGFyZW50Lm5hbWUgaXMgIiIKK1BBU1Mgc2Vjb25kRW50cnlQ
YXJlbnQuZnVsbFBhdGggaXMgIi8iCitQQVNTIHNlY29uZEVudHJ5UGFyZW50LmlzRGlyZWN0b3J5
IGlzIHRydWUKK1BBU1Mgc2Vjb25kRW50cnlQYXJlbnQuaXNGaWxlIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dFBhcmVudC1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTY0NDY0ZGM4YzI5YmQ2M2FiMjEwMjY5MTczZDkxMDQwMDIwYzdiNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAor
QmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5LmdldFBhcmVudCgpIG9uIHRo
ZSByb290CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJvb3RQYXJlbnQu
bmFtZSBpcyAiIgorUEFTUyByb290UGFyZW50LmZ1bGxQYXRoIGlzICIvIgorUEFTUyByb290UGFy
ZW50LmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1Mgcm9vdFBhcmVudC5pc0ZpbGUgaXMgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZ2V0UGFyZW50LXJvb3QuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMwOTA5Yzg0MDEzMTU1MjFjMjhjOWJjZWIxOGU1MjM4ZjljMmRiYjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZ2V0UGFyZW50LXJvb3QuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0
OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50
KCkgb24gdGhlIHJvb3QiKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZHJvcHpvbmUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25lLm9uZHJvcCA9
IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0YVRyYW5zZmVy
ID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBsZXQgZW50cnkgPSBkYXRhVHJhbnNmZXIuaXRlbXNb
MF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5LmZpbGVzeXN0ZW0ucm9vdC5nZXRQYXJl
bnQoZnVuY3Rpb24ocGFyZW50KSB7CisgICAgICAgIHJvb3RQYXJlbnQgPSBwYXJlbnQ7CisKKyAg
ICAgICAgLy8gU2hvdWxkIGJlIHRoZSByb290IGl0c2VsZi4KKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJyb290UGFyZW50Lm5hbWUiLCAiIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygicm9vdFBhcmVudC5mdWxsUGF0aCIsICIvIik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgicm9vdFBhcmVudC5pc0RpcmVjdG9yeSIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJyb290
UGFyZW50LmlzRmlsZSIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIGZ1bmN0
aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWlsZWQ6ICIg
KyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9wem9uZS5v
bmRyYWdvdmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworfQor
CitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChkcm9wem9u
ZSwgWycuLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXN0LnR4dCddKTsKK30KKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjZTBiMGM1ZTFiZjE4NDY0ZTk2YjY3ODg1YWRjMDc1OGMxOGIxNWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAw
cHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5
LmdldFBhcmVudCgpIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGRyb3B6b25lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citkcm9wem9uZS5vbmRyb3AgPSBm
dW5jdGlvbihlKSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGRhdGFUcmFuc2ZlciA9
IGUuZGF0YVRyYW5zZmVyOworCisgICAgc2hvdWxkQmUoImRhdGFUcmFuc2Zlci5pdGVtcy5sZW5n
dGgiLCAiMiIpOworCisgICAgZmlyc3REYXRhVHJhbnNmZXJJdGVtID0gZGF0YVRyYW5zZmVyLml0
ZW1zWzBdOworICAgIGZpcnN0RW50cnkgPSBmaXJzdERhdGFUcmFuc2Zlckl0ZW0ud2Via2l0R2V0
QXNFbnRyeSgpOworICAgIHNlY29uZERhdGFUcmFuc2Zlckl0ZW0gPSBkYXRhVHJhbnNmZXIuaXRl
bXNbMV07CisgICAgc2Vjb25kRW50cnkgPSBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLndlYmtpdEdl
dEFzRW50cnkoKTsKKworICAgIGZpcnN0RW50cnkuZ2V0UGFyZW50KGZ1bmN0aW9uKHBhcmVudCkg
eworICAgICAgICBmaXJzdEVudHJ5UGFyZW50ID0gcGFyZW50OworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImZpcnN0RW50cnlQYXJlbnQubmFtZSIsICIiKTsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJmaXJzdEVudHJ5UGFyZW50LmZ1bGxQYXRoIiwgIi8iKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVudHJ5UGFyZW50LmlzRGlyZWN0b3J5Iik7CisgICAgICAg
IHNob3VsZEJlRmFsc2UoImZpcnN0RW50cnlQYXJlbnQuaXNGaWxlIik7CisKKyAgICAgICAgc2Vj
b25kRW50cnkuZ2V0UGFyZW50KGZ1bmN0aW9uKHBhcmVudCkgeworICAgICAgICAgICAgc2Vjb25k
RW50cnlQYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InNlY29uZEVudHJ5UGFyZW50Lm5hbWUiLCAiIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNlY29uZEVudHJ5UGFyZW50LmZ1bGxQYXRoIiwgIi8iKTsKKyAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgic2Vjb25kRW50cnlQYXJlbnQuaXNEaXJlY3RvcnkiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRmFsc2UoInNlY29uZEVudHJ5UGFyZW50LmlzRmlsZSIpOworCisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWlsZWQ6ICIgKyBlKTsKKyAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCBmdW5jdGlvbihlKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoImdldFBhcmVudCgpIGNhbGwgZmFpbGVkOiAiICsgZSk7CisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9
IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0g
ZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4v
ZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQnLCAnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jl
c291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRQYXJlbnQyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jY2FhNGY1NTE4ZDUxNjc0YWJkMThiODdjMDBkZjQ2M2JlZDk3ODE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWdldFBhcmVudDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0Jh
c2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1FbnRyeS5nZXRQYXJlbnQoKQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkaXJlY3RvcnlFbnRyeS5uYW1lIGlzICJ0
ZXN0RmlsZXMiCitQQVNTIGRpcmVjdG9yeUVudHJ5LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgor
UEFTUyBkaXJlY3RvcnlFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGRpcmVjdG9yeUVu
dHJ5LmlzRmlsZSBpcyBmYWxzZQorUEFTUyBlbnRyeVBhcmVudC5uYW1lIGlzICJ0ZXN0RmlsZXMi
CitQQVNTIGVudHJ5UGFyZW50LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFTUyBlbnRyeVBh
cmVudC5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5UGFyZW50LmlzRmlsZSBpcyBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwY2Zi
ZTI3YzFmNWEwNzA0MGRkNDFmMzI3NzNmZjY1OWM2ZjJjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0
UGFyZW50Mi5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJh
c2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1FbnRyeS5nZXRQYXJlbnQoKSIpOworanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkcm9wem9uZScpOworZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUu
cHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKwor
ICAgIGRpcmVjdG9yeUVudHJ5ID0gZGF0YVRyYW5zZmVyLml0ZW1zWzBdLndlYmtpdEdldEFzRW50
cnkoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpcmVjdG9yeUVudHJ5Lm5hbWUiLCAi
dGVzdEZpbGVzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXJlY3RvcnlFbnRyeS5m
dWxsUGF0aCIsICIvdGVzdEZpbGVzIik7CisgICAgc2hvdWxkQmVUcnVlKCJkaXJlY3RvcnlFbnRy
eS5pc0RpcmVjdG9yeSIpOworICAgIHNob3VsZEJlRmFsc2UoImRpcmVjdG9yeUVudHJ5LmlzRmls
ZSIpOworCisgICAgbGV0IGRpcmVjdG9yeVJlYWRlciA9IGRpcmVjdG9yeUVudHJ5LmNyZWF0ZVJl
YWRlcigpOworICAgIGRpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcyhmdW5jdGlvbihlbnRyaWVz
KSB7CisgICAgICAgIGVudHJpZXNbMF0uZ2V0UGFyZW50KGZ1bmN0aW9uKHBhcmVudCkgeworICAg
ICAgICAgICAgZW50cnlQYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImVudHJ5UGFyZW50Lm5hbWUiLCAidGVzdEZpbGVzIik7CisgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5UGFyZW50LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZW50cnlQYXJlbnQuaXNEaXJlY3RvcnkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImVudHJ5UGFyZW50LmlzRmlsZSIpOworCisgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWlsZWQ6ICIgKyBlKTsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCBmdW5jdGlvbihlKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRyaWVzKCkgY2FsbCBmYWlsZWQ6ICIgKyBlKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9wem9uZS5vbmRyYWdv
dmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworfQorCitvbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChkcm9wem9uZSwgWycu
Li8uLi9mYXN0L2Zvcm1zL2ZpbGUvcmVzb3VyY2VzL3Rlc3RGaWxlcyddKTsKK30KKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZW50
cmllcy1hcGkvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9l
bnRyaWVzLWFwaS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dAppbmRleCBlNzFiOWVlNTg0YmI3ZmIy
NDU0OTVjNTg5NDVlZDkwODNmZWUwZGY4Li40Y2MxN2EyMjM1ZjE2Yzg1NjE5NWQ3NDU0MzA1Njdk
ODEwMDg2M2JiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9lbnRyaWVzLWFwaS9p
bnRlcmZhY2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9lbnRyaWVz
LWFwaS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQQVNTIEZpbGVT
eXN0ZW1FbnRyeSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBpc0RpcmVjdG9yeQogUEFTUyBGaWxlU3lz
dGVtRW50cnkgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbmFtZSAKIFBBU1MgRmlsZVN5c3RlbUVudHJ5
IGludGVyZmFjZTogYXR0cmlidXRlIGZ1bGxQYXRoIAogUEFTUyBGaWxlU3lzdGVtRW50cnkgaW50
ZXJmYWNlOiBhdHRyaWJ1dGUgZmlsZXN5c3RlbSAKLUZBSUwgRmlsZVN5c3RlbUVudHJ5IGludGVy
ZmFjZTogb3BlcmF0aW9uIGdldFBhcmVudChGaWxlU3lzdGVtRW50cnlDYWxsYmFjayxFcnJvckNh
bGxiYWNrKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBt
aXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJnZXRQYXJlbnQi
IG1pc3NpbmcKK1BBU1MgRmlsZVN5c3RlbUVudHJ5IGludGVyZmFjZTogb3BlcmF0aW9uIGdldFBh
cmVudChGaWxlU3lzdGVtRW50cnlDYWxsYmFjayxFcnJvckNhbGxiYWNrKSAKIFBBU1MgRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBvYmplY3QgCiBQQVNTIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBpbnRlcmZh
Y2Ugb2JqZWN0IGxlbmd0aCAKIFBBU1MgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5IGludGVyZmFj
ZSBvYmplY3QgbmFtZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggOGEyYTJhMTdkZGVhMzgwNjVmZTcyMzk1NDVhYWQxZDNmZGQxOThlZS4uNjU0NGY2NTdm
N2E4MGE4ZGVmZWZlMGM2MTIwMjgyNWI5Nzg2MmIwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU2Nyw2ICs1NjcsOSBAQCBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXJyb3Iu
aHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9y
eVJlYWRlci1yb290Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMt
ZHJvcC1nZXRBc0VudHJ5Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1wbGFpbnRleHQtZmlsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFzdGVib2Fy
ZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319607</attachid>
            <date>2017-09-01 09:59:06 -0700</date>
            <delta_ts>2017-09-01 10:14:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176165-20170901095905.patch</filename>
            <type>text/plain</type>
            <size>37828</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY4ODYwNTcwMTkwZWE5
ZWM1MzIxYTVhZDIyMDU0NDA4Mzk2MGNjYi4uYjI3N2U5MjA3N2I5YjUyYjliNzZkMzU3NDhhMTI1
ODU0ODczM2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc2IEBACiAyMDE3LTA4LTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1FbnRyeS5nZXRQYXJlbnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2MTY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIEltcGxlbWVudCBG
aWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCk6CisgICAgICAgIC0gaHR0cHM6Ly93aWNnLmdpdGh1
Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZpbGVzeXN0ZW1lbnRyeS1nZXRwYXJlbnQKKworICAgICAg
ICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBh
cmVudC1yb290Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudDIuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9GaWxlU3lzdGVtRW50cmllcyk6CisgICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IG5vdyB0aGF0IEZpbGVTeXN0ZW1FbnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3Qu
CisKKyAgICAgICAgKFdlYkNvcmU6OmlzQWJzb2x1dGVWaXJ0dWFsUGF0aCk6CisgICAgICAgIEFk
ZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIHZpcnR1YWwgcGF0aCBpcyBhYnNv
bHV0ZToKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNhYnNv
bHV0ZS1wYXRoCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OnJvb3QpOgorICAg
ICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cgdGhhdCBGaWxlU3lzdGVtRW50
cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0LgorCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpmaWxlQXNFbnRyeSk6CisgICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IG5vdyB0aGF0IEZpbGVTeXN0ZW1FbnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3QuCisKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc29sdmVSZWxhdGl2ZVBhdGgpOgorICAgICAgICBBZGQgaW1wbGVtZW50
YXRpb24gZm9yOgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkv
I3Jlc29sdmUtYS1yZWxhdGl2ZS1wYXRoCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkpOgorICAgICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBub3cgdGhhdCBGaWxlU3lzdGVtRW50cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0LgorCisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICBBZGQgaW1w
bGVtZW50YXRpb24gb2YgZ2V0UGFyZW50KCkgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vd2lj
Zy5naXRodWIuaW8vZW50cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZW50cnktZ2V0cGFyZW50CisK
KyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKToKKyAgICAgICAgKiBN
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9l
bnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSk6Cisg
ICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRy
aWVzKToKKyAgICAgICAgVGFrZSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbm93IHRoYXQgRmls
ZVN5c3RlbUVudHJ5IGlzIGFuIEFjdGl2ZURPTU9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5
c3RlbUVudHJ5OjpGaWxlU3lzdGVtRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bUVudHJ5OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1FbnRyeTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRW50cnk6OmdldFBhcmVudCk6CisgICAgICAgICog
TW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaWRsOgorICAgICAgICAtIEFkZCBpbXBsZW1lbnRh
dGlvbiBvZiBGaWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCkgd2hpY2ggcmVsaWVzIG9uCisgICAg
ICAgICAgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KCkKKyAgICAgICAgLSBNYWtlIEZpbGVTeXN0
ZW1FbnRyeSBhbiBBY3RpdmVET01PYmplY3QgYXMgZ2V0UGFyZW50KCkgaXMgYW4gYXN5bmNocm9u
b3VzCisgICAgICAgICAgb3BlcmF0aW9uIHdoaWNoIGNhdXNlcyBkZWxheWVkIEpTIGV4ZWN1dGlv
bi4KKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxl
RW50cnkpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5
Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeSBjb25zdCk6CisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5pZGw6Cisg
ICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyB0aGF0IEZpbGVTeXN0ZW1F
bnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3QuCisKKzIwMTctMDgtMzEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBnZXRGaWxlTWV0YWRhdGEoKSBkb2VzIG5vdCB3
b3JrIGFzIGV4cGVjdGVkIGZvciBzeW1ib2xpYyBsaW5rcwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAzOGMzNTRlNTVl
YjU5YThmOWQ3NTNhNDI0NzJiMThiMWVmZDY4MGZiLi4yNTUwYmMzOTNiM2I4NTY3M2VmNGNhMzEw
YWIwY2Q4MTE1NDc1YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0zMSw4ICszMSwxMCBAQAogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0
Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYxLDcgKzYzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9N
RmlsZVN5c3RlbSYgZmlsZVN5c3RlbSwgRXhjZXB0aW9uT3I8VmVjdG9yPExpc3RlZENoaWxkPj4m
JiBsaXN0ZWRDaGlsZHJlbiwgY29uc3QgU3RyaW5nJiBwYXJlbnRWaXJ0dWFsUGF0aCkKK3N0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiB0b0ZpbGVTeXN0ZW1F
bnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZp
bGVTeXN0ZW0sIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+JiYgbGlzdGVkQ2hpbGRy
ZW4sIGNvbnN0IFN0cmluZyYgcGFyZW50VmlydHVhbFBhdGgpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAobGlzdGVkQ2hpbGRyZW4uaGFzRXhjZXB0aW9uKCkpCkBAIC03
MywxMCArNzUsMTAgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVu
dHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9NRmlsZVN5c3QKICAgICAgICAgU3RyaW5nIHZp
cnR1YWxQYXRoID0gcGFyZW50VmlydHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKICAg
ICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpU
eXBlRmlsZToKLSAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZpbGVTeXN0ZW1G
aWxlRW50cnk6OmNyZWF0ZShmaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAg
ZW50cmllcy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRl
eHQsIGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBlbnRyaWVz
LnVuY2hlY2tlZEFwcGVuZChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShmaWxlU3lz
dGVtLCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQo
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3RlbSwgdmly
dHVhbFBhdGgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CkBAIC04NSw2ICs4NywxMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9y
PFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4gdG9GaWxlU3lzdGVtRW50cmllcyhET01GaWxlU3lzdAog
ICAgIHJldHVybiBXVEZNb3ZlKGVudHJpZXMpOwogfQogCitzdGF0aWMgYm9vbCBpc0Fic29sdXRl
VmlydHVhbFBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKK3sKKyAgICByZXR1cm4gIXZp
cnR1YWxQYXRoLmlzRW1wdHkoKSAmJiB2aXJ0dWFsUGF0aFswXSA9PSAnLyc7Cit9CisKIERPTUZp
bGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkK
QEAgLTk4LDE2ICsxMDUsNDggQEAgRE9NRmlsZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewog
fQogCi1SZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkK
K1JlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMsIEFTQ0lJTGl0
ZXJhbCgiLyIpKTsKIH0KIAotUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6Zmls
ZUFzRW50cnkoKQorUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50
cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAobV9maWxlLT5p
c0RpcmVjdG9yeSgpKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Ojpj
cmVhdGUoKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bUZpbGVFbnRyeTo6Y3JlYXRlKCp0aGlzLCAiLyIgKyBtX2ZpbGUtPm5hbWUoKSk7CisgICAgICAg
IHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250ZXh0LCAqdGhpcywg
Ii8iICsgbV9maWxlLT5uYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5Ojpj
cmVhdGUoY29udGV4dCwgKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKK30KKworLy8gaHR0
cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jcmVzb2x2ZS1hLXJlbGF0aXZlLXBhdGgK
K3N0YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHZpcnR1YWxQ
YXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKK3sKKyAgICBBU1NFUlQodmlydHVhbFBh
dGhbMF0gPT0gJy8nKTsKKyAgICBpZiAoaXNBYnNvbHV0ZVZpcnR1YWxQYXRoKHJlbGF0aXZlUGF0
aCkpCisgICAgICAgIHJldHVybiByZWxhdGl2ZVBhdGg7CisKKyAgICBhdXRvIHZpcnR1YWxQYXRo
U2VnbWVudHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgnLycpOworICAgIGF1dG8gcmVsYXRpdmVQYXRo
U2VnbWVudHMgPSByZWxhdGl2ZVBhdGguc3BsaXQoJy8nKTsKKyAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiByZWxhdGl2ZVBhdGhTZWdtZW50cykgeworICAgICAgICBBU1NFUlQoIXNlZ21lbnQuaXNF
bXB0eSgpKTsKKyAgICAgICAgaWYgKHNlZ21lbnQgPT0gIi4iKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChzZWdtZW50ID09ICIuLiIpIHsKKyAgICAgICAgICAgIGlmICghdmly
dHVhbFBhdGhTZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdmlydHVhbFBhdGhT
ZWdtZW50cy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICB2aXJ0dWFsUGF0aFNlZ21lbnRzLmFwcGVuZChzZWdtZW50KTsKKyAgICB9CisKKyAg
ICBpZiAodmlydHVhbFBhdGhTZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIi8iKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1
dG8mIHNlZ21lbnQgOiB2aXJ0dWFsUGF0aFNlZ21lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcvJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlZ21lbnQpOworICAgIH0KKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiAvLyBodHRwczovL3dpY2cuZ2l0aHViLmlv
L2VudHJpZXMtYXBpLyNldmFsdWF0ZS1hLXBhdGgKQEAgLTEzMiw3ICsxNzEsNyBAQCBTdHJpbmcg
RE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCiAg
ICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290UGF0aCwgcmVzb2x2ZWRD
b21wb25lbnRzKTsKIH0KIAotdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5LCBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkm
IGRpcmVjdG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCZkaXJlY3RvcnkuZmlsZXN5c3RlbSgpID09IHRoaXMpOwogCkBAIC0x
NDAsMTUgKzE3OSwzMyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5JiBkaXJlY3RvcnksIERpcmVjdG9yeQogICAgIGF1dG8gZnVsbFBh
dGggPSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBhdGgpOwogICAgIGlmIChmdWxsUGF0
aCA9PSBtX3Jvb3RQYXRoKSB7CiAgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4g
Y2hpbGRyZW47Ci0gICAgICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeSgpKTsKKyAgICAg
ICAgY2hpbGRyZW4uYXBwZW5kKGZpbGVBc0VudHJ5KGNvbnRleHQpKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShjaGlsZHJlbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29w
eSgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgY29u
dGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGZ1bGxQYXRoID0gZnVsbFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpcmVj
dG9yeVZpcnR1YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0
aE1ldGFkYXRhKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRy
ZW4gPSBjcm9zc1RocmVhZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0
aCA9IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcygqdGhpcywgV1RG
TW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9
IGNyb3NzVGhyZWFkQ29weShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0g
ZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih0b0ZpbGVTeXN0ZW1FbnRyaWVzKGNvbnRleHQsICp0aGlz
LCBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGgpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYgZW50cnksIEdldFBh
cmVudENhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQoreworICAgIFN0cmluZyB2aXJ0dWFs
UGF0aCA9IHJlc29sdmVSZWxhdGl2ZVBhdGgoZW50cnkudmlydHVhbFBhdGgoKSwgQVNDSUlMaXRl
cmFsKCIuLiIpKTsKKyAgICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKKyAgICBTdHJp
bmcgZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOworICAgIG1fd29ya1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0g
Y3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHko
dmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghZmlsZUlzRGlyZWN0b3J5KGZ1bGxQYXRo
LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpIHsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNr
KV0geworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhFeGNlcHRpb24geyBOb3RG
b3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVj
dG9yeSIgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250
ZXh0KSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25DYWxsYmFjayhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250
ZXh0LCAqdGhpcywgdmlydHVhbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRl
eCA2ZDNjNWQzMTIxZTBkM2Y4MGNiYjczYTFlMDU0MDVjZDY3ZjdiYWFlLi5kNWE0ODljOTI5YzJl
YjU1OTNjNzg3NTFjNjgzOTY3ZWEwN2JlN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTM2LDI4ICszNiwzMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxlOwogY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5OwogY2xhc3MgRmlsZVN5c3RlbUVudHJ5OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZp
bGVTeXN0ZW1FbnRyeT4gY3JlYXRlRW50cnlGb3JGaWxlKFJlZjxGaWxlPiYmIGZpbGUpCisgICAg
c3RhdGljIFJlZjxGaWxlU3lzdGVtRW50cnk+IGNyZWF0ZUVudHJ5Rm9yRmlsZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZT4mJiBmaWxlKQogICAgIHsKICAgICAgICAg
YXV0byBmaWxlU3lzdGVtID0gYWRvcHRSZWYoKm5ldyBET01GaWxlU3lzdGVtKFdURk1vdmUoZmls
ZSkpKTsKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPmZpbGVBc0VudHJ5KCk7CisgICAgICAg
IHJldHVybiBmaWxlU3lzdGVtLT5maWxlQXNFbnRyeShjb250ZXh0KTsKICAgICB9CiAKICAgICB+
RE9NRmlsZVN5c3RlbSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9Ci0gICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gcm9vdCgpOwor
ICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IHJvb3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOwogCiAgICAgdXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYpPjsK
LSAgICB2b2lkIGxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgRGlyZWN0
b3J5TGlzdGluZ0NhbGxiYWNrJiYpOworICAgIHZvaWQgbGlzdERpcmVjdG9yeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgRGlyZWN0b3J5TGlzdGlu
Z0NhbGxiYWNrJiYpOworCisgICAgdXNpbmcgR2V0UGFyZW50Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4+JiYpPjsK
KyAgICB2b2lkIGdldFBhcmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUVu
dHJ5JiwgR2V0UGFyZW50Q2FsbGJhY2smJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9N
RmlsZVN5c3RlbShSZWY8RmlsZT4mJik7CiAKICAgICBTdHJpbmcgZXZhbHVhdGVQYXRoKGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpOwotICAgIFJlZjxGaWxlU3lzdGVtRW50cnk+IGZpbGVBc0Vu
dHJ5KCk7CisgICAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gZmlsZUFzRW50cnkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWY8RmlsZT4gbV9maWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uaWRsCmluZGV4IGIyNWVjNjUwZjkzOTdmZDVhNjI2NGNlZGQ3NmU0YjBkZWM5MDlkZDQuLmMx
OTcyY2U5ZmFjZGI2ZmY1NDcyOTdiMjI1NGI2Y2NkMzM0YzMyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwKQEAgLTI5LDUg
KzI5LDUgQEAKICAgICBJbnRlcmZhY2VOYW1lPUZpbGVTeXN0ZW0sCiBdIGludGVyZmFjZSBET01G
aWxlU3lzdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG5hbWU7Ci0gICAg
W0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeSByb290OworICAgIFtDYWNoZWRBdHRyaWJ1dGUsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgcm9v
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCmluZGV4IGM5MTViMDBlMTIwZDA2ZTNm
YmE4Y2Q1NzI2OGY2ZjVhY2QxYjk2ZjIuLjZhZTg2NzUyYzQzNjYzMGU1OTI1ODg1NjEwMzIxYTY0
MjM3YWU3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCkBAIC0zMiw4ICszMiw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3Ry
aW5nJiB2aXJ0dWFsUGF0aCkKLSAgICA6IEZpbGVTeXN0ZW1FbnRyeShmaWxlc3lzdGVtLCB2aXJ0
dWFsUGF0aCkKK0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVz
eXN0ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCisgICAgOiBGaWxlU3lzdGVtRW50cnko
Y29udGV4dCwgZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaAppbmRleCA4ZGI2ZjkzOTVkMzFmZjFkNGJhOGI4MjFjOTEwZjNjMjg0NGI0NDNlLi4z
Y2RmZTliOGUxN2RkOTM5MDZiNWVlNzA3ZTdiZTUyYTdiODU3ZmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBmaW5hbCA6IHB1YmxpYyBGaWxlU3lz
dGVtRW50cnkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5PiBjcmVhdGUoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0
dWFsUGF0aCkKKyAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0
ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkoZmlsZXN5c3RlbSwgdmlydHVhbFBh
dGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5KGNvbnRleHQsIGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgfQogCiAgICAgUmVm
PEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBp
c0RpcmVjdG9yeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtJiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0
aCk7CisgICAgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBET01GaWxlU3lzdGVtJiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAKaW5kZXggMDdk
ODE2ODhmNDRiMjc3NWY1NzExZTRhZTdjMThjNjg4ZDFiMDE4OS4uNDNmMjhhNDFhMDY5YjA4MDhk
MGQ0YzZkMDI1MWZkZGI4ZjBmYzA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cmllc0Nh
bGxiYWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDkgKzc5LDkg
QEAgdm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKIAogICAgIG1faXNSZWFkaW5nID0gdHJ1ZTsKICAg
ICBhdXRvIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN1Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3VjY2Vz
c0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayksIHBlbmRp
bmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgc3VjY2Vz
c0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RG
TW92ZShlcnJvckNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0
aXZpdHkpXSgpIG11dGFibGUgewogICAgICAgICBtX2lzUmVhZGluZyA9IGZhbHNlOwotICAgICAg
ICBtX2RpcmVjdG9yeS0+ZmlsZXN5c3RlbSgpLmxpc3REaXJlY3RvcnkobV9kaXJlY3RvcnksIFt0
aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3Zl
KHBlbmRpbmdBY3Rpdml0eSldKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5
Pj4+JiYgcmVzdWx0KSB7CisgICAgICAgIG1fZGlyZWN0b3J5LT5maWxlc3lzdGVtKCkubGlzdERp
cmVjdG9yeShjb250ZXh0LCBtX2RpcmVjdG9yeSwgW3RoaXMsIHN1Y2Nlc3NDYWxsYmFjayA9IFdU
Rk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxs
YmFjayksIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oRXhjZXB0
aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4mJiByZXN1bHQpIHsKICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBtX2Vycm9y
ID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JD
YWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggNmFhZTgyY2I1ZjUzOGIzZjNmMjYwNDIyMDQyZjNiYjYx
MmI5MTY1ZS4uODA5NDljZWMxMmNhMTA3NmI5YzAzMTFkZjgzOGFkOTRhZWM0YjViZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRy
eS5jcHAKQEAgLTI2LDE2ICsyNiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW1FbnRyeS5oIgogCisjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCisj
aW5jbHVkZSAiRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZVN5c3RlbUVudHJ5
OjpGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5n
JiB2aXJ0dWFsUGF0aCkKLSAgICA6IG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQorRmlsZVN5c3Rl
bUVudHJ5OjpGaWxlU3lzdGVtRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
RE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lz
dGVtKQogICAgICwgbV9uYW1lKHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCiAgICAgLCBt
X3ZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoKQogeworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
CiBGaWxlU3lzdGVtRW50cnk6On5GaWxlU3lzdGVtRW50cnkoKQpAQCAtNDcsNSArNTQsMzEgQEAg
RE9NRmlsZVN5c3RlbSYgRmlsZVN5c3RlbUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9maWxlc3lzdGVtLmdldCgpOwogfQogCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtRW50
cnk6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiRmlsZVN5c3Rl
bUVudHJ5IjsKK30KKworYm9vbCBGaWxlU3lzdGVtRW50cnk6OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5KCk7
Cit9CisKK3ZvaWQgRmlsZVN5c3RlbUVudHJ5OjpnZXRQYXJlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmIHN1Y2Nlc3ND
YWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBp
ZiAoIXN1Y2Nlc3NDYWxsYmFjayAmJiAhZXJyb3JDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZmlsZXN5c3RlbSgpLmdldFBhcmVudChjb250ZXh0LCAqdGhpcywgW3BlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGVycm9y
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KERPTUV4Y2VwdGlvbjo6Y3JlYXRlKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVF
dmVudChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIH0pOworfQorCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRW50cnkuaAppbmRleCBhNzRkODdlNzg5YWNlOTAzNDMyMTQ2NzNmZTI4
MjM0YzFkOGFkZDg2Li4zZTc2ZTc4M2QwNGU1MjhiZjJkNGM3ODI2MDg1M2E0ZDY0ZWU4Yjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVu
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1F
bnRyeS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMy
LDggKzMzLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW07
CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s7CiAK
LWNsYXNzIEZpbGVTeXN0ZW1FbnRyeSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPEZpbGVTeXN0ZW1FbnRyeT4geworY2xhc3MgRmlsZVN5c3RlbUVudHJ5IDogcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFJlZkNv
dW50ZWQ8RmlsZVN5c3RlbUVudHJ5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsZVN5c3Rl
bUVudHJ5KCk7CiAKQEAgLTQ0LDEwICs0NywxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiB2aXJ0dWFsUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFBhdGg7IH0KICAgICBET01G
aWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7CiAKKyAgICB2b2lkIGdldFBhcmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CisKIHByb3RlY3RlZDoKLSAgICBGaWxlU3lzdGVtRW50
cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpOworICAgIEZpbGVT
eXN0ZW1FbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRE9NRmlsZVN5c3RlbSYsIGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1
bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKKwogICAgIFJlZjxET01GaWxlU3lzdGVtPiBt
X2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92aXJ0dWFsUGF0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1FbnRyeS5pZGwKaW5kZXggZjcxNjQwMTVjMDZhZjJkNjdjMjg1OWEyM2IyNTVmYTI5NGQzMmFj
OC4uYmUwNjkyZjkxZWQwMjI5MWU0NGJlOTNjM2JlZDY3OWZjMjYwOGRkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5pZGwK
QEAgLTMzLDUgKzMzLDUgQEAKICAgICBbSW1wbGVtZW50ZWRBcz12aXJ0dWFsUGF0aF0gcmVhZG9u
bHkgYXR0cmlidXRlIFVTVlN0cmluZyBmdWxsUGF0aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NRmlsZVN5c3RlbSBmaWxlc3lzdGVtOwogCi0gICAgLy8gdm9pZCBnZXRQYXJlbnQob3B0aW9u
YWwgRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJv
ckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSB2b2lkIGdldFBhcmVudChvcHRpb25hbCBGaWxlU3lzdGVtRW50cnlDYWxsYmFjaz8g
c3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbUZpbGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbUZpbGVFbnRyeS5jcHAKaW5kZXggNzgwYTVmMGEyNDc2ZWE3MzYzNzVjYjBlZWQwYTg3
ZmQxYzQzMzIyNy4uYjgwYjY1YjhjYjRkNTk3NjcyMGQ3OGM5MzBjNGI4ODU4MmJhMTA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRmlsZUVudHJ5LmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoRE9NRmlsZVN5c3Rl
bSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKLSAgICA6IEZpbGVTeXN0
ZW1FbnRyeShmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkKK0ZpbGVTeXN0ZW1GaWxlRW50cnk6OkZp
bGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmls
ZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKKyAgICA6IEZp
bGVTeXN0ZW1FbnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1G
aWxlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5LmgKaW5kZXggMWZhM2FjYzU5Y2QzMGQ2NGEyNGUzNjU5ZWNlOWZlMTJjNDAxNmFk
OC4uODliZThkZjQxM2NiMjQ0ZDU0YzAwZTRlMzQ0NGQ1ZDEwNzEzZDZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRy
eS5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNs
YXNzIEZpbGVTeXN0ZW1GaWxlRW50cnkgZmluYWwgOiBwdWJsaWMgRmlsZVN5c3RlbUVudHJ5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1GaWxlRW50cnk+IGNyZWF0ZShET01G
aWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKQorICAgIHN0
YXRpYyBSZWY8RmlsZVN5c3RlbUZpbGVFbnRyeT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVt
RmlsZUVudHJ5KGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGVTeXN0ZW1GaWxlRW50cnkoY29udGV4dCwgZmlsZXN5c3RlbSwgdmlydHVh
bFBhdGgpKTsKICAgICB9CiAKICAgICB2b2lkIGZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFJlZlB0cjxGaWxlQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmID0gbnVsbHB0
cik7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGaWxlU3lzdGVtRmlsZUVudHJ5
KERPTUZpbGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKKyAgICBGaWxlU3lz
dGVtRmlsZUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01GaWxlU3lzdGVtJiwgY29u
c3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKaW5kZXggZTMyMjgyYjk3ODE2ODhh
MjhkNjI5ZWQ4MzM0ZjM5OGE1NmE2OWYwYi4uODMxOTA0Y2NhYjA1YzhiNWYwMDQ0Y2FmMWExMDgz
NjdiYTdjMDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcApAQCAt
MTA1LDEzICsxMDUsMTMgQEAgUmVmUHRyPEZpbGU+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmls
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmlsZS5jb3B5UmVmKCk7CiB9CiAKLVJlZlB0cjxGaWxl
U3lzdGVtRW50cnk+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRW50cnkoKSBjb25zdAorUmVmUHRy
PEZpbGVTeXN0ZW1FbnRyeT4gRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGF1dG8gZmlsZSA9IGdldEFzRmls
ZSgpOwogICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKCpmaWxlKTsKKyAgICByZXR1cm4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKGNvbnRleHQsICpmaWxlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgK
aW5kZXggNzEzMzA0MzFiOWQ0YzkzMDdkZjBkMjBkODc2MWVlODRiZTZjNDNmOC4uOWFjMTFlN2Ni
MzM1ZjczMTAwM2ZhMTY1YTE4NjI0ZmU3ZmFlZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHlwZSgp
IGNvbnN0OwogICAgIHZvaWQgZ2V0QXNTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4mJikgY29uc3Q7CiAgICAgUmVmUHRyPEZpbGU+IGdldEFzRmls
ZSgpIGNvbnN0OwotICAgIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IGdldEFzRW50cnkoKSBjb25z
dDsKKyAgICBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5PiBnZXRBc0VudHJ5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRhVHJhbnNmZXJJdGVtKFdlYWtQ
dHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+JiYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCmluZGV4IGNkNTJmNTA2ZmI5MzhhZmZlYmZlNWNhZGY4
NzYyOTBiNDIyMmVhOGYuLmU3ZDFlMDNjYjEwZmIzOWM1YmQyOWZmYzVhMWU2NGQ4MWUzMGM3OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwKQEAgLTQwLDYgKzQwLDYg
QEAKICAgICBGaWxlIGdldEFzRmlsZSgpOwogCiAgICAgLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5p
by9lbnRyaWVzLWFwaS8jaHRtbC1kYXRhCi0gICAgW0ltcGxlbWVudGVkQXM9Z2V0QXNFbnRyeV0g
RmlsZVN5c3RlbUVudHJ5PyB3ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9Z2V0QXNFbnRyeV0gRmlsZVN5c3RlbUVu
dHJ5PyB3ZWJraXRHZXRBc0VudHJ5KCk7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzBjYjdlZDNlZGVhNmM4ZmJi
ZGE5NWQ0ZmZkZDQ3NGJmZDk2MzViYi4uMmIwOTU4ZTJiMjNjOGIxZTdiYmI5Njc3ZTAxYWYzMTAz
MzAzNjVlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA4LTMxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1FbnRyeS5n
ZXRQYXJlbnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MTY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnNkcmVhcyBLbGluZy4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0
UGFyZW50LXJvb3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50LXJvb3QuaHRtbDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dFBhcmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQy
Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIEZpbGVT
eXN0ZW1FbnRyeS5nZXRQYXJlbnQoKS4KKworICAgICAgICAqIGh0dHAvd3B0L2VudHJpZXMtYXBp
L2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3Qgbm93IHRo
YXQgb25lIG1vcmUgY2hlY2sgaXMgcGFzc2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBTa2lwIG5ldyB0ZXN0cyBvbiBXSzIgc2luY2UgdGhl
eSByZWx5IG9uIGJlZ2luRHJhZ1dpdGhGaWxlcy4KKwogMjAxNy0wOC0zMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlcXVlc3Qg
Ym9keSBzdHJlYW0gY2xvbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0
UGFyZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGEzNDU5NjBjY2Y4NGU4YjkwZjY4YmZl
NjQzYmQxOGNkZmQyMmFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOCBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5
LmdldFBhcmVudCgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRhdGFU
cmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMgorUEFTUyBmaXJzdEVudHJ5UGFyZW50Lm5hbWUgaXMg
IiIKK1BBU1MgZmlyc3RFbnRyeVBhcmVudC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgZmlyc3RFbnRy
eVBhcmVudC5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGZpcnN0RW50cnlQYXJlbnQuaXNGaWxl
IGlzIGZhbHNlCitQQVNTIHNlY29uZEVudHJ5UGFyZW50Lm5hbWUgaXMgIiIKK1BBU1Mgc2Vjb25k
RW50cnlQYXJlbnQuZnVsbFBhdGggaXMgIi8iCitQQVNTIHNlY29uZEVudHJ5UGFyZW50LmlzRGly
ZWN0b3J5IGlzIHRydWUKK1BBU1Mgc2Vjb25kRW50cnlQYXJlbnQuaXNGaWxlIGlzIGZhbHNlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWdldFBhcmVudC1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTY0NDY0ZGM4YzI5YmQ2M2FiMjEwMjY5MTczZDkxMDQwMDIwYzdiNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MyBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5LmdldFBhcmVudCgp
IG9uIHRoZSByb290CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJvb3RQ
YXJlbnQubmFtZSBpcyAiIgorUEFTUyByb290UGFyZW50LmZ1bGxQYXRoIGlzICIvIgorUEFTUyBy
b290UGFyZW50LmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1Mgcm9vdFBhcmVudC5pc0ZpbGUgaXMg
ZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZ2V0UGFyZW50LXJvb3QuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMwOTA5Yzg0MDEzMTU1MjFjMjhjOWJjZWIxOGU1MjM4ZjljMmRiYjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtZ2V0UGFyZW50LXJvb3QuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBweDsg
aGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRW50cnkuZ2V0
UGFyZW50KCkgb24gdGhlIHJvb3QiKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZHJv
cHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25lLm9u
ZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0YVRy
YW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBsZXQgZW50cnkgPSBkYXRhVHJhbnNmZXIu
aXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5LmZpbGVzeXN0ZW0ucm9vdC5n
ZXRQYXJlbnQoZnVuY3Rpb24ocGFyZW50KSB7CisgICAgICAgIHJvb3RQYXJlbnQgPSBwYXJlbnQ7
CisKKyAgICAgICAgLy8gU2hvdWxkIGJlIHRoZSByb290IGl0c2VsZi4KKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJyb290UGFyZW50Lm5hbWUiLCAiIik7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygicm9vdFBhcmVudC5mdWxsUGF0aCIsICIvIik7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgicm9vdFBhcmVudC5pc0RpcmVjdG9yeSIpOworICAgICAgICBzaG91bGRCZUZhbHNl
KCJyb290UGFyZW50LmlzRmlsZSIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0s
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWls
ZWQ6ICIgKyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9w
em9uZS5vbmRyYWdvdmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgp
OworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChk
cm9wem9uZSwgWycuLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXN0LnR4dCddKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBh
cmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZTBiMGM1ZTFiZjE4NDY0ZTk2YjY3ODg1YWRjMDc1OGMx
OGIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0
aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3Rl
bUVudHJ5LmdldFBhcmVudCgpIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGRyb3B6
b25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citkcm9wem9uZS5vbmRy
b3AgPSBmdW5jdGlvbihlKSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGRhdGFUcmFu
c2ZlciA9IGUuZGF0YVRyYW5zZmVyOworCisgICAgc2hvdWxkQmUoImRhdGFUcmFuc2Zlci5pdGVt
cy5sZW5ndGgiLCAiMiIpOworCisgICAgZmlyc3REYXRhVHJhbnNmZXJJdGVtID0gZGF0YVRyYW5z
ZmVyLml0ZW1zWzBdOworICAgIGZpcnN0RW50cnkgPSBmaXJzdERhdGFUcmFuc2Zlckl0ZW0ud2Vi
a2l0R2V0QXNFbnRyeSgpOworICAgIHNlY29uZERhdGFUcmFuc2Zlckl0ZW0gPSBkYXRhVHJhbnNm
ZXIuaXRlbXNbMV07CisgICAgc2Vjb25kRW50cnkgPSBzZWNvbmREYXRhVHJhbnNmZXJJdGVtLndl
YmtpdEdldEFzRW50cnkoKTsKKworICAgIGZpcnN0RW50cnkuZ2V0UGFyZW50KGZ1bmN0aW9uKHBh
cmVudCkgeworICAgICAgICBmaXJzdEVudHJ5UGFyZW50ID0gcGFyZW50OworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImZpcnN0RW50cnlQYXJlbnQubmFtZSIsICIiKTsKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaXJzdEVudHJ5UGFyZW50LmZ1bGxQYXRoIiwgIi8iKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVudHJ5UGFyZW50LmlzRGlyZWN0b3J5Iik7Cisg
ICAgICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RW50cnlQYXJlbnQuaXNGaWxlIik7CisKKyAgICAg
ICAgc2Vjb25kRW50cnkuZ2V0UGFyZW50KGZ1bmN0aW9uKHBhcmVudCkgeworICAgICAgICAgICAg
c2Vjb25kRW50cnlQYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNlY29uZEVudHJ5UGFyZW50Lm5hbWUiLCAiIik7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNlY29uZEVudHJ5UGFyZW50LmZ1bGxQYXRoIiwgIi8iKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRW50cnlQYXJlbnQuaXNEaXJlY3RvcnkiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRmFsc2UoInNlY29uZEVudHJ5UGFyZW50LmlzRmlsZSIpOworCisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWlsZWQ6ICIgKyBlKTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCBmdW5jdGlvbihl
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoImdldFBhcmVudCgpIGNhbGwgZmFpbGVkOiAiICsgZSk7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFn
b3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsn
Li4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQnLCAnLi4vLi4vZmFzdC9mb3Jtcy9m
aWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jY2FhNGY1NTE4ZDUxNjc0YWJkMThiODdjMDBkZjQ2M2JlZDk3ODE0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcg
QEAKK0Jhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1FbnRyeS5nZXRQYXJlbnQoKQor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkaXJlY3RvcnlFbnRyeS5uYW1l
IGlzICJ0ZXN0RmlsZXMiCitQQVNTIGRpcmVjdG9yeUVudHJ5LmZ1bGxQYXRoIGlzICIvdGVzdEZp
bGVzIgorUEFTUyBkaXJlY3RvcnlFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGRpcmVj
dG9yeUVudHJ5LmlzRmlsZSBpcyBmYWxzZQorUEFTUyBlbnRyeVBhcmVudC5uYW1lIGlzICJ0ZXN0
RmlsZXMiCitQQVNTIGVudHJ5UGFyZW50LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFTUyBl
bnRyeVBhcmVudC5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5UGFyZW50LmlzRmlsZSBp
cyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Mi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIwY2ZiZTI3YzFmNWEwNzA0MGRkNDFmMzI3NzNmZjY1OWM2ZjJjZGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZ2V0UGFyZW50Mi5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIw
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1FbnRyeS5nZXRQYXJlbnQoKSIp
OworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkcm9wem9uZScpOworZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgewor
ICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2Zl
cjsKKworICAgIGRpcmVjdG9yeUVudHJ5ID0gZGF0YVRyYW5zZmVyLml0ZW1zWzBdLndlYmtpdEdl
dEFzRW50cnkoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpcmVjdG9yeUVudHJ5Lm5h
bWUiLCAidGVzdEZpbGVzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXJlY3RvcnlF
bnRyeS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzIik7CisgICAgc2hvdWxkQmVUcnVlKCJkaXJlY3Rv
cnlFbnRyeS5pc0RpcmVjdG9yeSIpOworICAgIHNob3VsZEJlRmFsc2UoImRpcmVjdG9yeUVudHJ5
LmlzRmlsZSIpOworCisgICAgbGV0IGRpcmVjdG9yeVJlYWRlciA9IGRpcmVjdG9yeUVudHJ5LmNy
ZWF0ZVJlYWRlcigpOworICAgIGRpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcyhmdW5jdGlvbihl
bnRyaWVzKSB7CisgICAgICAgIGVudHJpZXNbMF0uZ2V0UGFyZW50KGZ1bmN0aW9uKHBhcmVudCkg
eworICAgICAgICAgICAgZW50cnlQYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImVudHJ5UGFyZW50Lm5hbWUiLCAidGVzdEZpbGVzIik7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5UGFyZW50LmZ1bGxQYXRoIiwgIi90ZXN0
RmlsZXMiKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZW50cnlQYXJlbnQuaXNEaXJlY3Rv
cnkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImVudHJ5UGFyZW50LmlzRmlsZSIpOwor
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZSkgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWlsZWQ6ICIgKyBlKTsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCBmdW5jdGlv
bihlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRyaWVzKCkgY2FsbCBmYWlsZWQ6ICIg
KyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9wem9uZS5v
bmRyYWdvdmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworfQor
CitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChkcm9wem9u
ZSwgWycuLi8uLi9mYXN0L2Zvcm1zL2ZpbGUvcmVzb3VyY2VzL3Rlc3RGaWxlcyddKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvZW50cmllcy1hcGkvaW50ZXJmYWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9lbnRyaWVzLWFwaS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dAppbmRleCBlNzFiOWVlNTg0
YmI3ZmIyNDU0OTVjNTg5NDVlZDkwODNmZWUwZGY4Li40Y2MxN2EyMjM1ZjE2Yzg1NjE5NWQ3NDU0
MzA1NjdkODEwMDg2M2JiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9lbnRyaWVz
LWFwaS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9l
bnRyaWVzLWFwaS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQQVNT
IEZpbGVTeXN0ZW1FbnRyeSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBpc0RpcmVjdG9yeQogUEFTUyBG
aWxlU3lzdGVtRW50cnkgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbmFtZSAKIFBBU1MgRmlsZVN5c3Rl
bUVudHJ5IGludGVyZmFjZTogYXR0cmlidXRlIGZ1bGxQYXRoIAogUEFTUyBGaWxlU3lzdGVtRW50
cnkgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgZmlsZXN5c3RlbSAKLUZBSUwgRmlsZVN5c3RlbUVudHJ5
IGludGVyZmFjZTogb3BlcmF0aW9uIGdldFBhcmVudChGaWxlU3lzdGVtRW50cnlDYWxsYmFjayxF
cnJvckNhbGxiYWNrKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9i
amVjdCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJnZXRQ
YXJlbnQiIG1pc3NpbmcKK1BBU1MgRmlsZVN5c3RlbUVudHJ5IGludGVyZmFjZTogb3BlcmF0aW9u
IGdldFBhcmVudChGaWxlU3lzdGVtRW50cnlDYWxsYmFjayxFcnJvckNhbGxiYWNrKSAKIFBBU1Mg
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBQQVNTIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBp
bnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCAKIFBBU1MgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5IGlu
dGVyZmFjZSBvYmplY3QgbmFtZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggOGEyYTJhMTdkZGVhMzgwNjVmZTcyMzk1NDVhYWQxZDNmZGQxOThlZS4uNjU0
NGY2NTdmN2E4MGE4ZGVmZWZlMGM2MTIwMjgyNWI5Nzg2MmIwYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU2Nyw2ICs1NjcsOSBAQCBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIt
ZXJyb3IuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRp
cmVjdG9yeVJlYWRlci1yb290Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1wbGFpbnRleHQtZmlsZS5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvcGFz
dGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319609</attachid>
            <date>2017-09-01 10:14:20 -0700</date>
            <delta_ts>2017-09-01 10:37:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176165-20170901101419.patch</filename>
            <type>text/plain</type>
            <size>37827</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY4ODYwNTcwMTkwZWE5
ZWM1MzIxYTVhZDIyMDU0NDA4Mzk2MGNjYi4uYjI3N2U5MjA3N2I5YjUyYjliNzZkMzU3NDhhMTI1
ODU0ODczM2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc2IEBACiAyMDE3LTA4LTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1FbnRyeS5nZXRQYXJlbnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2MTY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIEltcGxlbWVudCBG
aWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCk6CisgICAgICAgIC0gaHR0cHM6Ly93aWNnLmdpdGh1
Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZpbGVzeXN0ZW1lbnRyeS1nZXRwYXJlbnQKKworICAgICAg
ICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBh
cmVudC1yb290Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudDIuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9GaWxlU3lzdGVtRW50cmllcyk6CisgICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IG5vdyB0aGF0IEZpbGVTeXN0ZW1FbnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3Qu
CisKKyAgICAgICAgKFdlYkNvcmU6OmlzQWJzb2x1dGVWaXJ0dWFsUGF0aCk6CisgICAgICAgIEFk
ZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIHZpcnR1YWwgcGF0aCBpcyBhYnNv
bHV0ZToKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNhYnNv
bHV0ZS1wYXRoCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OnJvb3QpOgorICAg
ICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cgdGhhdCBGaWxlU3lzdGVtRW50
cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0LgorCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpmaWxlQXNFbnRyeSk6CisgICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IG5vdyB0aGF0IEZpbGVTeXN0ZW1FbnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3QuCisKKyAgICAg
ICAgKFdlYkNvcmU6OnJlc29sdmVSZWxhdGl2ZVBhdGgpOgorICAgICAgICBBZGQgaW1wbGVtZW50
YXRpb24gZm9yOgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkv
I3Jlc29sdmUtYS1yZWxhdGl2ZS1wYXRoCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkpOgorICAgICAgICBUYWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBub3cgdGhhdCBGaWxlU3lzdGVtRW50cnkgaXMgYW4gQWN0aXZlRE9NT2JqZWN0LgorCisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICBBZGQgaW1w
bGVtZW50YXRpb24gb2YgZ2V0UGFyZW50KCkgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vd2lj
Zy5naXRodWIuaW8vZW50cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZW50cnktZ2V0cGFyZW50CisK
KyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKToKKyAgICAgICAgKiBN
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9l
bnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSk6Cisg
ICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRy
aWVzKToKKyAgICAgICAgVGFrZSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbm93IHRoYXQgRmls
ZVN5c3RlbUVudHJ5IGlzIGFuIEFjdGl2ZURPTU9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5
c3RlbUVudHJ5OjpGaWxlU3lzdGVtRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bUVudHJ5OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1FbnRyeTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRW50cnk6OmdldFBhcmVudCk6CisgICAgICAgICog
TW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaWRsOgorICAgICAgICAtIEFkZCBpbXBsZW1lbnRh
dGlvbiBvZiBGaWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCkgd2hpY2ggcmVsaWVzIG9uCisgICAg
ICAgICAgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KCkKKyAgICAgICAgLSBNYWtlIEZpbGVTeXN0
ZW1FbnRyeSBhbiBBY3RpdmVET01PYmplY3QgYXMgZ2V0UGFyZW50KCkgaXMgYW4gYXN5bmNocm9u
b3VzCisgICAgICAgICAgb3BlcmF0aW9uIHdoaWNoIGNhdXNlcyBkZWxheWVkIEpTIGV4ZWN1dGlv
bi4KKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxl
RW50cnkpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5
Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeSBjb25zdCk6CisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5pZGw6Cisg
ICAgICAgIFRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyB0aGF0IEZpbGVTeXN0ZW1F
bnRyeSBpcyBhbiBBY3RpdmVET01PYmplY3QuCisKKzIwMTctMDgtMzEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBnZXRGaWxlTWV0YWRhdGEoKSBkb2VzIG5vdCB3
b3JrIGFzIGV4cGVjdGVkIGZvciBzeW1ib2xpYyBsaW5rcwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAzOGMzNTRlNTVl
YjU5YThmOWQ3NTNhNDI0NzJiMThiMWVmZDY4MGZiLi4yNTUwYmMzOTNiM2I4NTY3M2VmNGNhMzEw
YWIwY2Q4MTE1NDc1YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0zMSw4ICszMSwxMCBAQAogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0
Zi9VVUlELmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYxLDcgKzYzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9N
RmlsZVN5c3RlbSYgZmlsZVN5c3RlbSwgRXhjZXB0aW9uT3I8VmVjdG9yPExpc3RlZENoaWxkPj4m
JiBsaXN0ZWRDaGlsZHJlbiwgY29uc3QgU3RyaW5nJiBwYXJlbnRWaXJ0dWFsUGF0aCkKK3N0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiB0b0ZpbGVTeXN0ZW1F
bnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZp
bGVTeXN0ZW0sIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+JiYgbGlzdGVkQ2hpbGRy
ZW4sIGNvbnN0IFN0cmluZyYgcGFyZW50VmlydHVhbFBhdGgpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAobGlzdGVkQ2hpbGRyZW4uaGFzRXhjZXB0aW9uKCkpCkBAIC03
MywxMCArNzUsMTAgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVu
dHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9NRmlsZVN5c3QKICAgICAgICAgU3RyaW5nIHZp
cnR1YWxQYXRoID0gcGFyZW50VmlydHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKICAg
ICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpU
eXBlRmlsZToKLSAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZpbGVTeXN0ZW1G
aWxlRW50cnk6OmNyZWF0ZShmaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAg
ZW50cmllcy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKGNvbnRl
eHQsIGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBlbnRyaWVz
LnVuY2hlY2tlZEFwcGVuZChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShmaWxlU3lz
dGVtLCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQo
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3RlbSwgdmly
dHVhbFBhdGgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CkBAIC04NSw2ICs4NywxMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9y
PFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4gdG9GaWxlU3lzdGVtRW50cmllcyhET01GaWxlU3lzdAog
ICAgIHJldHVybiBXVEZNb3ZlKGVudHJpZXMpOwogfQogCitzdGF0aWMgYm9vbCBpc0Fic29sdXRl
VmlydHVhbFBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKK3sKKyAgICByZXR1cm4gIXZp
cnR1YWxQYXRoLmlzRW1wdHkoKSAmJiB2aXJ0dWFsUGF0aFswXSA9PSAnLyc7Cit9CisKIERPTUZp
bGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkK
QEAgLTk4LDE2ICsxMDUsNDggQEAgRE9NRmlsZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewog
fQogCi1SZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkK
K1JlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMsIEFTQ0lJTGl0
ZXJhbCgiLyIpKTsKIH0KIAotUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6Zmls
ZUFzRW50cnkoKQorUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50
cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAobV9maWxlLT5p
c0RpcmVjdG9yeSgpKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Ojpj
cmVhdGUoKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bUZpbGVFbnRyeTo6Y3JlYXRlKCp0aGlzLCAiLyIgKyBtX2ZpbGUtPm5hbWUoKSk7CisgICAgICAg
IHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250ZXh0LCAqdGhpcywg
Ii8iICsgbV9maWxlLT5uYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5Ojpj
cmVhdGUoY29udGV4dCwgKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgpKTsKK30KKworLy8gaHR0
cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jcmVzb2x2ZS1hLXJlbGF0aXZlLXBhdGgK
K3N0YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHZpcnR1YWxQ
YXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKK3sKKyAgICBBU1NFUlQodmlydHVhbFBh
dGhbMF0gPT0gJy8nKTsKKyAgICBpZiAoaXNBYnNvbHV0ZVZpcnR1YWxQYXRoKHJlbGF0aXZlUGF0
aCkpCisgICAgICAgIHJldHVybiByZWxhdGl2ZVBhdGg7CisKKyAgICBhdXRvIHZpcnR1YWxQYXRo
U2VnbWVudHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgnLycpOworICAgIGF1dG8gcmVsYXRpdmVQYXRo
U2VnbWVudHMgPSByZWxhdGl2ZVBhdGguc3BsaXQoJy8nKTsKKyAgICBmb3IgKGF1dG8mIHNlZ21l
bnQgOiByZWxhdGl2ZVBhdGhTZWdtZW50cykgeworICAgICAgICBBU1NFUlQoIXNlZ21lbnQuaXNF
bXB0eSgpKTsKKyAgICAgICAgaWYgKHNlZ21lbnQgPT0gIi4iKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChzZWdtZW50ID09ICIuLiIpIHsKKyAgICAgICAgICAgIGlmICghdmly
dHVhbFBhdGhTZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgdmlydHVhbFBhdGhT
ZWdtZW50cy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICB2aXJ0dWFsUGF0aFNlZ21lbnRzLmFwcGVuZChzZWdtZW50KTsKKyAgICB9CisKKyAg
ICBpZiAodmlydHVhbFBhdGhTZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIi8iKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1
dG8mIHNlZ21lbnQgOiB2aXJ0dWFsUGF0aFNlZ21lbnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcvJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlZ21lbnQpOworICAgIH0KKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiAvLyBodHRwczovL3dpY2cuZ2l0aHViLmlv
L2VudHJpZXMtYXBpLyNldmFsdWF0ZS1hLXBhdGgKQEAgLTEzMiw3ICsxNzEsNyBAQCBTdHJpbmcg
RE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCiAg
ICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290UGF0aCwgcmVzb2x2ZWRD
b21wb25lbnRzKTsKIH0KIAotdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5LCBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2sm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkm
IGRpcmVjdG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCZkaXJlY3RvcnkuZmlsZXN5c3RlbSgpID09IHRoaXMpOwogCkBAIC0x
NDAsMTUgKzE3OSwzMyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5JiBkaXJlY3RvcnksIERpcmVjdG9yeQogICAgIGF1dG8gZnVsbFBh
dGggPSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBhdGgpOwogICAgIGlmIChmdWxsUGF0
aCA9PSBtX3Jvb3RQYXRoKSB7CiAgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4g
Y2hpbGRyZW47Ci0gICAgICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeSgpKTsKKyAgICAg
ICAgY2hpbGRyZW4uYXBwZW5kKGZpbGVBc0VudHJ5KGNvbnRleHQpKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShjaGlsZHJlbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29w
eSgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgY29u
dGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGZ1bGxQYXRoID0gZnVsbFBhdGguaXNvbGF0ZWRDb3B5KCksIGRpcmVj
dG9yeVZpcnR1YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0
aE1ldGFkYXRhKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRy
ZW4gPSBjcm9zc1RocmVhZENvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0
aCA9IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcygqdGhpcywgV1RG
TW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoKSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9
IGNyb3NzVGhyZWFkQ29weShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0g
ZGlyZWN0b3J5VmlydHVhbFBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih0b0ZpbGVTeXN0ZW1FbnRyaWVzKGNvbnRleHQsICp0aGlz
LCBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGgpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYgZW50cnksIEdldFBh
cmVudENhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNrKQoreworICAgIFN0cmluZyB2aXJ0dWFs
UGF0aCA9IHJlc29sdmVSZWxhdGl2ZVBhdGgoZW50cnkudmlydHVhbFBhdGgoKSwgQVNDSUlMaXRl
cmFsKCIuLiIpKTsKKyAgICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKKyAgICBTdHJp
bmcgZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOworICAgIG1fd29ya1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0g
Y3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHko
dmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghZmlsZUlzRGlyZWN0b3J5KGZ1bGxQYXRo
LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpIHsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNr
KV0geworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhFeGNlcHRpb24geyBOb3RG
b3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVj
dG9yeSIgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250
ZXh0KSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25DYWxsYmFjayhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250
ZXh0LCAqdGhpcywgdmlydHVhbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRl
eCA2ZDNjNWQzMTIxZTBkM2Y4MGNiYjczYTFlMDU0MDVjZDY3ZjdiYWFlLi5kNWE0ODljOTI5YzJl
YjU1OTNjNzg3NTFjNjgzOTY3ZWEwN2JlN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTM2LDI4ICszNiwzMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxlOwogY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5OwogY2xhc3MgRmlsZVN5c3RlbUVudHJ5OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZp
bGVTeXN0ZW1FbnRyeT4gY3JlYXRlRW50cnlGb3JGaWxlKFJlZjxGaWxlPiYmIGZpbGUpCisgICAg
c3RhdGljIFJlZjxGaWxlU3lzdGVtRW50cnk+IGNyZWF0ZUVudHJ5Rm9yRmlsZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZT4mJiBmaWxlKQogICAgIHsKICAgICAgICAg
YXV0byBmaWxlU3lzdGVtID0gYWRvcHRSZWYoKm5ldyBET01GaWxlU3lzdGVtKFdURk1vdmUoZmls
ZSkpKTsKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPmZpbGVBc0VudHJ5KCk7CisgICAgICAg
IHJldHVybiBmaWxlU3lzdGVtLT5maWxlQXNFbnRyeShjb250ZXh0KTsKICAgICB9CiAKICAgICB+
RE9NRmlsZVN5c3RlbSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9Ci0gICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gcm9vdCgpOwor
ICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IHJvb3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOwogCiAgICAgdXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYpPjsK
LSAgICB2b2lkIGxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgRGlyZWN0
b3J5TGlzdGluZ0NhbGxiYWNrJiYpOworICAgIHZvaWQgbGlzdERpcmVjdG9yeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgRGlyZWN0b3J5TGlzdGlu
Z0NhbGxiYWNrJiYpOworCisgICAgdXNpbmcgR2V0UGFyZW50Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4+JiYpPjsK
KyAgICB2b2lkIGdldFBhcmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUVu
dHJ5JiwgR2V0UGFyZW50Q2FsbGJhY2smJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9N
RmlsZVN5c3RlbShSZWY8RmlsZT4mJik7CiAKICAgICBTdHJpbmcgZXZhbHVhdGVQYXRoKGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpOwotICAgIFJlZjxGaWxlU3lzdGVtRW50cnk+IGZpbGVBc0Vu
dHJ5KCk7CisgICAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gZmlsZUFzRW50cnkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWY8RmlsZT4gbV9maWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uaWRsCmluZGV4IGIyNWVjNjUwZjkzOTdmZDVhNjI2NGNlZGQ3NmU0YjBkZWM5MDlkZDQuLmMx
OTcyY2U5ZmFjZGI2ZmY1NDcyOTdiMjI1NGI2Y2NkMzM0YzMyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwKQEAgLTI5LDUg
KzI5LDUgQEAKICAgICBJbnRlcmZhY2VOYW1lPUZpbGVTeXN0ZW0sCiBdIGludGVyZmFjZSBET01G
aWxlU3lzdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG5hbWU7Ci0gICAg
W0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeSByb290OworICAgIFtDYWNoZWRBdHRyaWJ1dGUsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgcm9v
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCmluZGV4IGM5MTViMDBlMTIwZDA2ZTNm
YmE4Y2Q1NzI2OGY2ZjVhY2QxYjk2ZjIuLjZhZTg2NzUyYzQzNjYzMGU1OTI1ODg1NjEwMzIxYTY0
MjM3YWU3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCkBAIC0zMiw4ICszMiw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3Ry
aW5nJiB2aXJ0dWFsUGF0aCkKLSAgICA6IEZpbGVTeXN0ZW1FbnRyeShmaWxlc3lzdGVtLCB2aXJ0
dWFsUGF0aCkKK0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVz
eXN0ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCisgICAgOiBGaWxlU3lzdGVtRW50cnko
Y29udGV4dCwgZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaAppbmRleCA4ZGI2ZjkzOTVkMzFmZjFkNGJhOGI4MjFjOTEwZjNjMjg0NGI0NDNlLi4z
Y2RmZTliOGUxN2RkOTM5MDZiNWVlNzA3ZTdiZTUyYTdiODU3ZmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSBmaW5hbCA6IHB1YmxpYyBGaWxlU3lz
dGVtRW50cnkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5PiBjcmVhdGUoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0
dWFsUGF0aCkKKyAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0
ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkoZmlsZXN5c3RlbSwgdmlydHVhbFBh
dGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5KGNvbnRleHQsIGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgfQogCiAgICAgUmVm
PEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBp
c0RpcmVjdG9yeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtJiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0
aCk7CisgICAgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBET01GaWxlU3lzdGVtJiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAKaW5kZXggMDdk
ODE2ODhmNDRiMjc3NWY1NzExZTRhZTdjMThjNjg4ZDFiMDE4OS4uNDNmMjhhNDFhMDY5YjA4MDhk
MGQ0YzZkMDI1MWZkZGI4ZjBmYzA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cmllc0Nh
bGxiYWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDkgKzc5LDkg
QEAgdm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKIAogICAgIG1faXNSZWFkaW5nID0gdHJ1ZTsKICAg
ICBhdXRvIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN1Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3VjY2Vz
c0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayksIHBlbmRp
bmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgc3VjY2Vz
c0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RG
TW92ZShlcnJvckNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0
aXZpdHkpXSgpIG11dGFibGUgewogICAgICAgICBtX2lzUmVhZGluZyA9IGZhbHNlOwotICAgICAg
ICBtX2RpcmVjdG9yeS0+ZmlsZXN5c3RlbSgpLmxpc3REaXJlY3RvcnkobV9kaXJlY3RvcnksIFt0
aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3Zl
KHBlbmRpbmdBY3Rpdml0eSldKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5
Pj4+JiYgcmVzdWx0KSB7CisgICAgICAgIG1fZGlyZWN0b3J5LT5maWxlc3lzdGVtKCkubGlzdERp
cmVjdG9yeShjb250ZXh0LCBtX2RpcmVjdG9yeSwgW3RoaXMsIHN1Y2Nlc3NDYWxsYmFjayA9IFdU
Rk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxs
YmFjayksIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oRXhjZXB0
aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4mJiByZXN1bHQpIHsKICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBtX2Vycm9y
ID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JD
YWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggNmFhZTgyY2I1ZjUzOGIzZjNmMjYwNDIyMDQyZjNiYjYx
MmI5MTY1ZS4uODA5NDljZWMxMmNhMTA3NmI5YzAzMTFkZjgzOGFkOTRhZWM0YjViZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRy
eS5jcHAKQEAgLTI2LDE2ICsyNiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW1FbnRyeS5oIgogCisjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCisj
aW5jbHVkZSAiRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZVN5c3RlbUVudHJ5
OjpGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5n
JiB2aXJ0dWFsUGF0aCkKLSAgICA6IG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQorRmlsZVN5c3Rl
bUVudHJ5OjpGaWxlU3lzdGVtRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
RE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lz
dGVtKQogICAgICwgbV9uYW1lKHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCiAgICAgLCBt
X3ZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoKQogeworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
CiBGaWxlU3lzdGVtRW50cnk6On5GaWxlU3lzdGVtRW50cnkoKQpAQCAtNDcsNSArNTQsMzEgQEAg
RE9NRmlsZVN5c3RlbSYgRmlsZVN5c3RlbUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9maWxlc3lzdGVtLmdldCgpOwogfQogCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtRW50
cnk6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiRmlsZVN5c3Rl
bUVudHJ5IjsKK30KKworYm9vbCBGaWxlU3lzdGVtRW50cnk6OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5KCk7
Cit9CisKK3ZvaWQgRmlsZVN5c3RlbUVudHJ5OjpnZXRQYXJlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmIHN1Y2Nlc3ND
YWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBp
ZiAoIXN1Y2Nlc3NDYWxsYmFjayAmJiAhZXJyb3JDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZmlsZXN5c3RlbSgpLmdldFBhcmVudChjb250ZXh0LCAqdGhpcywgW3BlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGVycm9y
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KERPTUV4Y2VwdGlvbjo6Y3JlYXRlKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVF
dmVudChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIH0pOworfQorCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRW50cnkuaAppbmRleCBhNzRkODdlNzg5YWNlOTAzNDMyMTQ2NzNmZTI4
MjM0YzFkOGFkZDg2Li4zZTc2ZTc4M2QwNGU1MjhiZjJkNGM3ODI2MDg1M2E0ZDY0ZWU4Yjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVu
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1F
bnRyeS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMy
LDggKzMzLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW07
CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s7CiAK
LWNsYXNzIEZpbGVTeXN0ZW1FbnRyeSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPEZpbGVTeXN0ZW1FbnRyeT4geworY2xhc3MgRmlsZVN5c3RlbUVudHJ5IDogcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFJlZkNv
dW50ZWQ8RmlsZVN5c3RlbUVudHJ5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsZVN5c3Rl
bUVudHJ5KCk7CiAKQEAgLTQ0LDEwICs0NywxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5n
JiB2aXJ0dWFsUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFBhdGg7IH0KICAgICBET01G
aWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7CiAKKyAgICB2b2lkIGdldFBhcmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CisKIHByb3RlY3RlZDoKLSAgICBGaWxlU3lzdGVtRW50
cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpOworICAgIEZpbGVT
eXN0ZW1FbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRE9NRmlsZVN5c3RlbSYsIGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1
bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKKwogICAgIFJlZjxET01GaWxlU3lzdGVtPiBt
X2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92aXJ0dWFsUGF0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1FbnRyeS5pZGwKaW5kZXggZjcxNjQwMTVjMDZhZjJkNjdjMjg1OWEyM2IyNTVmYTI5NGQzMmFj
OC4uYmUwNjkyZjkxZWQwMjI5MWU0NGJlOTNjM2JlZDY3OWZjMjYwOGRkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5pZGwK
QEAgLTMzLDUgKzMzLDUgQEAKICAgICBbSW1wbGVtZW50ZWRBcz12aXJ0dWFsUGF0aF0gcmVhZG9u
bHkgYXR0cmlidXRlIFVTVlN0cmluZyBmdWxsUGF0aDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NRmlsZVN5c3RlbSBmaWxlc3lzdGVtOwogCi0gICAgLy8gdm9pZCBnZXRQYXJlbnQob3B0aW9u
YWwgRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJv
ckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSB2b2lkIGdldFBhcmVudChvcHRpb25hbCBGaWxlU3lzdGVtRW50cnlDYWxsYmFjaz8g
c3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbUZpbGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbUZpbGVFbnRyeS5jcHAKaW5kZXggNzgwYTVmMGEyNDc2ZWE3MzYzNzVjYjBlZWQwYTg3
ZmQxYzQzMzIyNy4uYjgwYjY1YjhjYjRkNTk3NjcyMGQ3OGM5MzBjNGI4ODU4MmJhMTA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRmlsZUVudHJ5LmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoRE9NRmlsZVN5c3Rl
bSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKLSAgICA6IEZpbGVTeXN0
ZW1FbnRyeShmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkKK0ZpbGVTeXN0ZW1GaWxlRW50cnk6OkZp
bGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmls
ZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKKyAgICA6IEZp
bGVTeXN0ZW1FbnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1G
aWxlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5LmgKaW5kZXggMWZhM2FjYzU5Y2QzMGQ2NGEyNGUzNjU5ZWNlOWZlMTJjNDAxNmFk
OC4uODliZThkZjQxM2NiMjQ0ZDU0YzAwZTRlMzQ0NGQ1ZDEwNzEzZDZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRy
eS5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNs
YXNzIEZpbGVTeXN0ZW1GaWxlRW50cnkgZmluYWwgOiBwdWJsaWMgRmlsZVN5c3RlbUVudHJ5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1GaWxlRW50cnk+IGNyZWF0ZShET01G
aWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKQorICAgIHN0
YXRpYyBSZWY8RmlsZVN5c3RlbUZpbGVFbnRyeT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVt
RmlsZUVudHJ5KGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGVTeXN0ZW1GaWxlRW50cnkoY29udGV4dCwgZmlsZXN5c3RlbSwgdmlydHVh
bFBhdGgpKTsKICAgICB9CiAKICAgICB2b2lkIGZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFJlZlB0cjxGaWxlQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmID0gbnVsbHB0
cik7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGaWxlU3lzdGVtRmlsZUVudHJ5
KERPTUZpbGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKKyAgICBGaWxlU3lz
dGVtRmlsZUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBET01GaWxlU3lzdGVtJiwgY29u
c3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKaW5kZXggZTMyMjgyYjk3ODE2ODhh
MjhkNjI5ZWQ4MzM0ZjM5OGE1NmE2OWYwYi4uODMxOTA0Y2NhYjA1YzhiNWYwMDQ0Y2FmMWExMDgz
NjdiYTdjMDI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcApAQCAt
MTA1LDEzICsxMDUsMTMgQEAgUmVmUHRyPEZpbGU+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmls
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmlsZS5jb3B5UmVmKCk7CiB9CiAKLVJlZlB0cjxGaWxl
U3lzdGVtRW50cnk+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRW50cnkoKSBjb25zdAorUmVmUHRy
PEZpbGVTeXN0ZW1FbnRyeT4gRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGF1dG8gZmlsZSA9IGdldEFzRmls
ZSgpOwogICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKCpmaWxlKTsKKyAgICByZXR1cm4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKGNvbnRleHQsICpmaWxlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgK
aW5kZXggNzEzMzA0MzFiOWQ0YzkzMDdkZjBkMjBkODc2MWVlODRiZTZjNDNmOC4uOWFjMTFlN2Ni
MzM1ZjczMTAwM2ZhMTY1YTE4NjI0ZmU3ZmFlZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdHlwZSgp
IGNvbnN0OwogICAgIHZvaWQgZ2V0QXNTdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4mJikgY29uc3Q7CiAgICAgUmVmUHRyPEZpbGU+IGdldEFzRmls
ZSgpIGNvbnN0OwotICAgIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IGdldEFzRW50cnkoKSBjb25z
dDsKKyAgICBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5PiBnZXRBc0VudHJ5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRhVHJhbnNmZXJJdGVtKFdlYWtQ
dHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+JiYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCmluZGV4IGNkNTJmNTA2ZmI5MzhhZmZlYmZlNWNhZGY4
NzYyOTBiNDIyMmVhOGYuLmU3ZDFlMDNjYjEwZmIzOWM1YmQyOWZmYzVhMWU2NGQ4MWUzMGM3OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwKQEAgLTQwLDYgKzQwLDYg
QEAKICAgICBGaWxlIGdldEFzRmlsZSgpOwogCiAgICAgLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5p
by9lbnRyaWVzLWFwaS8jaHRtbC1kYXRhCi0gICAgW0ltcGxlbWVudGVkQXM9Z2V0QXNFbnRyeV0g
RmlsZVN5c3RlbUVudHJ5PyB3ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9Z2V0QXNFbnRyeV0gRmlsZVN5c3RlbUVu
dHJ5PyB3ZWJraXRHZXRBc0VudHJ5KCk7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzBjYjdlZDNlZGVhNmM4ZmJi
ZGE5NWQ0ZmZkZDQ3NGJmZDk2MzViYi4uMTYwYmI1ZWZiNzM5NzBmN2Y5OWE5MjllZDQ1NjQ5N2Iw
MmU1OWFmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA4LTMxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1FbnRyeS5n
ZXRQYXJlbnQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MTY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQ
YXJlbnQtcm9vdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0
UGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudDIu
aHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZSBmb3IgRmlsZVN5
c3RlbUVudHJ5LmdldFBhcmVudCgpLgorCisgICAgICAgICogaHR0cC93cHQvZW50cmllcy1hcGkv
aW50ZXJmYWNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgIFJlYmFzZWxpbmUgdGVzdCBub3cgdGhh
dCBvbmUgbW9yZSBjaGVjayBpcyBwYXNzaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNraXAgbmV3IHRlc3RzIG9uIFdLMiBzaW5jZSB0aGV5
IHJlbHkgb24gYmVnaW5EcmFnV2l0aEZpbGVzLgorCiAyMDE3LTA4LTMxICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUmVxdWVzdCBi
b2R5IHN0cmVhbSBjbG9uaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQ
YXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkYTM0NTk2MGNjZjg0ZThiOTBmNjhiZmU2
NDNiZDE4Y2RmZDIyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRW50cnku
Z2V0UGFyZW50KCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0YVRy
YW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGZpcnN0RW50cnlQYXJlbnQubmFtZSBpcyAi
IgorUEFTUyBmaXJzdEVudHJ5UGFyZW50LmZ1bGxQYXRoIGlzICIvIgorUEFTUyBmaXJzdEVudHJ5
UGFyZW50LmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZmlyc3RFbnRyeVBhcmVudC5pc0ZpbGUg
aXMgZmFsc2UKK1BBU1Mgc2Vjb25kRW50cnlQYXJlbnQubmFtZSBpcyAiIgorUEFTUyBzZWNvbmRF
bnRyeVBhcmVudC5mdWxsUGF0aCBpcyAiLyIKK1BBU1Mgc2Vjb25kRW50cnlQYXJlbnQuaXNEaXJl
Y3RvcnkgaXMgdHJ1ZQorUEFTUyBzZWNvbmRFbnRyeVBhcmVudC5pc0ZpbGUgaXMgZmFsc2UKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZ2V0UGFyZW50LXJvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1yb290LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNjQ0NjRkYzhjMjliZDYzYWIyMTAyNjkxNzNkOTEwNDAwMjBjN2I1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCkg
b24gdGhlIHJvb3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgcm9vdFBh
cmVudC5uYW1lIGlzICIiCitQQVNTIHJvb3RQYXJlbnQuZnVsbFBhdGggaXMgIi8iCitQQVNTIHJv
b3RQYXJlbnQuaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyByb290UGFyZW50LmlzRmlsZSBpcyBm
YWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudC1yb290Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzA5MDljODQwMTMxNTUyMWMyOGM5YmNlYjE4ZTUyMzhmOWMyZGJiMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRQYXJlbnQtcm9vdC5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBo
ZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1FbnRyeS5nZXRQ
YXJlbnQoKSBvbiB0aGUgcm9vdCIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBkcm9w
em9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOworZHJvcHpvbmUub25k
cm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJh
bnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIGxldCBlbnRyeSA9IGRhdGFUcmFuc2Zlci5p
dGVtc1swXS53ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgZW50cnkuZmlsZXN5c3RlbS5yb290Lmdl
dFBhcmVudChmdW5jdGlvbihwYXJlbnQpIHsKKyAgICAgICAgcm9vdFBhcmVudCA9IHBhcmVudDsK
KworICAgICAgICAvLyBTaG91bGQgYmUgdGhlIHJvb3QgaXRzZWxmLgorICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInJvb3RQYXJlbnQubmFtZSIsICIiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJyb290UGFyZW50LmZ1bGxQYXRoIiwgIi8iKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJyb290UGFyZW50LmlzRGlyZWN0b3J5Iik7CisgICAgICAgIHNob3VsZEJlRmFsc2Uo
InJvb3RQYXJlbnQuaXNGaWxlIik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwg
ZnVuY3Rpb24oZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJnZXRQYXJlbnQoKSBjYWxsIGZhaWxl
ZDogIiArIGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKK307CisKK2Ryb3B6
b25lLm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldikgeworICAgIGV2LnByZXZlbnREZWZhdWx0KCk7
Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRyYWdGaWxlc09udG9FbGVtZW50KGRy
b3B6b25lLCBbJy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3Rlc3QudHh0J10pOworfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFy
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlMGIwYzVlMWJmMTg0NjRlOTZiNjc4ODVhZGMwNzU4YzE4
YjE1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQuaHRtbApAQCAtMCwwICsxLDU5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRo
OiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVt
RW50cnkuZ2V0UGFyZW50KCkiKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZHJvcHpv
bmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25lLm9uZHJv
cCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0YVRyYW5z
ZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5zZmVyLml0ZW1z
Lmxlbmd0aCIsICIyIik7CisKKyAgICBmaXJzdERhdGFUcmFuc2Zlckl0ZW0gPSBkYXRhVHJhbnNm
ZXIuaXRlbXNbMF07CisgICAgZmlyc3RFbnRyeSA9IGZpcnN0RGF0YVRyYW5zZmVySXRlbS53ZWJr
aXRHZXRBc0VudHJ5KCk7CisgICAgc2Vjb25kRGF0YVRyYW5zZmVySXRlbSA9IGRhdGFUcmFuc2Zl
ci5pdGVtc1sxXTsKKyAgICBzZWNvbmRFbnRyeSA9IHNlY29uZERhdGFUcmFuc2Zlckl0ZW0ud2Vi
a2l0R2V0QXNFbnRyeSgpOworCisgICAgZmlyc3RFbnRyeS5nZXRQYXJlbnQoZnVuY3Rpb24ocGFy
ZW50KSB7CisgICAgICAgIGZpcnN0RW50cnlQYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZmlyc3RFbnRyeVBhcmVudC5uYW1lIiwgIiIpOworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImZpcnN0RW50cnlQYXJlbnQuZnVsbFBhdGgiLCAiLyIpOwor
ICAgICAgICBzaG91bGRCZVRydWUoImZpcnN0RW50cnlQYXJlbnQuaXNEaXJlY3RvcnkiKTsKKyAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiZmlyc3RFbnRyeVBhcmVudC5pc0ZpbGUiKTsKKworICAgICAg
ICBzZWNvbmRFbnRyeS5nZXRQYXJlbnQoZnVuY3Rpb24ocGFyZW50KSB7CisgICAgICAgICAgICBz
ZWNvbmRFbnRyeVBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic2Vjb25kRW50cnlQYXJlbnQubmFtZSIsICIiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic2Vjb25kRW50cnlQYXJlbnQuZnVsbFBhdGgiLCAiLyIpOworICAgICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJzZWNvbmRFbnRyeVBhcmVudC5pc0RpcmVjdG9yeSIpOworICAg
ICAgICAgICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRW50cnlQYXJlbnQuaXNGaWxlIik7CisKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCBmdW5jdGlvbihlKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJnZXRQYXJlbnQoKSBjYWxsIGZhaWxlZDogIiArIGUpOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0UGFyZW50KCkgY2FsbCBmYWlsZWQ6ICIgKyBlKTsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9wem9uZS5vbmRyYWdv
dmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworfQorCitvbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChkcm9wem9uZSwgWycu
Li8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXN0LnR4dCcsICcuLi8uLi9mYXN0L2Zvcm1zL2Zp
bGUvcmVzb3VyY2VzL3Rlc3RGaWxlcyddKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWdldFBhcmVudDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudDItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNjYWE0ZjU1MThkNTE2NzRhYmQxOGI4N2MwMGRmNDYzYmVkOTc4MTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBA
QAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5LmdldFBhcmVudCgpCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRpcmVjdG9yeUVudHJ5Lm5hbWUg
aXMgInRlc3RGaWxlcyIKK1BBU1MgZGlyZWN0b3J5RW50cnkuZnVsbFBhdGggaXMgIi90ZXN0Rmls
ZXMiCitQQVNTIGRpcmVjdG9yeUVudHJ5LmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZGlyZWN0
b3J5RW50cnkuaXNGaWxlIGlzIGZhbHNlCitQQVNTIGVudHJ5UGFyZW50Lm5hbWUgaXMgInRlc3RG
aWxlcyIKK1BBU1MgZW50cnlQYXJlbnQuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGVu
dHJ5UGFyZW50LmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnlQYXJlbnQuaXNGaWxlIGlz
IGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWdldFBhcmVudDIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjBjZmJlMjdjMWY1YTA3MDQwZGQ0MWYzMjc3M2ZmNjU5YzZmMmNkYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJv
cC1nZXRQYXJlbnQyLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbUVudHJ5LmdldFBhcmVudCgpIik7
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGRyb3B6b25lID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citkcm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihlKSB7Cisg
ICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVy
OworCisgICAgZGlyZWN0b3J5RW50cnkgPSBkYXRhVHJhbnNmZXIuaXRlbXNbMF0ud2Via2l0R2V0
QXNFbnRyeSgpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGlyZWN0b3J5RW50cnkubmFt
ZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpcmVjdG9yeUVu
dHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKyAgICBzaG91bGRCZVRydWUoImRpcmVjdG9y
eUVudHJ5LmlzRGlyZWN0b3J5Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGlyZWN0b3J5RW50cnku
aXNGaWxlIik7CisKKyAgICBsZXQgZGlyZWN0b3J5UmVhZGVyID0gZGlyZWN0b3J5RW50cnkuY3Jl
YXRlUmVhZGVyKCk7CisgICAgZGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKGZ1bmN0aW9uKGVu
dHJpZXMpIHsKKyAgICAgICAgZW50cmllc1swXS5nZXRQYXJlbnQoZnVuY3Rpb24ocGFyZW50KSB7
CisgICAgICAgICAgICBlbnRyeVBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZW50cnlQYXJlbnQubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlQYXJlbnQuZnVsbFBhdGgiLCAiL3Rlc3RG
aWxlcyIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRyeVBhcmVudC5pc0RpcmVjdG9y
eSIpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiZW50cnlQYXJlbnQuaXNGaWxlIik7CisK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCBmdW5jdGlvbihlKSB7Cisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJnZXRQYXJlbnQoKSBjYWxsIGZhaWxlZDogIiArIGUpOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMoKSBjYWxsIGZhaWxlZDogIiAr
IGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKK307CisKK2Ryb3B6b25lLm9u
ZHJhZ292ZXIgPSBmdW5jdGlvbihldikgeworICAgIGV2LnByZXZlbnREZWZhdWx0KCk7Cit9CisK
K29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRyYWdGaWxlc09udG9FbGVtZW50KGRyb3B6b25l
LCBbJy4uLy4uL2Zhc3QvZm9ybXMvZmlsZS9yZXNvdXJjZXMvdGVzdEZpbGVzJ10pOworfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC9lbnRyaWVzLWFwaS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2VudHJpZXMtYXBpL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CmluZGV4IGU3MWI5ZWU1ODRi
YjdmYjI0NTQ5NWM1ODk0NWVkOTA4M2ZlZTBkZjguLjRjYzE3YTIyMzVmMTZjODU2MTk1ZDc0NTQz
MDU2N2Q4MTAwODYzYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2VudHJpZXMt
YXBpL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Vu
dHJpZXMtYXBpL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBBU1Mg
RmlsZVN5c3RlbUVudHJ5IGludGVyZmFjZTogYXR0cmlidXRlIGlzRGlyZWN0b3J5CiBQQVNTIEZp
bGVTeXN0ZW1FbnRyeSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBuYW1lIAogUEFTUyBGaWxlU3lzdGVt
RW50cnkgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgZnVsbFBhdGggCiBQQVNTIEZpbGVTeXN0ZW1FbnRy
eSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBmaWxlc3lzdGVtIAotRkFJTCBGaWxlU3lzdGVtRW50cnkg
aW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0UGFyZW50KEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLEVy
cm9yQ2FsbGJhY2spIGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2Jq
ZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImdldFBh
cmVudCIgbWlzc2luZworUEFTUyBGaWxlU3lzdGVtRW50cnkgaW50ZXJmYWNlOiBvcGVyYXRpb24g
Z2V0UGFyZW50KEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLEVycm9yQ2FsbGJhY2spIAogUEFTUyBG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIG9iamVjdCAKIFBBU1MgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5IGlu
dGVyZmFjZSBvYmplY3QgbGVuZ3RoIAogUEFTUyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgaW50
ZXJmYWNlIG9iamVjdCBuYW1lIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA4YTJhMmExN2RkZWEzODA2NWZlNzIzOTU0NWFhZDFkM2ZkZDE5OGVlLi42NTQ0
ZjY1N2Y3YTgwYThkZWZlZmUwYzYxMjAyODI1Yjk3ODYyYjBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTY3LDYgKzU2Nyw5IEBAIGVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1l
cnJvci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGly
ZWN0b3J5UmVhZGVyLXJvb3QuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWdldFBhcmVudC1yb290Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1nZXRQYXJlbnQuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldFBhcmVudDIuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLmh0bWwKIGVkaXRpbmcvcGFz
dGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBbIFNraXAgXQogZWRpdGluZy9wYXN0
ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>