<?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>106061</bug_id>
          
          <creation_ts>2013-01-03 15:55:40 -0800</creation_ts>
          <short_desc>[wk2] Remove offscreen tiles from the layer tree</short_desc>
          <delta_ts>2013-02-04 14:54:06 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>barraclough</cc>
    
    <cc>bdakin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>799792</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-03 15:55:40 -0800</bug_when>
    <thetext>We should remove TileCache tiles from the layer tree when they&apos;re not visible so that the OS can manage their memory as it wishes. The exact semantics haven&apos;t been worked out yet, but I have a preliminary patch.

&lt;rdar://problem/12761821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800175</commentid>
    <comment_count>1</comment_count>
      <attachid>181297</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-04 06:32:01 -0800</bug_when>
    <thetext>Created attachment 181297
possibly a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800194</commentid>
    <comment_count>2</comment_count>
      <attachid>181297</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-04 07:11:45 -0800</bug_when>
    <thetext>Comment on attachment 181297
possibly a patch

Attachment 181297 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15677183

New failing tests:
compositing/tiling/tiled-layer-resize.html
compositing/tiling/rotated-tiled-preserve3d-clamped.html
fast/sub-pixel/sub-pixel-iframe-copy-on-scroll.html
fast/sub-pixel/sub-pixel-accumulates-to-layers.html
compositing/tiling/rotated-tiled-clamped.html
fast/sub-pixel/transformed-iframe-copy-on-scroll.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800338</commentid>
    <comment_count>3</comment_count>
      <attachid>181297</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-04 10:24:09 -0800</bug_when>
    <thetext>Comment on attachment 181297
possibly a patch

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

&gt; Source/WebCore/page/Settings.cpp:189
&gt; +    , m_aggressiveTileRetentionEnabled(false)

Why isn&apos;t m_unparentOffscreenTilesEnabled initialized?

&gt; Source/WebCore/platform/graphics/TiledBacking.h:78
&gt; +    virtual void setAggressiveTileRetentionEnabled(bool) = 0;
&gt; +    virtual bool aggressiveTileRetentionEnabled() const = 0;
&gt; +    
&gt; +    virtual void setUnparentOffscreenTilesEnabled(bool) = 0;
&gt; +    virtual bool unparentOffscreenTilesEnabled() const = 0;
&gt; +    

These sound like setting plumbing. I think they would read better as
setAggressivelyRetainsTiles()
setUnparentsOffscreenTiles() etc.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.h:143
&gt; +        RemoveTilesFromLayerTree = 1 &lt;&lt; 2

I see no downside to always unparenting non TCR tiles. Maybe we should just always do this?

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:320
&gt; +    if (m_isInWindow) {
&gt; +        scheduleTileRevalidation(0);
&gt; +    } else {
&gt;          const double tileRevalidationTimeout = 4;
&gt;          scheduleTileRevalidation(tileRevalidationTimeout);
&gt;      }

This would be better as:
scheduleTileRevalidation(m_isInWindow ? 0 : tileRevalidationTimeout);

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:452
&gt; +    if (!m_unparentOffscreenTilesEnabled || m_isInWindow)
&gt; +        revalidationPolicyFlags = CreatePrimaryTiles | PruneSecondaryTiles;
&gt; +    else
&gt; +        revalidationPolicyFlags = PruneSecondaryTiles | RemoveTilesFromLayerTree;

This gets simpler if we always remove tiles. CreatePrimaryTiles is only to avoid making primary tiles in background tabs, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800510</commentid>
    <comment_count>4</comment_count>
      <attachid>181357</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-04 12:27:49 -0800</bug_when>
    <thetext>Created attachment 181357
better patch

I&apos;m going to look at the test failures now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800544</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-04 12:56:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 181297 [details])
&gt; Attachment 181297 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/15677183
&gt; 
&gt; New failing tests:
&gt; compositing/tiling/tiled-layer-resize.html
&gt; compositing/tiling/rotated-tiled-preserve3d-clamped.html
&gt; fast/sub-pixel/sub-pixel-iframe-copy-on-scroll.html
&gt; fast/sub-pixel/sub-pixel-accumulates-to-layers.html
&gt; compositing/tiling/rotated-tiled-clamped.html
&gt; fast/sub-pixel/transformed-iframe-copy-on-scroll.html

Three I can&apos;t reproduce (compositing/tiling), three are &quot;missing expected result&quot; :\ (fast/sub-pixel).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800612</commentid>
    <comment_count>6</comment_count>
      <attachid>181357</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-04 14:29:10 -0800</bug_when>
    <thetext>Comment on attachment 181357
better patch

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

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:594
&gt; +                    if (m_unparentsOffscreenTiles)

