<?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>192751</bug_id>
          
          <creation_ts>2018-12-17 01:37:13 -0800</creation_ts>
          <short_desc>clang-tidy: loop variable is copied but only used as const reference in WebCore, WebKit, Tools</short_desc>
          <delta_ts>2018-12-17 06:22:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192661</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488405</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-17 01:37:13 -0800</bug_when>
    <thetext>Running `clang-tidy -header-filter=.* -checks=&apos;-*,performance-*,-performance-noexcept-*&apos; ...` on WebCore, WebKit and Tools source files found these unnecessary object copies in for loop variables in trunk revision r239112.

WebCore:

Source/WebCore/platform/graphics/mac/ImageMac.mm:91:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:224:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:260:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:341:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:534:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:424:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/indexeddb/shared/IDBDatabaseInfo.cpp:50:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/Modules/mediasource/SourceBuffer.cpp:742:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2526:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/accessibility/AccessibilityTableRow.cpp:138:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/animation/KeyframeEffect.cpp:957:23: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/crypto/keys/CryptoKeyRSA.cpp:95:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/crypto/keys/CryptoKeyRSA.cpp:140:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1148:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/dom/DataTransfer.cpp:149:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/dom/TreeScope.cpp:409:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:137:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/page/Page.cpp:1266:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/page/TextIndicator.cpp:255:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/page/animation/KeyframeAnimation.cpp:98:23: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp:130:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:691:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2849:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2885:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/rendering/HitTestResult.cpp:685:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/html/track/WebVTTParser.cpp:341:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebCore/testing/Internals.cpp:1071:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]

WebKit:

Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:520:40: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:639:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/ResourceLoadStatisticsMemoryStore.cpp:231:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/ResourceLoadStatisticsMemoryStore.cpp:880:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/WebPageProxy.cpp:8138:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1201:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1642:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1749:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1784:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1796:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp:126:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:88:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:121:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:140:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:532:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/WebProcess/WebPage/WebPage.cpp:617:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:75:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]

Tools:

Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.mm:243:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488406</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-17 01:37:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/46771623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488408</commentid>
    <comment_count>2</comment_count>
      <attachid>357431</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-12-17 01:57:18 -0800</bug_when>
    <thetext>Created attachment 357431
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488423</commentid>
    <comment_count>3</comment_count>
      <attachid>357431</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-17 06:22:50 -0800</bug_when>
    <thetext>Comment on attachment 357431
Patch v1

Clearing flags on attachment: 357431

Committed r239266: &lt;https://trac.webkit.org/changeset/239266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488424</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-17 06:22:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357431</attachid>
            <date>2018-12-17 01:57:18 -0800</date>
            <delta_ts>2018-12-17 06:22:50 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-192751-20181217015717.patch</filename>
            <type>text/plain</type>
            <size>39472</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUwMGViYjZjMjVhM2Uw
YzkxOWZlYTQzMWNjNmZlMDY0YjczODdiNC4uN2U2NjFlMGEzMjRhYzc1NWEwMGViMWFjZDk3N2Q4
Nzc0MjgxNzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTEyLTE3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgY2xhbmctdGlkeTogbG9v
cCB2YXJpYWJsZSBpcyBjb3BpZWQgYnV0IG9ubHkgdXNlZCBhcyBjb25zdCByZWZlcmVuY2UgaW4g
V2ViQ29yZSwgV2ViS2l0LCBUb29scworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTky
NzUxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3NzE2MjM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGxvb3AgdmFyaWFibGVzIHRv
IGNvbnN0IHJlZmVyZW5jZXMgdG8gYXZvaWQgdW5uZWNlc3NhcnkKKyAgICAgICAgY29waWVzLgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlPYmplY3RTdG9yZTo6cG9wdWxhdGVJbmRleFdpdGhFeGlzdGluZ1JlY29yZHMpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjptYXliZU5v
dGlmeUNvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Om9iamVjdFN0
b3JlSWRlbnRpZmllcnMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJE
YXRhYmFzZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbmZvOjpJREJE
YXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbmZvOjpsb2dnaW5n
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGFyZ2V0RWxlbWVu
dEZvckFjdGl2ZURlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZVJvdzo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVkTmVlZHNG
b3JjZWRMYXlvdXQpOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayk6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydEp3ayBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcmRlcmVkTmFt
ZWRMaW5lc0NvbGxlY3Rvcjo6YXBwZW5kTGluZXMgY29uc3QpOgorICAgICAgICAqIGRvbS9EYXRh
VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVSTHNGcm9tUGFzdGVib2FyZEFz
U3RyaW5nKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6Y2hlY2tBbmRT
dG9yZVJlZ2lvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNl
dEluc3RydW1lbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6dXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zKToKKyAgICAgICAgKiBwYWdl
L1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXN0aW1hdGVkQmFja2dyb3Vu
ZENvbG9yRm9yUmFuZ2UpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpjb21wdXRlTGF5
b3V0RGVwZW5kZW5jeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpkaXNwbGF5V2FzVXBkYXRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6bW92ZU9yQ29weUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphcHBlbmQpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6YWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yRWxlbWVudCk6CisKIDIwMTgtMTItMTQgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBjbGFuZy10aWR5OiBG
aXggdW5uZWNlc3NhcnkgY29weSBvZiBvYmplY3RzIGZvciBvcGVyYXRvcj09KCkgbWV0aG9kcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBmODFhOWE4YjNmMWM3MTFmYWViNDk4Y2U1OTA2NjBhYTllYmYwMDc0Li42OWFl
ZmQzYTlhOWQyMWYxOTlhYzg4MjU4Y2QzYWVkMDljMjI5MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQwIEBACisyMDE4LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgY2xhbmctdGlkeTogbG9vcCB2YXJpYWJsZSBpcyBjb3BpZWQgYnV0IG9ubHkgdXNl
ZCBhcyBjb25zdCByZWZlcmVuY2UgaW4gV2ViQ29yZSwgV2ViS2l0LCBUb29scworICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTkyNzUxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3
NzE2MjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2hhbmdlIGxvb3AgdmFyaWFibGVzIHRvIGNvbnN0IHJlZmVyZW5jZXMgdG8gYXZvaWQgdW5uZWNl
c3NhcnkKKyAgICAgICAgY29waWVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246On5XZWJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFNo
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b05TRXJyb3JzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRGaWxlc1RvU2VsZWN0Rm9yRmlsZVVwbG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtS2V5Ym9h
cmRJbnRlcmFjdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGVyZm9ybUludGVyYWN0aW9uU2VxdWVuY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRSZW1vdmVE
YXRhUmVjb3JkcyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
Rm9ySWRlbnRpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5EZXRhaWxzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hv
dWxkQXR0YWNoRHJhd2luZ0FyZWFPblBhZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZVRpbWVyRmlyZWQpOgorCiAyMDE4LTEyLTE0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgY2xhbmctdGlkeTogRml4IHVubmVjZXNzYXJ5IG9iamVj
dCBjb3B5IGluIENQVU1vbml0b3I6OnNldENQVUxpbWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDFlYTVjYjE4M2VhMGNjMmM3ZjI5ZmZi
ODM2NTA5NjVmZGZlMDZmYjUuLjQ3Y2M0MmZkMjZkNjQ3M2M2NDE5MjdlOTkyZDRlYzZlOGQ3YmY4
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApA
QCAtMjEzLDE1ICsyMTMsMTUgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6
YWJvcnQoKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1faXNBYm9ydGluZywgdHJ1
ZSk7CiAKLSAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBtX29yaWdpbmFsSW5kZXhOYW1lcykKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0ZXJhdG9yIDogbV9vcmlnaW5hbEluZGV4TmFtZXMpCiAgICAg
ICAgIGl0ZXJhdG9yLmtleS0+cmVuYW1lKGl0ZXJhdG9yLnZhbHVlKTsKICAgICBtX29yaWdpbmFs
SW5kZXhOYW1lcy5jbGVhcigpOwogCi0gICAgZm9yIChhdXRvIGl0ZXJhdG9yIDogbV9vcmlnaW5h
bE9iamVjdFN0b3JlTmFtZXMpCisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6IG1fb3Jp
Z2luYWxPYmplY3RTdG9yZU5hbWVzKQogICAgICAgICBpdGVyYXRvci5rZXktPnJlbmFtZShpdGVy
YXRvci52YWx1ZSk7CiAgICAgbV9vcmlnaW5hbE9iamVjdFN0b3JlTmFtZXMuY2xlYXIoKTsKIAot
ICAgIGZvciAoYXV0byBvYmplY3RTdG9yZSA6IG1fdmVyc2lvbkNoYW5nZUFkZGVkT2JqZWN0U3Rv
cmVzKQorICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0U3RvcmUgOiBtX3ZlcnNpb25DaGFuZ2VB
ZGRlZE9iamVjdFN0b3JlcykKICAgICAgICAgbV9iYWNraW5nU3RvcmUucmVtb3ZlT2JqZWN0U3Rv
cmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoKm9iamVjdFN0b3JlKTsKICAgICBtX3ZlcnNpb25DaGFu
Z2VBZGRlZE9iamVjdFN0b3Jlcy5jbGVhcigpOwogCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgICAgICBpZiAoIWtleVZh
bHVlTWFwKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZm9yIChhdXRvIGVudHJ5
IDogKmtleVZhbHVlTWFwKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiAqa2V5
VmFsdWVNYXApIHsKICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5kZWxldGVSZWNvcmQoZW50cnku
a2V5KTsKICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5hZGRSZWNvcmQoKnRoaXMsIGVudHJ5Lmtl
eSwgeyBlbnRyeS52YWx1ZSB9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAK
aW5kZXggNWNkZWQzZTU4ODE1MDA4Yzc1N2E4Zjg2OTE3MjE4MTY0MDc1NDM1Mi4uNTU5MjkxZDEw
ZGMxNWYxZjlkNDJmOTZjZTZmMzQ1NGU5ZjQ4MjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OnBvcHVs
YXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4JiBpbmRleCkKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoVW5pcXVlSURCRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFkVk0oKSk7
CiAKLSAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiAqbV9rZXlWYWx1ZVN0b3JlKSB7CisgICAgZm9y
IChjb25zdCBhdXRvJiBpdGVyYXRvciA6ICptX2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAgYXV0
byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShVbmlxdWVJREJEYXRhYmFz
ZTo6ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwgaXRlcmF0b3IudmFsdWUpOwogICAgICAgICBp
ZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGZjMDdlZjE0NTFiOTdlMDc1
Y2QzYTU2ZjYyMDA5M2EzNDljMGNiYzkuLjRlMmEyZGY2YjdhMzc3NzcyMjljYzhmMmQ1YTQ0OTg1
YjY2OGM2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNTMxLDcgKzUzMSw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om1heWJlTm90aWZ5Q29ubmVjdGlvbnNPZlZlcnNpb25D
aGFuZ2UoKQogICAgIC8vIEZpcmUgYSB2ZXJzaW9uY2hhbmdlIGV2ZW50IGF0IGVhY2ggY29ubmVj
dGlvbiBpbiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zIHRoYXQgaXMgb3Blbi4KICAgICAvLyBU
aGUgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgb24gY29ubmVjdGlvbnMgd2hpY2ggaGFzIHRoZSBj
bG9zZVBlbmRpbmcgZmxhZyBzZXQuCiAgICAgSGFzaFNldDx1aW50NjRfdD4gY29ubmVjdGlvbklk
ZW50aWZpZXJzOwotICAgIGZvciAoYXV0byBjb25uZWN0aW9uIDogbV9vcGVuRGF0YWJhc2VDb25u
ZWN0aW9ucykgeworICAgIGZvciAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA6IG1fb3BlbkRhdGFi
YXNlQ29ubmVjdGlvbnMpIHsKICAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmNsb3NlUGVuZGluZygp
KQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmNwcAppbmRleCA3OWM1ZDk1OGZlZGE1YmFmMzIxMmU5ZmQzM2Y2ZjY0YWI4
MGI1OGJjLi4zOWEwMTFkZDBhN2FmZTVmZDk1ZmJhNjhkYTQ1ZWMwMDQ4NzQxOGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC00MjEsNyArNDIx
LDcgQEAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmVJZGVudGlmaWVycygpCiAgICAgICAgIHJldHVybiBtX29iamVjdFN0b3Jl
SWRlbnRpZmllcnM7CiAKICAgICBhdXRvJiBpbmZvID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRh
dGFiYXNlKCktPmluZm8oKTsKLSAgICBmb3IgKGF1dG8gb2JqZWN0U3RvcmVOYW1lIDogaW5mby5v
YmplY3RTdG9yZU5hbWVzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG9iamVjdFN0b3JlTmFt
ZSA6IGluZm8ub2JqZWN0U3RvcmVOYW1lcygpKSB7CiAgICAgICAgIGF1dG8gb2JqZWN0U3RvcmVJ
bmZvID0gaW5mby5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwog
ICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKICAgICAgICAgaWYgKCFvYmplY3RTdG9y
ZUluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCmluZGV4IGU1ZGYxNWM0NGFiYmUyNDY0ZjRmZWVl
ZmQ5OGRhYjc4ZDliM2FmMjkuLmQwYTI1MzMxNjg2MTA0MTlhNjUxYTg5NDUwODYzNjU5NTg4MmU1
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJEYXRhYmFzZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIElEQkRhdGFiYXNl
SW5mbzo6SURCRGF0YWJhc2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgb3RoZXIsIElzb2xh
dGVkQ29weVRhZykKICAgICAsIG1fdmVyc2lvbihvdGhlci5tX3ZlcnNpb24pCiAgICAgLCBtX21h
eE9iamVjdFN0b3JlSUQob3RoZXIubV9tYXhPYmplY3RTdG9yZUlEKQogewotICAgIGZvciAoYXV0
byBlbnRyeSA6IG90aGVyLm1fb2JqZWN0U3RvcmVNYXApCisgICAgZm9yIChjb25zdCBhdXRvJiBl
bnRyeSA6IG90aGVyLm1fb2JqZWN0U3RvcmVNYXApCiAgICAgICAgIG1fb2JqZWN0U3RvcmVNYXAu
c2V0KGVudHJ5LmtleSwgZW50cnkudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwogfQogCkBAIC0xNjQs
NyArMTY0LDcgQEAgU3RyaW5nIElEQkRhdGFiYXNlSW5mbzo6bG9nZ2luZ1N0cmluZygpIGNvbnN0
CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdmVyc2lvbiAiKTsKICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX3ZlcnNpb24pOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGZv
ciAoYXV0byBvYmplY3RTdG9yZSA6IG1fb2JqZWN0U3RvcmVNYXAudmFsdWVzKCkpIHsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIG9iamVjdFN0b3JlIDogbV9vYmplY3RTdG9yZU1hcC52YWx1ZXMoKSkg
ewogICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RTdG9yZS5sb2dnaW5nU3RyaW5nKDEpKTsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDBmODJiNzQ0
YjljZWNhM2UxMDU0MzNhNWUxNWFiZDgxNjBmZGQwMmEuLjk2Njg2YTA4MTM2MGE1YWZmOTAwYWM4
M2Q0NmJkMGI4NzllNTkyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTczOSwxMyArNzM5LDEzIEBAIHN0YXRpYyBQ
bGF0Zm9ybVRpbWVSYW5nZXMgcmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcihjb25zdCBEZWNv
ZGVPcmRlclNhbXBsZU1hCiAjZW5kaWYKIAogICAgIFBsYXRmb3JtVGltZVJhbmdlcyBlcmFzZWRS
YW5nZXM7Ci0gICAgZm9yIChhdXRvIHNhbXBsZUl0IDogc2FtcGxlcykgeworICAgIGZvciAoY29u
c3QgYXV0byYgc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9yZGVy
U2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAhTE9H
X0RJU0FCTEVECiAgICAgICAgIHNpemVfdCBzdGFydEJ1ZmZlclNpemUgPSB0cmFja0J1ZmZlci5z
YW1wbGVzLnNpemVJbkJ5dGVzKCk7CiAjZW5kaWYKIAotICAgICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+JiBzYW1wbGUgPSBzYW1wbGVJdC5zZWNvbmQ7CisgICAgICAgIGNvbnN0IFJlZlB0cjxNZWRp
YVNhbXBsZT4mIHNhbXBsZSA9IHNhbXBsZUl0LnNlY29uZDsKICAgICAgICAgTE9HKE1lZGlhU291
cmNlLCAiU291cmNlQnVmZmVyOjolcyglcCkgLSByZW1vdmluZyBzYW1wbGUoJXMpIiwgbG9nUHJl
Zml4LCBidWZmZXIsIHRvU3RyaW5nKCpzYW1wbGVJdC5zZWNvbmQpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgICAgIC8vIFJlbW92ZSB0aGUgZXJhc2VkIHNhbXBsZXMgZnJvbSB0aGUgVHJhY2tCdWZm
ZXIgc2FtcGxlIG1hcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDFhOGIyM2Q3ZTAzZDIzMmFl
ODkyOGYzYjk2ZmRhODA0N2VkNmE5MmIuLjc4YWQ5NTlmNDQwYWNkMDE2M2ZkNmJlMDRjYTU1MWMw
ZjZhYmQ3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjUyMyw3ICsyNTIzLDcgQEAgUmVu
ZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YXJnZXRFbGVtZW50Rm9yQWN0
aXZlRGVzY2VuZGFudChjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBlbGVtZW50czsKICAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmli
dXRlKGVsZW1lbnRzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBmb3IgKGF1dG8gZWxlbWVudCA6IGVs
ZW1lbnRzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAg
ICAgICAgaWYgKGFjdGl2ZURlc2NlbmRhbnQtPmlzRGVzY2VuZGFudE9mT2JqZWN0KGVsZW1lbnQu
Z2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuY3BwCmluZGV4IDQzYjZkODBkNDQxNDJjMjA2Y2M2ZDI3ZmZhOTA1YzUwODM2ZmIxMDQu
LjMzNWE4OWZiODE2ZGY1NmUyNjBmN2VjZjc5YmU5YTJkOTZhZWYzYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3c6OmhlYWRlck9iamVjdCgpCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJvdyBoZWFkZXIg
aXMgbm90IHBhcnQgb2YgYW4gZW50aXJlIHJvdyBvZiBoZWFkZXJzLgogICAgIC8vIEluIHRoYXQg
Y2FzZSwgaXQgaXMgdW5saWtlbHkgdGhpcyBpcyBhIHJvdyBoZWFkZXIuCiAgICAgYm9vbCBhbGxI
ZWFkZXJzSW5Sb3cgPSB0cnVlOwotICAgIGZvciAoYXV0byBjZWxsIDogcm93Q2hpbGRyZW4pIHsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiByb3dDaGlsZHJlbikgewogICAgICAgICBpZiAo
Y2VsbC0+bm9kZSgpICYmICFjZWxsLT5ub2RlKCktPmhhc1RhZ05hbWUodGhUYWcpKSB7CiAgICAg
ICAgICAgICBhbGxIZWFkZXJzSW5Sb3cgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggMTFjODc4YWVm
NmIyMDEyNzgyOWFmYjQxYTc3MmMyYzBjYjc3ZWM4ZC4uMzA4NTE4MjY1NGE5MzE0NmViYmUyNTBh
M2VkZTI0MGI4ODMzODFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0
ZWROZWVkc0ZvcmNlZExheW91dCgpCiAgICAgICAgIH0KICAgICAgICAgaWYgKGtleWZyYW1lU3R5
bGUtPmhhc1RyYW5zZm9ybSgpKSB7CiAgICAgICAgICAgICBhdXRvJiB0cmFuc2Zvcm1PcGVyYXRp
b25zID0ga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8g
b3BlcmF0aW9uIDogdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgb3BlcmF0aW9uIDogdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkpIHsKICAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uLT5pc1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRyYW5z
bGF0aW9uID0gZG93bmNhc3Q8VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uPihvcGVyYXRpb24u
Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRpb24tPngoKS5pc1BlcmNl
bnQoKSB8fCB0cmFuc2xhdGlvbi0+eSgpLmlzUGVyY2VudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcAppbmRleCAzMDJjZjQxOTUzM2M0Mzc0NWMxY2Q0
NTk0MmY3M2U4MTRhOWZjYTcyLi40MWUwMjFjYjNkZWE3Mzg0OTkxNGY4YjdhMDAwNzBiZWU4OTQ5
ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKQEAg
LTkyLDcgKzkyLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRK
d2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0KICAgICB9CiAKICAgICBWZWN0
b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiBvdGhlclByaW1lSW5mb3M7Ci0g
ICAgZm9yIChhdXRvIHZhbHVlIDoga2V5RGF0YS5vdGgudmFsdWUoKSkgeworICAgIGZvciAoY29u
c3QgYXV0byYgdmFsdWUgOiBrZXlEYXRhLm90aC52YWx1ZSgpKSB7CiAgICAgICAgIENyeXB0b0tl
eVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBpbmZvOwogICAgICAgICBpZiAoIVdURjo6YmFzZTY0
VVJMRGVjb2RlKHZhbHVlLnIsIGluZm8ucHJpbWVGYWN0b3IpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMzcsNyArMTM3LDcgQEAgSnNvbldlYktleSBDcnlwdG9LZXlSU0E6OmV4
cG9ydEp3aygpIGNvbnN0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBWZWN0b3I8UnNh
T3RoZXJQcmltZXNJbmZvPiBvdGg7Ci0gICAgZm9yIChhdXRvIGluZm8gOiByc2FDb21wb25lbnRz
LT5vdGhlclByaW1lSW5mb3MoKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgaW5mbyA6IHJzYUNv
bXBvbmVudHMtPm90aGVyUHJpbWVJbmZvcygpKSB7CiAgICAgICAgIFJzYU90aGVyUHJpbWVzSW5m
byBvdGhlckluZm87CiAgICAgICAgIG90aGVySW5mby5yID0gYmFzZTY0VVJMRW5jb2RlKGluZm8u
cHJpbWVGYWN0b3IpOwogICAgICAgICBvdGhlckluZm8uZCA9IGJhc2U2NFVSTEVuY29kZShpbmZv
LmZhY3RvckNSVEV4cG9uZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMzZmMDM5NGJhN2E5NmI1ZjdlYWM4OGM2NzJj
N2M4OTMxZDE0YTM1Yi4uNjc3ODQxMjA2ZmJlMWU0ZTM3ODlhMGY4MDJiZGQxYzFkMzM0YjhlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKQEAgLTExNDUsNyArMTE0NSw3IEBAIHZvaWQgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0
b3I6OmFwcGVuZExpbmVzKENTU0dyaWRMaW5lTmFtZXNWYWx1ZSYgbGluZU5hbWVzVmFsCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCk7Ci0gICAgZm9yIChhdXRvIGxpbmVOYW1lIDogaXRlci0+dmFsdWUpCisgICAgZm9y
IChjb25zdCBhdXRvJiBsaW5lTmFtZSA6IGl0ZXItPnZhbHVlKQogICAgICAgICBsaW5lTmFtZXNW
YWx1ZS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGxpbmVOYW1lLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CmluZGV4IDYwZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5YjE3NDUxMzQuLjU5MmM1Zjkx
MDY0YTgyMzRhYWMwZmIzNzM3OTI0ZDA1OTNmMTk3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmNsZWFyRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpCiBzdGF0aWMgU3RyaW5nIHJlYWRVUkxzRnJvbVBhc3RlYm9h
cmRBc1N0cmluZyhQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBGdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyYpPiYmIHNob3VsZEluY2x1ZGVVUkwpCiB7CiAgICAgU3RyaW5nQnVpbGRlciB1cmxMaXN0
OwotICAgIGZvciAoYXV0byB1cmxTdHJpbmcgOiBwYXN0ZWJvYXJkLnJlYWRBbGxTdHJpbmdzKCJ0
ZXh0L3VyaS1saXN0Il9zKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgdXJsU3RyaW5nIDogcGFz
dGVib2FyZC5yZWFkQWxsU3RyaW5ncygidGV4dC91cmktbGlzdCJfcykpIHsKICAgICAgICAgaWYg
KCFzaG91bGRJbmNsdWRlVVJMKHVybFN0cmluZykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKCF1cmxMaXN0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5k
ZXggYjllOTI3MTI5MmE3YjIzOTgyNzhiYTEwYmQwNDg1ZmY3NzNlN2RmNi4uODI4MTM4ZjY2MjU4
MDI3NzIwMGI0MmVkM2IzOTUyYWM0ZmY0YTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
QEAgLTQwNiw3ICs0MDYsNyBAQCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVs
ZW1lbnRzRnJvbVBvaW50KGRvdWJsZSBjbGllbnRYLCBkb3VibGUgY2xpZQogICAgIGRvY3VtZW50
U2NvcGUoKS5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIE5v
ZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8gbGlzdEJhc2VkTm9kZSA6IHJl
c3VsdC5saXN0QmFzZWRUZXN0UmVzdWx0KCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxpc3RC
YXNlZE5vZGUgOiByZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpKSB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSBsaXN0QmFzZWROb2RlLmdldCgpOwogICAgICAgICBub2RlID0gJnJldGFyZ2V0VG9T
Y29wZSgqbm9kZSk7CiAgICAgICAgIHdoaWxlICghaXM8RWxlbWVudD4oKm5vZGUpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggOTE0MjE1YzQ5OWYw
MWNkNmJkMTIzZDhjNjUwOTQ0Mjk0ZjlmMWY0NC4uMTEyMjdhN2VhNDQzYWIwZGJmOTJjY2UxMWIy
YzNiNjE3ZTIwOTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcApAQCAtMzM4LDcgKzMzOCw3IEBAIGJvb2wgV2ViVlRUUGFyc2VyOjpjaGVja0FuZFN0b3Jl
UmVnaW9uKGNvbnN0IFN0cmluZyYgbGluZSkKICAgICBpZiAoIW1fY3VycmVudFJlZ2lvbi0+aWQo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSWYgdGhlIHRleHQgdHJhY2sgbGlzdCBvZiByZWdp
b25zIHJlZ2lvbnMgY29udGFpbnMgYSByZWdpb24KICAgICAgICAgLy8gd2l0aCB0aGUgc2FtZSBy
ZWdpb24gaWRlbnRpZmllciB2YWx1ZSBhcyByZWdpb24sIHJlbW92ZSB0aGF0IHJlZ2lvbi4KLSAg
ICAgICAgZm9yIChhdXRvIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgewogICAgICAgICAgICAgaWYgKHJlZ2lv
bi0+aWQoKSA9PSBtX2N1cnJlbnRSZWdpb24tPmlkKCkpIHsKICAgICAgICAgICAgICAgICBtX3Jl
Z2lvbkxpc3QucmVtb3ZlRmlyc3QocmVnaW9uKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCmluZGV4IDkzYjhkOTYyNWI5YTE3YzU1Yjk2M2Y0MTQ1OGEwODg2MDU1
OTgzNzcuLjk3MzJlYzAxYWNlNjE4YTI0Y2Y4NmEwZDAwNWJmNDM0NGMzZmU3YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c2V0SW5zdHJ1bWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
CiAgICAgVmVjdG9yPFByb3RvY29sOjpUaW1lbGluZTo6SW5zdHJ1bWVudD4gbmV3SW5zdHJ1bWVu
dHM7CiAgICAgbmV3SW5zdHJ1bWVudHMucmVzZXJ2ZUNhcGFjaXR5KGluc3RydW1lbnRzLmxlbmd0
aCgpKTsKIAotICAgIGZvciAoYXV0byBpbnN0cnVtZW50VmFsdWUgOiBpbnN0cnVtZW50cykgewor
ICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1bWVudFZhbHVlIDogaW5zdHJ1bWVudHMpIHsKICAg
ICAgICAgU3RyaW5nIGVudW1WYWx1ZVN0cmluZzsKICAgICAgICAgaWYgKCFpbnN0cnVtZW50VmFs
dWUtPmFzU3RyaW5nKGVudW1WYWx1ZVN0cmluZykpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIlVuZXhwZWN0ZWQgdHlwZSBpbiBpbnN0cnVtZW50cyBsaXN0LCBzaG91bGQgYmUgc3RyaW5n
Il9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZTU2NjViMTM4NjYyM2Q2MGI5ODE1N2VmOGMxYTA1
YjEzOGViMmY0YS4uYzFmMzBkMjU4NzI1NmIyNGRhZTRiOTMxOWMxOGJiOGI0ZWUzMzBlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCB2b2lkIFBhZ2U6OmFkZERvY3Vt
ZW50TmVlZGluZ0ludGVyc2VjdGlvbk9ic2VydmF0aW9uVXBkYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKIHZvaWQgUGFnZTo6dXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zKCkKIHsKICAgICBt
X2ludGVyc2VjdGlvbk9ic2VydmF0aW9uVXBkYXRlVGltZXIuc3RvcCgpOwotICAgIGZvciAoYXV0
byBkb2N1bWVudCA6IG1fZG9jdW1lbnRzTmVlZGluZ0ludGVyc2VjdGlvbk9ic2VydmF0aW9uVXBk
YXRlKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBkb2N1bWVudCA6IG1fZG9jdW1lbnRzTmVlZGlu
Z0ludGVyc2VjdGlvbk9ic2VydmF0aW9uVXBkYXRlKSB7CiAgICAgICAgIGlmIChkb2N1bWVudCkK
ICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCA2MTYzNDAzMDJi
NDE5NWRkZjZmNTc4ZTcxMGNjNGU0OWUyODg0ZWNlLi43OTAwODEyZjBmM2UyNzcxZjNhZDUyMzU1
N2IzMTliMDIwMmFlZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRp
Y2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAg
LTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgQ29sb3IgZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yRm9y
UmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBGcmFtZSYgZgogICAgICAgICAgICAgcGFy
ZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzLmFwcGVuZCh2aXNpdGVkRGVwZW5kZW50QmFja2dy
b3VuZENvbG9yKTsKICAgICB9CiAgICAgcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzLnJl
dmVyc2UoKTsKLSAgICBmb3IgKGF1dG8gYmFja2dyb3VuZENvbG9yIDogcGFyZW50UmVuZGVyZXJC
YWNrZ3JvdW5kQ29sb3JzKQorICAgIGZvciAoY29uc3QgYXV0byYgYmFja2dyb3VuZENvbG9yIDog
cGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQogICAgICAgICBlc3RpbWF0ZWRCYWNrZ3Jv
dW5kQ29sb3IgPSBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IuYmxlbmQoYmFja2dyb3VuZENvbG9y
KTsKIAogICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKaW5kZXggZmVm
ZTAxMDExNTAxNzdiM2MxNmU1ZGI4YzgzODA0Y2I2MDYzOTY3ZS4uZjM1MWVlNjQyMzYwMDUxOWVm
MzQ1ZjU2ZGE1N2NlOTM4ZjY0MjcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEtl
eWZyYW1lQW5pbWF0aW9uOjpjb21wdXRlTGF5b3V0RGVwZW5kZW5jeSgpCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGtleWZyYW1lU3R5bGUtPmhhc1RyYW5zZm9ybSgpKSB7CiAgICAgICAgICAgICBh
dXRvJiB0cmFuc2Zvcm1PcGVyYXRpb25zID0ga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCk7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8gb3BlcmF0aW9uIDogdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3BlcmF0aW9uIDogdHJh
bnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkpIHsKICAgICAgICAgICAgICAgICBpZiAob3Bl
cmF0aW9uLT5pc1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIHRyYW5zbGF0aW9uID0gZG93bmNhc3Q8VHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uPihvcGVyYXRpb24uZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJh
bnNsYXRpb24tPngoKS5pc1BlcmNlbnQoKSB8fCB0cmFuc2xhdGlvbi0+eSgpLmlzUGVyY2VudCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDFiYzlkYjcwNzYyYmM3
YTVjNjE2MGQ2MzgxZjhjYzY2ZjY0YWZjNWMuLjhiNGI2OWRiMDMzNGZmZTAxNDNkMDRmZGE1ZjIx
MGFjNmVmNjgzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC0xMjcs
NyArMTI3LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjp3aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKIAogdm9pZCBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyOjpkaXNwbGF5V2FzVXBkYXRlZChQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpCiB7Ci0gICAgZm9yIChhdXRvIG1vbml0b3IgOiBtX21vbml0b3JzKSB7CisgICAgZm9y
IChjb25zdCBhdXRvJiBtb25pdG9yIDogbV9tb25pdG9ycykgewogICAgICAgICBpZiAoZGlzcGxh
eUlEID09IG1vbml0b3ItPmRpc3BsYXlJRCgpICYmIG1vbml0b3ItPmhhc1JlcXVlc3RlZFJlZnJl
c2hDYWxsYmFjaygpKQogICAgICAgICAgICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGQzNTEyNzRmZDMwNDYxNWQ5YmVlMzZiMjQ5ZmZjOTE2
NGJlMjQ1NzcuLmZhY2ExYzhmZGIyOTI3OGRiNTMxMmVjYzE4ZGY0NTQ4ZjU0OTZlZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcApAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjptb3Zl
T3JDb3B5QW5pbWF0aW9ucyhNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgUGxhdGZvcm1DQUxheWVyCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIExvb2sgZm9yIHJ1bm5pbmcgYW5pbWF0aW9ucyBhZmZl
Y3RpbmcgdGhpcyBwcm9wZXJ0eS4KLSAgICBmb3IgKGF1dG8gaXQgOiBtX2FuaW1hdGlvbnMtPnJ1
bm5pbmdBbmltYXRpb25zKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1fYW5pbWF0aW9u
cy0+cnVubmluZ0FuaW1hdGlvbnMpIHsKICAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlBbmlt
YXRpb25zID0gaXQudmFsdWU7CiAgICAgICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJvcGVy
dHlBbmltYXRpb25zLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1B
bmltYXRpb25zOyArK2kpIHsKQEAgLTI4NDYsNyArMjg0Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjp1cGRhdGVBbmltYXRpb25zKCkKICAgICB9CiAKICAgICBpZiAobV9hbmltYXRpb25zLT5h
bmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAgICAgICBmb3IgKGF1dG8gaXQgOiBtX2Fu
aW1hdGlvbnMtPmFuaW1hdGlvbnNUb1Byb2Nlc3MpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBpdCA6IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2VzcykgewogICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBjdXJyZW50QW5pbWF0aW9uTmFtZSA9IGl0LmtleTsKICAgICAgICAgICAg
IGF1dG8gYW5pbWF0aW9uSXRlcmF0b3IgPSBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25z
LmZpbmQoY3VycmVudEFuaW1hdGlvbk5hbWUpOwogICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkl0
ZXJhdG9yID09IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCkBAIC0yODgy
LDcgKzI4ODIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNmb3JtQW5p
bWF0aW9uKCkgY29uc3QKICAgICBpZiAoIWhhc0FuaW1hdGlvbnMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGl0IDogbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0
aW9ucykgeworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdB
bmltYXRpb25zKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5QW5pbWF0aW9ucyA9IGl0
LnZhbHVlOwogICAgICAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IHByb3BlcnR5QW5pbWF0aW9u
cy5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0KaW5kZXggM2UzOGNkZDQzNjhlNDM5Yjk4ZjEwMjU4YjE3ODUyNmZkMDU2MjY5ZC4uNjkw
OGYxMDc2MzJlODkwMThjYTkwZTk5MGYzNDQ4NzdiOTRiNmZiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtODgsNyArODgsNyBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNv
bnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cgogICAgIGlmICghZGVzdGluYXRpb24pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1h
Z2VzKQorICAgIGZvciAoY29uc3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCiAg
ICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRp
dmVJbWFnZS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0
aW5hdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKaW5kZXggODVlYjc5OGNkMDlmZTI4OTdhMTVjYjQyNjhkOTc3MTUxNmJkNDUxMS4uYjgyMThj
YWRlMDlkYTI1NjdiOTdjYzY1ZTFjNDcwMDNkZGYyNzViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgSGl0VGVz
dFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxCiAKICAgICBpZiAob3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSB7CiAg
ICAgICAgIE5vZGVTZXQmIHNldCA9IG11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCk7Ci0gICAg
ICAgIGZvciAoYXV0byBub2RlIDogKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBub2RlIDogKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkK
ICAgICAgICAgICAgIHNldC5hZGQobm9kZS5nZXQoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGI3MzEyNDZjNzFhM2E3Y2MwY2QxYzdjNWQzYjg5NTQ0
ZGExZTVkYWEuLjBmZTlhNGU3NWJlYTE3MGY4YTgwMGZkZTkwNDY5YTIwZmM5MTE1ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEwNjgsNyArMTA2OCw3IEBAIFZlY3Rv
cjxJbnRlcm5hbHM6OkFjY2VsZXJhdGVkQW5pbWF0aW9uPiBJbnRlcm5hbHM6OmFjY2VsZXJhdGVk
QW5pbWF0aW9uc0ZvckVsZW1lCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8SW50
ZXJuYWxzOjpBY2NlbGVyYXRlZEFuaW1hdGlvbj4gYW5pbWF0aW9uczsKLSAgICBmb3IgKGF1dG8g
YW5pbWF0aW9uQXNQYWlyIDogZWxlbWVudC5kb2N1bWVudCgpLnRpbWVsaW5lKCkuYWNjZWxlcmF0
ZWRBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50KSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGFu
aW1hdGlvbkFzUGFpciA6IGVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmFjY2VsZXJhdGVk
QW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpCiAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5k
KHsgYW5pbWF0aW9uQXNQYWlyLmZpcnN0LCBhbmltYXRpb25Bc1BhaXIuc2Vjb25kIH0pOwogICAg
IHJldHVybiBhbmltYXRpb25zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAppbmRleCAwYzI4MDJkMjM0MjkyNDhjNTdmYTI4ZjZjNjEwZGNjNzIwZDI0ZmEzLi4wYzgx
ZGQ0YzY4ZjRhN2RjMmVhZDZjMmE3OWZlZjdiYWIyOTYyYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNzIsNyArNzIsNyBAQCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5l
Y3Rpb24mCiBXZWJTV1NlcnZlckNvbm5lY3Rpb246On5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKQog
ewogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25u
ZWN0aW9uKCp0aGlzKTsKLSAgICBmb3IgKGF1dG8ga2V5VmFsdWUgOiBtX2NsaWVudE9yaWdpbnMp
CisgICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZSA6IG1fY2xpZW50T3JpZ2lucykKICAgICAg
ICAgc2VydmVyKCkudW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoa2V5VmFsdWUudmFsdWUs
IGtleVZhbHVlLmtleSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpp
bmRleCBjMWUxOGM0ZjIxYzIxZTNhZDRkYzEyM2YyMTlhZDk4OTUwMmQ0ZjY3Li5mMzhlNzVkMTUy
NmJhZGI3ZjUyZGVkMjU2NTQyN2VkZjE2YjY2MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fY2hhbmdlZExheWVycy5zaXplKCkpOwogCi0g
ICAgZm9yIChSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA6IG1fY2hhbmdlZExh
eWVycykgeworICAgIGZvciAoY29uc3QgYXV0byYgbGF5ZXIgOiBtX2NoYW5nZWRMYXllcnMpIHsK
ICAgICAgICAgZW5jb2RlciA8PCBsYXllci0+bGF5ZXJJRCgpOwogICAgICAgICBlbmNvZGVyIDw8
IGxheWVyLT5wcm9wZXJ0aWVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggNDQwYzEwZTgwMDc4MTcwM2FjYzM2MzgzMjE4OTY1
ZmExM2JhMGFiNy4uYTY3NWViZGVhOTc1MTA1ZWQ0YjllYTJiYzUwNzAxZDZhYTFiNDA4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC02MzYs
NyArNjM2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMKIHsKICAgICBhdXRvIHJlc3VsdCA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCi0gICAgZm9yIChhdXRv
IGVycm9yIDogZXJyb3JzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGVycm9ycykg
ewogICAgICAgICBpZiAoYXV0byBuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKICAgICAgICAg
ICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3IuZ2V0KCldOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKaW5kZXggZGQwY2I0NDI3MDY5ZTA3NGZiNTgwYjExYzJlOWMzOWIxZGJiMzlkNy4u
ZjI5MzJjNDdkMDJjM2Q3NjFjODg4ZDQzOGRjMGMzNGE1M2FjMzJjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKQEAgLTExOTgsNyArMTE5OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnNldEZpbGVzVG9TZWxlY3RGb3JGaWxlVXBsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAg
ICAgVmVjdG9yPFN0cmluZz4gbmV3RmlsZUxpc3Q7CiAgICAgbmV3RmlsZUxpc3QucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShmaWxlbmFtZXMubGVuZ3RoKCkpOwogCi0gICAgZm9yIChhdXRvIGl0ZW0g
OiBmaWxlbmFtZXMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBmaWxlbmFtZXMpIHsK
ICAgICAgICAgU3RyaW5nIGZpbGVuYW1lOwogICAgICAgICBpZiAoIWl0ZW0tPmFzU3RyaW5nKGZp
bGVuYW1lKSkKICAgICAgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoSW50
ZXJuYWxFcnJvcik7CkBAIC0xNjM5LDcgKzE2MzksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpwZXJmb3JtS2V5Ym9hcmRJbnRlcmFjdGlvbnMoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNv
bgogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGFjdGlvbnNUb1BlcmZvcm07CiAg
ICAgYWN0aW9uc1RvUGVyZm9ybS5yZXNlcnZlQ2FwYWNpdHkoaW50ZXJhY3Rpb25zLmxlbmd0aCgp
KTsKIAotICAgIGZvciAoYXV0byBpbnRlcmFjdGlvbiA6IGludGVyYWN0aW9ucykgeworICAgIGZv
ciAoY29uc3QgYXV0byYgaW50ZXJhY3Rpb24gOiBpbnRlcmFjdGlvbnMpIHsKICAgICAgICAgUmVm
UHRyPEpTT046Ok9iamVjdD4gaW50ZXJhY3Rpb25PYmplY3Q7CiAgICAgICAgIGlmICghaW50ZXJh
Y3Rpb24tPmFzT2JqZWN0KGludGVyYWN0aW9uT2JqZWN0KSkKICAgICAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJB
biBpbnRlcmFjdGlvbiBpbiB0aGUgJ2ludGVyYWN0aW9ucycgcGFyYW1ldGVyIHdhcyBpbnZhbGlk
LiIpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVy
Zm9ybUludGVyYWN0aW9uU2VxdWVuY2UoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnMKICAgICBp
ZiAoIWlucHV0U291cmNlcy5sZW5ndGgoKSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIg
J2lucHV0U291cmNlcycgd2FzIG5vdCBmb3VuZCBvciBlbXB0eS4iKTsKIAotICAgIGZvciAoYXV0
byBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykgeworICAgIGZvciAoY29uc3QgYXV0byYgaW5w
dXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4g
aW5wdXRTb3VyY2VPYmplY3Q7CiAgICAgICAgIGlmICghaW5wdXRTb3VyY2UtPmFzT2JqZWN0KGlu
cHV0U291cmNlT2JqZWN0KSkKICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJBbiBpbnB1dCBzb3VyY2UgaW4g
dGhlICdpbnB1dFNvdXJjZXMnIHBhcmFtZXRlciB3YXMgaW52YWxpZC4iKTsKQEAgLTE3ODEsNyAr
MTc4MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNl
cXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zCiAgICAgaWYgKCFzdGVwcy5sZW5ndGgo
KSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3N0ZXBzJyB3YXMgbm90IGZvdW5kIG9y
IGVtcHR5LiIpOwogCi0gICAgZm9yIChhdXRvIHN0ZXAgOiBzdGVwcykgeworICAgIGZvciAoY29u
c3QgYXV0byYgc3RlcCA6IHN0ZXBzKSB7CiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0
ZXBPYmplY3Q7CiAgICAgICAgIGlmICghc3RlcC0+YXNPYmplY3Qoc3RlcE9iamVjdCkpCiAgICAg
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZh
bGlkUGFyYW1ldGVyLCAiQSBzdGVwIGluIHRoZSAnc3RlcHMnIHBhcmFtZXRlciB3YXMgbm90IGFu
IG9iamVjdC4iKTsKQEAgLTE3OTMsNyArMTc5Myw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25z
CiAgICAgICAgIFZlY3RvcjxTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjpTdGF0ZUVudHJ5PiBlbnRy
aWVzOwogICAgICAgICBlbnRyaWVzLnJlc2VydmVDYXBhY2l0eShzdGVwU3RhdGVzLT5sZW5ndGgo
KSk7CiAKLSAgICAgICAgZm9yIChhdXRvIHN0YXRlIDogKnN0ZXBTdGF0ZXMpIHsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdGF0ZSA6ICpzdGVwU3RhdGVzKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiBzdGF0ZU9iamVjdDsKICAgICAgICAgICAgIGlmICghc3RhdGUtPmFz
T2JqZWN0KHN0YXRlT2JqZWN0KSkKICAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJbnZhbGlkUGFyYW1ldGVyLCAiRW5jb3VudGVyZWQg
YSBub24tb2JqZWN0IHN0ZXAgc3RhdGUuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDU3NjYyZDk5
NTQxZjBiMjJiZWRjYTRlZjZhMTQ1NmI1ZDIzMWY1M2UuLjM3ODJjODRiNjc3OWU5ZDhlMjA2OGE2
YTE1OTkwNmY2N2EwZGE0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMo
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYKIAogUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzcyh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4p
CiB7Ci0gICAgZm9yIChhdXRvIHBsdWdpblByb2Nlc3MgOiBtX3BsdWdpblByb2Nlc3Nlcykgewor
ICAgIGZvciAoY29uc3QgYXV0byYgcGx1Z2luUHJvY2VzcyA6IG1fcGx1Z2luUHJvY2Vzc2VzKSB7
CiAgICAgICAgIGlmIChwbHVnaW5Qcm9jZXNzLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSA9PSBwbHVn
aW5Qcm9jZXNzVG9rZW4pCiAgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzcy5nZXQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCBjOWQyMmY2NzYzZmI3YWRjNmNl
OTEyMDE1OTgyMjA3NTY4ZjYwMGE3Li45NzUxMmRkYTljYjE2ZjljMGE5OWMwZTc3MWVkZWMyN2Vl
M2RkZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAgICAgbV9hY3RpdmVQbHVnaW5Ub2tlbnMuY2xlYXIoKTsKLSAgICBmb3IgKGF1dG8gcGx1Z2lu
IDogUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLnBsdWdpblByb2Nlc3NlcygpKQor
ICAgIGZvciAoY29uc3QgYXV0byYgcGx1Z2luIDogUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNpbmds
ZXRvbigpLnBsdWdpblByb2Nlc3NlcygpKQogICAgICAgICBtX2FjdGl2ZVBsdWdpblRva2Vucy5h
ZGQocGx1Z2luLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSk7CiAjZW5kaWYKIApAQCAtODc3LDcgKzg3
Nyw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRSZW1v
dmVEYXRhUmVjb3JkcygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGZvciAoYXV0byBwbHVnaW4gOiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkucGx1Z2luUHJvY2Vzc2VzKCkpIHsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHBsdWdpbiA6IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5wbHVn
aW5Qcm9jZXNzZXMoKSkgewogICAgICAgICBpZiAoIW1fYWN0aXZlUGx1Z2luVG9rZW5zLmNvbnRh
aW5zKHBsdWdpbi0+cGx1Z2luUHJvY2Vzc1Rva2VuKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
YzU0Y2RlMGExZjg3OGRkOTFhYzQzMDg1MWZmMzc2NzE1YjVkOTA2Ny4uMjA3OWQ0Y2ZkNWM5YmJh
MDdjMzUzODlmYzVhMzM1Y2ZjNTBiMzBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC04MTM1LDcgKzgxMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52
YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlm
aWVycywgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mIHNlcmlhbGl6
ZWREYXRhKQogewotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykgewogICAgICAgICBh
dXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKCFhdHRhY2htZW50KQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDE5NDA0ZDUwNjE3ZjYxNDUxMzI5NGE2Y2Ri
NmJkZjU4ODhkZDZlOS4uYWZmZDdlOGFjYWUyZGVjYjVjODQ0ZTg3M2I1NmY3ZDE1M2QwYWM5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtODUsNyArODUsNyBAQCB2
b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
OmRlbGV0ZUFsbERhdGFiYXNlcygpCiB7CiAgICAgYXV0byBwYXRocyA9IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksICIqLmxvY2Fsc3RvcmFnZSIpOwot
ICAgIGZvciAoYXV0byBwYXRoIDogcGF0aHMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBwYXRocykgewogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUo
cGF0aCk7CiAKICAgICAgICAgLy8gRklYTUU6IENhbGwgb3V0IHRvIHRoZSBjbGllbnQuCkBAIC0x
MTgsNyArMTE4LDcgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpvcmlnaW5zKCkgY29uc3QKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBkYXRhYmFzZU9yaWdpbnM7CiAgICAgYXV0byBwYXRocyA9IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksICIqLmxvY2Fsc3RvcmFnZSIpOwogICAg
IAotICAgIGZvciAoYXV0byBwYXRoIDogcGF0aHMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBwYXRocykgewogICAgICAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdl
dEZpbGVOYW1lKHBhdGgpOwogICAgICAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlbmFt
ZS5zdWJzdHJpbmcoMCwgZmlsZW5hbWUubGVuZ3RoKCkgLSBzdHJsZW4oIi5sb2NhbHN0b3JhZ2Ui
KSk7CiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIFZlY3Rv
cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6CiAgICAgYXV0byBkYXRhYmFzZU9yaWdpbnMgPSBvcmlnaW5zKCk7
CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YWJhc2VPcmlnaW5zLnNpemUo
KSk7CiAKLSAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGF0YWJhc2VPcmlnaW5zKSB7CisgICAgZm9y
IChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhYmFzZU9yaWdpbnMpIHsKICAgICAgICAgU3RyaW5n
IHBhdGggPSBkYXRhYmFzZVBhdGgob3JpZ2luKTsKIAogICAgICAgICBPcmlnaW5EZXRhaWxzIGRl
dGFpbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDk5YTA2OWM1NWM3OGZiOTU5YWU0NTM1YTYzM2EwODliOWUwZGUzY2YuLmM0YzI0NGVhNzBl
M2ZmYjdmOTlmYWExNWM5NGVkNWNiNWVkOWM4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02MTQsNyArNjE0LDcgQEAgV2ViUGFnZTo6V2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogI2VuZGlmCiAjZW5kaWYKIAotICAgIGZvciAoYXV0byBpdGVyYXRvciA6IHBhcmFtZXRl
cnMudXJsU2NoZW1lSGFuZGxlcnMpCisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6IHBh
cmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lSGFu
ZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5KTsKIAogICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkcyhwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29y
bGRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCAzNThm
OTY3ODFlZDcwYmRkNjdjMDkzNWYzODkyZDcwYzI4NmVhZDE1Li5kMjU1NWMxOTkwOGFiYTY2YTI0
YzFjMWJkZDE1NmYyZDNkMjkwNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKQogICAgIGlmIChtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQog
ICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlKCkpOwogCi0gICAgZm9yIChhdXRvIGNhbGxiYWNrSUQgOiBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFj
a0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogICAgICAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJ
RCkpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjJi
ZmM4MDE1MTNlNzdkYjk2M2Y3NjZjZTUzZjA1OTI5ZjFlYzU2YS4uNWVhZDA2Nzg0MGFmY2M3Nzk2
YmQwMWI3YjRhM2ZmNzZkNzY0M2I2MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTEyLTE3ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgY2xhbmctdGlkeTogbG9vcCB2YXJp
YWJsZSBpcyBjb3BpZWQgYnV0IG9ubHkgdXNlZCBhcyBjb25zdCByZWZlcmVuY2UgaW4gV2ViQ29y
ZSwgV2ViS2l0LCBUb29scworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTkyNzUxPgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3NzE2MjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGxvb3AgdmFyaWFibGVzIHRvIGNvbnN0
IHJlZmVyZW5jZXMgdG8gYXZvaWQgdW5uZWNlc3NhcnkKKyAgICAgICAgY29waWVzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAg
ICAgICAgKC1bTG9jYWxQYXN0ZWJvYXJkIHBhc3RlYm9hcmRJdGVtc10pOgorCiAyMDE4LTEyLTEy
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjM5MTAzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KaW5kZXggYWUyOWE5NDQyMGU3MmU4
NDE0NGM1MDYxZjNiMGM3MzFkZGNkOTQ1OS4uMWQ0YTY0YmY3ZDIzNjYxNzkyMGVjNTU4OTM2Yjg3
Nzg0NjQ0ODZmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlUGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWVQYXN0ZWJvYXJkLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgLSAoQk9PTCl3cml0ZU9i
amVjdHM6KE5TQXJyYXk8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+PiAqKW9iamVjdHMKIC0gKE5T
QXJyYXk8TlNQYXN0ZWJvYXJkSXRlbSAqPiAqKXBhc3RlYm9hcmRJdGVtcwogewogICAgIGF1dG8g
aXRlbSA9IGFkb3B0TlMoW1tOU1Bhc3RlYm9hcmRJdGVtIGFsbG9jXSBpbml0XSk7Ci0gICAgZm9y
IChhdXRvIHR5cGVBbmREYXRhIDogX2RhdGEpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGVB
bmREYXRhIDogX2RhdGEpIHsKICAgICAgICAgTlNEYXRhICpkYXRhID0gKF9fYnJpZGdlIE5TRGF0
YSAqKXR5cGVBbmREYXRhLnZhbHVlLmdldCgpOwogICAgICAgICBOU1N0cmluZyAqdHlwZSA9IChf
X2JyaWRnZSBOU1N0cmluZyAqKXR5cGVBbmREYXRhLmtleS5nZXQoKTsKICAgICAgICAgW2l0ZW0g
c2V0RGF0YTpkYXRhIGZvclR5cGU6dHlwZV07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>