Why isn&apos;t this checking for the RemoveTilesFromLayerTree flag?

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:653
&gt; +    if (validationPolicy &amp; RemoveTilesFromLayerTree) {

The confusion  between m_unparentsOffscreenTiles and RemoveTilesFromLayerTree is great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800660</commentid>
    <comment_count>7</comment_count>
      <attachid>181386</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-04 15:07:42 -0800</bug_when>
    <thetext>Created attachment 181386
simpler patch, always unparent (remove the setting)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800670</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-04 15:17:55 -0800</bug_when>
    <thetext>Thanks, Simon!

http://trac.webkit.org/changeset/138858</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801353</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-07 09:52:14 -0800</bug_when>
    <thetext>This caused bug 106205.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824794</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-04 14:54:06 -0800</bug_when>
    <thetext>This also caused https://bugs.webkit.org/show_bug.cgi?id=108864.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181297</attachid>
            <date>2013-01-04 06:32:01 -0800</date>
            <delta_ts>2013-01-04 12:27:49 -0800</delta_ts>
            <desc>possibly a patch</desc>
            <filename>purgable-tiles-opensource.diff</filename>
            <type>text/plain</type>
            <size>28997</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYmJmNDQ3Li41MTRlZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTMtMDEtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gUmVtb3ZlIG5vbi12aXNpYmxlIHRpbGVzIGZyb20gdGhlIGxheWVyIHRy
ZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjA2
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI3NjE4MjE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5wYXJlbnRpbmcgdGlsZXMgd2hpY2ggYXJl
bid0IGN1cnJlbnRseSBvbi1zY3JlZW4gY2FuIGFsbG93IHVuZGVybHlpbmcKKyAgICAgICAgZnJh
bWV3b3JrcyB0byBtYW5hZ2UgdGhlIGxheWVyJ3MgYmFja2luZyBzdG9yZXMgbW9yZSBlZmZlY3Rp
dmVseSB0aGFuIHdlIGNhbi4KKyAgICAgICAgQWRkIGEgc2V0dGluZyB0byBjb250cm9sIHdoZXRo
ZXIgd2UgZG8gdGhpcyAoVW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQpLgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBhZGQgYSBzZXR0aW5nIChBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJs
ZWQpIHdoaWNoIGtlZXBzIG1vcmUKKyAgICAgICAgdGlsZXMgYXJvdW5kICh3ZSBkb24ndCByZW1v
dmUgdGlsZXMgaW4gY29ob3J0cywgbm9yIHdoZW4gdGhlIFRpbGVDYWNoZSBtb3ZlcworICAgICAg
ICBvdXQgb2YgdGhlIHdpbmRvdyksIHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0LgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBTZXR0aW5nczo6c2V0QWdncmVzc2l2ZVRpbGVSZXRl
bnRpb25FbmFibGVkL3NldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkLgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdz
KTogSW5pdGlhbGl6ZSBtX2FnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZC9tX3VucGFyZW50
T2Zmc2NyZWVuVGlsZXNFbmFibGVkIHRvIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKTogQWRk
ZWQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OnVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmg6IEFkZCBzZXR0ZXIvZ2V0
dGVyIHRvIGhhbmQgYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkL3VucGFyZW50T2Zmc2Ny
ZWVuVGlsZXNFbmFibGVkIHRocm91Z2ggdG8gVGlsZWRCYWNraW5ncy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmg6CisgICAgICAgIChUaWxlQ2FjaGUpOiBU
dXJuIFRpbGVWYWxpZGF0aW9uUG9saWN5IGludG8gVGlsZVZhbGlkYXRpb25Qb2xpY3lGbGFncywg
YW5kIGFkZAorICAgICAgICBvbmUgZmxhZyBmb3IgcHJpbWFyeSB0aWxlIGNyZWF0aW9uIGFuZCBv
bmUgZm9yIHJlbW92aW5nIHRpbGVzIGZyb20gdGhlIGxheWVyIHRyZWUuCisgICAgICAgIEltcGxl
bWVudCBhZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQgc2V0dGVyL2dldHRlci4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNhY2hlOjpUaWxlQ2FjaGUpOiBJbml0aWFsaXplIG1fYWdncmVzc2l2ZVRpbGVS
ZXRlbnRpb25FbmFibGVkL21fdW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQgdG8gZmFsc2Uu
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnNldElzSW5XaW5kb3cpOiBSZXZhbGlkYXRl
IHRpbGVzIGltbWVkaWF0ZWx5IGlmIHRoZSBUaWxlQ2FjaGUgaGFzIGp1c3QgZW50ZXJlZCB0aGUg
d2luZG93LgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjp0aWxlUmV2YWxpZGF0aW9uVGlt
ZXJGaXJlZCk6CisgICAgICAgIFRoaXMgaXMgY2FsbGVkIGlmIGNvdmVyYWdlIHJlY3QsIHRpbGUg
Y2FjaGUgbGF5ZXIgYm91bmRzLCBvciB2aXNpYmlsaXR5IGNoYW5nZXMuIFdlIHdpbGwgcmV2YWxp
ZGF0ZSB0aWxlczoKKyAgICAgICAgICAgIC0gTWF0Y2hpbmcgY3VycmVudCBiZWhhdmlvciAoY3Jl
YXRlIG5ldyB0aWxlcywgcHJ1bmUgc2Vjb25kYXJ5IHRpbGVzKSBpZiB3ZSBkb24ndCB3YW50IHRv
IHVucGFyZW50IG9mZnNjcmVlbiB0aWxlcy4KKyAgICAgICAgICAgIC0gTWF0Y2hpbmcgY3VycmVu
dCBiZWhhdmlvciBpZiB0aGUgVGlsZUNhY2hlIGlzIGN1cnJlbnRseSBpbiB0aGUgd2luZG93Lgor
ICAgICAgICAgICAgLSBSZW1vdmluZyBhbGwgdGlsZXMgZnJvbSB0aGUgbGF5ZXIgdHJlZSBpZiB0
aGUgVGlsZUNhY2hlIGlzIG5vdCBjdXJyZW50bHkgaW4gdGhlIHdpbmRvdy4KKyAgICAgICAgICAg
IC0gTm90IHBydW5pbmcgb2xkIHRpbGVzIGluIGFueSBjYXNlIGlmIHRoZSBhZ2dyZXNzaXZlVGls
ZVJldGVudGlvbkVuYWJsZWQgc2V0dGluZyBpcyBvbiAodGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBi
eSByZXZhbGlkYXRlVGlsZXMgaWYgdGhlIHZpc2libGUgcmVjdCBzaXplIGNoYW5nZXMpLgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICBBZG9w
dCBUaWxlVmFsaWRhdGlvblBvbGljeUZsYWdzIGluc3RlYWQgb2YgdGhlIG9sZCBlbnVtLgorICAg
ICAgICBEb24ndCBib3RoZXIgZG9pbmcgYW55IHdvcmsgaWYgdGhlIFRpbGVDYWNoZSBpcyBub3Qg
aW4gdGhlIHdpbmRvdyBhbmQgaGFzIG5vIHRpbGVzIHRvIGFjdCBvbi4KKyAgICAgICAgVW5wYXJl
bnQgdGlsZXMgd2hlbiB0aGV5IG1vdmUgb3V0IG9mIHRoZSB0aWxlIGNvdmVyYWdlIHJlY3QsIGlm
IHdlIHdhbnQgdG8gdW5wYXJlbnQgb2Zmc2NyZWVuIHRpbGVzLgorICAgICAgICBPbmx5IHNjaGVk
dWxlIHRoZSB0aWxlIGNvaG9ydCByZW1vdmFsIHRpbWVyIGlmIHdlJ3JlIG5vdCBhZ2dyZXNzaXZl
bHkga2VlcGluZyB0aWxlcyBhcm91bmQuCisgICAgICAgIEVuc3VyZSB0aGF0IHRpbGVzIGFyZSBy
ZS1hZGRlZCB0byB0aGUgVGlsZUNhY2hlIGxheWVyIHRyZWUgaWYgdGhleSBhbHJlYWR5IGV4aXN0
LgorICAgICAgICBVbnBhcmVudCBhbGwgdGlsZXMgaWYgVGlsZVZhbGlkYXRpb25Qb2xpY3lGbGFn
cyBzYXlzIHRvIChmcm9tIHRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkLCBpZiB3ZSdyZSBub3Qg
aW4gdGhlIHdpbmRvdyBhbmQgd2FudCB0byB1bnBhcmVudCBvZmZzY3JlZW4gdGlsZXMpLgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjplbnN1cmVUaWxlc0ZvclJlY3QpOgorICAgICAgICBE
b24ndCBlbnN1cmUgYW55IHRpbGVzIGlmIHRoZSBUaWxlQ2FjaGUgaXMgb2Zmc2NyZWVuLgorICAg
ICAgICBFbnN1cmUgdGhhdCB0aWxlcyBhcmUgcmUtYWRkZWQgdG8gdGhlIFRpbGVDYWNoZSBsYXll
ciB0cmVlIGlmIHRoZXkgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNo
ZTo6ZHJhd1RpbGVNYXBDb250ZW50cyk6CisgICAgICAgIERyYXcgYSB0aGljayBwdXJwbGUgYm9y
ZGVyIGFyb3VuZCB0aWxlcyB0aGF0IGhhdmUgYmVlbiB1bnBhcmVudGVkLgorCiAyMDEzLTAxLTAz
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgTm8gd2F5IHRvIG9i
dGFpbiBhIERPTU5vZGUgZ2l2ZW4gYSBKUyB3cmFwcGVyIGZvciBhIE5vZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggYTFlYTZiNS4uMTQ5MzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTk4
NSw2ICs5ODUsOCBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMmRlZmF1bHRET01UaW1lckFsaWdu
bWVudEludGVydmFsRXYKIF9fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzJzZXROZWVkc0Fkb2JlRnJh
bWVSZWxvYWRpbmdRdWlya0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMnNldFNjcmVlbkZvbnRT
dWJzdGl0dXRpb25FbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0VW5wYXJlbnRP
ZmZzY3JlZW5UaWxlc0VuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMzNzZXRBZ2dyZXNz
aXZlVGlsZVJldGVudGlvbkVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzdzZXRTY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczQ1
c2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzRWIKIF9fWk43V2Vi
Q29yZThTZXR0aW5nczIxc2V0UmVzb2x1dGlvbk92ZXJyaWRlRVJLTlNfN0ludFNpemVFCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDBhMWY5M2YuLmRkZDEyNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCkBAIC0xODYsNiArMTg2LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKQogI2VuZGlm
CiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCisgICAg
LCBtX2FnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2V0SW1h
Z2VMb2FkaW5nU2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRp
bmdzVGltZXJGaXJlZCkKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0
ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTY0MSw2ICs2NDIs
MTYgQEAgdm9pZCBTZXR0aW5nczo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkgJiYgbV9wYWdlLT5t
YWluRnJhbWUoKS0+dmlldygpKQogICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkt
PnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CisgICAg
Cit2b2lkIFNldHRpbmdzOjpzZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKQoreworICAgIG1fYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkID0gZW5hYmxl
ZDsKK30KKyAgICAKK3ZvaWQgU2V0dGluZ3M6OnNldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3VucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVk
ID0gZW5hYmxlZDsKK30KIAogdm9pZCBTZXR0aW5nczo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVk
KGJvb2wgZmxhZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBhNmZhMGZlLi4wZTMwMmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0yOTIsNiArMjkyLDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQor
ICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQo
Ym9vbCk7CisgICAgICAgIGJvb2wgYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCkgeyBy
ZXR1cm4gbV9hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQ7IH0KKyAgICAgICAgCisgICAg
ICAgIHZvaWQgc2V0VW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoYm9vbCk7CisgICAgICAg
IGJvb2wgdW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoKSB7IHJldHVybiBtX3VucGFyZW50
T2Zmc2NyZWVuVGlsZXNFbmFibGVkOyB9CiAKICNpZiBVU0UoSlNDKQogICAgICAgICBzdGF0aWMg
dm9pZCBzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoYm9vbCk7
CkBAIC0zNjYsNiArMzcyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX2Fn
Z3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCA6IDE7CisgICAgICAgIGJvb2wgbV91bnBhcmVu
dE9mZnNjcmVlblRpbGVzRW5hYmxlZCA6IDE7CiAKICAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1f
c2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKICAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdT
ZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCmluZGV4IDU2ZDczNmEuLjRhODBiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5o
CkBAIC03MCw2ICs3MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIAorICAg
IHZpcnR1YWwgdm9pZCBzZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBhZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoKSBjb25z
dCA9IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNF
bmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdW5wYXJlbnRPZmZzY3JlZW5UaWxl
c0VuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdGluZwog
ICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgSW50UmVjdCB0aWxlR3JpZEV4dGVudCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaAppbmRleCA0N2E3
ODc2Li45ODY0Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1RpbGVDYWNoZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsNiArMTE1LDEwIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBJbnRSZWN0IHRpbGVHcmlkRXh0ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBm
bGFnKSBPVkVSUklERSB7IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IGZs
YWc7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQoYm9vbCBmbGFnKSBPVkVSUklERSB7IG1fYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFi
bGVkID0gZmxhZzsgfQorICAgIHZpcnR1YWwgYm9vbCBhZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2FnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9u
RW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVbnBhcmVudE9mZnNjcmVlblRpbGVzRW5h
YmxlZChib29sIGZsYWcpIE9WRVJSSURFIHsgbV91bnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxl
ZCA9IGZsYWc7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJs
ZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3VucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFi
bGVkOyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIENBTGF5ZXIgKnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsaW5nTW9kZUluZGljYXRpb24o
U2Nyb2xsaW5nTW9kZUluZGljYXRpb24pIE9WRVJSSURFOwpAQCAtMTMzLDExICsxMzcsMTQgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ29ob3J0UmVtb3ZhbCgpOwogICAgIHZvaWQgY29o
b3J0UmVtb3ZhbFRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hlPiopOwogICAgIAotICAgIGVudW0g
VGlsZVZhbGlkYXRpb25Qb2xpY3kgewotICAgICAgICBLZWVwU2Vjb25kYXJ5VGlsZXMsCi0gICAg
ICAgIFBydW5lU2Vjb25kYXJ5VGlsZXMKKyAgICBlbnVtIFRpbGVWYWxpZGF0aW9uUG9saWN5Rmxh
ZyB7CisgICAgICAgIENyZWF0ZVByaW1hcnlUaWxlcyA9IDEgPDwgMCwKKyAgICAgICAgUHJ1bmVT
ZWNvbmRhcnlUaWxlcyA9IDEgPDwgMSwKKyAgICAgICAgUmVtb3ZlVGlsZXNGcm9tTGF5ZXJUcmVl
ID0gMSA8PCAyCiAgICAgfTsKLSAgICB2b2lkIHJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlv
blBvbGljeSA9IEtlZXBTZWNvbmRhcnlUaWxlcyk7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBUaWxl
VmFsaWRhdGlvblBvbGljeUZsYWdzOworCisgICAgdm9pZCByZXZhbGlkYXRlVGlsZXMoVGlsZVZh
bGlkYXRpb25Qb2xpY3lGbGFncyA9IENyZWF0ZVByaW1hcnlUaWxlcyk7CiAgICAgdm9pZCBlbnN1
cmVUaWxlc0ZvclJlY3QoY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVy
YWdlTWFwKCk7CiAKQEAgLTE5MSw2ICsxOTgsOCBAQCBwcml2YXRlOgogICAgIFRpbGVDb3ZlcmFn
ZSBtX3RpbGVDb3ZlcmFnZTsKICAgICBib29sIG1faXNJbldpbmRvdzsKICAgICBib29sIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKKyAgICBib29sIG1fYWdncmVzc2l2ZVRp
bGVSZXRlbnRpb25FbmFibGVkOworICAgIGJvb2wgbV91bnBhcmVudE9mZnNjcmVlblRpbGVzRW5h
YmxlZDsKICAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogICAgIGJvb2wgbV90aWxlc0Fy
ZU9wYXF1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1RpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9UaWxlQ2FjaGUubW0KaW5kZXggMmUwMzk5YS4uY2U5ZmY4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMDAsNiArMTAwLDggQEAgVGlsZUNhY2hlOjpUaWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIq
IHRpbGVDYWNoZUxheWVyKQogICAgICwgbV90aWxlQ292ZXJhZ2UoQ292ZXJhZ2VGb3JWaXNpYmxl
QXJlYSkKICAgICAsIG1faXNJbldpbmRvdyhmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fYWdncmVzc2l2ZVRpbGVSZXRlbnRp
b25FbmFibGVkKGZhbHNlKQorICAgICwgbV91bnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZChm
YWxzZSkKICAgICAsIG1fYWNjZWxlcmF0ZXNEcmF3aW5nKGZhbHNlKQogICAgICwgbV90aWxlc0Fy
ZU9wYXF1ZShmYWxzZSkKICAgICAsIG1fdGlsZURlYnVnQm9yZGVyV2lkdGgoMCkKQEAgLTMxMCw3
ICszMTIsOSBAQCB2b2lkIFRpbGVDYWNoZTo6c2V0SXNJbldpbmRvdyhib29sIGlzSW5XaW5kb3cp
CiAKICAgICBtX2lzSW5XaW5kb3cgPSBpc0luV2luZG93OwogCi0gICAgaWYgKCFtX2lzSW5XaW5k
b3cpIHsKKyAgICBpZiAobV9pc0luV2luZG93KSB7CisgICAgICAgIHNjaGVkdWxlVGlsZVJldmFs
aWRhdGlvbigwKTsKKyAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBkb3VibGUgdGlsZVJldmFs
aWRhdGlvblRpbWVvdXQgPSA0OwogICAgICAgICBzY2hlZHVsZVRpbGVSZXZhbGlkYXRpb24odGls
ZVJldmFsaWRhdGlvblRpbWVvdXQpOwogICAgIH0KQEAgLTQ0MCw3ICs0NDQsMTcgQEAgdm9pZCBU
aWxlQ2FjaGU6OnNjaGVkdWxlVGlsZVJldmFsaWRhdGlvbihkb3VibGUgaW50ZXJ2YWwpCiAKIHZv
aWQgVGlsZUNhY2hlOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+
KikKIHsKLSAgICByZXZhbGlkYXRlVGlsZXMoUHJ1bmVTZWNvbmRhcnlUaWxlcyk7CisgICAgVGls
ZVZhbGlkYXRpb25Qb2xpY3lGbGFncyByZXZhbGlkYXRpb25Qb2xpY3lGbGFncyA9IDA7CisKKyAg
ICBpZiAoIW1fdW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQgfHwgbV9pc0luV2luZG93KQor
ICAgICAgICByZXZhbGlkYXRpb25Qb2xpY3lGbGFncyA9IENyZWF0ZVByaW1hcnlUaWxlcyB8IFBy
dW5lU2Vjb25kYXJ5VGlsZXM7CisgICAgZWxzZQorICAgICAgICByZXZhbGlkYXRpb25Qb2xpY3lG
bGFncyA9IFBydW5lU2Vjb25kYXJ5VGlsZXMgfCBSZW1vdmVUaWxlc0Zyb21MYXllclRyZWU7Cisg
ICAgCisgICAgaWYgKG1fYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKQorICAgICAgICBy
ZXZhbGlkYXRpb25Qb2xpY3lGbGFncyAmPSB+UHJ1bmVTZWNvbmRhcnlUaWxlczsKKworICAgIHJl
dmFsaWRhdGVUaWxlcyhyZXZhbGlkYXRpb25Qb2xpY3lGbGFncyk7CiB9CiAKIHVuc2lnbmVkIFRp
bGVDYWNoZTo6YmxhbmtQaXhlbENvdW50KCkgY29uc3QKQEAgLTUzMSw3ICs1NDUsNyBAQCB2b2lk
IFRpbGVDYWNoZTo6cmVtb3ZlVGlsZXNJbkNvaG9ydChUaWxlQ29ob3J0IGNvaG9ydCkKICAgICB9
CiB9CiAKLXZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xp
Y3kgdmFsaWRhdGlvblBvbGljeSkKK3ZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMoVGls
ZVZhbGlkYXRpb25Qb2xpY3lGbGFncyB2YWxpZGF0aW9uUG9saWN5KQogewogICAgIC8vIElmIHRo
ZSB1bmRlcmx5aW5nIFBsYXRmb3JtTGF5ZXIgaGFzIGJlZW4gZGVzdHJveWVkLCBidXQgdGhlIFdl
YlRpbGVDYWNoZUxheWVyIGhhc24ndAogICAgIC8vIHBsYXRmb3JtTGF5ZXIgd2lsbCBiZSBudWxs
IGhlcmUuCkBAIC01NDEsMTIgKzU1NSwxNiBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRp
bGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAKICAgICBpZiAobV92
aXNpYmxlUmVjdC5pc0VtcHR5KCkgfHwgYm91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CisgICAgCisgICAgLy8gSWYgd2UncmUgaW4gdGhlIGJhY2tncm91bmQgYW5kIGhhdmUgbm8g
dGlsZXMsIHdlIGhhdmUgbm8gd29yayB0byBkby4KKyAgICBpZiAoIW1faXNJbldpbmRvdyAmJiBt
X3RpbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgdGhlIHZpc2li
bGUgcmVjdCBzaXplIGNoYW5nZWQsIGRyb3Agc2Vjb25kYXJ5IHRpbGVzIHRvIGF2b2lkIGxvdHMg
b2YgcmVwYWludGluZy4KICAgICAvLyBGSVhNRTogd2hlbiBzY2FsZWQsIHRoaXMgY2hhbmdlcyBk
dWUgdG8gcm91bmRpbmcuIFdlIHNob3VsZCB1c2UgRmxvYXRSZWN0cyBvciBzb21ldGhpbmcuCiAg
ICAgLy8gQWxzbyBjaGFuZ2VzIG9uIHJ1YmJlciBiYW5kaW5nLgogICAgIGlmIChtX3Zpc2libGVS
ZWN0QXRMYXN0UmV2YWxpZGF0ZS5zaXplKCkgIT0gbV92aXNpYmxlUmVjdC5zaXplKCkpCi0gICAg
ICAgIHZhbGlkYXRpb25Qb2xpY3kgPSBQcnVuZVNlY29uZGFyeVRpbGVzOworICAgICAgICB2YWxp
ZGF0aW9uUG9saWN5IHw9IFBydW5lU2Vjb25kYXJ5VGlsZXM7CiAgICAgCiAgICAgSW50UmVjdCB0
aWxlQ292ZXJhZ2VSZWN0ID0gY29tcHV0ZVRpbGVDb3ZlcmFnZVJlY3QobV92aXNpYmxlUmVjdEF0
TGFzdFJldmFsaWRhdGUpOwogICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0KHRpbGVDb3ZlcmFnZVJl
Y3QpOwpAQCAtNTgzLDYgKzYwMSw5IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMo
VGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRhdGlvblBvbGljeSkKICAgICAgICAgICAgICAgICBp
ZiAodGlsZUluZm8uY29ob3J0ID09IFZpc2libGVUaWxlQ29ob3J0KSB7CiAgICAgICAgICAgICAg
ICAgICAgIHRpbGVJbmZvLmNvaG9ydCA9IGN1cnJDb2hvcnQ7CiAgICAgICAgICAgICAgICAgICAg
ICsrdGlsZXNJbkNvaG9ydDsKKworICAgICAgICAgICAgICAgICAgICBpZiAobV91bnBhcmVudE9m
ZnNjcmVlblRpbGVzRW5hYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlSW5mby5s
YXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC01OTAsNyArNjExLDggQEAgdm9pZCBUaWxlQ2FjaGU6
OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeSB2YWxpZGF0aW9uUG9saWN5KQog
ICAgICAgICBpZiAodGlsZXNJbkNvaG9ydCkKICAgICAgICAgICAgIHN0YXJ0ZWROZXdDb2hvcnQo
Y3VyckNvaG9ydCk7CiAKLSAgICAgICAgc2NoZWR1bGVDb2hvcnRSZW1vdmFsKCk7CisgICAgICAg
IGlmICghbV9hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQpCisgICAgICAgICAgICBzY2hl
ZHVsZUNvaG9ydFJlbW92YWwoKTsKICAgICB9CiAKICAgICBUaWxlSW5kZXggdG9wTGVmdDsKQEAg
LTYwMSwzNyArNjIzLDQ3IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZh
bGlkYXRpb25Qb2xpY3kgdmFsaWRhdGlvblBvbGljeSkKICAgICAKICAgICAvLyBFbnN1cmUgcHJp
bWFyeSB0aWxlIGNvdmVyYWdlIHRpbGVzLgogICAgIG1fcHJpbWFyeVRpbGVDb3ZlcmFnZVJlY3Qg
PSBJbnRSZWN0KCk7Ci0gICAgCi0gICAgZm9yIChpbnQgeSA9IHRvcExlZnQueSgpOyB5IDw9IGJv
dHRvbVJpZ2h0LnkoKTsgKyt5KSB7Ci0gICAgICAgIGZvciAoaW50IHggPSB0b3BMZWZ0LngoKTsg
eCA8PSBib3R0b21SaWdodC54KCk7ICsreCkgewotICAgICAgICAgICAgVGlsZUluZGV4IHRpbGVJ
bmRleCh4LCB5KTsKIAotICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxl
SW5kZXgodGlsZUluZGV4KTsKLSAgICAgICAgICAgIG1fcHJpbWFyeVRpbGVDb3ZlcmFnZVJlY3Qu
dW5pdGUodGlsZVJlY3QpOworICAgIGlmICh2YWxpZGF0aW9uUG9saWN5ICYgQ3JlYXRlUHJpbWFy
eVRpbGVzKSB7CisgICAgICAgIGZvciAoaW50IHkgPSB0b3BMZWZ0LnkoKTsgeSA8PSBib3R0b21S
aWdodC55KCk7ICsreSkgeworICAgICAgICAgICAgZm9yIChpbnQgeCA9IHRvcExlZnQueCgpOyB4
IDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4KSB7CisgICAgICAgICAgICAgICAgVGlsZUluZGV4IHRp
bGVJbmRleCh4LCB5KTsKIAotICAgICAgICAgICAgVGlsZUluZm8mIHRpbGVJbmZvID0gbV90aWxl
cy5hZGQodGlsZUluZGV4LCBUaWxlSW5mbygpKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAg
ICBpZiAoIXRpbGVJbmZvLmxheWVyKSB7Ci0gICAgICAgICAgICAgICAgdGlsZUluZm8ubGF5ZXIg
PSBjcmVhdGVUaWxlTGF5ZXIodGlsZVJlY3QpOwotICAgICAgICAgICAgICAgIFttX3RpbGVDb250
YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjp0aWxlSW5mby5sYXllci5nZXQoKV07Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGxh
eWVyIGZvciB0aGlzIHRpbGUuIEVuc3VyZSB0aGF0IGl0cyBzaXplIGlzIGNvcnJlY3QuCi0gICAg
ICAgICAgICAgICAgRmxvYXRTaXplIHRpbGVMYXllclNpemUoW3RpbGVJbmZvLmxheWVyLmdldCgp
IGZyYW1lXS5zaXplKTsKLSAgICAgICAgICAgICAgICBpZiAodGlsZUxheWVyU2l6ZSA9PSBGbG9h
dFNpemUodGlsZVJlY3Quc2l6ZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxlSW5kZXgodGlsZUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBtX3ByaW1hcnlUaWxlQ292ZXJhZ2VSZWN0LnVuaXRlKHRp
bGVSZWN0KTsKIAotICAgICAgICAgICAgICAgIFt0aWxlSW5mby5sYXllci5nZXQoKSBzZXRGcmFt
ZTp0aWxlUmVjdF07CisgICAgICAgICAgICAgICAgVGlsZUluZm8mIHRpbGVJbmZvID0gbV90aWxl
cy5hZGQodGlsZUluZGV4LCBUaWxlSW5mbygpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAg
ICAgICAgaWYgKCF0aWxlSW5mby5sYXllcikgeworICAgICAgICAgICAgICAgICAgICB0aWxlSW5m
by5sYXllciA9IGNyZWF0ZVRpbGVMYXllcih0aWxlUmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IFttX3RpbGVDb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjp0aWxlSW5mby5sYXllci5n
ZXQoKV07CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFbdGlsZUluZm8ubGF5ZXIuZ2V0KCkgc3VwZXJsYXllcl0pCisgICAgICAgICAgICAgICAgICAg
ICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5
ZXIuZ2V0KCldOworCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGxh
eWVyIGZvciB0aGlzIHRpbGUuIEVuc3VyZSB0aGF0IGl0cyBzaXplIGlzIGNvcnJlY3QuCisgICAg
ICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSB0aWxlTGF5ZXJTaXplKFt0aWxlSW5mby5sYXllci5n
ZXQoKSBmcmFtZV0uc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aWxlTGF5ZXJTaXpl
ID09IEZsb2F0U2l6ZSh0aWxlUmVjdC5zaXplKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgW3RpbGVJbmZvLmxheWVyLmdldCgpIHNl
dEZyYW1lOnRpbGVSZWN0XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgRmxvYXRSZWN0IHNjYWxlZFRpbGVSZWN0ID0gdGlsZVJlY3Q7CisgICAg
ICAgICAgICAgICAgc2NhbGVkVGlsZVJlY3Quc2NhbGUoMSAvIG1fc2NhbGUpOworICAgICAgICAg
ICAgICAgIGRpcnR5UmVjdHMuYXBwZW5kKHNjYWxlZFRpbGVSZWN0KTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgRmxvYXRSZWN0IHNjYWxlZFRpbGVSZWN0ID0gdGls
ZVJlY3Q7Ci0gICAgICAgICAgICBzY2FsZWRUaWxlUmVjdC5zY2FsZSgxIC8gbV9zY2FsZSk7Ci0g
ICAgICAgICAgICBkaXJ0eVJlY3RzLmFwcGVuZChzY2FsZWRUaWxlUmVjdCk7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAodmFsaWRhdGlvblBvbGljeSA9PSBQcnVuZVNlY29uZGFyeVRpbGVz
KSB7CisgICAgaWYgKHZhbGlkYXRpb25Qb2xpY3kgJiBQcnVuZVNlY29uZGFyeVRpbGVzKSB7CiAg
ICAgICAgIHJlbW92ZUFsbFNlY29uZGFyeVRpbGVzKCk7CiAgICAgICAgIG1fY29ob3J0TGlzdC5j
bGVhcigpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uUG9saWN5ICYgUmVtb3ZlVGlsZXNG
cm9tTGF5ZXJUcmVlKSB7CisgICAgICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Rp
bGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgICAgIFtpdC0+dmFsdWUubGF5ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAg
IH0KICAgICAKICAgICBpZiAobV90aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKQogICAgICAg
ICB1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKTsKQEAgLTY2OSw3ICs3MDEsNyBAQCBUaWxlQ2FjaGU6
OlRpbGVDb2hvcnQgVGlsZUNhY2hlOjpvbGRlc3RUaWxlQ29ob3J0KCkgY29uc3QKIHZvaWQgVGls
ZUNhY2hlOjpzY2hlZHVsZUNvaG9ydFJlbW92YWwoKQogewogICAgIGNvbnN0IGRvdWJsZSBjb2hv
cnRSZW1vdmFsVGltZXJTZWNvbmRzID0gMTsKLSAgICAKKwogICAgIC8vIFN0YXJ0IHRoZSB0aW1l
ciwgb3IgcmVzY2hlZHVsZSB0aGUgdGltZXIgZnJvbSBub3cgaWYgaXQncyBhbHJlYWR5IGFjdGl2
ZS4KICAgICBpZiAoIW1fY29ob3J0UmVtb3ZhbFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
Y29ob3J0UmVtb3ZhbFRpbWVyLnN0YXJ0UmVwZWF0aW5nKGNvaG9ydFJlbW92YWxUaW1lclNlY29u
ZHMpOwpAQCAtNjg0LDcgKzcxNiw3IEBAIHZvaWQgVGlsZUNhY2hlOjpjb2hvcnRSZW1vdmFsVGlt
ZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+KikKIAogICAgIGRvdWJsZSBjb2hvcnRMaWZlVGltZVNl
Y29uZHMgPSAyOwogICAgIGRvdWJsZSB0aW1lVGhyZXNob2xkID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkgLSBjb2hvcnRMaWZlVGltZVNlY29uZHM7Ci0gICAgCisKICAgICB3aGlsZSAo
IW1fY29ob3J0TGlzdC5pc0VtcHR5KCkgJiYgbV9jb2hvcnRMaXN0LmZpcnN0KCkuY3JlYXRpb25U
aW1lIDwgdGltZVRocmVzaG9sZCkgewogICAgICAgICBUaWxlQ29ob3J0SW5mbyBmaXJzdENvaG9y
dCA9IG1fY29ob3J0TGlzdC50YWtlRmlyc3QoKTsKICAgICAgICAgcmVtb3ZlVGlsZXNJbkNvaG9y
dChmaXJzdENvaG9ydC5jb2hvcnQpOwpAQCAtNjk2LDYgKzcyOCw5IEBAIHZvaWQgVGlsZUNhY2hl
Ojpjb2hvcnRSZW1vdmFsVGltZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+KikKIAogdm9pZCBUaWxl
Q2FjaGU6OmVuc3VyZVRpbGVzRm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogeworICAgIGlm
ICghbV9pc0luV2luZG93KQorICAgICAgICByZXR1cm47CisKICAgICBQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihtX3RpbGVD
YWNoZUxheWVyKTsKICAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAg
LTcyNSw2ICs3NjAsOSBAQCB2b2lkIFRpbGVDYWNoZTo6ZW5zdXJlVGlsZXNGb3JSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgdGlsZUluZm8ubGF5ZXIgPSBjcmVhdGVU
aWxlTGF5ZXIodGlsZVJlY3QpOwogICAgICAgICAgICAgICAgIFttX3RpbGVDb250YWluZXJMYXll
ci5nZXQoKSBhZGRTdWJsYXllcjp0aWxlSW5mby5sYXllci5nZXQoKV07CiAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghW3RpbGVJbmZvLmxheWVyLmdldCgpIHN1cGVy
bGF5ZXJdKQorICAgICAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkg
YWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5ZXIuZ2V0KCldOworCiAgICAgICAgICAgICAgICAgLy8g
V2UgYWxyZWFkeSBoYXZlIGEgbGF5ZXIgZm9yIHRoaXMgdGlsZS4gRW5zdXJlIHRoYXQgaXRzIHNp
emUgaXMgY29ycmVjdC4KICAgICAgICAgICAgICAgICBDR1NpemUgdGlsZUxheWVyU2l6ZSA9IFt0
aWxlSW5mby5sYXllci5nZXQoKSBmcmFtZV0uc2l6ZTsKICAgICAgICAgICAgICAgICBpZiAodGls
ZUxheWVyU2l6ZS53aWR0aCA+PSB0aWxlUmVjdC53aWR0aCgpICYmIHRpbGVMYXllclNpemUuaGVp
Z2h0ID49IHRpbGVSZWN0LmhlaWdodCgpKQpAQCAtOTMzLDE4ICs5NzEsMTQgQEAgdm9pZCBUaWxl
Q2FjaGU6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBs
YXllckJvdW5kcykKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBsYXllckJvdW5kcyk7
CiAKICAgICBDR0Zsb2F0IHNjYWxlRmFjdG9yID0gbGF5ZXJCb3VuZHMuc2l6ZS53aWR0aCAvIGJv
dW5kcygpLndpZHRoKCk7Ci0gICAgCi0gICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoY29u
dGV4dCwgMCwgMCwgMCwgMSk7CiAKICAgICBDR0Zsb2F0IGNvbnRleHRTY2FsZSA9IHNjYWxlRmFj
dG9yIC8gc2NhbGUoKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCBjb250ZXh0U2Nh
bGUsIGNvbnRleHRTY2FsZSk7Ci0KLSAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwg
MC41IC8gY29udGV4dFNjYWxlKTsKICAgICAKICAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgY29uc3QgVGlsZUluZm8mIHRpbGVJbmZvID0gaXQtPnZhbHVlOwog
ICAgICAgICBXZWJUaWxlTGF5ZXIqIHRpbGVMYXllciA9IHRpbGVJbmZvLmxheWVyLmdldCgpOwot
ICAgICAgICAKKwogICAgICAgICBDR0Zsb2F0IHJlZCA9IDE7CiAgICAgICAgIENHRmxvYXQgZ3Jl
ZW4gPSAxOwogICAgICAgICBDR0Zsb2F0IGJsdWUgPSAxOwpAQCAtOTUzLDE2ICs5ODcsMjQgQEAg
dm9pZCBUaWxlQ2FjaGU6OmRyYXdUaWxlTWFwQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCBsYXllckJvdW5kcykKICAgICAgICAgICAgIGdyZWVuID0gMC4xMjU7CiAgICAgICAg
ICAgICBibHVlID0gMDsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBUaWxlQ29ob3J0
IG5ld2VzdENvaG9ydCA9IG5ld2VzdFRpbGVDb2hvcnQoKTsKICAgICAgICAgVGlsZUNvaG9ydCBv
bGRlc3RDb2hvcnQgPSBvbGRlc3RUaWxlQ29ob3J0KCk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
dGlsZUluZm8uY29ob3J0ICE9IFZpc2libGVUaWxlQ29ob3J0ICYmIG5ld2VzdENvaG9ydCA+IG9s
ZGVzdENvaG9ydCkgeworCisgICAgICAgIGlmICghbV9hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQgJiYgdGlsZUluZm8uY29ob3J0ICE9IFZpc2libGVUaWxlQ29ob3J0ICYmIG5ld2VzdENv
aG9ydCA+IG9sZGVzdENvaG9ydCkgewogICAgICAgICAgICAgZmxvYXQgY29ob3J0UHJvcG9ydGlv
biA9IHN0YXRpY19jYXN0PGZsb2F0PigobmV3ZXN0Q29ob3J0IC0gdGlsZUluZm8uY29ob3J0KSkg
LyAobmV3ZXN0Q29ob3J0IC0gb2xkZXN0Q29ob3J0KTsKICAgICAgICAgICAgIENHQ29udGV4dFNl
dFJHQkZpbGxDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCAxIC0gY29ob3J0UHJvcG9y
dGlvbik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENv
bG9yKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIDEpOwogCisgICAgICAgIGlmIChbdGlsZUxh
eWVyIHN1cGVybGF5ZXJdKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29u
dGV4dCwgMC41IC8gY29udGV4dFNjYWxlKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFJHQlN0
cm9rZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAsIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIDEgLyBjb250ZXh0U2NhbGUpOwor
ICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoY29udGV4dCwgMC4yLCAwLjEs
IDAuOSwgMSk7CisgICAgICAgIH0KKwogICAgICAgICBDR1JlY3QgZnJhbWUgPSBbdGlsZUxheWVy
IGZyYW1lXTsKICAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgZnJhbWUpOwogICAg
ICAgICBDR0NvbnRleHRTdHJva2VSZWN0KGNvbnRleHQsIGZyYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBl
OTRmOWMyLi45Mzg4MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDEtMDQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW3drMl0g
UmVtb3ZlIG5vbi12aXNpYmxlIHRpbGVzIGZyb20gdGhlIGxheWVyIHRyZWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjA2MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTI3NjE4MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgc2V0dGluZyB0byBlbmFibGUgYWdncmVzc2l2ZSByZXRlbnRp
b24gb2YgVGlsZUNhY2hlIHRpbGVzLiBJZiBlbmFibGVkLAorICAgICAgICBUaWxlQ2FjaGUgd2ls
bCBnZW5lcmFsbHkgdHJ5IHRvIGtlZXAgYXJvdW5kIGFsbCB0aWxlcy4gVGhpcyBzZXR0aW5nIGlz
IG9mZiBieSBkZWZhdWx0LgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdG8gZW5hYmxlIHVucGFy
ZW50aW5nIG9mIG9mZnNjcmVlbiBUaWxlQ2FjaGUgdGlsZXMuIElmIGVuYWJsZWQsCisgICAgICAg
IFRpbGVDYWNoZSB3aWxsIHVucGFyZW50IHRpbGUgbGF5ZXJzIHdoZW4gdGhleSBtb3ZlIG91dCBv
ZiB0aGUgdGlsZSBjb3ZlcmFnZSByZWN0CisgICAgICAgIG9yIHRoZSBUaWxlQ2FjaGUgbW92ZXMg
b3V0IG9mIHRoZSB3aW5kb3cuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFdLUHJlZmVyZW5jZXNTZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc0dldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQpOgor
ICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBGb3J3YXJk
IHRoZSBzZXR0aW5ncyB0byB0aGUgVGlsZWRCYWNraW5nLgorCiAyMDEzLTAxLTAzICBLaXJhbiBN
dXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBhdXRvcmVsZWFz
ZSBwb29sIGV4aXN0cyB3aGVuIGNhbGxpbmcgV0tOU1Byb2Nlc3NJbmZvUHJvY2Vzc0Fzc2VydGlv
bldpdGhUeXBlcyBvbiBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5oCmluZGV4IGFhY2MzYzguLmJhMzVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTQyLDYgKzE0Miw4IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgIG1hY3JvKFBERlBsdWdpbkVuYWJsZWQsIHBkZlBsdWdpbkVuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oVXNlc0VuY29kaW5nRGV0ZWN0b3IsIHVzZXNFbmNv
ZGluZ0RldGVjdG9yLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFRleHRBdXRvc2l6
aW5nRW5hYmxlZCwgdGV4dEF1dG9zaXppbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAor
ICAgIG1hY3JvKEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCwgYWdncmVzc2l2ZVRpbGVS
ZXRlbnRpb25FbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFVucGFyZW50
T2Zmc2NyZWVuVGlsZXNFbmFibGVkLCB1bnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZCwgQm9v
bCwgYm9vbCwgZmFsc2UpIFwKICAgICBcCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RPVUJM
RV9QUkVGRVJFTkNFKG1hY3JvKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggMWZlN2NkYy4uOTc5YTVkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtOTk0LDMg
Kzk5NCwyMiBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+dGV4dEF1dG9zaXppbmdFbmFibGVkKCk7CiB9CiAKK3ZvaWQgV0tQcmVmZXJlbmNl
c1NldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFdL
UHJlZmVyZW5jZXNHZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+YWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCk7Cit9CisKK3ZvaWQgV0tQcmVmZXJl
bmNlc1NldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5zZXRVbnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZChlbmFibGVkKTsKK30KKworYm9vbCBX
S1ByZWZlcmVuY2VzR2V0VW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+dW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggMDRi
N2EyYS4uY2IzNmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTIzNSw2ICsyMzUsMTQgQEAgV0tfRVhQT1JU
IGJvb2wgV0tQcmVmZXJlbmNlc0dldENvb2tpZUVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlcyk7CiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UERGUGx1Z2luRW5hYmxl
ZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzLCBib29sIGVuYWJsZWQpOwogV0tfRVhQT1JU
IGJvb2wgV0tQcmVmZXJlbmNlc0dldFBERlBsdWdpbkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlcyk7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNlCitXS19FWFBPUlQgdm9pZCBXS1By
ZWZlcmVuY2VzU2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXMpOworCisvLyBEZWZhdWx0cyB0byBmYWxzZQorV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2Vz
R2V0VW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlcyk7CisKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVy
cmlkZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKICNpZmRlZiBfX2NwbHVz
cGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDkzYWNlNjIuLjJlOTA2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMjQsNiArMjMyNCw4IEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0
dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0
aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6Y29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlS2V5KCkpKTsK
ICAgICBzZXR0aW5ncy0+c2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKHN0b3JlLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JW
aXNpYmxlS2V5KCkpKTsKKyAgICBzZXR0aW5ncy0+c2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25F
bmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWdncmVz
c2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKKyAgICBzZXR0aW5ncy0+c2V0VW5wYXJl
bnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojp1bnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0
dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5KCkpKTsKICAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFibGVkS2V5KCkpKTsK
ICAgICBzZXR0aW5ncy0+c2V0Q1NTR3JpZExheW91dEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NHcmlkTGF5b3V0RW5hYmxlZEtleSgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCAzYzlkMGJjLi5j
N2NhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAg
LTIwOSw2ICsyMDksMTEgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYKICAgICBib29sIHNjcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBtX3dlYlBhZ2UtPnNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJp
bmQoJlNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQs
IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+c2Nyb2xsaW5n
VHJlZSgpLCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKSk7CiAKKyAgICBpZiAo
VGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKSkgewor
ICAgICAgICB0aWxlZEJhY2tpbmctPnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCht
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9u
RW5hYmxlZCgpKTsKKyAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRVbnBhcmVudE9mZnNjcmVlblRp
bGVzRW5hYmxlZChtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnVucGFyZW50T2Zm
c2NyZWVuVGlsZXNFbmFibGVkKCkpOworICAgIH0KKwogICAgIC8vIFNvb24gd2Ugd2FudCBwYWdl
cyB3aXRoIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gYmUgYWJsZSB0byBiZSBzY3JvbGxl
ZCBieSB0aGUgU2Nyb2xsaW5nQ29vcmRpbmF0b3IuCiAgICAgLy8gQXMgYSBwYXJ0IG9mIHRoYXQg
d29yaywgd2UgaGF2ZSB0byBjb21wb3NpdGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMsIGFuZCB3
ZSBoYXZlIHRvIGFsbG93IHRob3NlCiAgICAgLy8gZWxlbWVudHMgdG8gY3JlYXRlIGEgc3RhY2tp
bmcgY29udGV4dC4KQEAgLTQ0Nyw2ICs0NTIsMTEgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FMYXllciAqbGF5ZXIpCiAgICAg
aWYgKG1fcGFnZU92ZXJsYXlMYXllcikKICAgICAgICAgW21fcm9vdExheWVyLmdldCgpIGFkZFN1
YmxheWVyOm1fcGFnZU92ZXJsYXlMYXllci0+cGxhdGZvcm1MYXllcigpXTsKIAorICAgIGlmIChU
aWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKSB7Cisg
ICAgICAgIHRpbGVkQmFja2luZy0+c2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKG1f
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+YWdncmVzc2l2ZVRpbGVSZXRlbnRpb25F
bmFibGVkKCkpOworICAgICAgICB0aWxlZEJhY2tpbmctPnNldFVucGFyZW50T2Zmc2NyZWVuVGls
ZXNFbmFibGVkKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+dW5wYXJlbnRPZmZz
Y3JlZW5UaWxlc0VuYWJsZWQoKSk7CisgICAgfQorCiAgICAgdXBkYXRlRGVidWdJbmZvTGF5ZXIo
bV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zaG93VGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3IoKSk7CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwo=
</data>
<flag name="review"
          id="198860"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="198867"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181357</attachid>
            <date>2013-01-04 12:27:49 -0800</date>
            <delta_ts>2013-01-04 15:07:42 -0800</delta_ts>
            <desc>better patch</desc>
            <filename>purgable-tiles-opensource.diff</filename>
            <type>text/plain</type>
            <size>28749</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYmJmNDQ3Li5hYTA4MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTMtMDEtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gUmVtb3ZlIG5vbi12aXNpYmxlIHRpbGVzIGZyb20gdGhlIGxheWVyIHRy
ZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjA2
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI3NjE4MjE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5wYXJlbnRpbmcgdGlsZXMgd2hpY2ggYXJl
bid0IGN1cnJlbnRseSBvbi1zY3JlZW4gY2FuIGFsbG93IHVuZGVybHlpbmcKKyAgICAgICAgZnJh
bWV3b3JrcyB0byBtYW5hZ2UgdGhlIGxheWVyJ3MgYmFja2luZyBzdG9yZXMgbW9yZSBlZmZlY3Rp
dmVseSB0aGFuIHdlIGNhbi4KKyAgICAgICAgQWRkIGEgc2V0dGluZyB0byBjb250cm9sIHdoZXRo
ZXIgd2UgZG8gdGhpcyAoVW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQpLgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBhZGQgYSBzZXR0aW5nIChBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJs
ZWQpIHdoaWNoIGtlZXBzIG1vcmUKKyAgICAgICAgdGlsZXMgYXJvdW5kICh3ZSBkb24ndCByZW1v
dmUgdGlsZXMgaW4gY29ob3J0cywgbm9yIHdoZW4gdGhlIFRpbGVDYWNoZSBtb3ZlcworICAgICAg
ICBvdXQgb2YgdGhlIHdpbmRvdyksIHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0LgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBTZXR0aW5nczo6c2V0QWdncmVzc2l2ZVRpbGVSZXRl
bnRpb25FbmFibGVkL3NldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkLgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdz
KTogSW5pdGlhbGl6ZSBtX2FnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZC9tX3VucGFyZW50
T2Zmc2NyZWVuVGlsZXNFbmFibGVkIHRvIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKTogQWRk
ZWQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OnVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmg6IEFkZCBzZXR0ZXIvZ2V0
dGVyIHRvIGhhbmQgYWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzL3VucGFyZW50c09mZnNjcmVlblRp
bGVzIHRocm91Z2ggdG8gVGlsZWRCYWNraW5ncy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUNhY2hlLmg6CisgICAgICAgIChUaWxlQ2FjaGUpOiBUdXJuIFRpbGVWYWxp
ZGF0aW9uUG9saWN5IGludG8gVGlsZVZhbGlkYXRpb25Qb2xpY3lGbGFncywgYW5kIGFkZAorICAg
ICAgICBhIGZsYWcgZm9yIHJlbW92aW5nIHRpbGVzIGZyb20gdGhlIGxheWVyIHRyZWUuCisgICAg
ICAgIEltcGxlbWVudCBhZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMvdW5wYXJlbnRzT2Zmc2NyZWVu
VGlsZXMgc2V0dGVyL2dldHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpUaWxlQ2FjaGUpOiBJ
bml0aWFsaXplIG1fYWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzL21fdW5wYXJlbnRzT2Zmc2NyZWVu
VGlsZXMgdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnNldElzSW5XaW5k
b3cpOiBSZXZhbGlkYXRlIHRpbGVzIGltbWVkaWF0ZWx5IGlmIHRoZSBUaWxlQ2FjaGUgaGFzIGp1
c3QgZW50ZXJlZCB0aGUgd2luZG93LgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjp0aWxl
UmV2YWxpZGF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIFRoaXMgaXMgY2FsbGVkIGlmIGNvdmVy
YWdlIHJlY3QsIHRpbGUgY2FjaGUgbGF5ZXIgYm91bmRzLCBvciB2aXNpYmlsaXR5IGNoYW5nZXMu
IFdlIHdpbGwgcmV2YWxpZGF0ZSB0aWxlczoKKyAgICAgICAgICAgIC0gTWF0Y2hpbmcgY3VycmVu
dCBiZWhhdmlvciAocHJ1bmUgc2Vjb25kYXJ5IHRpbGVzKSBpZiB3ZSBkb24ndCB3YW50IHRvIHVu
cGFyZW50IG9mZnNjcmVlbiB0aWxlcy4KKyAgICAgICAgICAgIC0gTWF0Y2hpbmcgY3VycmVudCBi
ZWhhdmlvciBpZiB0aGUgVGlsZUNhY2hlIGlzIGN1cnJlbnRseSBpbiB0aGUgd2luZG93LgorICAg
ICAgICAgICAgLSBSZW1vdmluZyBhbGwgdGlsZXMgZnJvbSB0aGUgbGF5ZXIgdHJlZSBpZiB0aGUg
VGlsZUNhY2hlIGlzIG5vdCBjdXJyZW50bHkgaW4gdGhlIHdpbmRvdy4KKyAgICAgICAgICAgIC0g
Tm90IHBydW5pbmcgb2xkIHRpbGVzIGluIGFueSBjYXNlIGlmIHRoZSBhZ2dyZXNzaXZlVGlsZVJl
dGVudGlvbkVuYWJsZWQgc2V0dGluZyBpcyBvbi4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNo
ZTo6cmV2YWxpZGF0ZVRpbGVzKToKKyAgICAgICAgQWRvcHQgVGlsZVZhbGlkYXRpb25Qb2xpY3lG
bGFncyBpbnN0ZWFkIG9mIHRoZSBvbGQgZW51bSwgYW5kIHVzZSBzZXBhcmF0ZSBmbGFncyBmb3Ig
Zm9yZWdyb3VuZC9iYWNrZ3JvdW5kIGNhY2hlcy4KKyAgICAgICAgVW5wYXJlbnQgdGlsZXMgd2hl
biB0aGV5IG1vdmUgb3V0IG9mIHRoZSB0aWxlIGNvdmVyYWdlIHJlY3QsIGlmIHdlIHdhbnQgdG8g
dW5wYXJlbnQgb2Zmc2NyZWVuIHRpbGVzLgorICAgICAgICBPbmx5IHNjaGVkdWxlIHRoZSB0aWxl
IGNvaG9ydCByZW1vdmFsIHRpbWVyIGlmIHdlJ3JlIG5vdCBhZ2dyZXNzaXZlbHkga2VlcGluZyB0
aWxlcyBhcm91bmQuCisgICAgICAgIEVuc3VyZSB0aGF0IHRpbGVzIGFyZSByZS1hZGRlZCB0byB0
aGUgVGlsZUNhY2hlIGxheWVyIHRyZWUgaWYgdGhleSBhbHJlYWR5IGV4aXN0LgorICAgICAgICBV
bnBhcmVudCBhbGwgdGlsZXMgaWYgVGlsZVZhbGlkYXRpb25Qb2xpY3lGbGFncyBzYXlzIHRvIChm
cm9tIHRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkLCBpZiB3ZSdyZSBub3QgaW4gdGhlIHdpbmRv
dyBhbmQgd2FudCB0byB1bnBhcmVudCBvZmZzY3JlZW4gdGlsZXMpLgorICAgICAgICBPbmx5IGFk
ZCBuZXcgdGlsZXMgdG8gdGhlIFRpbGVDYWNoZSdzIGxheWVyIHRyZWUgaWYgd2UncmUgY3VycmVu
dGx5IGluIHRoZSB3aW5kb3cgb3Igbm90IHVzaW5nIHVucGFyZW50ZWQgdGlsZXMuCisgICAgICAg
IERvbid0IHBydW5lIHNlY29uZGFyeSB0aWxlcyBpZiB0aGUgdmlzaWJsZSByZWN0IGNoYW5nZXM7
IHRoaXMgd2lsbCBhbHJlYWR5IG9jY3VyIGJlY2F1c2Ugd2hlbiB0aGUgdmlzaWJsZVJlY3QKKyAg
ICAgICAgY2hhbmdlcywgd2UgYXJyaXZlIHZpYSB0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCwg
d2hpY2ggYXNrcyBmb3IgUHJ1bmVTZWNvbmRhcnlUaWxlcyBhbnl3YXkgKGV4Y2VwdCBpZiB3ZSdy
ZQorICAgICAgICBhZ2dyZXNzaXZlbHkgcmV0YWluaW5nIHRpbGVzKS4gVGhpcyBwcmV2ZW50cyB0
aWxlcyBmcm9tIGJlaW5nIGRlbGV0ZWQgdW5leHBlY3RlZGx5IGR1cmluZyBydWJiZXItYmFuZGlu
ZyBvciB3aGVuIHpvb21lZCAodGhpcyBwYXJ0IG9mIHRoZSBwYXRjaCBpcyB0aGFua3MgdG8gU2lt
b24pLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjplbnN1cmVUaWxlc0ZvclJlY3QpOgor
ICAgICAgICBEb24ndCBlbnN1cmUgYW55IHRpbGVzIGlmIHRoZSBUaWxlQ2FjaGUgaXMgb2Zmc2Ny
ZWVuLgorICAgICAgICBFbnN1cmUgdGhhdCB0aWxlcyBhcmUgcmUtYWRkZWQgdG8gdGhlIFRpbGVD
YWNoZSBsYXllciB0cmVlIGlmIHRoZXkgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDYWNoZTo6ZHJhd1RpbGVNYXBDb250ZW50cyk6CisgICAgICAgIERyYXcgYSB0aGljayBw
dXJwbGUgYm9yZGVyIGFyb3VuZCB0aWxlcyB0aGF0IGhhdmUgYmVlbiB1bnBhcmVudGVkLgorCiAy
MDEzLTAxLTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgTm8g
d2F5IHRvIG9idGFpbiBhIERPTU5vZGUgZ2l2ZW4gYSBKUyB3cmFwcGVyIGZvciBhIE5vZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggYTFlYTZiNS4uMTQ5MzM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTk4NSw2ICs5ODUsOCBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMmRlZmF1bHRET01U
aW1lckFsaWdubWVudEludGVydmFsRXYKIF9fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzJzZXROZWVk
c0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWlya0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMnNldFNj
cmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczMyc2V0
VW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMzNz
ZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczQ1c2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0UmVzb2x1dGlvbk92ZXJyaWRlRVJLTlNfN0ludFNp
emVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDBhMWY5M2YuLjcyYThjOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xODYsNiArMTg2LDggQEAgU2V0dGluZ3M6OlNldHRp
bmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNl
KQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFs
c2UpCisgICAgLCBtX2FnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChmYWxzZSkKKyAgICAs
IG1fdW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NldEltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyRmlyZWQpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVk
IHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nCkBAIC02NDEsNiArNjQzLDE2
IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIGlmIChtX3BhZ2UtPm1haW5GcmFtZSgpICYmIG1fcGFnZS0+bWFp
bkZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5z
ZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOwogfQorICAgIAor
dm9pZCBTZXR0aW5nczo6c2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBtX2FnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCA9IGVuYWJsZWQ7
Cit9CisgICAgCit2b2lkIFNldHRpbmdzOjpzZXRVbnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgbV91bnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZCA9
IGVuYWJsZWQ7Cit9CiAKIHZvaWQgU2V0dGluZ3M6OnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChi
b29sIGZsYWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggYTZmYTBmZS4uMGUzMDJmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjkyLDYgKzI5MiwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkKGJvb2wpOwogICAgICAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQoKSB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7IH0KKyAg
ICAgICAgCisgICAgICAgIHZvaWQgc2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKGJv
b2wpOworICAgICAgICBib29sIGFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIG1fYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkOyB9CisgICAgICAgIAorICAgICAg
ICB2b2lkIHNldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKGJvb2wpOworICAgICAgICBi
b29sIHVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKCkgeyByZXR1cm4gbV91bnBhcmVudE9m
ZnNjcmVlblRpbGVzRW5hYmxlZDsgfQogCiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZv
aWQgc2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwpA
QCAtMzY2LDYgKzM3Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3Rv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIDogMTsKICNlbmRpZgogICAgICAgICBib29sIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CisgICAgICAgIGJvb2wgbV9hZ2dy
ZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fdW5wYXJlbnRP
ZmZzY3JlZW5UaWxlc0VuYWJsZWQgOiAxOwogCiAgICAgICAgIFRpbWVyPFNldHRpbmdzPiBtX3Nl
dEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXI7CiAgICAgICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAppbmRleCA1NmQ3MzZhLi45NTQ1ZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaApA
QCAtNzAsNiArNzAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKICAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzKGJvb2wpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgYWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzKCkgY29uc3QgPSAwOworICAgIAor
ICAgIHZpcnR1YWwgdm9pZCBzZXRVbnBhcmVudHNPZmZzY3JlZW5UaWxlcyhib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHVucGFyZW50c09mZnNjcmVlblRpbGVzKCkgY29uc3QgPSAwOworICAg
IAogICAgIC8vIEV4cG9zZWQgZm9yIHRlc3RpbmcKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZUNv
dmVyYWdlUmVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZUdyaWRFeHRl
bnQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvVGlsZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvVGlsZUNhY2hlLmgKaW5kZXggNDdhNzg3Ni4uYWUwNDdlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTE1LDYgKzExNSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlR3Jp
ZEV4dGVudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wgZmxhZykgT1ZFUlJJREUgeyBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgdmlydHVhbCBib29sIHNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0QWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzKGJvb2wgZmxhZykgT1ZFUlJJREUgeyBtX2Fn
Z3Jlc3NpdmVseVJldGFpbnNUaWxlcyA9IGZsYWc7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWdncmVz
c2l2ZWx5UmV0YWluc1RpbGVzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9hZ2dyZXNzaXZl
bHlSZXRhaW5zVGlsZXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VW5wYXJlbnRzT2Zmc2NyZWVu
VGlsZXMoYm9vbCBmbGFnKSBPVkVSUklERSB7IG1fdW5wYXJlbnRzT2Zmc2NyZWVuVGlsZXMgPSBm
bGFnOyB9CisgICAgdmlydHVhbCBib29sIHVucGFyZW50c09mZnNjcmVlblRpbGVzKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV91bnBhcmVudHNPZmZzY3JlZW5UaWxlczsgfQogICAgIHZpcnR1
YWwgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBDQUxheWVyICp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbGluZ01vZGVJbmRpY2F0aW9uKFNjcm9sbGluZ01vZGVJbmRp
Y2F0aW9uKSBPVkVSUklERTsKQEAgLTEzMywxMSArMTM3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNjaGVkdWxlQ29ob3J0UmVtb3ZhbCgpOwogICAgIHZvaWQgY29ob3J0UmVtb3ZhbFRpbWVyRmly
ZWQoVGltZXI8VGlsZUNhY2hlPiopOwogICAgIAotICAgIGVudW0gVGlsZVZhbGlkYXRpb25Qb2xp
Y3kgewotICAgICAgICBLZWVwU2Vjb25kYXJ5VGlsZXMsCi0gICAgICAgIFBydW5lU2Vjb25kYXJ5
VGlsZXMKLSAgICB9OwotICAgIHZvaWQgcmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9s
aWN5ID0gS2VlcFNlY29uZGFyeVRpbGVzKTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFRpbGVWYWxp
ZGF0aW9uUG9saWN5RmxhZ3M7CisKKyAgICB2b2lkIHJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRh
dGlvblBvbGljeUZsYWdzIGZvcmVncm91bmRWYWxpZGF0aW9uUG9saWN5ID0gMCwgVGlsZVZhbGlk
YXRpb25Qb2xpY3lGbGFncyBiYWNrZ3JvdW5kVmFsaWRhdGlvblBvbGljeSA9IDApOwogICAgIHZv
aWQgZW5zdXJlVGlsZXNGb3JSZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHVwZGF0ZVRp
bGVDb3ZlcmFnZU1hcCgpOwogCkBAIC0xOTEsNiArMTkzLDggQEAgcHJpdmF0ZToKICAgICBUaWxl
Q292ZXJhZ2UgbV90aWxlQ292ZXJhZ2U7CiAgICAgYm9vbCBtX2lzSW5XaW5kb3c7CiAgICAgYm9v
bCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CisgICAgYm9vbCBtX2FnZ3Jl
c3NpdmVseVJldGFpbnNUaWxlczsKKyAgICBib29sIG1fdW5wYXJlbnRzT2Zmc2NyZWVuVGlsZXM7
CiAgICAgYm9vbCBtX2FjY2VsZXJhdGVzRHJhd2luZzsKICAgICBib29sIG1fdGlsZXNBcmVPcGFx
dWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
VGlsZUNhY2hlLm1tCmluZGV4IDJlMDM5OWEuLmRmMjU1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODAs
NiArODAsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIAorZW51bSBUaWxlVmFsaWRhdGlvblBvbGljeUZsYWcgeworICAgIFBydW5lU2Vj
b25kYXJ5VGlsZXMgPSAxIDw8IDAsCisgICAgUmVtb3ZlVGlsZXNGcm9tTGF5ZXJUcmVlID0gMSA8
PCAxCit9OwogCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlQ2FjaGVXaWR0aCA9IDUxMjsK
IHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNoZUhlaWdodCA9IDUxMjsKQEAgLTEwMCw2
ICsxMDUsOCBAQCBUaWxlQ2FjaGU6OlRpbGVDYWNoZShXZWJUaWxlQ2FjaGVMYXllciogdGlsZUNh
Y2hlTGF5ZXIpCiAgICAgLCBtX3RpbGVDb3ZlcmFnZShDb3ZlcmFnZUZvclZpc2libGVBcmVhKQog
ICAgICwgbV9pc0luV2luZG93KGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9hZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMoZmFs
c2UpCisgICAgLCBtX3VucGFyZW50c09mZnNjcmVlblRpbGVzKGZhbHNlKQogICAgICwgbV9hY2Nl
bGVyYXRlc0RyYXdpbmcoZmFsc2UpCiAgICAgLCBtX3RpbGVzQXJlT3BhcXVlKGZhbHNlKQogICAg
ICwgbV90aWxlRGVidWdCb3JkZXJXaWR0aCgwKQpAQCAtMjQyLDcgKzI0OSw3IEBAIHZvaWQgVGls
ZUNhY2hlOjpzZXRTY2FsZShDR0Zsb2F0IHNjYWxlKQogICAgIG1fc2NhbGUgPSBzY2FsZTsKICAg
ICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RN
YWtlU2NhbGUoMSAvIG1fc2NhbGUsIDEgLyBtX3NjYWxlLCAxKV07CiAKLSAgICByZXZhbGlkYXRl
VGlsZXMoUHJ1bmVTZWNvbmRhcnlUaWxlcyk7CisgICAgcmV2YWxpZGF0ZVRpbGVzKFBydW5lU2Vj
b25kYXJ5VGlsZXMsIFBydW5lU2Vjb25kYXJ5VGlsZXMpOwogCiAgICAgZm9yIChUaWxlTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0aWxlSW5mbyA9IGl0
LT52YWx1ZTsKQEAgLTMxMCwxMCArMzE3LDggQEAgdm9pZCBUaWxlQ2FjaGU6OnNldElzSW5XaW5k
b3coYm9vbCBpc0luV2luZG93KQogCiAgICAgbV9pc0luV2luZG93ID0gaXNJbldpbmRvdzsKIAot
ICAgIGlmICghbV9pc0luV2luZG93KSB7Ci0gICAgICAgIGNvbnN0IGRvdWJsZSB0aWxlUmV2YWxp
ZGF0aW9uVGltZW91dCA9IDQ7Ci0gICAgICAgIHNjaGVkdWxlVGlsZVJldmFsaWRhdGlvbih0aWxl
UmV2YWxpZGF0aW9uVGltZW91dCk7Ci0gICAgfQorICAgIGNvbnN0IGRvdWJsZSB0aWxlUmV2YWxp
ZGF0aW9uVGltZW91dCA9IDQ7CisgICAgc2NoZWR1bGVUaWxlUmV2YWxpZGF0aW9uKG1faXNJbldp
bmRvdyA/IDAgOiB0aWxlUmV2YWxpZGF0aW9uVGltZW91dCk7CiB9CiAKIHZvaWQgVGlsZUNhY2hl
OjpzZXRUaWxlQ292ZXJhZ2UoVGlsZUNvdmVyYWdlIGNvdmVyYWdlKQpAQCAtNDQwLDcgKzQ0NSwx
MyBAQCB2b2lkIFRpbGVDYWNoZTo6c2NoZWR1bGVUaWxlUmV2YWxpZGF0aW9uKGRvdWJsZSBpbnRl
cnZhbCkKIAogdm9pZCBUaWxlQ2FjaGU6OnRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKFRpbWVy
PFRpbGVDYWNoZT4qKQogewotICAgIHJldmFsaWRhdGVUaWxlcyhQcnVuZVNlY29uZGFyeVRpbGVz
KTsKKyAgICBUaWxlVmFsaWRhdGlvblBvbGljeUZsYWdzIGZvcmVncm91bmRWYWxpZGF0aW9uUG9s
aWN5ID0gbV9hZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMgPyAwIDogUHJ1bmVTZWNvbmRhcnlUaWxl
czsKKyAgICBUaWxlVmFsaWRhdGlvblBvbGljeUZsYWdzIGJhY2tncm91bmRWYWxpZGF0aW9uUG9s
aWN5ID0gZm9yZWdyb3VuZFZhbGlkYXRpb25Qb2xpY3k7CisgICAgCisgICAgaWYgKG1fdW5wYXJl
bnRzT2Zmc2NyZWVuVGlsZXMpCisgICAgICAgIGJhY2tncm91bmRWYWxpZGF0aW9uUG9saWN5IHw9
IFJlbW92ZVRpbGVzRnJvbUxheWVyVHJlZTsKKworICAgIHJldmFsaWRhdGVUaWxlcyhmb3JlZ3Jv
dW5kVmFsaWRhdGlvblBvbGljeSwgYmFja2dyb3VuZFZhbGlkYXRpb25Qb2xpY3kpOwogfQogCiB1
bnNpZ25lZCBUaWxlQ2FjaGU6OmJsYW5rUGl4ZWxDb3VudCgpIGNvbnN0CkBAIC01MzEsNyArNTQy
LDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJlbW92ZVRpbGVzSW5Db2hvcnQoVGlsZUNvaG9ydCBjb2hv
cnQpCiAgICAgfQogfQogCi12b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxp
ZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCit2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0
ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5RmxhZ3MgZm9yZWdyb3VuZFZhbGlkYXRpb25Qb2xp
Y3ksIFRpbGVWYWxpZGF0aW9uUG9saWN5RmxhZ3MgYmFja2dyb3VuZFZhbGlkYXRpb25Qb2xpY3kp
CiB7CiAgICAgLy8gSWYgdGhlIHVuZGVybHlpbmcgUGxhdGZvcm1MYXllciBoYXMgYmVlbiBkZXN0
cm95ZWQsIGJ1dCB0aGUgV2ViVGlsZUNhY2hlTGF5ZXIgaGFzbid0CiAgICAgLy8gcGxhdGZvcm1M
YXllciB3aWxsIGJlIG51bGwgaGVyZS4KQEAgLTU0MSwxMiArNTUyLDggQEAgdm9pZCBUaWxlQ2Fj
aGU6OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeSB2YWxpZGF0aW9uUG9saWN5
KQogCiAgICAgaWYgKG1fdmlzaWJsZVJlY3QuaXNFbXB0eSgpIHx8IGJvdW5kcygpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgdGhlIHZpc2libGUgcmVjdCBzaXplIGNo
YW5nZWQsIGRyb3Agc2Vjb25kYXJ5IHRpbGVzIHRvIGF2b2lkIGxvdHMgb2YgcmVwYWludGluZy4K
LSAgICAvLyBGSVhNRTogd2hlbiBzY2FsZWQsIHRoaXMgY2hhbmdlcyBkdWUgdG8gcm91bmRpbmcu
IFdlIHNob3VsZCB1c2UgRmxvYXRSZWN0cyBvciBzb21ldGhpbmcuCi0gICAgLy8gQWxzbyBjaGFu
Z2VzIG9uIHJ1YmJlciBiYW5kaW5nLgotICAgIGlmIChtX3Zpc2libGVSZWN0QXRMYXN0UmV2YWxp
ZGF0ZS5zaXplKCkgIT0gbV92aXNpYmxlUmVjdC5zaXplKCkpCi0gICAgICAgIHZhbGlkYXRpb25Q
b2xpY3kgPSBQcnVuZVNlY29uZGFyeVRpbGVzOworICAgIAorICAgIFRpbGVWYWxpZGF0aW9uUG9s
aWN5RmxhZ3MgdmFsaWRhdGlvblBvbGljeSA9IG1faXNJbldpbmRvdyA/IGZvcmVncm91bmRWYWxp
ZGF0aW9uUG9saWN5IDogYmFja2dyb3VuZFZhbGlkYXRpb25Qb2xpY3k7CiAgICAgCiAgICAgSW50
UmVjdCB0aWxlQ292ZXJhZ2VSZWN0ID0gY29tcHV0ZVRpbGVDb3ZlcmFnZVJlY3QobV92aXNpYmxl
UmVjdEF0TGFzdFJldmFsaWRhdGUpOwogICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0KHRpbGVDb3Zl
cmFnZVJlY3QpOwpAQCAtNTgzLDYgKzU5MCw5IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRl
VGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRhdGlvblBvbGljeSkKICAgICAgICAgICAg
ICAgICBpZiAodGlsZUluZm8uY29ob3J0ID09IFZpc2libGVUaWxlQ29ob3J0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIHRpbGVJbmZvLmNvaG9ydCA9IGN1cnJDb2hvcnQ7CiAgICAgICAgICAgICAg
ICAgICAgICsrdGlsZXNJbkNvaG9ydDsKKworICAgICAgICAgICAgICAgICAgICBpZiAobV91bnBh
cmVudHNPZmZzY3JlZW5UaWxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIFt0aWxlSW5mby5s
YXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC01OTAsNyArNjAwLDggQEAgdm9pZCBUaWxlQ2FjaGU6
OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeSB2YWxpZGF0aW9uUG9saWN5KQog
ICAgICAgICBpZiAodGlsZXNJbkNvaG9ydCkKICAgICAgICAgICAgIHN0YXJ0ZWROZXdDb2hvcnQo
Y3VyckNvaG9ydCk7CiAKLSAgICAgICAgc2NoZWR1bGVDb2hvcnRSZW1vdmFsKCk7CisgICAgICAg
IGlmICghbV9hZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMpCisgICAgICAgICAgICBzY2hlZHVsZUNv
aG9ydFJlbW92YWwoKTsKICAgICB9CiAKICAgICBUaWxlSW5kZXggdG9wTGVmdDsKQEAgLTYwMiw2
ICs2MTMsOCBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9u
UG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgLy8gRW5zdXJlIHByaW1hcnkgdGlsZSBjb3Zl
cmFnZSB0aWxlcy4KICAgICBtX3ByaW1hcnlUaWxlQ292ZXJhZ2VSZWN0ID0gSW50UmVjdCgpOwog
ICAgIAorICAgIGJvb2wgYWRkTmV3VGlsZXNUb0xheWVyVHJlZSA9IG1faXNJbldpbmRvdyB8fCAh
bV91bnBhcmVudHNPZmZzY3JlZW5UaWxlczsKKwogICAgIGZvciAoaW50IHkgPSB0b3BMZWZ0Lnko
KTsgeSA8PSBib3R0b21SaWdodC55KCk7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gdG9w
TGVmdC54KCk7IHggPD0gYm90dG9tUmlnaHQueCgpOyArK3gpIHsKICAgICAgICAgICAgIFRpbGVJ
bmRleCB0aWxlSW5kZXgoeCwgeSk7CkBAIC02MTIsOCArNjI1LDEyIEBAIHZvaWQgVGlsZUNhY2hl
OjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRhdGlvblBvbGljeSkK
ICAgICAgICAgICAgIFRpbGVJbmZvJiB0aWxlSW5mbyA9IG1fdGlsZXMuYWRkKHRpbGVJbmRleCwg
VGlsZUluZm8oKSkuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgaWYgKCF0aWxlSW5mby5s
YXllcikgewogICAgICAgICAgICAgICAgIHRpbGVJbmZvLmxheWVyID0gY3JlYXRlVGlsZUxheWVy
KHRpbGVSZWN0KTsKLSAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkg
YWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5ZXIuZ2V0KCldOworICAgICAgICAgICAgICAgIGlmIChh
ZGROZXdUaWxlc1RvTGF5ZXJUcmVlKQorICAgICAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFp
bmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5ZXIuZ2V0KCldOwogICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYWRkTmV3VGlsZXNUb0xheWVyVHJl
ZSAmJiAhW3RpbGVJbmZvLmxheWVyLmdldCgpIHN1cGVybGF5ZXJdKQorICAgICAgICAgICAgICAg
ICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5
ZXIuZ2V0KCldOworCiAgICAgICAgICAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgbGF5ZXIg
Zm9yIHRoaXMgdGlsZS4gRW5zdXJlIHRoYXQgaXRzIHNpemUgaXMgY29ycmVjdC4KICAgICAgICAg
ICAgICAgICBGbG9hdFNpemUgdGlsZUxheWVyU2l6ZShbdGlsZUluZm8ubGF5ZXIuZ2V0KCkgZnJh
bWVdLnNpemUpOwogICAgICAgICAgICAgICAgIGlmICh0aWxlTGF5ZXJTaXplID09IEZsb2F0U2l6
ZSh0aWxlUmVjdC5zaXplKCkpKQpAQCAtNjI4LDEwICs2NDUsMTUgQEAgdm9pZCBUaWxlQ2FjaGU6
OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeSB2YWxpZGF0aW9uUG9saWN5KQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZhbGlkYXRpb25Qb2xpY3kgPT0gUHJ1bmVTZWNv
bmRhcnlUaWxlcykgeworICAgIGlmICh2YWxpZGF0aW9uUG9saWN5ICYgUHJ1bmVTZWNvbmRhcnlU
aWxlcykgewogICAgICAgICByZW1vdmVBbGxTZWNvbmRhcnlUaWxlcygpOwogICAgICAgICBtX2Nv
aG9ydExpc3QuY2xlYXIoKTsKICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvblBvbGljeSAmIFJl
bW92ZVRpbGVzRnJvbUxheWVyVHJlZSkgeworICAgICAgICBmb3IgKFRpbGVNYXA6Oml0ZXJhdG9y
IGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpCisgICAgICAgICAgICBbaXQtPnZhbHVlLmxheWVyLmdldCgpIHJlbW92ZUZyb21TdXBlcmxh
eWVyXTsKKyAgICB9CiAgICAgCiAgICAgaWYgKG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXll
cikKICAgICAgICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CkBAIC02NjksNyArNjkxLDcgQEAg
VGlsZUNhY2hlOjpUaWxlQ29ob3J0IFRpbGVDYWNoZTo6b2xkZXN0VGlsZUNvaG9ydCgpIGNvbnN0
CiB2b2lkIFRpbGVDYWNoZTo6c2NoZWR1bGVDb2hvcnRSZW1vdmFsKCkKIHsKICAgICBjb25zdCBk
b3VibGUgY29ob3J0UmVtb3ZhbFRpbWVyU2Vjb25kcyA9IDE7Ci0gICAgCisKICAgICAvLyBTdGFy
dCB0aGUgdGltZXIsIG9yIHJlc2NoZWR1bGUgdGhlIHRpbWVyIGZyb20gbm93IGlmIGl0J3MgYWxy
ZWFkeSBhY3RpdmUuCiAgICAgaWYgKCFtX2NvaG9ydFJlbW92YWxUaW1lci5pc0FjdGl2ZSgpKQog
ICAgICAgICBtX2NvaG9ydFJlbW92YWxUaW1lci5zdGFydFJlcGVhdGluZyhjb2hvcnRSZW1vdmFs
VGltZXJTZWNvbmRzKTsKQEAgLTY4NCw3ICs3MDYsNyBAQCB2b2lkIFRpbGVDYWNoZTo6Y29ob3J0
UmVtb3ZhbFRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hlPiopCiAKICAgICBkb3VibGUgY29ob3J0
TGlmZVRpbWVTZWNvbmRzID0gMjsKICAgICBkb3VibGUgdGltZVRocmVzaG9sZCA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gY29ob3J0TGlmZVRpbWVTZWNvbmRzOwotICAgIAorCiAg
ICAgd2hpbGUgKCFtX2NvaG9ydExpc3QuaXNFbXB0eSgpICYmIG1fY29ob3J0TGlzdC5maXJzdCgp
LmNyZWF0aW9uVGltZSA8IHRpbWVUaHJlc2hvbGQpIHsKICAgICAgICAgVGlsZUNvaG9ydEluZm8g
Zmlyc3RDb2hvcnQgPSBtX2NvaG9ydExpc3QudGFrZUZpcnN0KCk7CiAgICAgICAgIHJlbW92ZVRp
bGVzSW5Db2hvcnQoZmlyc3RDb2hvcnQuY29ob3J0KTsKQEAgLTY5Niw2ICs3MTgsOSBAQCB2b2lk
IFRpbGVDYWNoZTo6Y29ob3J0UmVtb3ZhbFRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hlPiopCiAK
IHZvaWQgVGlsZUNhY2hlOjplbnN1cmVUaWxlc0ZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKKyAgICBpZiAoIW1faXNJbldpbmRvdykKKyAgICAgICAgcmV0dXJuOworCiAgICAgUGxhdGZv
cm1DQUxheWVyKiBwbGF0Zm9ybUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXIobV90aWxlQ2FjaGVMYXllcik7CiAgICAgaWYgKCFwbGF0Zm9ybUxheWVyKQogICAgICAgICBy
ZXR1cm47CkBAIC03MjUsNiArNzUwLDkgQEAgdm9pZCBUaWxlQ2FjaGU6OmVuc3VyZVRpbGVzRm9y
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICAgICAgICAgIHRpbGVJbmZvLmxheWVy
ID0gY3JlYXRlVGlsZUxheWVyKHRpbGVSZWN0KTsKICAgICAgICAgICAgICAgICBbbV90aWxlQ29u
dGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5ZXIuZ2V0KCldOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIVt0aWxlSW5mby5sYXllci5n
ZXQoKSBzdXBlcmxheWVyXSkKKyAgICAgICAgICAgICAgICAgICAgW21fdGlsZUNvbnRhaW5lckxh
eWVyLmdldCgpIGFkZFN1YmxheWVyOnRpbGVJbmZvLmxheWVyLmdldCgpXTsKKwogICAgICAgICAg
ICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGxheWVyIGZvciB0aGlzIHRpbGUuIEVuc3VyZSB0
aGF0IGl0cyBzaXplIGlzIGNvcnJlY3QuCiAgICAgICAgICAgICAgICAgQ0dTaXplIHRpbGVMYXll
clNpemUgPSBbdGlsZUluZm8ubGF5ZXIuZ2V0KCkgZnJhbWVdLnNpemU7CiAgICAgICAgICAgICAg
ICAgaWYgKHRpbGVMYXllclNpemUud2lkdGggPj0gdGlsZVJlY3Qud2lkdGgoKSAmJiB0aWxlTGF5
ZXJTaXplLmhlaWdodCA+PSB0aWxlUmVjdC5oZWlnaHQoKSkKQEAgLTkzMywxOCArOTYxLDE0IEBA
IHZvaWQgVGlsZUNhY2hlOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgbGF5ZXJCb3VuZHMpCiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgbGF5
ZXJCb3VuZHMpOwogCiAgICAgQ0dGbG9hdCBzY2FsZUZhY3RvciA9IGxheWVyQm91bmRzLnNpemUu
d2lkdGggLyBib3VuZHMoKS53aWR0aCgpOwotICAgIAotICAgIENHQ29udGV4dFNldFJHQlN0cm9r
ZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAsIDEpOwogCiAgICAgQ0dGbG9hdCBjb250ZXh0U2NhbGUg
PSBzY2FsZUZhY3RvciAvIHNjYWxlKCk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwg
Y29udGV4dFNjYWxlLCBjb250ZXh0U2NhbGUpOwotCi0gICAgQ0dDb250ZXh0U2V0TGluZVdpZHRo
KGNvbnRleHQsIDAuNSAvIGNvbnRleHRTY2FsZSk7CiAgICAgCiAgICAgZm9yIChUaWxlTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0aWxlSW5mbyA9IGl0
LT52YWx1ZTsKICAgICAgICAgV2ViVGlsZUxheWVyKiB0aWxlTGF5ZXIgPSB0aWxlSW5mby5sYXll
ci5nZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgQ0dGbG9hdCByZWQgPSAxOwogICAgICAgICBD
R0Zsb2F0IGdyZWVuID0gMTsKICAgICAgICAgQ0dGbG9hdCBibHVlID0gMTsKQEAgLTk1MywxNiAr
OTc3LDI0IEBAIHZvaWQgVGlsZUNhY2hlOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpCiAgICAgICAgICAgICBncmVlbiA9IDAuMTI1
OwogICAgICAgICAgICAgYmx1ZSA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
VGlsZUNvaG9ydCBuZXdlc3RDb2hvcnQgPSBuZXdlc3RUaWxlQ29ob3J0KCk7CiAgICAgICAgIFRp
bGVDb2hvcnQgb2xkZXN0Q29ob3J0ID0gb2xkZXN0VGlsZUNvaG9ydCgpOwotICAgICAgICAKLSAg
ICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9ydCAmJiBuZXdlc3RD
b2hvcnQgPiBvbGRlc3RDb2hvcnQpIHsKKworICAgICAgICBpZiAoIW1fYWdncmVzc2l2ZWx5UmV0
YWluc1RpbGVzICYmIHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9ydCAmJiBuZXdl
c3RDb2hvcnQgPiBvbGRlc3RDb2hvcnQpIHsKICAgICAgICAgICAgIGZsb2F0IGNvaG9ydFByb3Bv
cnRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4oKG5ld2VzdENvaG9ydCAtIHRpbGVJbmZvLmNvaG9y
dCkpIC8gKG5ld2VzdENvaG9ydCAtIG9sZGVzdENvaG9ydCk7CiAgICAgICAgICAgICBDR0NvbnRl
eHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgMSAtIGNvaG9ydFBy
b3BvcnRpb24pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIENHQ29udGV4dFNldFJHQkZp
bGxDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCAxKTsKIAorICAgICAgICBpZiAoW3Rp
bGVMYXllciBzdXBlcmxheWVyXSkgeworICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRo
KGNvbnRleHQsIDAuNSAvIGNvbnRleHRTY2FsZSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRS
R0JTdHJva2VDb2xvcihjb250ZXh0LCAwLCAwLCAwLCAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCAxIC8gY29udGV4dFNjYWxl
KTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIDAuMiwg
MC4xLCAwLjksIDEpOworICAgICAgICB9CisKICAgICAgICAgQ0dSZWN0IGZyYW1lID0gW3RpbGVM
YXllciBmcmFtZV07CiAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIGZyYW1lKTsK
ICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUmVjdChjb250ZXh0LCBmcmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggZTk0ZjljMi4uOTM4ODAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAx
LTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFt3
azJdIFJlbW92ZSBub24tdmlzaWJsZSB0aWxlcyBmcm9tIHRoZSBsYXllciB0cmVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYwNjEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNzYxODIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdG8gZW5hYmxlIGFnZ3Jlc3NpdmUgcmV0
ZW50aW9uIG9mIFRpbGVDYWNoZSB0aWxlcy4gSWYgZW5hYmxlZCwKKyAgICAgICAgVGlsZUNhY2hl
IHdpbGwgZ2VuZXJhbGx5IHRyeSB0byBrZWVwIGFyb3VuZCBhbGwgdGlsZXMuIFRoaXMgc2V0dGlu
ZyBpcyBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSB1
bnBhcmVudGluZyBvZiBvZmZzY3JlZW4gVGlsZUNhY2hlIHRpbGVzLiBJZiBlbmFibGVkLAorICAg
ICAgICBUaWxlQ2FjaGUgd2lsbCB1bnBhcmVudCB0aWxlIGxheWVycyB3aGVuIHRoZXkgbW92ZSBv
dXQgb2YgdGhlIHRpbGUgY292ZXJhZ2UgcmVjdAorICAgICAgICBvciB0aGUgVGlsZUNhY2hlIG1v
dmVzIG91dCBvZiB0aGUgd2luZG93LgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6Cisg
ICAgICAgIChXS1ByZWZlcmVuY2VzU2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKToK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQp
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVk
KToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRVbnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKTogRm9y
d2FyZCB0aGUgc2V0dGluZ3MgdG8gdGhlIFRpbGVkQmFja2luZy4KKwogMjAxMy0wMS0wMyAgS2ly
YW4gTXVwcGFsYSAgPGNtdXBwYWxhQGFwcGxlLmNvbT4KIAogICAgICAgICBFbnN1cmUgYXV0b3Jl
bGVhc2UgcG9vbCBleGlzdHMgd2hlbiBjYWxsaW5nIFdLTlNQcm9jZXNzSW5mb1Byb2Nlc3NBc3Nl
cnRpb25XaXRoVHlwZXMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaAppbmRleCBhYWNjM2M4Li5iYTM1ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTE0Miw2ICsxNDIsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICBtYWNybyhQREZQbHVnaW5FbmFibGVkLCBwZGZQbHVnaW5FbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFVzZXNFbmNvZGluZ0RldGVjdG9yLCB1c2Vz
RW5jb2RpbmdEZXRlY3RvciwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhUZXh0QXV0
b3NpemluZ0VuYWJsZWQsIHRleHRBdXRvc2l6aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2Up
IFwKKyAgICBtYWNybyhBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQsIGFnZ3Jlc3NpdmVU
aWxlUmV0ZW50aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhVbnBh
cmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZCwgdW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQs
IEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9E
T1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDFmZTdjZGMuLjk3OWE1ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTk5
NCwzICs5OTQsMjIgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0VGV4dEF1dG9zaXppbmdFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiAgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnRleHRBdXRvc2l6aW5nRW5hYmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1Jl
ZiktPnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChlbmFibGVkKTsKK30KKworYm9v
bCBXS1ByZWZlcmVuY2VzR2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCgpOworfQorCit2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRVbnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+c2V0VW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jv
b2wgV0tQcmVmZXJlbmNlc0dldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4
IDA0YjdhMmEuLmNiMzZjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0yMzUsNiArMjM1LDE0IEBAIFdLX0VY
UE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRDb29raWVFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXMpOwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBERlBsdWdpbkVu
YWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcywgYm9vbCBlbmFibGVkKTsKIFdLX0VY
UE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRQREZQbHVnaW5FbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXMpOwogCisvLyBEZWZhdWx0cyB0byBmYWxzZQorV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVm
ZXJlbmNlc0dldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzKTsKKworLy8gRGVmYXVsdHMgdG8gZmFsc2UKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRVbnBhcmVudE9mZnNjcmVlblRpbGVzRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJl
bmNlc0dldFVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXMpOworCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVy
T3ZlcnJpZGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5M2FjZTYyLi4yZTkwNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzI0LDYgKzIzMjQsOCBAQCB2b2lkIFdlYlBhZ2U6
OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAg
IHNldHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6Y29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZUtleSgpKSk7CiAgICAg
c2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZUtleSgp
KSk7CiAgICAgc2V0dGluZ3MtPnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNh
dG9yVmlzaWJsZUtleSgpKSk7CisgICAgc2V0dGluZ3MtPnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50
aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFn
Z3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CisgICAgc2V0dGluZ3MtPnNldFVu
cGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6dW5wYXJlbnRPZmZzY3JlZW5UaWxlc0VuYWJsZWRLZXkoKSkpOwogICAg
IHNldHRpbmdzLT5zZXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzQ3VzdG9tRmlsdGVyRW5hYmxlZEtleSgpKSk7CiAg
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NSZWdpb25zRW5hYmxlZEtleSgp
KSk7CiAgICAgc2V0dGluZ3MtPnNldENTU0dyaWRMYXlvdXRFbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzR3JpZExheW91dEVuYWJsZWRLZXkoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggM2M5ZDBi
Yy4uMmQyZmEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
CkBAIC0yMDksNiArMjA5LDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmCiAgICAgYm9vbCBz
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93ZWJQYWdlLT5zY3JvbGxpbmdQ
ZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CiAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRj
aChiaW5kKCZTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnNjcm9s
bGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCkpOwogCisgICAg
aWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gbWFpbkZyYW1lVGlsZWRCYWNraW5nKCkp
IHsKKyAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRBZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMobV93
ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQoKSk7CisgICAgICAgIHRpbGVkQmFja2luZy0+c2V0VW5wYXJlbnRzT2Zmc2NyZWVuVGls
ZXMobV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT51bnBhcmVudE9mZnNjcmVlblRp
bGVzRW5hYmxlZCgpKTsKKyAgICB9CisKICAgICAvLyBTb29uIHdlIHdhbnQgcGFnZXMgd2l0aCBm
aXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYmUgc2Nyb2xsZWQgYnkgdGhl
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yLgogICAgIC8vIEFzIGEgcGFydCBvZiB0aGF0IHdvcmssIHdl
IGhhdmUgdG8gY29tcG9zaXRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzLCBhbmQgd2UgaGF2ZSB0
byBhbGxvdyB0aG9zZQogICAgIC8vIGVsZW1lbnRzIHRvIGNyZWF0ZSBhIHN0YWNraW5nIGNvbnRl
eHQuCkBAIC00NDcsNiArNDUyLDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKmxheWVyKQogICAgIGlmIChtX3Bh
Z2VPdmVybGF5TGF5ZXIpCiAgICAgICAgIFttX3Jvb3RMYXllci5nZXQoKSBhZGRTdWJsYXllcjpt
X3BhZ2VPdmVybGF5TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CiAKKyAgICBpZiAoVGlsZWRCYWNr
aW5nKiB0aWxlZEJhY2tpbmcgPSBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKSkgeworICAgICAgICB0
aWxlZEJhY2tpbmctPnNldEFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyhtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPnNldHRpbmdzKCktPmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCgpKTsKKyAg
ICAgICAgdGlsZWRCYWNraW5nLT5zZXRVbnBhcmVudHNPZmZzY3JlZW5UaWxlcyhtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnVucGFyZW50T2Zmc2NyZWVuVGlsZXNFbmFibGVkKCkp
OworICAgIH0KKwogICAgIHVwZGF0ZURlYnVnSW5mb0xheWVyKG1fd2ViUGFnZS0+Y29yZVBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKCkpOwogCiAgICAgW0NB
VHJhbnNhY3Rpb24gY29tbWl0XTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181386</attachid>
            <date>2013-01-04 15:07:42 -0800</date>
            <delta_ts>2013-01-04 15:11:19 -0800</delta_ts>
            <desc>simpler patch, always unparent (remove the setting)</desc>
            <filename>purgable-tiles-opensource.diff</filename>
            <type>text/plain</type>
            <size>25543</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYmJmNDQ3Li4zZGVmZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTMtMDEtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gUmVtb3ZlIG5vbi12aXNpYmxlIHRpbGVzIGZyb20gdGhlIGxheWVyIHRy
ZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjA2
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI3NjE4MjE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5wYXJlbnRpbmcgdGlsZXMgd2hpY2ggYXJl
bid0IGN1cnJlbnRseSBvbi1zY3JlZW4gY2FuIGFsbG93IHVuZGVybHlpbmcKKyAgICAgICAgZnJh
bWV3b3JrcyB0byBtYW5hZ2UgdGhlIGxheWVyJ3MgYmFja2luZyBzdG9yZXMgbW9yZSBlZmZlY3Rp
dmVseSB0aGFuIHdlIGNhbi4KKworICAgICAgICBJbiBhZGRpdGlvbiwgYWRkIGEgc2V0dGluZyAo
QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKSB3aGljaCBrZWVwcyBtb3JlCisgICAgICAg
IHRpbGVzIGFyb3VuZCAod2UgZG9uJ3QgcmVtb3ZlIHRpbGVzIGluIGNvaG9ydHMsIG5vciB3aGVu
IHRoZSBUaWxlQ2FjaGUgbW92ZXMKKyAgICAgICAgb3V0IG9mIHRoZSB3aW5kb3cpLCB3aGljaCBp
cyBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgU2V0
dGluZ3M6OnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZC4KKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6IElu
aXRpYWxpemUgbV9hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQgdG8gZmFsc2UuCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVk
KTogQWRkZWQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oOiBBZGQgc2V0dGVyL2dldHRlciB0
byBoYW5kIGFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyB0aHJvdWdoIHRvIFRpbGVkQmFja2luZ3Mu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oOgorICAgICAg
ICAoVGlsZUNhY2hlKTogVHVybiBUaWxlVmFsaWRhdGlvblBvbGljeSBpbnRvIFRpbGVWYWxpZGF0
aW9uUG9saWN5RmxhZ3MsIGFuZCBhZGQKKyAgICAgICAgYSBmbGFnIGZvciB1bnBhcmVudGluZyBh
bGwgdGlsZXMuCisgICAgICAgIEltcGxlbWVudCBhZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMgc2V0
dGVyL2dldHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpUaWxlQ2FjaGUpOiBJbml0aWFsaXpl
IG1fYWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzIHRvIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6
VGlsZUNhY2hlOjpzZXRJc0luV2luZG93KTogUmV2YWxpZGF0ZSB0aWxlcyBpbW1lZGlhdGVseSBp
ZiB0aGUgVGlsZUNhY2hlIGhhcyBqdXN0IGVudGVyZWQgdGhlIHdpbmRvdy4KKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVDYWNoZTo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICBU
aGlzIGlzIGNhbGxlZCBpZiBjb3ZlcmFnZSByZWN0LCB0aWxlIGNhY2hlIGxheWVyIGJvdW5kcywg
b3IgdmlzaWJpbGl0eSBjaGFuZ2VzLiBXZSB3aWxsIHJldmFsaWRhdGUgdGlsZXM6CisgICAgICAg
ICAgICAtIFJlbW92aW5nIGFsbCB0aWxlcyBmcm9tIHRoZSBsYXllciB0cmVlIGZvciBiYWNrZ3Jv
dW5kIHRpbGUgY2FjaGVzLgorICAgICAgICAgICAgLSBOb3QgcHJ1bmluZyBvbGQgdGlsZXMgaWYg
dGhlIGFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZCBzZXR0aW5nIGlzIG9uLgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICBBZG9wdCBU
aWxlVmFsaWRhdGlvblBvbGljeUZsYWdzIGluc3RlYWQgb2YgdGhlIG9sZCBlbnVtLCBhbmQgdXNl
IHNlcGFyYXRlIGZsYWdzIGZvciBmb3JlZ3JvdW5kL2JhY2tncm91bmQgY2FjaGVzLgorICAgICAg
ICBVbnBhcmVudCB0aWxlcyB3aGVuIHRoZXkgbW92ZSBvdXQgb2YgdGhlIHRpbGUgY292ZXJhZ2Ug
cmVjdC4KKyAgICAgICAgT25seSBzY2hlZHVsZSB0aGUgdGlsZSBjb2hvcnQgcmVtb3ZhbCB0aW1l
ciBpZiB3ZSdyZSBub3QgYWdncmVzc2l2ZWx5IGtlZXBpbmcgdGlsZXMgYXJvdW5kLgorICAgICAg
ICBFbnN1cmUgdGhhdCB0aWxlcyBhcmUgcmUtYWRkZWQgdG8gdGhlIFRpbGVDYWNoZSBsYXllciB0
cmVlIGlmIHRoZXkgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgVW5wYXJlbnQgYWxsIHRpbGVzIGlm
IFRpbGVWYWxpZGF0aW9uUG9saWN5RmxhZ3Mgc2F5cyB0byAoZnJvbSB0aWxlUmV2YWxpZGF0aW9u
VGltZXJGaXJlZCdzIGJhY2tncm91bmQgZmxhZ3MpLgorICAgICAgICBPbmx5IGFkZCBuZXcgdGls
ZXMgdG8gdGhlIFRpbGVDYWNoZSdzIGxheWVyIHRyZWUgaWYgd2UncmUgY3VycmVudGx5IGluIHRo
ZSB3aW5kb3cuCisgICAgICAgIERvbid0IHBydW5lIHNlY29uZGFyeSB0aWxlcyBpZiB0aGUgdmlz
aWJsZSByZWN0IGNoYW5nZXM7IHRoaXMgd2lsbCBhbHJlYWR5IG9jY3VyIGJlY2F1c2Ugd2hlbiB0
aGUgdmlzaWJsZVJlY3QKKyAgICAgICAgY2hhbmdlcywgd2UgYXJyaXZlIHZpYSB0aWxlUmV2YWxp
ZGF0aW9uVGltZXJGaXJlZCwgd2hpY2ggYXNrcyBmb3IgUHJ1bmVTZWNvbmRhcnlUaWxlcyBhbnl3
YXkgKGV4Y2VwdCBpZiB3ZSdyZQorICAgICAgICBhZ2dyZXNzaXZlbHkgcmV0YWluaW5nIHRpbGVz
KS4gVGhpcyBwcmV2ZW50cyB0aWxlcyBmcm9tIGJlaW5nIGRlbGV0ZWQgdW5leHBlY3RlZGx5IGR1
cmluZyBydWJiZXItYmFuZGluZyBvciB3aGVuIHpvb21lZCAodGhpcyBwYXJ0IG9mIHRoZSBwYXRj
aCBpcyB0aGFua3MgdG8gU2ltb24pLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjplbnN1
cmVUaWxlc0ZvclJlY3QpOgorICAgICAgICBEb24ndCBlbnN1cmUgYW55IHRpbGVzIGlmIHRoZSBU
aWxlQ2FjaGUgaXMgb2Zmc2NyZWVuLgorICAgICAgICBFbnN1cmUgdGhhdCB0aWxlcyBhcmUgcmUt
YWRkZWQgdG8gdGhlIFRpbGVDYWNoZSBsYXllciB0cmVlIGlmIHRoZXkgYWxyZWFkeSBleGlzdC4K
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6ZHJhd1RpbGVNYXBDb250ZW50cyk6CisgICAg
ICAgIERyYXcgYSB0aGljayBwdXJwbGUgYm9yZGVyIGFyb3VuZCB0aWxlcyB0aGF0IGhhdmUgYmVl
biB1bnBhcmVudGVkLgorCiAyMDEzLTAxLTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgTm8gd2F5IHRvIG9idGFpbiBhIERPTU5vZGUgZ2l2ZW4gYSBKUyB3cmFw
cGVyIGZvciBhIE5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTFlYTZiNS4uNmJkMDg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTk4NSw2ICs5ODUsNyBAQCBfX1pON1dlYkNvcmU4U2V0
dGluZ3MzMmRlZmF1bHRET01UaW1lckFsaWdubWVudEludGVydmFsRXYKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczMyc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMzJzZXROZWVkc0Fkb2JlRnJhbWVSZWxvYWRpbmdRdWlya0ViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MzMnNldFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkRWIKK19fWk43V2Vi
Q29yZThTZXR0aW5nczMzc2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczM3c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZEVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3M0NXNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0
cmlidXRlU2V0dGVyc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMXNldFJlc29sdXRpb25PdmVy
cmlkZUVSS05TXzdJbnRTaXplRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCAwYTFmOTNm
Li5lNGIwMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMTg2LDYgKzE4Niw3IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNl
dHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiB7CiAgICAgLy8gQSBGcmFt
ZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRv
bWljU3RyaW5nCkBAIC02NDEsNiArNjQyLDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldFNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIGlmIChtX3BhZ2Ut
Pm1haW5GcmFtZSgpICYmIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGVuYWJsZWQpOwogfQorICAgIAordm9pZCBTZXR0aW5nczo6c2V0QWdncmVzc2l2ZVRp
bGVSZXRlbnRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2FnZ3Jlc3NpdmVUaWxl
UmV0ZW50aW9uRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CiAKIHZvaWQgU2V0dGluZ3M6OnNldE1vY2tT
Y3JvbGxiYXJzRW5hYmxlZChib29sIGZsYWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXgg
YTZmYTBmZS4uMTUxZGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjkyLDYgKzI5Miw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dn
aW5nRW5hYmxlZDsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRBZ2dyZXNzaXZlVGlsZVJl
dGVudGlvbkVuYWJsZWQoYm9vbCk7CisgICAgICAgIGJvb2wgYWdncmVzc2l2ZVRpbGVSZXRlbnRp
b25FbmFibGVkKCkgeyByZXR1cm4gbV9hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQ7IH0K
IAogI2lmIFVTRShKU0MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFJlc3BlY3RQcmlv
cml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKQEAgLTM2Niw2ICszNjksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCA6IDE7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFi
bGVkIDogMTsKIAogICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0
aW5nc1RpbWVyOwogICAgICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChU
aW1lcjxTZXR0aW5ncz4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nLmgKaW5kZXggNTZkNzM2YS4uYmZmMWE3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKQEAgLTcwLDYgKzcwLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKICAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWdn
cmVzc2l2ZWx5UmV0YWluc1RpbGVzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWdncmVz
c2l2ZWx5UmV0YWluc1RpbGVzKCkgY29uc3QgPSAwOworCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVz
dGluZwogICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlR3JpZEV4dGVudCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUuaAppbmRl
eCA0N2E3ODc2Li5mNDAxOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTUsNiArMTE1LDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIEludFJlY3QgdGlsZUdyaWRFeHRlbnQoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChi
b29sIGZsYWcpIE9WRVJSSURFIHsgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
ID0gZmxhZzsgfQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEFnZ3Jlc3NpdmVseVJldGFpbnNU
aWxlcyhib29sIGZsYWcpIE9WRVJSSURFIHsgbV9hZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMgPSBm
bGFnOyB9CisgICAgdmlydHVhbCBib29sIGFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fYWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzOyB9CiAgICAgdmly
dHVhbCBJbnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIENBTGF5ZXIgKnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsaW5nTW9kZUluZGljYXRpb24oU2Nyb2xsaW5nTW9kZUlu
ZGljYXRpb24pIE9WRVJSSURFOwpAQCAtMTMzLDExICsxMzUsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2NoZWR1bGVDb2hvcnRSZW1vdmFsKCk7CiAgICAgdm9pZCBjb2hvcnRSZW1vdmFsVGltZXJG
aXJlZChUaW1lcjxUaWxlQ2FjaGU+Kik7CiAgICAgCi0gICAgZW51bSBUaWxlVmFsaWRhdGlvblBv
bGljeSB7Ci0gICAgICAgIEtlZXBTZWNvbmRhcnlUaWxlcywKLSAgICAgICAgUHJ1bmVTZWNvbmRh
cnlUaWxlcwotICAgIH07Ci0gICAgdm9pZCByZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Q
b2xpY3kgPSBLZWVwU2Vjb25kYXJ5VGlsZXMpOworICAgIHR5cGVkZWYgdW5zaWduZWQgVGlsZVZh
bGlkYXRpb25Qb2xpY3lGbGFnczsKKworICAgIHZvaWQgcmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxp
ZGF0aW9uUG9saWN5RmxhZ3MgZm9yZWdyb3VuZFZhbGlkYXRpb25Qb2xpY3kgPSAwLCBUaWxlVmFs
aWRhdGlvblBvbGljeUZsYWdzIGJhY2tncm91bmRWYWxpZGF0aW9uUG9saWN5ID0gMCk7CiAgICAg
dm9pZCBlbnN1cmVUaWxlc0ZvclJlY3QoY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRl
VGlsZUNvdmVyYWdlTWFwKCk7CiAKQEAgLTE5MSw2ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIFRp
bGVDb3ZlcmFnZSBtX3RpbGVDb3ZlcmFnZTsKICAgICBib29sIG1faXNJbldpbmRvdzsKICAgICBi
b29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsKKyAgICBib29sIG1fYWdn
cmVzc2l2ZWx5UmV0YWluc1RpbGVzOwogICAgIGJvb2wgbV9hY2NlbGVyYXRlc0RyYXdpbmc7CiAg
ICAgYm9vbCBtX3RpbGVzQXJlT3BhcXVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQppbmRleCAyZTAzOTlhLi43ZWZjOTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGls
ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ2FjaGUubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDYgKzgwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBA
ZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2VudW0gVGlsZVZhbGlkYXRpb25Qb2xp
Y3lGbGFnIHsKKyAgICBQcnVuZVNlY29uZGFyeVRpbGVzID0gMSA8PCAwLAorICAgIFVucGFyZW50
QWxsVGlsZXMgPSAxIDw8IDEKK307CiAKIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNo
ZVdpZHRoID0gNTEyOwogc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZUNhY2hlSGVpZ2h0ID0g
NTEyOwpAQCAtMTAwLDYgKzEwNSw3IEBAIFRpbGVDYWNoZTo6VGlsZUNhY2hlKFdlYlRpbGVDYWNo
ZUxheWVyKiB0aWxlQ2FjaGVMYXllcikKICAgICAsIG1fdGlsZUNvdmVyYWdlKENvdmVyYWdlRm9y
VmlzaWJsZUFyZWEpCiAgICAgLCBtX2lzSW5XaW5kb3coZmFsc2UpCiAgICAgLCBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2FnZ3Jlc3NpdmVseVJl
dGFpbnNUaWxlcyhmYWxzZSkKICAgICAsIG1fYWNjZWxlcmF0ZXNEcmF3aW5nKGZhbHNlKQogICAg
ICwgbV90aWxlc0FyZU9wYXF1ZShmYWxzZSkKICAgICAsIG1fdGlsZURlYnVnQm9yZGVyV2lkdGgo
MCkKQEAgLTI0Miw3ICsyNDgsNyBAQCB2b2lkIFRpbGVDYWNoZTo6c2V0U2NhbGUoQ0dGbG9hdCBz
Y2FsZSkKICAgICBtX3NjYWxlID0gc2NhbGU7CiAgICAgW21fdGlsZUNvbnRhaW5lckxheWVyLmdl
dCgpIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKDEgLyBtX3NjYWxlLCAxIC8g
bV9zY2FsZSwgMSldOwogCi0gICAgcmV2YWxpZGF0ZVRpbGVzKFBydW5lU2Vjb25kYXJ5VGlsZXMp
OworICAgIHJldmFsaWRhdGVUaWxlcyhQcnVuZVNlY29uZGFyeVRpbGVzLCBQcnVuZVNlY29uZGFy
eVRpbGVzKTsKIAogICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVz
LmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBjb25zdCBUaWxlSW5mbyYgdGlsZUluZm8gPSBpdC0+dmFsdWU7CkBAIC0zMTAsMTAgKzMxNiw4
IEBAIHZvaWQgVGlsZUNhY2hlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIAogICAg
IG1faXNJbldpbmRvdyA9IGlzSW5XaW5kb3c7CiAKLSAgICBpZiAoIW1faXNJbldpbmRvdykgewot
ICAgICAgICBjb25zdCBkb3VibGUgdGlsZVJldmFsaWRhdGlvblRpbWVvdXQgPSA0OwotICAgICAg
ICBzY2hlZHVsZVRpbGVSZXZhbGlkYXRpb24odGlsZVJldmFsaWRhdGlvblRpbWVvdXQpOwotICAg
IH0KKyAgICBjb25zdCBkb3VibGUgdGlsZVJldmFsaWRhdGlvblRpbWVvdXQgPSA0OworICAgIHNj
aGVkdWxlVGlsZVJldmFsaWRhdGlvbihtX2lzSW5XaW5kb3cgPyAwIDogdGlsZVJldmFsaWRhdGlv
blRpbWVvdXQpOwogfQogCiB2b2lkIFRpbGVDYWNoZTo6c2V0VGlsZUNvdmVyYWdlKFRpbGVDb3Zl
cmFnZSBjb3ZlcmFnZSkKQEAgLTQ0MCw3ICs0NDQsMTAgQEAgdm9pZCBUaWxlQ2FjaGU6OnNjaGVk
dWxlVGlsZVJldmFsaWRhdGlvbihkb3VibGUgaW50ZXJ2YWwpCiAKIHZvaWQgVGlsZUNhY2hlOjp0
aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZChUaW1lcjxUaWxlQ2FjaGU+KikKIHsKLSAgICByZXZh
bGlkYXRlVGlsZXMoUHJ1bmVTZWNvbmRhcnlUaWxlcyk7CisgICAgVGlsZVZhbGlkYXRpb25Qb2xp
Y3lGbGFncyBmb3JlZ3JvdW5kVmFsaWRhdGlvblBvbGljeSA9IG1fYWdncmVzc2l2ZWx5UmV0YWlu
c1RpbGVzID8gMCA6IFBydW5lU2Vjb25kYXJ5VGlsZXM7CisgICAgVGlsZVZhbGlkYXRpb25Qb2xp
Y3lGbGFncyBiYWNrZ3JvdW5kVmFsaWRhdGlvblBvbGljeSA9IGZvcmVncm91bmRWYWxpZGF0aW9u
UG9saWN5IHwgVW5wYXJlbnRBbGxUaWxlczsKKworICAgIHJldmFsaWRhdGVUaWxlcyhmb3JlZ3Jv
dW5kVmFsaWRhdGlvblBvbGljeSwgYmFja2dyb3VuZFZhbGlkYXRpb25Qb2xpY3kpOwogfQogCiB1
bnNpZ25lZCBUaWxlQ2FjaGU6OmJsYW5rUGl4ZWxDb3VudCgpIGNvbnN0CkBAIC01MzEsNyArNTM4
LDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJlbW92ZVRpbGVzSW5Db2hvcnQoVGlsZUNvaG9ydCBjb2hv
cnQpCiAgICAgfQogfQogCi12b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxp
ZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCit2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0
ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5RmxhZ3MgZm9yZWdyb3VuZFZhbGlkYXRpb25Qb2xp
Y3ksIFRpbGVWYWxpZGF0aW9uUG9saWN5RmxhZ3MgYmFja2dyb3VuZFZhbGlkYXRpb25Qb2xpY3kp
CiB7CiAgICAgLy8gSWYgdGhlIHVuZGVybHlpbmcgUGxhdGZvcm1MYXllciBoYXMgYmVlbiBkZXN0
cm95ZWQsIGJ1dCB0aGUgV2ViVGlsZUNhY2hlTGF5ZXIgaGFzbid0CiAgICAgLy8gcGxhdGZvcm1M
YXllciB3aWxsIGJlIG51bGwgaGVyZS4KQEAgLTU0MSwxMiArNTQ4LDggQEAgdm9pZCBUaWxlQ2Fj
aGU6OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeSB2YWxpZGF0aW9uUG9saWN5
KQogCiAgICAgaWYgKG1fdmlzaWJsZVJlY3QuaXNFbXB0eSgpIHx8IGJvdW5kcygpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgdGhlIHZpc2libGUgcmVjdCBzaXplIGNo
YW5nZWQsIGRyb3Agc2Vjb25kYXJ5IHRpbGVzIHRvIGF2b2lkIGxvdHMgb2YgcmVwYWludGluZy4K
LSAgICAvLyBGSVhNRTogd2hlbiBzY2FsZWQsIHRoaXMgY2hhbmdlcyBkdWUgdG8gcm91bmRpbmcu
IFdlIHNob3VsZCB1c2UgRmxvYXRSZWN0cyBvciBzb21ldGhpbmcuCi0gICAgLy8gQWxzbyBjaGFu
Z2VzIG9uIHJ1YmJlciBiYW5kaW5nLgotICAgIGlmIChtX3Zpc2libGVSZWN0QXRMYXN0UmV2YWxp
ZGF0ZS5zaXplKCkgIT0gbV92aXNpYmxlUmVjdC5zaXplKCkpCi0gICAgICAgIHZhbGlkYXRpb25Q
b2xpY3kgPSBQcnVuZVNlY29uZGFyeVRpbGVzOworICAgIAorICAgIFRpbGVWYWxpZGF0aW9uUG9s
aWN5RmxhZ3MgdmFsaWRhdGlvblBvbGljeSA9IG1faXNJbldpbmRvdyA/IGZvcmVncm91bmRWYWxp
ZGF0aW9uUG9saWN5IDogYmFja2dyb3VuZFZhbGlkYXRpb25Qb2xpY3k7CiAgICAgCiAgICAgSW50
UmVjdCB0aWxlQ292ZXJhZ2VSZWN0ID0gY29tcHV0ZVRpbGVDb3ZlcmFnZVJlY3QobV92aXNpYmxl
UmVjdEF0TGFzdFJldmFsaWRhdGUpOwogICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0KHRpbGVDb3Zl
cmFnZVJlY3QpOwpAQCAtNTgzLDYgKzU4Niw3IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRl
VGlsZXMoVGlsZVZhbGlkYXRpb25Qb2xpY3kgdmFsaWRhdGlvblBvbGljeSkKICAgICAgICAgICAg
ICAgICBpZiAodGlsZUluZm8uY29ob3J0ID09IFZpc2libGVUaWxlQ29ob3J0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIHRpbGVJbmZvLmNvaG9ydCA9IGN1cnJDb2hvcnQ7CiAgICAgICAgICAgICAg
ICAgICAgICsrdGlsZXNJbkNvaG9ydDsKKyAgICAgICAgICAgICAgICAgICAgW3RpbGVJbmZvLmxh
eWVyLmdldCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU5MCw3ICs1OTQsOCBAQCB2b2lkIFRpbGVDYWNoZTo6
cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAg
ICAgICAgIGlmICh0aWxlc0luQ29ob3J0KQogICAgICAgICAgICAgc3RhcnRlZE5ld0NvaG9ydChj
dXJyQ29ob3J0KTsKIAotICAgICAgICBzY2hlZHVsZUNvaG9ydFJlbW92YWwoKTsKKyAgICAgICAg
aWYgKCFtX2FnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcykKKyAgICAgICAgICAgIHNjaGVkdWxlQ29o
b3J0UmVtb3ZhbCgpOwogICAgIH0KIAogICAgIFRpbGVJbmRleCB0b3BMZWZ0OwpAQCAtNjAxLDcg
KzYwNiw3IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMoVGlsZVZhbGlkYXRpb25Q
b2xpY3kgdmFsaWRhdGlvblBvbGljeSkKICAgICAKICAgICAvLyBFbnN1cmUgcHJpbWFyeSB0aWxl
IGNvdmVyYWdlIHRpbGVzLgogICAgIG1fcHJpbWFyeVRpbGVDb3ZlcmFnZVJlY3QgPSBJbnRSZWN0
KCk7Ci0gICAgCisKICAgICBmb3IgKGludCB5ID0gdG9wTGVmdC55KCk7IHkgPD0gYm90dG9tUmln
aHQueSgpOyArK3kpIHsKICAgICAgICAgZm9yIChpbnQgeCA9IHRvcExlZnQueCgpOyB4IDw9IGJv
dHRvbVJpZ2h0LngoKTsgKyt4KSB7CiAgICAgICAgICAgICBUaWxlSW5kZXggdGlsZUluZGV4KHgs
IHkpOwpAQCAtNjEyLDggKzYxNywxMiBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVz
KFRpbGVWYWxpZGF0aW9uUG9saWN5IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgICAgICBUaWxl
SW5mbyYgdGlsZUluZm8gPSBtX3RpbGVzLmFkZCh0aWxlSW5kZXgsIFRpbGVJbmZvKCkpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICAgICAgICAgIGlmICghdGlsZUluZm8ubGF5ZXIpIHsKICAgICAgICAg
ICAgICAgICB0aWxlSW5mby5sYXllciA9IGNyZWF0ZVRpbGVMYXllcih0aWxlUmVjdCk7Ci0gICAg
ICAgICAgICAgICAgW21fdGlsZUNvbnRhaW5lckxheWVyLmdldCgpIGFkZFN1YmxheWVyOnRpbGVJ
bmZvLmxheWVyLmdldCgpXTsKKyAgICAgICAgICAgICAgICBpZiAobV9pc0luV2luZG93KQorICAg
ICAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6
dGlsZUluZm8ubGF5ZXIuZ2V0KCldOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9pc0luV2luZG93ICYmICFbdGlsZUluZm8ubGF5ZXIuZ2V0KCkgc3VwZXJsYXll
cl0pCisgICAgICAgICAgICAgICAgICAgIFttX3RpbGVDb250YWluZXJMYXllci5nZXQoKSBhZGRT
dWJsYXllcjp0aWxlSW5mby5sYXllci5nZXQoKV07CisKICAgICAgICAgICAgICAgICAvLyBXZSBh
bHJlYWR5IGhhdmUgYSBsYXllciBmb3IgdGhpcyB0aWxlLiBFbnN1cmUgdGhhdCBpdHMgc2l6ZSBp
cyBjb3JyZWN0LgogICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSB0aWxlTGF5ZXJTaXplKFt0aWxl
SW5mby5sYXllci5nZXQoKSBmcmFtZV0uc2l6ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHRpbGVM
YXllclNpemUgPT0gRmxvYXRTaXplKHRpbGVSZWN0LnNpemUoKSkpCkBAIC02MjgsMTAgKzYzNywx
NSBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKFRpbGVWYWxpZGF0aW9uUG9saWN5
IHZhbGlkYXRpb25Qb2xpY3kpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmFsaWRhdGlv
blBvbGljeSA9PSBQcnVuZVNlY29uZGFyeVRpbGVzKSB7CisgICAgaWYgKHZhbGlkYXRpb25Qb2xp
Y3kgJiBQcnVuZVNlY29uZGFyeVRpbGVzKSB7CiAgICAgICAgIHJlbW92ZUFsbFNlY29uZGFyeVRp
bGVzKCk7CiAgICAgICAgIG1fY29ob3J0TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIGlmICh2
YWxpZGF0aW9uUG9saWN5ICYgVW5wYXJlbnRBbGxUaWxlcykgeworICAgICAgICBmb3IgKFRpbGVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBbaXQtPnZhbHVlLmxheWVyLmdldCgpIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKKyAgICB9CiAgICAgCiAgICAgaWYgKG1fdGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllcikKICAgICAgICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CkBAIC02Njks
NyArNjgzLDcgQEAgVGlsZUNhY2hlOjpUaWxlQ29ob3J0IFRpbGVDYWNoZTo6b2xkZXN0VGlsZUNv
aG9ydCgpIGNvbnN0CiB2b2lkIFRpbGVDYWNoZTo6c2NoZWR1bGVDb2hvcnRSZW1vdmFsKCkKIHsK
ICAgICBjb25zdCBkb3VibGUgY29ob3J0UmVtb3ZhbFRpbWVyU2Vjb25kcyA9IDE7Ci0gICAgCisK
ICAgICAvLyBTdGFydCB0aGUgdGltZXIsIG9yIHJlc2NoZWR1bGUgdGhlIHRpbWVyIGZyb20gbm93
IGlmIGl0J3MgYWxyZWFkeSBhY3RpdmUuCiAgICAgaWYgKCFtX2NvaG9ydFJlbW92YWxUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX2NvaG9ydFJlbW92YWxUaW1lci5zdGFydFJlcGVhdGluZyhj
b2hvcnRSZW1vdmFsVGltZXJTZWNvbmRzKTsKQEAgLTY4NCw3ICs2OTgsNyBAQCB2b2lkIFRpbGVD
YWNoZTo6Y29ob3J0UmVtb3ZhbFRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hlPiopCiAKICAgICBk
b3VibGUgY29ob3J0TGlmZVRpbWVTZWNvbmRzID0gMjsKICAgICBkb3VibGUgdGltZVRocmVzaG9s
ZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gY29ob3J0TGlmZVRpbWVTZWNvbmRz
OwotICAgIAorCiAgICAgd2hpbGUgKCFtX2NvaG9ydExpc3QuaXNFbXB0eSgpICYmIG1fY29ob3J0
TGlzdC5maXJzdCgpLmNyZWF0aW9uVGltZSA8IHRpbWVUaHJlc2hvbGQpIHsKICAgICAgICAgVGls
ZUNvaG9ydEluZm8gZmlyc3RDb2hvcnQgPSBtX2NvaG9ydExpc3QudGFrZUZpcnN0KCk7CiAgICAg
ICAgIHJlbW92ZVRpbGVzSW5Db2hvcnQoZmlyc3RDb2hvcnQuY29ob3J0KTsKQEAgLTY5Niw2ICs3
MTAsOSBAQCB2b2lkIFRpbGVDYWNoZTo6Y29ob3J0UmVtb3ZhbFRpbWVyRmlyZWQoVGltZXI8VGls
ZUNhY2hlPiopCiAKIHZvaWQgVGlsZUNhY2hlOjplbnN1cmVUaWxlc0ZvclJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKKyAgICBpZiAoIW1faXNJbldpbmRvdykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXIobV90aWxlQ2FjaGVMYXllcik7CiAgICAgaWYgKCFwbGF0Zm9ybUxheWVy
KQogICAgICAgICByZXR1cm47CkBAIC03MjUsNiArNzQyLDkgQEAgdm9pZCBUaWxlQ2FjaGU6OmVu
c3VyZVRpbGVzRm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICAgICAgICAgIHRp
bGVJbmZvLmxheWVyID0gY3JlYXRlVGlsZUxheWVyKHRpbGVSZWN0KTsKICAgICAgICAgICAgICAg
ICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6dGlsZUluZm8ubGF5ZXIu
Z2V0KCldOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoIVt0aWxl
SW5mby5sYXllci5nZXQoKSBzdXBlcmxheWVyXSkKKyAgICAgICAgICAgICAgICAgICAgW21fdGls
ZUNvbnRhaW5lckxheWVyLmdldCgpIGFkZFN1YmxheWVyOnRpbGVJbmZvLmxheWVyLmdldCgpXTsK
KwogICAgICAgICAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGxheWVyIGZvciB0aGlzIHRp
bGUuIEVuc3VyZSB0aGF0IGl0cyBzaXplIGlzIGNvcnJlY3QuCiAgICAgICAgICAgICAgICAgQ0dT
aXplIHRpbGVMYXllclNpemUgPSBbdGlsZUluZm8ubGF5ZXIuZ2V0KCkgZnJhbWVdLnNpemU7CiAg
ICAgICAgICAgICAgICAgaWYgKHRpbGVMYXllclNpemUud2lkdGggPj0gdGlsZVJlY3Qud2lkdGgo
KSAmJiB0aWxlTGF5ZXJTaXplLmhlaWdodCA+PSB0aWxlUmVjdC5oZWlnaHQoKSkKQEAgLTkzMywx
OCArOTUzLDE0IEBAIHZvaWQgVGlsZUNhY2hlOjpkcmF3VGlsZU1hcENvbnRlbnRzKENHQ29udGV4
dFJlZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpCiAgICAgQ0dDb250ZXh0RmlsbFJlY3Qo
Y29udGV4dCwgbGF5ZXJCb3VuZHMpOwogCiAgICAgQ0dGbG9hdCBzY2FsZUZhY3RvciA9IGxheWVy
Qm91bmRzLnNpemUud2lkdGggLyBib3VuZHMoKS53aWR0aCgpOwotICAgIAotICAgIENHQ29udGV4
dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAsIDEpOwogCiAgICAgQ0dGbG9hdCBj
b250ZXh0U2NhbGUgPSBzY2FsZUZhY3RvciAvIHNjYWxlKCk7CiAgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dCwgY29udGV4dFNjYWxlLCBjb250ZXh0U2NhbGUpOwotCi0gICAgQ0dDb250ZXh0
U2V0TGluZVdpZHRoKGNvbnRleHQsIDAuNSAvIGNvbnRleHRTY2FsZSk7CiAgICAgCiAgICAgZm9y
IChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90
aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0
aWxlSW5mbyA9IGl0LT52YWx1ZTsKICAgICAgICAgV2ViVGlsZUxheWVyKiB0aWxlTGF5ZXIgPSB0
aWxlSW5mby5sYXllci5nZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgQ0dGbG9hdCByZWQgPSAx
OwogICAgICAgICBDR0Zsb2F0IGdyZWVuID0gMTsKICAgICAgICAgQ0dGbG9hdCBibHVlID0gMTsK
QEAgLTk1MywxNiArOTY5LDI0IEBAIHZvaWQgVGlsZUNhY2hlOjpkcmF3VGlsZU1hcENvbnRlbnRz
KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgbGF5ZXJCb3VuZHMpCiAgICAgICAgICAgICBn
cmVlbiA9IDAuMTI1OwogICAgICAgICAgICAgYmx1ZSA9IDA7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgVGlsZUNvaG9ydCBuZXdlc3RDb2hvcnQgPSBuZXdlc3RUaWxlQ29ob3J0KCk7
CiAgICAgICAgIFRpbGVDb2hvcnQgb2xkZXN0Q29ob3J0ID0gb2xkZXN0VGlsZUNvaG9ydCgpOwot
ICAgICAgICAKLSAgICAgICAgaWYgKHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNvaG9y
dCAmJiBuZXdlc3RDb2hvcnQgPiBvbGRlc3RDb2hvcnQpIHsKKworICAgICAgICBpZiAoIW1fYWdn
cmVzc2l2ZWx5UmV0YWluc1RpbGVzICYmIHRpbGVJbmZvLmNvaG9ydCAhPSBWaXNpYmxlVGlsZUNv
aG9ydCAmJiBuZXdlc3RDb2hvcnQgPiBvbGRlc3RDb2hvcnQpIHsKICAgICAgICAgICAgIGZsb2F0
IGNvaG9ydFByb3BvcnRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4oKG5ld2VzdENvaG9ydCAtIHRp
bGVJbmZvLmNvaG9ydCkpIC8gKG5ld2VzdENvaG9ydCAtIG9sZGVzdENvaG9ydCk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwg
MSAtIGNvaG9ydFByb3BvcnRpb24pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIENHQ29u
dGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCAxKTsKIAorICAg
ICAgICBpZiAoW3RpbGVMYXllciBzdXBlcmxheWVyXSkgeworICAgICAgICAgICAgQ0dDb250ZXh0
U2V0TGluZVdpZHRoKGNvbnRleHQsIDAuNSAvIGNvbnRleHRTY2FsZSk7CisgICAgICAgICAgICBD
R0NvbnRleHRTZXRSR0JTdHJva2VDb2xvcihjb250ZXh0LCAwLCAwLCAwLCAxKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCAxIC8g
Y29udGV4dFNjYWxlKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNv
bnRleHQsIDAuMiwgMC4xLCAwLjksIDEpOworICAgICAgICB9CisKICAgICAgICAgQ0dSZWN0IGZy
YW1lID0gW3RpbGVMYXllciBmcmFtZV07CiAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRl
eHQsIGZyYW1lKTsKICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUmVjdChjb250ZXh0LCBmcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZTk0ZjljMi4uOTUxNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDEzLTAxLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFt3azJdIFJlbW92ZSBub24tdmlzaWJsZSB0aWxlcyBmcm9tIHRoZSBsYXllciB0
cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYw
NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNzYxODIxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdG8gZW5hYmxlIGFn
Z3Jlc3NpdmUgcmV0ZW50aW9uIG9mIFRpbGVDYWNoZSB0aWxlcy4gSWYgZW5hYmxlZCwKKyAgICAg
ICAgVGlsZUNhY2hlIHdpbGwgZ2VuZXJhbGx5IHRyeSB0byBrZWVwIGFyb3VuZCBhbGwgdGlsZXMu
IFRoaXMgc2V0dGluZyBpcyBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9u
RW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRp
b25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5j
ZXMpOiBGb3J3YXJkIHRoZSBzZXR0aW5nIHRvIHRoZSBUaWxlZEJhY2tpbmcuCisKIDIwMTMtMDEt
MDMgIEtpcmFuIE11cHBhbGEgIDxjbXVwcGFsYUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5zdXJl
IGF1dG9yZWxlYXNlIHBvb2wgZXhpc3RzIHdoZW4gY2FsbGluZyBXS05TUHJvY2Vzc0luZm9Qcm9j
ZXNzQXNzZXJ0aW9uV2l0aFR5cGVzIG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggYWFjYzNjOC4uYWY3MmJlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xNDIsNiArMTQyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oUERGUGx1Z2luRW5hYmxlZCwgcGRmUGx1Z2luRW5h
YmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhVc2VzRW5jb2RpbmdEZXRlY3Rv
ciwgdXNlc0VuY29kaW5nRGV0ZWN0b3IsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8o
VGV4dEF1dG9zaXppbmdFbmFibGVkLCB0ZXh0QXV0b3NpemluZ0VuYWJsZWQsIEJvb2wsIGJvb2ws
IGZhbHNlKSBcCisgICAgbWFjcm8oQWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkLCBhZ2dy
ZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAog
CiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4
IDFmZTdjZGMuLjAzNGJjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTk5NCwzICs5OTQsMTIgQEAgYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYpCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnRleHRBdXRvc2l6aW5nRW5h
YmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlv
bkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQor
eworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9u
RW5hYmxlZChlbmFibGVkKTsKK30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0QWdncmVzc2l2ZVRp
bGVSZXRlbnRpb25FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7Cisg
ICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9u
RW5hYmxlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCAwNGI3YTJhLi45MDJhYTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aApAQCAtMjM1LDYgKzIzNSwxMCBAQCBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0Q29v
a2llRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKIFdLX0VYUE9SVCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRQREZQbHVnaW5FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXMsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0UERG
UGx1Z2luRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKIAorLy8gRGVmYXVs
dHMgdG8gZmFsc2UKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRBZ2dyZXNzaXZlVGls
ZVJldGVudGlvbkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcywgYm9vbCBlbmFi
bGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRBZ2dyZXNzaXZlVGlsZVJldGVu
dGlvbkVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyk7CisKIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDkzYWNlNjIuLjdhYmZkODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTIzMjQsNiArMjMyNCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0Jv
cmRlcnMoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3Np
dGluZ0JvcmRlcnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRD
b3VudGVyKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y29tcG9z
aXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0U2hv
d1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlS2V5KCkpKTsKKyAgICBz
ZXR0aW5ncy0+c2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFi
bGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0N1c3RvbUZpbHRlckVu
YWJsZWRLZXkoKSkpOwogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNF
bmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzUmVn
aW9uc0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRDU1NHcmlkTGF5b3V0RW5hYmxl
ZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0dyaWRMYXlv
dXRFbmFibGVkS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCmluZGV4IDNjOWQwYmMuLmYwMjY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQpAQCAtMjA5LDYgKzIwOSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmCiAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkID0gbV93ZWJQ
YWdlLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CiAgICAgU2Nyb2xsaW5n
VGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCktPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZCkpOwogCisgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gbWFpbkZyYW1l
VGlsZWRCYWNraW5nKCkpCisgICAgICAgIHRpbGVkQmFja2luZy0+c2V0QWdncmVzc2l2ZWx5UmV0
YWluc1RpbGVzKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+YWdncmVzc2l2ZVRp
bGVSZXRlbnRpb25FbmFibGVkKCkpOworCiAgICAgLy8gU29vbiB3ZSB3YW50IHBhZ2VzIHdpdGgg
Zml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyB0byBiZSBhYmxlIHRvIGJlIHNjcm9sbGVkIGJ5IHRo
ZSBTY3JvbGxpbmdDb29yZGluYXRvci4KICAgICAvLyBBcyBhIHBhcnQgb2YgdGhhdCB3b3JrLCB3
ZSBoYXZlIHRvIGNvbXBvc2l0ZSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cywgYW5kIHdlIGhhdmUg
dG8gYWxsb3cgdGhvc2UKICAgICAvLyBlbGVtZW50cyB0byBjcmVhdGUgYSBzdGFja2luZyBjb250
ZXh0LgpAQCAtNDQ3LDYgKzQ1MCw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKmxheWVyKQogICAgIGlmIChtX3Bh
Z2VPdmVybGF5TGF5ZXIpCiAgICAgICAgIFttX3Jvb3RMYXllci5nZXQoKSBhZGRTdWJsYXllcjpt
X3BhZ2VPdmVybGF5TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CiAKKyAgICBpZiAoVGlsZWRCYWNr
aW5nKiB0aWxlZEJhY2tpbmcgPSBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKSkKKyAgICAgICAgdGls
ZWRCYWNraW5nLT5zZXRBZ2dyZXNzaXZlbHlSZXRhaW5zVGlsZXMobV93ZWJQYWdlLT5jb3JlUGFn
ZSgpLT5zZXR0aW5ncygpLT5hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoKSk7CisKICAg
ICB1cGRhdGVEZWJ1Z0luZm9MYXllcihtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkt
PnNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGNv
bW1pdF07Cg==
</data>
<flag name="review"
          id="198990"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>