<?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>160237</bug_id>
          
          <creation_ts>2016-07-27 02:23:27 -0700</creation_ts>
          <short_desc>Split calculateCacheSizes in two methods</short_desc>
          <delta_ts>2016-07-28 22:23:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214839</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-27 02:23:27 -0700</bug_when>
    <thetext>It&apos;s used to calculate memory and disk cache sizes, but only the web process is interested in memory caches, and the network process in disk cache. We can also avoid a lot of duplicated code between ports to set the cache model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214840</commentid>
    <comment_count>1</comment_count>
      <attachid>284681</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-27 02:33:09 -0700</bug_when>
    <thetext>Created attachment 284681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214853</commentid>
    <comment_count>2</comment_count>
      <attachid>284685</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-27 04:21:04 -0700</bug_when>
    <thetext>Created attachment 284685
Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214947</commentid>
    <comment_count>3</comment_count>
      <attachid>284685</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-27 10:04:25 -0700</bug_when>
    <thetext>Comment on attachment 284685
Try to fix mac builds

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

This introduces potential problems with values that don’t fit in 32-bits so that, at least, needs to be fixed.

&gt; Source/WebCore/platform/FileSystem.h:206
&gt; +WEBCORE_EXPORT uint64_t volumeFreeSizeForPath(const String&amp;);

No need for two blanks lines after this function. I think the right term for this is &quot;volume free space&quot;, not &quot;volume free size&quot;. The &quot;ForPath&quot; in this function name is peculiar, other functions in the file don’t use that naming. Having this down at the bottom with the platform-specific functions isn’t good. It should be moved up above into the platform-independent section.

Is it really acceptable for this function to return 0 to indicate failure?

&gt; Source/WebCore/platform/efl/FileSystemEfl.cpp:93
&gt; +    CString fsRep = fileSystemRepresentation(path);

I believe fileSystemRepresentation can fail and it returns an empty string in that case. Does this function do the right thing in that case?

&gt; Source/WebCore/platform/glib/FileSystemGlib.cpp:237
&gt; +    GUniquePtr&lt;gchar&gt; filename = unescapedFilename(path);

Other functions in this file check for null in the result of this function and handle it. This function should probably do the same.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:200
&gt; +    void platformSetURLCacheSize(unsigned long urlCacheMemoryCapacity, unsigned long urlCacheDiskCapacity);

The type here is wrong. &quot;unsigned long&quot; is the same size as &quot;unsigned&quot; and is 32-bit even on 64-bit systems with the compilers and environments we use. So the type here should either be &quot;unsigned&quot; if we want 32-bit, or a type like uint64_t or unsigned long long if we want 64-bit.

&gt; Source/WebKit2/Shared/CacheModel.h:41
&gt; +void calculateURLCacheSizes(CacheModel, uint64_t diskFreeSize, unsigned long&amp; urlCacheMemoryCapacity, unsigned long&amp; urlCacheDiskCapacity);

Same problem here. The type &quot;unsigned long&quot; should almost never be used anywhere in WebKit.

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:210
&gt; -#if PLATFORM(IOS)
&gt; +#if PLATFORM(IOS) || PLATFORM(GTK)
&gt;      PageCache::singleton().setShouldClearBackingStores(true);
&gt;  #endif

Don’t understand the rationale for doing this on iOS and GTK but not Mac. Probably needs a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215139</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-27 22:56:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 284685 [details]
&gt; Try to fix mac builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284685&amp;action=review
&gt; 
&gt; This introduces potential problems with values that don’t fit in 32-bits so
&gt; that, at least, needs to be fixed.

Thanks for the review. Note that I haven&apos;t changed the variable types at all, I just split the method leaving the same types. I agree this is a perfect moment to fix them if they have always been wrong.

&gt; &gt; Source/WebCore/platform/FileSystem.h:206
&gt; &gt; +WEBCORE_EXPORT uint64_t volumeFreeSizeForPath(const String&amp;);
&gt; 
&gt; No need for two blanks lines after this function. I think the right term for
&gt; this is &quot;volume free space&quot;, not &quot;volume free size&quot;. The &quot;ForPath&quot; in this
&gt; function name is peculiar, other functions in the file don’t use that
&gt; naming. Having this down at the bottom with the platform-specific functions
&gt; isn’t good. It should be moved up above into the platform-independent
&gt; section.

Sure. I think the ForPath is because the method doesn&apos;t really operate on the path, but on the volume where the path is. But yes, I think it&apos;s clear enough to not need the suffix.

&gt; Is it really acceptable for this function to return 0 to indicate failure?

I don&apos;t think we are checking the return value anyway, I&apos;ll fix that too.

&gt; &gt; Source/WebCore/platform/efl/FileSystemEfl.cpp:93
&gt; &gt; +    CString fsRep = fileSystemRepresentation(path);
&gt; 
&gt; I believe fileSystemRepresentation can fail and it returns an empty string
&gt; in that case. Does this function do the right thing in that case?

Right, good point.

&gt; &gt; Source/WebCore/platform/glib/FileSystemGlib.cpp:237
&gt; &gt; +    GUniquePtr&lt;gchar&gt; filename = unescapedFilename(path);
&gt; 
&gt; Other functions in this file check for null in the result of this function
&gt; and handle it. This function should probably do the same.

Indeed.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:200
&gt; &gt; +    void platformSetURLCacheSize(unsigned long urlCacheMemoryCapacity, unsigned long urlCacheDiskCapacity);
&gt; 
&gt; The type here is wrong. &quot;unsigned long&quot; is the same size as &quot;unsigned&quot; and
&gt; is 32-bit even on 64-bit systems with the compilers and environments we use.
&gt; So the type here should either be &quot;unsigned&quot; if we want 32-bit, or a type
&gt; like uint64_t or unsigned long long if we want 64-bit.

Ok, I will check which types to use.

&gt; &gt; Source/WebKit2/Shared/CacheModel.h:41
&gt; &gt; +void calculateURLCacheSizes(CacheModel, uint64_t diskFreeSize, unsigned long&amp; urlCacheMemoryCapacity, unsigned long&amp; urlCacheDiskCapacity);
&gt; 
&gt; Same problem here. The type &quot;unsigned long&quot; should almost never be used
&gt; anywhere in WebKit.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.cpp:210
&gt; &gt; -#if PLATFORM(IOS)
&gt; &gt; +#if PLATFORM(IOS) || PLATFORM(GTK)
&gt; &gt;      PageCache::singleton().setShouldClearBackingStores(true);
&gt; &gt;  #endif
&gt; 
&gt; Don’t understand the rationale for doing this on iOS and GTK but not Mac.
&gt; Probably needs a comment.

Me neither, I noticed that we were doing this inside a GTK platform ifdef in setCacheModel, and I thought that was not the right place anyway to set that, so when I was to the constructor to put it there, I noticed it was alreasdy there for iOS, so I just added the GTK to the condition. But I don&apos;t know why we are doing that in GTK and not in other ports, to be honest, just wanted to make sure this refactoring doesn&apos;t change any behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215160</commentid>
    <comment_count>5</comment_count>
      <attachid>284758</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-28 00:30:09 -0700</bug_when>
    <thetext>Created attachment 284758
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215234</commentid>
    <comment_count>6</comment_count>
      <attachid>284758</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-28 08:54:03 -0700</bug_when>
    <thetext>Comment on attachment 284758
Updated patch

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

&gt; Source/WebCore/platform/mac/FileSystemMac.mm:105
&gt; +    NSDictionary *fileSystemAttributesDictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:(NSString *)path error:NULL];
&gt; +    freeSpace = [[fileSystemAttributesDictionary objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
&gt; +    return true;

If fileSystemAttributesDictionary is nil, then the function failed, and should return false.

It’s funny that Apple API uses the term &quot;file system free size&quot;, the same term I asked you to stop using here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215492</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-28 22:18:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 284758 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284758&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/FileSystemMac.mm:105
&gt; &gt; +    NSDictionary *fileSystemAttributesDictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:(NSString *)path error:NULL];
&gt; &gt; +    freeSpace = [[fileSystemAttributesDictionary objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
&gt; &gt; +    return true;
&gt; 
&gt; If fileSystemAttributesDictionary is nil, then the function failed, and
&gt; should return false.

Ah, ok.

&gt; It’s funny that Apple API uses the term &quot;file system free size&quot;, the same
&gt; term I asked you to stop using here!

Yes, I guess that&apos;s where the original function name came from actually, I just added the ForPath suffix to make it even worse :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215493</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-28 22:23:41 -0700</bug_when>
    <thetext>Committed r203857: &lt;http://trac.webkit.org/changeset/203857&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284681</attachid>
            <date>2016-07-27 02:33:09 -0700</date>
            <delta_ts>2016-07-27 04:21:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cache-model.diff</filename>
            <type>text/plain</type>
            <size>31787</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NjEwY2MxLi4xY2U4MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTYtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFNwbGl0IGNhbGN1bGF0ZUNhY2hlU2l6ZXMgaW4gdHdvIG1ldGhvZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDIzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBnZXRW
b2x1bWVGcmVlU2l6ZUZvclBhdGggYXMgdm9sdW1lRnJlZVNpemVGb3JQYXRoIGFuZCBtYWtlIGl0
IGF2YWlsYWJsZSB0byBhbGwgcGxhdGZvcm1zIGFkZGluZyBhbgorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBmb3IgbWFjLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZv
bHVtZUZyZWVTaXplRm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRWb2x1bWVGcmVlU2l6
ZUZvclBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dm9sdW1lRnJlZVNpemVGb3JQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9yUGF0aCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjp2b2x1
bWVGcmVlU2l6ZUZvclBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZvbHVtZUZyZWVTaXplRm9yUGF0aCk6CisKKzIwMTYt
MDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAg
ICAgIFtTb3VwXSBUZXN0IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYXV0aC1yZWplY3QtcHJv
dGVjdGlvbi1zcGFjZS5odG1sIGZhaWxzIHNpbmNlIGFkZGVkIGluIHIyMDM3NDMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDIzNQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggMWFmMjZjZC4uMmJlN2I5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMjAyLDkgKzIwMiw5IEBAIFN0cmluZyBmaWxl
bmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0
b3J5UGF0aCgpOwogQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCk7CiAjZW5kaWYKLSNpZiBV
U0UoU09VUCkKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBjaGFyKik7
Ci0jZW5kaWYKKwordWludDY0X3Qgdm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IFN0cmluZyYp
OworCiAKICNpZiBQTEFURk9STShXSU4pCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvRmlsZVN5c3RlbUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvRmlsZVN5c3RlbUVmbC5jcHAKaW5kZXggYzU5NWVmNS4uYzg0NzcxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0ZpbGVTeXN0ZW1FZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcApAQCAtODgsMTAgKzg4LDEx
IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoaG9tZSk7CiB9CiAKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBj
aGFyKiBwYXRoKQordWludDY0X3Qgdm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOwogICAgIHN0cnVjdCBzdGF0dmZzIGJ1ZjsKLSAgICBpZiAoc3RhdHZmcyhwYXRoLCAmYnVm
KSA8IDApCisgICAgaWYgKHN0YXR2ZnMoZnNSZXAuZGF0YSgpLCAmYnVmKSA8IDApCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihidWYuZl9iYXZh
aWwpICogYnVmLmZfYnNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCmluZGV4IDFkMTFiNzguLjA5YWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0yMzIsOSArMjMyLDEw
IEBAIENTdHJpbmcgc2hhcmVkUmVzb3VyY2VzUGF0aCgpCiAgICAgcmV0dXJuIGNhY2hlZFBhdGg7
CiB9CiAKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBjaGFyKiBwYXRo
KQordWludDY0X3Qgdm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
LSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
cGF0aCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUocGF0aCk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJ
bmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwg
R19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsKICAgICBpZiAoIWZpbGVJ
bmZvKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Zp
bGVTeXN0ZW1NYWMubW0KaW5kZXggOWJiYTllZi4uOTE3ODhiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTk4LDYgKzk4LDEyIEBAIGJvb2wg
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiAg
ICAgcmV0dXJuIFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpv
bGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOm5pbF07
CiB9CiAKK3VpbnQ2NF90IHZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQ
YXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07CisgICAgcmV0dXJuIFtbZmlsZVN5c3Rl
bUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0g
dW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKK30KKwogI2lmICFQTEFURk9STShJT1MpCiBib29sIGRl
bGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBjMmI5M2U0Li5kZmMyZDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC00NDcsNCArNDQ3LDEwIEBAIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVz
OwogfQogCit1aW50NjRfdCB2b2x1bWVGcmVlU2l6ZUZvclBhdGgoY29uc3QgU3RyaW5nJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmJiNjY3YS4uNGNhNDQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDQ4IEBACiAyMDE2LTA3LTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAorICAgICAgICBTcGxpdCBjYWxjdWxhdGVDYWNoZVNpemVzIGluIHR3byBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjAyMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
dCdzIHVzZWQgdG8gY2FsY3VsYXRlIG1lbW9yeSBhbmQgZGlzayBjYWNoZSBzaXplcywgYnV0IG9u
bHkgdGhlIHdlYiBwcm9jZXNzIGlzIGludGVyZXN0ZWQgaW4gbWVtb3J5IGNhY2hlcywgYW5kCisg
ICAgICAgIHRoZSBuZXR3b3JrIHByb2Nlc3MgaW4gZGlzayBjYWNoZS4gV2UgY2FuIGFsc28gYXZv
aWQgYSBsb3Qgb2YgZHVwbGljYXRlZCBjb2RlIGJldHdlZW4gcG9ydHMgdG8gc2V0IHRoZSBjYWNo
ZSBtb2RlbC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwpOiBVc2UgY2Fs
Y3VsYXRlVVJMQ2FjaGVTaXplcyB0byBzZXQgdGhlIGRpc2sgY2FjaGUgc2l6ZSBhbmQgY2FsbAor
ICAgICAgICBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSBpZiBub3Qgc2V0IHRvIGFsbG93IHBvcnRz
IHRvIHNldHVwIHBsYXRmb3JtIHNwZWNpZmljIGNhY2hlLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtU2V0VVJMQ2FjaGVTaXplKTogUmVtb3ZlIGNvbW1vbiBjb2RlIHRoYXQgaXMgbm93IGlu
IGNyb3NzLXBsYXRmb3JtIGZpbGUuCisgICAgICAgIChXZWJLaXQ6OnZvbHVtZUZyZWVTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0Q2Fj
aGVNb2RlbCk6IFJlbmFtZWQgdG8gcGxhdGZvcm1TZXRVUkxDYWNoZVNpemUoKS4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSk6IFJlbW92ZSBj
b21tb24gY29kZSB0aGF0IGlzIG5vdyBpbiBjcm9zcy1wbGF0Zm9ybSBmaWxlLgorICAgICAgICAo
V2ViS2l0OjpnZXRDYWNoZURpc2tGcmVlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOiBSZW5hbWVkIHRvIHBsYXRm
b3JtU2V0VVJMQ2FjaGVTaXplKCkuCisgICAgICAgICogU2hhcmVkL0NhY2hlTW9kZWwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzKTogQ2FsY3VsYXRlIHRo
ZSBtZW1vcnkgYW5kIHBhZ2UgY2FjaGUgc2l6ZXMuCisgICAgICAgIChXZWJLaXQ6OmNhbGN1bGF0
ZVVSTENhY2hlU2l6ZXMpOiBDYWxjdWxhdGUgdGhlIGRpc2sgY2FjaGUgc2l6ZS4KKyAgICAgICAg
KFdlYktpdDo6Y2FsY3VsYXRlQ2FjaGVTaXplcyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L0NhY2hlTW9kZWwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzKTogVGVsbCB0aGUgcGFnZSBjYWNoZSB0byBjbGVhciBi
YWNraW5nIHN0b3JlcyBmb3IgR1RLKyBwb3J0IHRvby4gVGhpcyB3YXMgZG9uZSBiZWZvcmUgd2hl
bgorICAgICAgICBzZXR0aW5nIHRoZSBjYWNoZSBtb2RlbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCk6IFVzZSBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzIHRv
IHNldHVwIG1lbW9yeSBjYWNoZXMgYW5kIGNhbGwKKyAgICAgICAgcGxhdGZvcm1TZXRDYWNoZU1v
ZGVsIHRvIGFsbG93IHBvcnRzIGRvIG1vcmUgc2V0dXAgYWNjb3JkaW5nIHRvIHRoZSBjYWNoZSBt
b2RlbC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUNhY2hlcyk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6IFJlbW92ZSBjb21tb24gY29kZSB0aGF0
IGlzIG5vdyBpbiBjcm9zcy1wbGF0Zm9ybSBmaWxlLgorICAgICAgICAoV2ViS2l0Ojp2b2x1bWVG
cmVlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3Jt
Q2xlYXJSZXNvdXJjZUNhY2hlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3Vw
L1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZv
cm1TZXRDYWNoZU1vZGVsKTogUmVtb3ZlIGNvbW1vbiBjb2RlIHRoYXQgaXMgbm93IGluIGNyb3Nz
LXBsYXRmb3JtIGZpbGUuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9y
bUNsZWFyUmVzb3VyY2VDYWNoZXMpOiBEZWxldGVkLgorCisyMDE2LTA3LTI3ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBSZW1vdmUg
bmV0d29yayBzZXR1cCBmcm9tIHdlYiBwcm9jZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAyMzYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGIzNWIyYWYuLmExNjE0M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTUzOCwxMSArNTM4LDMxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwo
dWludDMyX3QgY20pCiB7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gc3RhdGljX2Nhc3Q8
Q2FjaGVNb2RlbD4oY20pOwogCi0gICAgaWYgKCFtX2hhc1NldENhY2hlTW9kZWwgfHwgY2FjaGVN
b2RlbCAhPSBtX2NhY2hlTW9kZWwpIHsKLSAgICAgICAgbV9oYXNTZXRDYWNoZU1vZGVsID0gdHJ1
ZTsKLSAgICAgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKLSAgICAgICAgcGxhdGZvcm1T
ZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworICAgIGlmIChtX2hhc1NldENhY2hlTW9kZWwgJiYg
KGNhY2hlTW9kZWwgPT0gbV9jYWNoZU1vZGVsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9o
YXNTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKKyAgICBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOwor
CisgICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4g
Y2FzZSB0aGUgcmVwb3J0ZWQgYnl0ZQorICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3Rs
eSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgorICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IFdl
YkNvcmU6OnZvbHVtZUZyZWVTaXplRm9yUGF0aChtX2Rpc2tDYWNoZURpcmVjdG9yeSkgLyAxMDI0
IC8gMTAwMDsKKyAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwor
ICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOworICAgIGNhbGN1bGF0
ZVVSTENhY2hlU2l6ZXMoY2FjaGVNb2RlbCwgZGlza0ZyZWVTaXplLCB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CisKKyAgICBpZiAobV9kaXNrQ2FjaGVTaXpl
T3ZlcnJpZGUgPj0gMCkKKyAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSBtX2Rpc2tDYWNo
ZVNpemVPdmVycmlkZTsKKworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQorICAgIGF1dG8mIG5l
dHdvcmtDYWNoZSA9IE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgaWYgKG5ldHdvcmtD
YWNoZS5pc0VuYWJsZWQoKSkgeworICAgICAgICBuZXR3b3JrQ2FjaGUuc2V0Q2FwYWNpdHkodXJs
Q2FjaGVEaXNrQ2FwYWNpdHkpOworICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCisKKyAg
ICBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1cmxDYWNo
ZURpc2tDYXBhY2l0eSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBiNzMyNTE3Li5jM2Y2YmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAvLyBQbGF0Zm9ybSBIZWxw
ZXJzCi0gICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CisgICAgdm9p
ZCBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1bnNpZ25lZCBsb25nIHVybENhY2hlTWVtb3J5Q2Fw
YWNpdHksIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwogCiAgICAgLy8gQ29u
bmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgogICAgIFZlY3RvcjxSZWZQdHI8TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCmluZGV4IDA3MGUxOGEuLmE5NmM1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAt
MzgsNyArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgotI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTEyNCw0MiArMTIzLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKICAgICB9CiB9
CiAKLXN0YXRpYyB1aW50NjRfdCB2b2x1bWVGcmVlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1bnNpZ25lZCBsb25n
IHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkpCiB7Ci0gICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkg
PSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1G
b3JQYXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07Ci0gICAgcmV0dXJuIFtbZmlsZVN5
c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6
ZV0gdW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKLXsKLSAgICB1aW50NjRf
dCBtZW1TaXplID0gcmFtU2l6ZSgpIC8gMTAyNCAvIDEwMjQ7Ci0KLSAgICAvLyBBcyBhIGZ1ZGdl
IGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBi
eXRlCi0gICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91
bmRhcnkuCi0gICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gdm9sdW1lRnJlZVNpemUobV9kaXNr
Q2FjaGVEaXJlY3RvcnkpIC8gMTAyNCAvIDEwMDA7Ci0KLSAgICB1bnNpZ25lZCBjYWNoZVRvdGFs
Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKLSAg
ICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7Ci0gICAgYXV0byBkZWFkRGVjb2Rl
ZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29uZHMgeyAwIH07Ci0gICAg
dW5zaWduZWQgcGFnZUNhY2hlQ2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2Fj
aGVNZW1vcnlDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURpc2tDYXBh
Y2l0eSA9IDA7Ci0KLSAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNpemUs
IGRpc2tGcmVlU2l6ZSwKLSAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5LCBjYWNoZU1pbkRlYWRD
YXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50
ZXJ2YWwsCi0gICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5
LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0KLSAgICBpZiAobV9kaXNrQ2FjaGVTaXplT3ZlcnJp
ZGUgPj0gMCkKLSAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSBtX2Rpc2tDYWNoZVNpemVP
dmVycmlkZTsKLQotI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQotICAgIGF1dG8mIG5ldHdvcmtD
YWNoZSA9IE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKG5ldHdvcmtDYWNoZS5p
c0VuYWJsZWQoKSkgewotICAgICAgICBuZXR3b3JrQ2FjaGUuc2V0Q2FwYWNpdHkodXJsQ2FjaGVE
aXNrQ2FwYWNpdHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCiAgICAgTlNVUkxD
YWNoZSAqbnN1cmxDYWNoZSA9IFtOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXTsKICAgICBbbnN1
cmxDYWNoZSBzZXRNZW1vcnlDYXBhY2l0eTp1cmxDYWNoZU1lbW9yeUNhcGFjaXR5XTsKICAgICBp
ZiAoIW1fZGlza0NhY2hlSXNEaXNhYmxlZEZvclRlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5k
ZXggNTBlNDk4Mi4uN2I4ZGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtNDUsMjAgKzQ1LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYg
IUVOQUJMRShORVRXT1JLX0NBQ0hFKQotc3RhdGljIHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVT
aXplKFNvdXBDYWNoZSogY2FjaGUpCi17Ci0gICAgQVNTRVJUKGNhY2hlKTsKLQotICAgIEdVbmlx
dWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hl
KSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIoKSwgTlVMTCk7Ci0gICAgaWYgKCFjYWNo
ZURpcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0Vm9sdW1l
RnJlZVNpemVGb3JQYXRoKGNhY2hlRGlyLmdldCgpKTsKLX0KLSNlbmRpZgotCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFuZ3VhZ2VzKQogewogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Np
b24oKS5zZXRBY2NlcHRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKQEAgLTEwNywzNiArOTMsMTQgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBzZXRJZ25vcmVUTFNFcnJvcnMocGFyYW1ldGVy
cy5pZ25vcmVUTFNFcnJvcnMpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1TZXRVUkxDYWNoZVNpemUodW5zaWduZWQgbG9uZyAvKnVybENhY2hlTWVtb3J5Q2Fw
YWNpdHkqLywgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0eSkKIHsKLSAgICB1bnNp
Z25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENh
cGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7Ci0gICAg
YXV0byBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29u
ZHMgeyAwIH07Ci0gICAgdW5zaWduZWQgcGFnZUNhY2hlQ2FwYWNpdHkgPSAwOwotCi0gICAgdW5z
aWduZWQgbG9uZyB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBsb25n
IHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKLQotI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQot
ICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9y
UGF0aChtX2Rpc2tDYWNoZURpcmVjdG9yeS51dGY4KCkuZGF0YSgpKSAvIFdURjo6TUI7Ci0jZWxz
ZQorI2lmICFFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBTb3VwQ2FjaGUqIGNhY2hlID0gU291
cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7Ci0gICAgdWludDY0X3Qg
ZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVEaXNrRnJlZVNpemUoY2FjaGUpIC8gV1RGOjpNQjsKLSNl
bmRpZgotCi0gICAgdWludDY0X3QgbWVtU2l6ZSA9IFdURjo6cmFtU2l6ZSgpIC8gV1RGOjpNQjsK
LSAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNpemUsIGRpc2tGcmVlU2l6
ZSwKLSAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5LCBjYWNoZU1pbkRlYWRDYXBhY2l0eSwgY2Fj
aGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwsCi0gICAg
ICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1cmxDYWNoZURp
c2tDYXBhY2l0eSk7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKLSAgICBhdXRvJiBuZXR3
b3JrQ2FjaGUgPSBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChuZXR3b3JrQ2Fj
aGUuaXNFbmFibGVkKCkpCi0gICAgICAgIG5ldHdvcmtDYWNoZS5zZXRDYXBhY2l0eSh1cmxDYWNo
ZURpc2tDYXBhY2l0eSk7Ci0jZWxzZQogICAgIGlmICh1cmxDYWNoZURpc2tDYXBhY2l0eSA+IHNv
dXBfY2FjaGVfZ2V0X21heF9zaXplKGNhY2hlKSkKICAgICAgICAgc291cF9jYWNoZV9zZXRfbWF4
X3NpemUoY2FjaGUsIHVybENhY2hlRGlza0NhcGFjaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHVybENhY2hlRGlza0NhcGFjaXR5KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2FjaGVNb2RlbC5jcHAKaW5kZXggY2NkNzhhZS4uNTM0MTljYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9DYWNoZU1vZGVsLmNwcApAQCAtMjcsMTMgKzI3LDE1IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2Rl
bC5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9p
ZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVt
b3J5U2l6ZSwgdWludDY0X3QgZGlza0ZyZWVTaXplLAotICAgIHVuc2lnbmVkJiBjYWNoZVRvdGFs
Q2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1pbkRlYWRDYXBhY2l0eSwgdW5zaWduZWQmIGNhY2hl
TWF4RGVhZENhcGFjaXR5LCBzdGQ6OmNocm9ubzo6c2Vjb25kcyYgZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbCwKLSAgICB1bnNpZ25lZCYgcGFnZUNhY2hlQ2FwYWNpdHksIHVuc2lnbmVk
IGxvbmcmIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxvbmcmIHVybENhY2hlRGlz
a0NhcGFjaXR5KQordm9pZCBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzKENhY2hlTW9kZWwgY2Fj
aGVNb2RlbCwgdW5zaWduZWQmIGNhY2hlVG90YWxDYXBhY2l0eSwgdW5zaWduZWQmIGNhY2hlTWlu
RGVhZENhcGFjaXR5LCB1bnNpZ25lZCYgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIHN0ZDo6Y2hyb25v
OjpzZWNvbmRzJiBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLCB1bnNpZ25lZCYgcGFn
ZUNhY2hlQ2FwYWNpdHkpCiB7CisgICAgdWludDY0X3QgbWVtb3J5U2l6ZSA9IHJhbVNpemUoKSAv
IE1COworCiAgICAgc3dpdGNoIChjYWNoZU1vZGVsKSB7CiAgICAgY2FzZSBDYWNoZU1vZGVsRG9j
dW1lbnRWaWV3ZXI6IHsKICAgICAgICAgLy8gUGFnZSBjYWNoZSBjYXBhY2l0eSAoaW4gcGFnZXMp
CkBAIC00MSwyMyArNDMsMTcgQEAgdm9pZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3QgZGkKIAogICAgICAgICAv
LyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCiAgICAgICAgIGlmIChtZW1vcnlT
aXplID49IDIwNDgpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIDEwMjQg
KiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gOTYgKiBNQjsKICAgICAg
ICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxNTM2KQotICAgICAgICAgICAgY2FjaGVUb3RhbENh
cGFjaXR5ID0gNjQgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0
eSA9IDY0ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0gMTAyNCkKLSAgICAg
ICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDMyICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAg
ICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIE1COwogICAgICAgICBlbHNlIGlmIChtZW1vcnlT
aXplID49IDUxMikKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAq
IDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAxNiAqIE1COwogCiAgICAg
ICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKICAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNp
dHkgPSAwOwogCi0gICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNhY2hlIGNhcGFjaXR5IChp
biBieXRlcykKLSAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7Ci0KLSAgICAgICAg
Ly8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCi0gICAgICAgIHVybENhY2hlRGlza0Nh
cGFjaXR5ID0gMDsKLQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDYWNoZU1vZGVs
RG9jdW1lbnRCcm93c2VyOiB7CkBAIC03MSwzNyArNjcsMTcgQEAgdm9pZCBjYWxjdWxhdGVDYWNo
ZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0
X3QgZGkKIAogICAgICAgICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCiAg
ICAgICAgIGlmIChtZW1vcnlTaXplID49IDIwNDgpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2Fw
YWNpdHkgPSA5NiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5
ID0gOTYgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxNTM2KQotICAgICAg
ICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNjQgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAg
IGNhY2hlVG90YWxDYXBhY2l0eSA9IDY0ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNp
emUgPj0gMTAyNCkKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDMyICogMTAyNCAq
IDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIE1COwogICAgICAg
ICBlbHNlIGlmIChtZW1vcnlTaXplID49IDUxMikKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBh
Y2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkg
PSAxNiAqIE1COwogCiAgICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gY2FjaGVUb3RhbENh
cGFjaXR5IC8gODsKICAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSBjYWNoZVRvdGFsQ2Fw
YWNpdHkgLyA0OwogCi0gICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNhY2hlIGNhcGFjaXR5
IChpbiBieXRlcykKLSAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMjA0OCkKLSAgICAgICAgICAg
IHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA0ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGVsc2Ug
aWYgKG1lbW9yeVNpemUgPj0gMTAyNCkKLSAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNp
dHkgPSAyICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0gNTEy
KQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEgKiAxMDI0ICogMTAyNDsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9ICAgICAg
NTEyICogMTAyNDsgCi0KLSAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMp
Ci0gICAgICAgIGlmIChkaXNrRnJlZVNpemUgPj0gMTYzODQpCi0gICAgICAgICAgICB1cmxDYWNo
ZURpc2tDYXBhY2l0eSA9IDc1ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGVsc2UgaWYgKGRpc2tG
cmVlU2l6ZSA+PSA4MTkyKQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA0MCAq
IDEwMjQgKiAxMDI0OwotICAgICAgICBlbHNlIGlmIChkaXNrRnJlZVNpemUgPj0gNDA5NikKLSAg
ICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMzAgKiAxMDI0ICogMTAyNDsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAyMCAqIDEwMjQgKiAx
MDI0OwotCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENhY2hlTW9kZWxQcmltYXJ5
V2ViQnJvd3NlcjogewpAQCAtMTE1LDE2ICs5MSwxNiBAQCB2b2lkIGNhbGN1bGF0ZUNhY2hlU2l6
ZXMoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsLCB1aW50NjRfdCBtZW1vcnlTaXplLCB1aW50NjRfdCBk
aQogCiAgICAgICAgIC8vIE9iamVjdCBjYWNoZSBjYXBhY2l0aWVzIChpbiBieXRlcykKICAgICAg
ICAgLy8gKFRlc3RpbmcgaW5kaWNhdGVzIHRoYXQgdmFsdWUgLyBNQiBkZXBlbmRzIGhlYXZpbHkg
b24gY29udGVudCBhbmQKLSAgICAgICAgLy8gYnJvd3NpbmcgcGF0dGVybi4gRXZlbiBncm93dGgg
YWJvdmUgMTI4TUIgY2FuIGhhdmUgc3Vic3RhbnRpYWwgCisgICAgICAgIC8vIGJyb3dzaW5nIHBh
dHRlcm4uIEV2ZW4gZ3Jvd3RoIGFib3ZlIDEyOE1CIGNhbiBoYXZlIHN1YnN0YW50aWFsCiAgICAg
ICAgIC8vIHZhbHVlIC8gTUIgZm9yIHNvbWUgY29udGVudCAvIGJyb3dzaW5nIHBhdHRlcm5zLikK
ICAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMjA0OCkKLSAgICAgICAgICAgIGNhY2hlVG90YWxD
YXBhY2l0eSA9IDEyOCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFj
aXR5ID0gMTI4ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0gMTUzNikKLSAg
ICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDk2ICogMTAyNCAqIDEwMjQ7CisgICAgICAg
ICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIE1COwogICAgICAgICBlbHNlIGlmIChtZW1v
cnlTaXplID49IDEwMjQpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA2NCAqIDEw
MjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNjQgKiBNQjsKICAg
ICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSA1MTIpCi0gICAgICAgICAgICBjYWNoZVRvdGFs
Q2FwYWNpdHkgPSAzMiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFj
aXR5ID0gMzIgKiBNQjsKIAogICAgICAgICBjYWNoZU1pbkRlYWRDYXBhY2l0eSA9IGNhY2hlVG90
YWxDYXBhY2l0eSAvIDQ7CiAgICAgICAgIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gY2FjaGVUb3Rh
bENhcGFjaXR5IC8gMjsKQEAgLTEzNSwzNyArMTExLDg0IEBAIHZvaWQgY2FsY3VsYXRlQ2FjaGVT
aXplcyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwsIHVpbnQ2NF90IG1lbW9yeVNpemUsIHVpbnQ2NF90
IGRpCiAKICAgICAgICAgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IHN0ZDo6Y2hy
b25vOjpzZWNvbmRzIHsgNjAgfTsKIAorICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKK30KKwordm9pZCBjYWxj
dWxhdGVVUkxDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgZGlza0Zy
ZWVTaXplLCB1bnNpZ25lZCBsb25nJiB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1bnNpZ25lZCBs
b25nJiB1cmxDYWNoZURpc2tDYXBhY2l0eSkKK3sKKyAgICBzd2l0Y2ggKGNhY2hlTW9kZWwpIHsK
KyAgICBjYXNlIENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjogeworICAgICAgICAvLyBGb3VuZGF0
aW9uIG1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAgICAgIHVybENhY2hlTWVt
b3J5Q2FwYWNpdHkgPSAwOworCisgICAgICAgIC8vIERpc2sgY2FjaGUgY2FwYWNpdHkgKGluIGJ5
dGVzKQorICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CisKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcjogeworICAgICAgICB1
aW50NjRfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gTUI7CisKKyAgICAgICAgLy8gRm91bmRh
dGlvbiBtZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQorICAgICAgICBpZiAobWVtb3J5
U2l6ZSA+PSAyMDQ4KQorICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDQgKiBN
QjsKKyAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxMDI0KQorICAgICAgICAgICAgdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSA9IDIgKiBNQjsKKyAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6
ZSA+PSA1MTIpCisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMSAqIE1COwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gNTEyICog
S0I7CisKKyAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAgICAg
IGlmIChkaXNrRnJlZVNpemUgPj0gMTYzODQpCisgICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBh
Y2l0eSA9IDc1ICogTUI7CisgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSA4MTkyKQor
ICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA0MCAqIE1COworICAgICAgICBlbHNl
IGlmIChkaXNrRnJlZVNpemUgPj0gNDA5NikKKyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFj
aXR5ID0gMzAgKiBNQjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSAyMCAqIE1COworCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENhY2hl
TW9kZWxQcmltYXJ5V2ViQnJvd3NlcjogeworICAgICAgICB1aW50NjRfdCBtZW1vcnlTaXplID0g
cmFtU2l6ZSgpIC8gTUI7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChtZW1vcnlT
aXplID49IDEwMjQpCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMTYgKiAx
MDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAxNiAqIE1C
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gOCAq
IDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDggKiBN
QjsKICNlbHNlCiAgICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNhY2hlIGNhcGFjaXR5IChp
biBieXRlcykKICAgICAgICAgLy8gKFRoZXNlIHZhbHVlcyBhcmUgc21hbGwgYmVjYXVzZSBXZWJD
b3JlIGRvZXMgbW9zdCBjYWNoaW5nIGl0c2VsZi4pCiAgICAgICAgIGlmIChtZW1vcnlTaXplID49
IDEwMjQpCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gNCAqIDEwMjQgKiAx
MDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDQgKiBNQjsKICAgICAg
ICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSA1MTIpCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9y
eUNhcGFjaXR5ID0gMiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9IDIgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAyNTYpCi0g
ICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMSAqIDEwMjQgKiAxMDI0OworICAg
ICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEgKiBNQjsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9ICAgICAgNTEyICogMTAyNDsKKyAg
ICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA1MTIgKiBLQjsKICNlbmRpZgogCiAg
ICAgICAgIC8vIERpc2sgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQogICAgICAgICBpZiAoZGlz
a0ZyZWVTaXplID49IDE2Mzg0KQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA1
MDAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gNTAw
ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSA4MTkyKQotICAgICAgICAg
ICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAyNTAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAg
IHVybENhY2hlRGlza0NhcGFjaXR5ID0gMjUwICogTUI7CiAgICAgICAgIGVsc2UgaWYgKGRpc2tG
cmVlU2l6ZSA+PSA0MDk2KQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAxMjUg
KiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMTI1ICog
TUI7CiAgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSAyMDQ4KQotICAgICAgICAgICAg
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAxMDAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVy
bENhY2hlRGlza0NhcGFjaXR5ID0gMTAwICogTUI7CiAgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVl
U2l6ZSA+PSAxMDI0KQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA3NSAqIDEw
MjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA3NSAqIE1COwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDUwICogMTAy
NCAqIDEwMjQ7CisgICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDUwICogTUI7CiAK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NhY2hlTW9kZWwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DYWNoZU1vZGVsLmgKaW5kZXgg
MzRkZGQwNDguLjg3YjM0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DYWNo
ZU1vZGVsLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuaApAQCAtMzcs
OSArMzcsOCBAQCBlbnVtIENhY2hlTW9kZWwgewogICAgIENhY2hlTW9kZWxQcmltYXJ5V2ViQnJv
d3NlcgogfTsKIAotdm9pZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2Rl
bCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3QgZGlza0ZyZWVTaXplLAotICAgIHVuc2ln
bmVkJiBjYWNoZVRvdGFsQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1pbkRlYWRDYXBhY2l0eSwg
dW5zaWduZWQmIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBzdGQ6OmNocm9ubzo6c2Vjb25kcyYgZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKLSAgICB1bnNpZ25lZCYgcGFnZUNhY2hlQ2Fw
YWNpdHksIHVuc2lnbmVkIGxvbmcmIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxv
bmcmIHVybENhY2hlRGlza0NhcGFjaXR5KTsKK3ZvaWQgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXpl
cyhDYWNoZU1vZGVsLCB1bnNpZ25lZCYgY2FjaGVUb3RhbENhcGFjaXR5LCB1bnNpZ25lZCYgY2Fj
aGVNaW5EZWFkQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1heERlYWRDYXBhY2l0eSwgc3RkOjpj
aHJvbm86OnNlY29uZHMmIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwsIHVuc2lnbmVk
JiBwYWdlQ2FjaGVDYXBhY2l0eSk7Cit2b2lkIGNhbGN1bGF0ZVVSTENhY2hlU2l6ZXMoQ2FjaGVN
b2RlbCwgdWludDY0X3QgZGlza0ZyZWVTaXplLCB1bnNpZ25lZCBsb25nJiB1cmxDYWNoZU1lbW9y
eUNhcGFjaXR5LCB1bnNpZ25lZCBsb25nJiB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCBhYzNlMWNmLi4xNDc1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkK
ICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFdlYmtpdElu
ZGV4ZWREQkVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRpZgogCkBAIC01MjksMTEg
KzUyOSwyNSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20pCiB7
CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gc3RhdGljX2Nhc3Q8Q2FjaGVNb2RlbD4oY20p
OwogCi0gICAgaWYgKCFtX2hhc1NldENhY2hlTW9kZWwgfHwgY2FjaGVNb2RlbCAhPSBtX2NhY2hl
TW9kZWwpIHsKLSAgICAgICAgbV9oYXNTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKLSAgICAgICAgbV9j
YWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKLSAgICAgICAgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKGNh
Y2hlTW9kZWwpOwotICAgIH0KKyAgICBpZiAobV9oYXNTZXRDYWNoZU1vZGVsICYmIChjYWNoZU1v
ZGVsID09IG1fY2FjaGVNb2RlbCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzU2V0Q2Fj
aGVNb2RlbCA9IHRydWU7CisgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKKworICAgIHVu
c2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVNaW5EZWFk
Q2FwYWNpdHkgPSAwOworICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKKyAg
ICBhdXRvIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6c2Vj
b25kcyB7IDAgfTsKKyAgICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplID0gMDsKKyAgICBjYWxjdWxh
dGVNZW1vcnlDYWNoZVNpemVzKGNhY2hlTW9kZWwsIGNhY2hlVG90YWxDYXBhY2l0eSwgY2FjaGVN
aW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsLCBwYWdlQ2FjaGVTaXplKTsKKworICAgIGF1dG8mIG1lbW9yeUNhY2hlID0g
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOworICAgIG1lbW9yeUNhY2hlLnNldENhcGFjaXRpZXMo
Y2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2Fw
YWNpdHkpOworICAgIG1lbW9yeUNhY2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2
YWwoZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7CisgICAgUGFnZUNhY2hlOjpzaW5n
bGV0b24oKS5zZXRNYXhTaXplKHBhZ2VDYWNoZVNpemUpOworCisgICAgcGxhdGZvcm1TZXRDYWNo
ZU1vZGVsKGNhY2hlTW9kZWwpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFyQ2FjaGVkQ3Jl
ZGVudGlhbHMoKQpAQCAtNzUxLDggKzc2NSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXNlckdlc3R1
cmVUb2tlbkRlc3Ryb3llZChVc2VyR2VzdHVyZVRva2VuJiB0b2tlbikKIAogdm9pZCBXZWJQcm9j
ZXNzOjpjbGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhciByZXNvdXJjZUNh
Y2hlc1RvQ2xlYXIpCiB7Ci0gICAgcGxhdGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKHJlc291cmNl
Q2FjaGVzVG9DbGVhcik7Ci0KICAgICAvLyBUb2dnbGluZyB0aGUgY2FjaGUgbW9kZWwgbGlrZSB0
aGlzIGZvcmNlcyB0aGUgY2FjaGUgdG8gZXZpY3QgYWxsIGl0cyBpbi1tZW1vcnkgcmVzb3VyY2Vz
LgogICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgogICAgIENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKaW5kZXggOGE1MjIyZC4uMDhiNGRiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI2MSw3ICsyNjEsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDxXZWJDb3Jl
OjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+JiBoYXNoZXMpOwogCiAgICAg
dm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7Ci0gICAgdm9pZCBwbGF0Zm9y
bUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyKTsKIAogICAgIHZvaWQg
c2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA1MDM2NzFiLi40
ZDcxNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtNDgsMTAgKzQ4LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvRm9udENh
Y2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L05TQWNjZXNzaWJpbGl0eVNQSS5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL3B0aHJlYWRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVk5vZGVUcmFja2VyLmg+CkBAIC02
MSw3ICs1OSw2IEBACiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CiAjaW1wb3J0IDxzdGRpby5oPgotI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4K
IAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NTZXJ2aWNlc1NQ
SS5oPgpAQCAtNzUsNDUgKzcyLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdWludDY0X3Qgdm9sdW1lRnJlZVNpemUoTlNTdHJpbmcg
KnBhdGgpCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
KQogewotICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9y
UGF0aDpwYXRoIGVycm9yOk5VTExdOwotICAgIHJldHVybiBbW2ZpbGVTeXN0ZW1BdHRyaWJ1dGVz
RGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNpemVdIHVuc2lnbmVkTG9u
Z0xvbmdWYWx1ZV07Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVs
KENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKLXsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG5zdXJs
Q2FjaGVEaXJlY3RvcnkgPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNo
ZURpcmVjdG9yeSgpKTsKLSAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIG5z
dXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKLQotICAgIHVpbnQ2NF90IG1l
bVNpemUgPSByYW1TaXplKCkgLyAxMDI0IC8gMTAyNDsKLQotICAgIC8vIEFzIGEgZnVkZ2UgZmFj
dG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUg
Ci0gICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRh
cnkuCi0gICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gdm9sdW1lRnJlZVNpemUobnN1cmxDYWNo
ZURpcmVjdG9yeS5nZXQoKSkgLyAxMDI0IC8gMTAwMDsKLQotICAgIHVuc2lnbmVkIGNhY2hlVG90
YWxDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgY2FjaGVNaW5EZWFkQ2FwYWNpdHkgPSAwOwot
ICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKLSAgICBhdXRvIGRlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6c2Vjb25kcyB7IDAgfTsKLSAg
ICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplID0gMDsKLSAgICB1bnNpZ25lZCBsb25nIHVybENhY2hl
TWVtb3J5Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSAwOwotCi0gICAgY2FsY3VsYXRlQ2FjaGVTaXplcyhjYWNoZU1vZGVsLCBtZW1TaXplLCBk
aXNrRnJlZVNpemUsCi0gICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSwgY2FjaGVNaW5EZWFkQ2Fw
YWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVy
dmFsLAotICAgICAgICBwYWdlQ2FjaGVTaXplLCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1cmxD
YWNoZURpc2tDYXBhY2l0eSk7Ci0KLSAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hl
OjpzaW5nbGV0b24oKTsKLSAgICBtZW1vcnlDYWNoZS5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVh
ZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKLSAg
ICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwotICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0
TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNs
ZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCi17
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzLgogfQogCiAjaWYgVVNFKEFQUEtJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCmluZGV4
IDVmZGEyMWIuLjBkNjkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtMjcsNTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCi0jaW5jbHVkZSAiQ2VydGlmaWNhdGVJ
bmZvLmgiCi0jaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlD
YWNoZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9u
Lmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4K
LSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogewotICAgIHVuc2lnbmVkIGNh
Y2hlVG90YWxDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgY2FjaGVNaW5EZWFkQ2FwYWNpdHkg
PSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKLSAgICBhdXRvIGRl
YWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6c2Vjb25kcyB7IDAg
fTsKLSAgICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplID0gMDsKLQotICAgIHVuc2lnbmVkIGxvbmcg
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURp
c2tDYXBhY2l0eSA9IDA7Ci0KLSAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSAwOwotCi0gICAg
dWludDY0X3QgbWVtU2l6ZSA9IFdURjo6cmFtU2l6ZSgpIC8gV1RGOjpNQjsKLSAgICBjYWxjdWxh
dGVDYWNoZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNpemUsIGRpc2tGcmVlU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSwgY2FjaGVNaW5EZWFkQ2FwYWNpdHks
IGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNhY2hlU2l6ZSwgdXJsQ2FjaGVNZW1vcnlDYXBh
Y2l0eSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotCi0gICAgYXV0byYgbWVtb3J5Q2FjaGUgPSBX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgbWVtb3J5Q2FjaGUuc2V0RGlz
YWJsZWQoY2FjaGVNb2RlbCA9PSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpOwotICAgIG1lbW9y
eUNhY2hlLnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENh
cGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwotICAgIG1lbW9yeUNhY2hlLnNldERlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7
Ci0gICAgV2ViQ29yZTo6UGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKHBhZ2VDYWNo
ZVNpemUpOwotCi0jaWYgUExBVEZPUk0oR1RLKQotICAgIFdlYkNvcmU6OlBhZ2VDYWNoZTo6c2lu
Z2xldG9uKCkuc2V0U2hvdWxkQ2xlYXJCYWNraW5nU3RvcmVzKHRydWUpOwotI2VuZGlmCi19Ci0K
LXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2Fj
aGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQoteworICAgIC8vIEZJWE1FOiB0aGlzIGlzIG5vIGxv
bmdlciBzb3VwIHNwZWNpZmljLCB0aGlzIGZpbGUgc2hvdWxkIGJlIHJlbmFtZWQuCisgICAgV2Vi
Q29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnNldERpc2FibGVkKGNhY2hlTW9kZWwgPT0g
Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJikKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284685</attachid>
            <date>2016-07-27 04:21:04 -0700</date>
            <delta_ts>2016-07-28 00:30:09 -0700</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wk2-cache-model.diff</filename>
            <type>text/plain</type>
            <size>31802</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NjEwY2MxLi4xY2U4MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTYtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFNwbGl0IGNhbGN1bGF0ZUNhY2hlU2l6ZXMgaW4gdHdvIG1ldGhvZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDIzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBnZXRW
b2x1bWVGcmVlU2l6ZUZvclBhdGggYXMgdm9sdW1lRnJlZVNpemVGb3JQYXRoIGFuZCBtYWtlIGl0
IGF2YWlsYWJsZSB0byBhbGwgcGxhdGZvcm1zIGFkZGluZyBhbgorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBmb3IgbWFjLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZv
bHVtZUZyZWVTaXplRm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRWb2x1bWVGcmVlU2l6
ZUZvclBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dm9sdW1lRnJlZVNpemVGb3JQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9yUGF0aCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjp2b2x1
bWVGcmVlU2l6ZUZvclBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZvbHVtZUZyZWVTaXplRm9yUGF0aCk6CisKKzIwMTYt
MDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAg
ICAgIFtTb3VwXSBUZXN0IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYXV0aC1yZWplY3QtcHJv
dGVjdGlvbi1zcGFjZS5odG1sIGZhaWxzIHNpbmNlIGFkZGVkIGluIHIyMDM3NDMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDIzNQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggMWFmMjZjZC4uNjlmYmYwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMjAyLDkgKzIwMiw5IEBAIFN0cmluZyBmaWxl
bmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0
b3J5UGF0aCgpOwogQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCk7CiAjZW5kaWYKLSNpZiBV
U0UoU09VUCkKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBjaGFyKik7
Ci0jZW5kaWYKKworV0VCQ09SRV9FWFBPUlQgdWludDY0X3Qgdm9sdW1lRnJlZVNpemVGb3JQYXRo
KGNvbnN0IFN0cmluZyYpOworCiAKICNpZiBQTEFURk9STShXSU4pCiBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRmlsZVN5c3RlbUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvRmlsZVN5c3RlbUVmbC5jcHAKaW5kZXggYzU5NWVmNS4uYzg0Nzcx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0ZpbGVTeXN0ZW1FZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcApA
QCAtODgsMTAgKzg4LDExIEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoaG9tZSk7CiB9CiAKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXpl
Rm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKQordWludDY0X3Qgdm9sdW1lRnJlZVNpemVGb3JQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBzdGF0dmZzIGJ1ZjsKLSAgICBpZiAoc3Rh
dHZmcyhwYXRoLCAmYnVmKSA8IDApCisgICAgaWYgKHN0YXR2ZnMoZnNSZXAuZGF0YSgpLCAmYnVm
KSA8IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihidWYuZl9iYXZhaWwpICogYnVmLmZfYnNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDFkMTFiNzguLjA5YWViYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBA
IC0yMzIsOSArMjMyLDEwIEBAIENTdHJpbmcgc2hhcmVkUmVzb3VyY2VzUGF0aCgpCiAgICAgcmV0
dXJuIGNhY2hlZFBhdGg7CiB9CiAKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChj
b25zdCBjaGFyKiBwYXRoKQordWludDY0X3Qgdm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmls
ZV9uZXdfZm9yX3BhdGgocGF0aCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0g
dW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVuYW1lLmdldCgpKSk7CiAgICAgR1JlZlB0cjxH
RmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2lu
Zm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVNX0ZSRUUsIDAsIDApKTsK
ICAgICBpZiAoIWZpbGVJbmZvKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5kZXggOWJiYTllZi4uOTE3ODhiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTk4LDYg
Kzk4LDEyIEBAIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJp
bmcmIG5ld1BhdGgpCiAgICAgcmV0dXJuIFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpvbGRQYXRoXSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1Bh
dGhdIGVycm9yOm5pbF07CiB9CiAKK3VpbnQ2NF90IHZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRl
c0RpY3Rpb25hcnkgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNP
ZkZpbGVTeXN0ZW1Gb3JQYXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07CisgICAgcmV0
dXJuIFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0ZpbGVT
eXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKK30KKwogI2lmICFQTEFURk9S
TShJT1MpCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBj
MmI5M2U0Li5kZmMyZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCkBAIC00NDcsNCArNDQ3LDEwIEBAIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAg
IHJldHVybiBlbnRyaWVzOwogfQogCit1aW50NjRfdCB2b2x1bWVGcmVlU2l6ZUZvclBhdGgoY29u
c3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmJiNjY3YS4uNGNhNDQ1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDE2LTA3LTI3ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBTcGxpdCBjYWxjdWxhdGVDYWNo
ZVNpemVzIGluIHR3byBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjAyMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJdCdzIHVzZWQgdG8gY2FsY3VsYXRlIG1lbW9yeSBhbmQgZGlzayBjYWNo
ZSBzaXplcywgYnV0IG9ubHkgdGhlIHdlYiBwcm9jZXNzIGlzIGludGVyZXN0ZWQgaW4gbWVtb3J5
IGNhY2hlcywgYW5kCisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nlc3MgaW4gZGlzayBjYWNoZS4g
V2UgY2FuIGFsc28gYXZvaWQgYSBsb3Qgb2YgZHVwbGljYXRlZCBjb2RlIGJldHdlZW4gcG9ydHMg
dG8gc2V0IHRoZSBjYWNoZSBtb2RlbC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldENhY2hl
TW9kZWwpOiBVc2UgY2FsY3VsYXRlVVJMQ2FjaGVTaXplcyB0byBzZXQgdGhlIGRpc2sgY2FjaGUg
c2l6ZSBhbmQgY2FsbAorICAgICAgICBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSBpZiBub3Qgc2V0
IHRvIGFsbG93IHBvcnRzIHRvIHNldHVwIHBsYXRmb3JtIHNwZWNpZmljIGNhY2hlLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKTogUmVtb3ZlIGNvbW1vbiBjb2Rl
IHRoYXQgaXMgbm93IGluIGNyb3NzLXBsYXRmb3JtIGZpbGUuCisgICAgICAgIChXZWJLaXQ6OnZv
bHVtZUZyZWVTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6IFJlbmFtZWQgdG8gcGxhdGZvcm1TZXRVUkxDYWNoZVNp
emUoKS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hl
U2l6ZSk6IFJlbW92ZSBjb21tb24gY29kZSB0aGF0IGlzIG5vdyBpbiBjcm9zcy1wbGF0Zm9ybSBm
aWxlLgorICAgICAgICAoV2ViS2l0OjpnZXRDYWNoZURpc2tGcmVlU2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOiBS
ZW5hbWVkIHRvIHBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKCkuCisgICAgICAgICogU2hhcmVkL0Nh
Y2hlTW9kZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVz
KTogQ2FsY3VsYXRlIHRoZSBtZW1vcnkgYW5kIHBhZ2UgY2FjaGUgc2l6ZXMuCisgICAgICAgIChX
ZWJLaXQ6OmNhbGN1bGF0ZVVSTENhY2hlU2l6ZXMpOiBDYWxjdWxhdGUgdGhlIGRpc2sgY2FjaGUg
c2l6ZS4KKyAgICAgICAgKFdlYktpdDo6Y2FsY3VsYXRlQ2FjaGVTaXplcyk6IERlbGV0ZWQuCisg
ICAgICAgICogU2hhcmVkL0NhY2hlTW9kZWwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzKTogVGVsbCB0aGUgcGFnZSBj
YWNoZSB0byBjbGVhciBiYWNraW5nIHN0b3JlcyBmb3IgR1RLKyBwb3J0IHRvby4gVGhpcyB3YXMg
ZG9uZSBiZWZvcmUgd2hlbgorICAgICAgICBzZXR0aW5nIHRoZSBjYWNoZSBtb2RlbC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCk6IFVzZSBjYWxjdWxhdGVNZW1v
cnlDYWNoZVNpemVzIHRvIHNldHVwIG1lbW9yeSBjYWNoZXMgYW5kIGNhbGwKKyAgICAgICAgcGxh
dGZvcm1TZXRDYWNoZU1vZGVsIHRvIGFsbG93IHBvcnRzIGRvIG1vcmUgc2V0dXAgYWNjb3JkaW5n
IHRvIHRoZSBjYWNoZSBtb2RlbC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2xlYXJS
ZXNvdXJjZUNhY2hlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6IFJlbW92ZSBj
b21tb24gY29kZSB0aGF0IGlzIG5vdyBpbiBjcm9zcy1wbGF0Zm9ybSBmaWxlLgorICAgICAgICAo
V2ViS2l0Ojp2b2x1bWVGcmVlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKTogUmVtb3ZlIGNvbW1vbiBjb2RlIHRoYXQg
aXMgbm93IGluIGNyb3NzLXBsYXRmb3JtIGZpbGUuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMpOiBEZWxldGVkLgorCisyMDE2LTA3
LTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAg
ICBbR1RLXSBSZW1vdmUgbmV0d29yayBzZXR1cCBmcm9tIHdlYiBwcm9jZXNzCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAyMzYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGIzNWIy
YWYuLmExNjE0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTUzOCwxMSArNTM4LDMxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldENhY2hlTW9kZWwodWludDMyX3QgY20pCiB7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVs
ID0gc3RhdGljX2Nhc3Q8Q2FjaGVNb2RlbD4oY20pOwogCi0gICAgaWYgKCFtX2hhc1NldENhY2hl
TW9kZWwgfHwgY2FjaGVNb2RlbCAhPSBtX2NhY2hlTW9kZWwpIHsKLSAgICAgICAgbV9oYXNTZXRD
YWNoZU1vZGVsID0gdHJ1ZTsKLSAgICAgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKLSAg
ICAgICAgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworICAgIGlmIChtX2hhc1Nl
dENhY2hlTW9kZWwgJiYgKGNhY2hlTW9kZWwgPT0gbV9jYWNoZU1vZGVsKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9oYXNTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKKyAgICBtX2NhY2hlTW9kZWwg
PSBjYWNoZU1vZGVsOworCisgICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3Rl
YWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQgYnl0ZQorICAgIC8vIGNvdW50IGRvZXNu
J3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgorICAgIHVpbnQ2NF90IGRp
c2tGcmVlU2l6ZSA9IFdlYkNvcmU6OnZvbHVtZUZyZWVTaXplRm9yUGF0aChtX2Rpc2tDYWNoZURp
cmVjdG9yeSkgLyAxMDI0IC8gMTAwMDsKKyAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAw
OworICAgIGNhbGN1bGF0ZVVSTENhY2hlU2l6ZXMoY2FjaGVNb2RlbCwgZGlza0ZyZWVTaXplLCB1
cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CisKKyAgICBpZiAo
bV9kaXNrQ2FjaGVTaXplT3ZlcnJpZGUgPj0gMCkKKyAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSBtX2Rpc2tDYWNoZVNpemVPdmVycmlkZTsKKworI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
KQorICAgIGF1dG8mIG5ldHdvcmtDYWNoZSA9IE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCk7Cisg
ICAgaWYgKG5ldHdvcmtDYWNoZS5pc0VuYWJsZWQoKSkgeworICAgICAgICBuZXR3b3JrQ2FjaGUu
c2V0Q2FwYWNpdHkodXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOworICAgICAgICByZXR1cm47CiAgICAg
fQorI2VuZGlmCisKKyAgICBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBiNzMy
NTE3Li5jM2Y2YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAv
LyBQbGF0Zm9ybSBIZWxwZXJzCi0gICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbCk7CisgICAgdm9pZCBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1bnNpZ25lZCBsb25nIHVy
bENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkp
OwogCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgogICAgIFZlY3RvcjxSZWZQ
dHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nlc3NDb25uZWN0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDA3MGUxOGEuLmE5NmM1NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEyNCw0MiArMTIzLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0MKICAgICB9CiB9CiAKLXN0YXRpYyB1aW50NjRfdCB2b2x1bWVGcmVlU2l6ZShjb25zdCBT
dHJpbmcmIHBhdGgpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlU2l6
ZSh1bnNpZ25lZCBsb25nIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxvbmcgdXJs
Q2FjaGVEaXNrQ2FwYWNpdHkpCiB7Ci0gICAgTlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmli
dXRlc0RpY3Rpb25hcnkgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0
ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOihOU1N0cmluZyAqKXBhdGggZXJyb3I6TlVMTF07Ci0gICAg
cmV0dXJuIFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0Zp
bGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKLX0KLQotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkK
LXsKLSAgICB1aW50NjRfdCBtZW1TaXplID0gcmFtU2l6ZSgpIC8gMTAyNCAvIDEwMjQ7Ci0KLSAg
ICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNl
IHRoZSByZXBvcnRlZCBieXRlCi0gICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRv
IGEgbWVnYWJ5dGUgYm91bmRhcnkuCi0gICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gdm9sdW1l
RnJlZVNpemUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpIC8gMTAyNCAvIDEwMDA7Ci0KLSAgICB1bnNp
Z25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENh
cGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7Ci0gICAg
YXV0byBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29u
ZHMgeyAwIH07Ci0gICAgdW5zaWduZWQgcGFnZUNhY2hlQ2FwYWNpdHkgPSAwOwotICAgIHVuc2ln
bmVkIGxvbmcgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyB1
cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7Ci0KLSAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hl
TW9kZWwsIG1lbVNpemUsIGRpc2tGcmVlU2l6ZSwKLSAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5
LCBjYWNoZU1pbkRlYWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVk
RGF0YURlbGV0aW9uSW50ZXJ2YWwsCi0gICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNo
ZU1lbW9yeUNhcGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0KLSAgICBpZiAobV9kaXNr
Q2FjaGVTaXplT3ZlcnJpZGUgPj0gMCkKLSAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSBt
X2Rpc2tDYWNoZVNpemVPdmVycmlkZTsKLQotI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQotICAg
IGF1dG8mIG5ldHdvcmtDYWNoZSA9IE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYg
KG5ldHdvcmtDYWNoZS5pc0VuYWJsZWQoKSkgewotICAgICAgICBuZXR3b3JrQ2FjaGUuc2V0Q2Fw
YWNpdHkodXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCiAgICAgTlNVUkxDYWNoZSAqbnN1cmxDYWNoZSA9IFtOU1VSTENhY2hlIHNoYXJlZFVSTENh
Y2hlXTsKICAgICBbbnN1cmxDYWNoZSBzZXRNZW1vcnlDYXBhY2l0eTp1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5XTsKICAgICBpZiAoIW1fZGlza0NhY2hlSXNEaXNhYmxlZEZvclRlc3RpbmcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKaW5kZXggNTBlNDk4Mi4uN2I4ZGVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApA
QCAtNDUsMjAgKzQ1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi0jaWYgIUVOQUJMRShORVRXT1JLX0NBQ0hFKQotc3RhdGljIHVpbnQ2NF90IGdl
dENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCi17Ci0gICAgQVNTRVJUKGNhY2hl
KTsKLQotICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19vYmplY3RfZ2V0
KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIoKSwgTlVMTCk7
Ci0gICAgaWYgKCFjYWNoZURpcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gV2Vi
Q29yZTo6Z2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNhY2hlRGlyLmdldCgpKTsKLX0KLSNlbmRp
ZgotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQogewogICAgIFNvdXBOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRBY2NlcHRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKQEAgLTEw
NywzNiArOTMsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBzZXRJZ25vcmVUTFNF
cnJvcnMocGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRVUkxDYWNoZVNpemUodW5zaWduZWQgbG9uZyAvKnVy
bENhY2hlTWVtb3J5Q2FwYWNpdHkqLywgdW5zaWduZWQgbG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0
eSkKIHsKLSAgICB1bnNpZ25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVk
IGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBh
Y2l0eSA9IDA7Ci0gICAgYXV0byBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3Rk
OjpjaHJvbm86OnNlY29uZHMgeyAwIH07Ci0gICAgdW5zaWduZWQgcGFnZUNhY2hlQ2FwYWNpdHkg
PSAwOwotCi0gICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKLSAg
ICB1bnNpZ25lZCBsb25nIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKLQotI2lmIEVOQUJMRShO
RVRXT1JLX0NBQ0hFKQotICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IFdlYkNvcmU6OmdldFZv
bHVtZUZyZWVTaXplRm9yUGF0aChtX2Rpc2tDYWNoZURpcmVjdG9yeS51dGY4KCkuZGF0YSgpKSAv
IFdURjo6TUI7Ci0jZWxzZQorI2lmICFFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBTb3VwQ2Fj
aGUqIGNhY2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7
Ci0gICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVEaXNrRnJlZVNpemUoY2FjaGUp
IC8gV1RGOjpNQjsKLSNlbmRpZgotCi0gICAgdWludDY0X3QgbWVtU2l6ZSA9IFdURjo6cmFtU2l6
ZSgpIC8gV1RGOjpNQjsKLSAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNp
emUsIGRpc2tGcmVlU2l6ZSwKLSAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5LCBjYWNoZU1pbkRl
YWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVkRGF0YURlbGV0aW9u
SW50ZXJ2YWwsCi0gICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkK
LSAgICBhdXRvJiBuZXR3b3JrQ2FjaGUgPSBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpOwotICAg
IGlmIChuZXR3b3JrQ2FjaGUuaXNFbmFibGVkKCkpCi0gICAgICAgIG5ldHdvcmtDYWNoZS5zZXRD
YXBhY2l0eSh1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0jZWxzZQogICAgIGlmICh1cmxDYWNoZURp
c2tDYXBhY2l0eSA+IHNvdXBfY2FjaGVfZ2V0X21heF9zaXplKGNhY2hlKSkKICAgICAgICAgc291
cF9jYWNoZV9zZXRfbWF4X3NpemUoY2FjaGUsIHVybENhY2hlRGlza0NhcGFjaXR5KTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHVybENhY2hlRGlza0NhcGFjaXR5KTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5jcHAKaW5kZXggY2NkNzhhZS4uNTM0MTljYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DYWNoZU1vZGVsLmNwcApAQCAtMjcsMTMgKzI3LDE1IEBACiAjaW5j
bHVkZSAiQ2FjaGVNb2RlbC5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0
Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2Rl
bCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3QgZGlza0ZyZWVTaXplLAotICAgIHVuc2ln
bmVkJiBjYWNoZVRvdGFsQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1pbkRlYWRDYXBhY2l0eSwg
dW5zaWduZWQmIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBzdGQ6OmNocm9ubzo6c2Vjb25kcyYgZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKLSAgICB1bnNpZ25lZCYgcGFnZUNhY2hlQ2Fw
YWNpdHksIHVuc2lnbmVkIGxvbmcmIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxv
bmcmIHVybENhY2hlRGlza0NhcGFjaXR5KQordm9pZCBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVz
KENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdW5zaWduZWQmIGNhY2hlVG90YWxDYXBhY2l0eSwgdW5z
aWduZWQmIGNhY2hlTWluRGVhZENhcGFjaXR5LCB1bnNpZ25lZCYgY2FjaGVNYXhEZWFkQ2FwYWNp
dHksIHN0ZDo6Y2hyb25vOjpzZWNvbmRzJiBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFs
LCB1bnNpZ25lZCYgcGFnZUNhY2hlQ2FwYWNpdHkpCiB7CisgICAgdWludDY0X3QgbWVtb3J5U2l6
ZSA9IHJhbVNpemUoKSAvIE1COworCiAgICAgc3dpdGNoIChjYWNoZU1vZGVsKSB7CiAgICAgY2Fz
ZSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI6IHsKICAgICAgICAgLy8gUGFnZSBjYWNoZSBjYXBh
Y2l0eSAoaW4gcGFnZXMpCkBAIC00MSwyMyArNDMsMTcgQEAgdm9pZCBjYWxjdWxhdGVDYWNoZVNp
emVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3Qg
ZGkKIAogICAgICAgICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCiAgICAg
ICAgIGlmIChtZW1vcnlTaXplID49IDIwNDgpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNp
dHkgPSA5NiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0g
OTYgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxNTM2KQotICAgICAgICAg
ICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNjQgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIGNh
Y2hlVG90YWxDYXBhY2l0eSA9IDY0ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUg
Pj0gMTAyNCkKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDMyICogMTAyNCAqIDEw
MjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIE1COwogICAgICAgICBl
bHNlIGlmIChtZW1vcnlTaXplID49IDUxMikKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0
eSA9IDE2ICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAx
NiAqIE1COwogCiAgICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKICAgICAgICAgY2Fj
aGVNYXhEZWFkQ2FwYWNpdHkgPSAwOwogCi0gICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNh
Y2hlIGNhcGFjaXR5IChpbiBieXRlcykKLSAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9
IDA7Ci0KLSAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCi0gICAgICAg
IHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKLQogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOiB7CkBAIC03MSwzNyArNjcsMTcgQEAgdm9p
ZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVt
b3J5U2l6ZSwgdWludDY0X3QgZGkKIAogICAgICAgICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGll
cyAoaW4gYnl0ZXMpCiAgICAgICAgIGlmIChtZW1vcnlTaXplID49IDIwNDgpCi0gICAgICAgICAg
ICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2Fj
aGVUb3RhbENhcGFjaXR5ID0gOTYgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+
PSAxNTM2KQotICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNjQgKiAxMDI0ICogMTAy
NDsKKyAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDY0ICogTUI7CiAgICAgICAgIGVs
c2UgaWYgKG1lbW9yeVNpemUgPj0gMTAyNCkKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0
eSA9IDMyICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAz
MiAqIE1COwogICAgICAgICBlbHNlIGlmIChtZW1vcnlTaXplID49IDUxMikKLSAgICAgICAgICAg
IGNhY2hlVG90YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNo
ZVRvdGFsQ2FwYWNpdHkgPSAxNiAqIE1COwogCiAgICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5
ID0gY2FjaGVUb3RhbENhcGFjaXR5IC8gODsKICAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkg
PSBjYWNoZVRvdGFsQ2FwYWNpdHkgLyA0OwogCi0gICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5
IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKLSAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMjA0
OCkKLSAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA0ICogMTAyNCAqIDEwMjQ7
Ci0gICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0gMTAyNCkKLSAgICAgICAgICAgIHVybENh
Y2hlTWVtb3J5Q2FwYWNpdHkgPSAyICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGVsc2UgaWYgKG1l
bW9yeVNpemUgPj0gNTEyKQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEg
KiAxMDI0ICogMTAyNDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9ICAgICAgNTEyICogMTAyNDsgCi0KLSAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBh
Y2l0eSAoaW4gYnl0ZXMpCi0gICAgICAgIGlmIChkaXNrRnJlZVNpemUgPj0gMTYzODQpCi0gICAg
ICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDc1ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAg
IGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSA4MTkyKQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNr
Q2FwYWNpdHkgPSA0MCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBlbHNlIGlmIChkaXNrRnJlZVNp
emUgPj0gNDA5NikKLSAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMzAgKiAxMDI0
ICogMTAyNDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkg
PSAyMCAqIDEwMjQgKiAxMDI0OwotCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENh
Y2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjogewpAQCAtMTE1LDE2ICs5MSwxNiBAQCB2b2lkIGNh
bGN1bGF0ZUNhY2hlU2l6ZXMoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsLCB1aW50NjRfdCBtZW1vcnlT
aXplLCB1aW50NjRfdCBkaQogCiAgICAgICAgIC8vIE9iamVjdCBjYWNoZSBjYXBhY2l0aWVzIChp
biBieXRlcykKICAgICAgICAgLy8gKFRlc3RpbmcgaW5kaWNhdGVzIHRoYXQgdmFsdWUgLyBNQiBk
ZXBlbmRzIGhlYXZpbHkgb24gY29udGVudCBhbmQKLSAgICAgICAgLy8gYnJvd3NpbmcgcGF0dGVy
bi4gRXZlbiBncm93dGggYWJvdmUgMTI4TUIgY2FuIGhhdmUgc3Vic3RhbnRpYWwgCisgICAgICAg
IC8vIGJyb3dzaW5nIHBhdHRlcm4uIEV2ZW4gZ3Jvd3RoIGFib3ZlIDEyOE1CIGNhbiBoYXZlIHN1
YnN0YW50aWFsCiAgICAgICAgIC8vIHZhbHVlIC8gTUIgZm9yIHNvbWUgY29udGVudCAvIGJyb3dz
aW5nIHBhdHRlcm5zLikKICAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMjA0OCkKLSAgICAgICAg
ICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDEyOCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAg
Y2FjaGVUb3RhbENhcGFjaXR5ID0gMTI4ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNp
emUgPj0gMTUzNikKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDk2ICogMTAyNCAq
IDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIE1COwogICAgICAg
ICBlbHNlIGlmIChtZW1vcnlTaXplID49IDEwMjQpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2Fw
YWNpdHkgPSA2NCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5
ID0gNjQgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSA1MTIpCi0gICAgICAg
ICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAg
Y2FjaGVUb3RhbENhcGFjaXR5ID0gMzIgKiBNQjsKIAogICAgICAgICBjYWNoZU1pbkRlYWRDYXBh
Y2l0eSA9IGNhY2hlVG90YWxDYXBhY2l0eSAvIDQ7CiAgICAgICAgIGNhY2hlTWF4RGVhZENhcGFj
aXR5ID0gY2FjaGVUb3RhbENhcGFjaXR5IC8gMjsKQEAgLTEzNSwzNyArMTExLDg0IEBAIHZvaWQg
Y2FsY3VsYXRlQ2FjaGVTaXplcyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwsIHVpbnQ2NF90IG1lbW9y
eVNpemUsIHVpbnQ2NF90IGRpCiAKICAgICAgICAgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbCA9IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHsgNjAgfTsKIAorICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsK
K30KKwordm9pZCBjYWxjdWxhdGVVUkxDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwg
dWludDY0X3QgZGlza0ZyZWVTaXplLCB1bnNpZ25lZCBsb25nJiB1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5LCB1bnNpZ25lZCBsb25nJiB1cmxDYWNoZURpc2tDYXBhY2l0eSkKK3sKKyAgICBzd2l0Y2gg
KGNhY2hlTW9kZWwpIHsKKyAgICBjYXNlIENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjogeworICAg
ICAgICAvLyBGb3VuZGF0aW9uIG1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAg
ICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOworCisgICAgICAgIC8vIERpc2sgY2FjaGUg
Y2FwYWNpdHkgKGluIGJ5dGVzKQorICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CisK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nl
cjogeworICAgICAgICB1aW50NjRfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gTUI7CisKKyAg
ICAgICAgLy8gRm91bmRhdGlvbiBtZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQorICAg
ICAgICBpZiAobWVtb3J5U2l6ZSA+PSAyMDQ4KQorICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9IDQgKiBNQjsKKyAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxMDI0KQor
ICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDIgKiBNQjsKKyAgICAgICAgZWxz
ZSBpZiAobWVtb3J5U2l6ZSA+PSA1MTIpCisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5ID0gMSAqIE1COworICAgICAgICBlbHNlCisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gNTEyICogS0I7CisKKyAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4g
Ynl0ZXMpCisgICAgICAgIGlmIChkaXNrRnJlZVNpemUgPj0gMTYzODQpCisgICAgICAgICAgICB1
cmxDYWNoZURpc2tDYXBhY2l0eSA9IDc1ICogTUI7CisgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVl
U2l6ZSA+PSA4MTkyKQorICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA0MCAqIE1C
OworICAgICAgICBlbHNlIGlmIChkaXNrRnJlZVNpemUgPj0gNDA5NikKKyAgICAgICAgICAgIHVy
bENhY2hlRGlza0NhcGFjaXR5ID0gMzAgKiBNQjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAyMCAqIE1COworCisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIENhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjogeworICAgICAgICB1aW50NjRf
dCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gTUI7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAg
ICAgIGlmIChtZW1vcnlTaXplID49IDEwMjQpCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMTYgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2Fw
YWNpdHkgPSAxNiAqIE1COwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9y
eUNhcGFjaXR5ID0gOCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9IDggKiBNQjsKICNlbHNlCiAgICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNh
Y2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgLy8gKFRoZXNlIHZhbHVlcyBhcmUgc21h
bGwgYmVjYXVzZSBXZWJDb3JlIGRvZXMgbW9zdCBjYWNoaW5nIGl0c2VsZi4pCiAgICAgICAgIGlm
IChtZW1vcnlTaXplID49IDEwMjQpCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5
ID0gNCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9
IDQgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSA1MTIpCi0gICAgICAgICAg
ICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAg
dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDIgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5
U2l6ZSA+PSAyNTYpCi0gICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMSAqIDEw
MjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEgKiBNQjsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9ICAgICAg
NTEyICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA1MTIgKiBL
QjsKICNlbmRpZgogCiAgICAgICAgIC8vIERpc2sgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQog
ICAgICAgICBpZiAoZGlza0ZyZWVTaXplID49IDE2Mzg0KQotICAgICAgICAgICAgdXJsQ2FjaGVE
aXNrQ2FwYWNpdHkgPSA1MDAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlRGlz
a0NhcGFjaXR5ID0gNTAwICogTUI7CiAgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSA4
MTkyKQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAyNTAgKiAxMDI0ICogMTAy
NDsKKyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMjUwICogTUI7CiAgICAgICAg
IGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSA0MDk2KQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNr
Q2FwYWNpdHkgPSAxMjUgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlRGlza0Nh
cGFjaXR5ID0gMTI1ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSAyMDQ4
KQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAxMDAgKiAxMDI0ICogMTAyNDsK
KyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMTAwICogTUI7CiAgICAgICAgIGVs
c2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSAxMDI0KQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSA3NSAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSA3NSAqIE1COwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBh
Y2l0eSA9IDUwICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0
eSA9IDUwICogTUI7CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DYWNo
ZU1vZGVsLmgKaW5kZXggMzRkZGQwNDguLjg3YjM0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DYWNoZU1vZGVsLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NhY2hl
TW9kZWwuaApAQCAtMzcsOSArMzcsOCBAQCBlbnVtIENhY2hlTW9kZWwgewogICAgIENhY2hlTW9k
ZWxQcmltYXJ5V2ViQnJvd3NlcgogfTsKIAotdm9pZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hl
TW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3QgZGlza0ZyZWVT
aXplLAotICAgIHVuc2lnbmVkJiBjYWNoZVRvdGFsQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1p
bkRlYWRDYXBhY2l0eSwgdW5zaWduZWQmIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBzdGQ6OmNocm9u
bzo6c2Vjb25kcyYgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKLSAgICB1bnNpZ25l
ZCYgcGFnZUNhY2hlQ2FwYWNpdHksIHVuc2lnbmVkIGxvbmcmIHVybENhY2hlTWVtb3J5Q2FwYWNp
dHksIHVuc2lnbmVkIGxvbmcmIHVybENhY2hlRGlza0NhcGFjaXR5KTsKK3ZvaWQgY2FsY3VsYXRl
TWVtb3J5Q2FjaGVTaXplcyhDYWNoZU1vZGVsLCB1bnNpZ25lZCYgY2FjaGVUb3RhbENhcGFjaXR5
LCB1bnNpZ25lZCYgY2FjaGVNaW5EZWFkQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1heERlYWRD
YXBhY2l0eSwgc3RkOjpjaHJvbm86OnNlY29uZHMmIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50
ZXJ2YWwsIHVuc2lnbmVkJiBwYWdlQ2FjaGVDYXBhY2l0eSk7Cit2b2lkIGNhbGN1bGF0ZVVSTENh
Y2hlU2l6ZXMoQ2FjaGVNb2RlbCwgdWludDY0X3QgZGlza0ZyZWVTaXplLCB1bnNpZ25lZCBsb25n
JiB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1bnNpZ25lZCBsb25nJiB1cmxDYWNoZURpc2tDYXBh
Y2l0eSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCBhYzNlMWNmLi4xNDc1Mjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKCkKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykKICAgICBQYWdlQ2Fj
aGU6OnNpbmdsZXRvbigpLnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRp
ZgogCkBAIC01MjksMTEgKzUyOSwyNSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldENhY2hlTW9kZWwo
dWludDMyX3QgY20pCiB7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gc3RhdGljX2Nhc3Q8
Q2FjaGVNb2RlbD4oY20pOwogCi0gICAgaWYgKCFtX2hhc1NldENhY2hlTW9kZWwgfHwgY2FjaGVN
b2RlbCAhPSBtX2NhY2hlTW9kZWwpIHsKLSAgICAgICAgbV9oYXNTZXRDYWNoZU1vZGVsID0gdHJ1
ZTsKLSAgICAgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKLSAgICAgICAgcGxhdGZvcm1T
ZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOwotICAgIH0KKyAgICBpZiAobV9oYXNTZXRDYWNoZU1v
ZGVsICYmIChjYWNoZU1vZGVsID09IG1fY2FjaGVNb2RlbCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1faGFzU2V0Q2FjaGVNb2RlbCA9IHRydWU7CisgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVN
b2RlbDsKKworICAgIHVuc2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CisgICAgdW5zaWdu
ZWQgY2FjaGVNaW5EZWFkQ2FwYWNpdHkgPSAwOworICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENh
cGFjaXR5ID0gMDsKKyAgICBhdXRvIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBz
dGQ6OmNocm9ubzo6c2Vjb25kcyB7IDAgfTsKKyAgICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplID0g
MDsKKyAgICBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzKGNhY2hlTW9kZWwsIGNhY2hlVG90YWxD
YXBhY2l0eSwgY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFk
RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLCBwYWdlQ2FjaGVTaXplKTsKKworICAgIGF1dG8m
IG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOworICAgIG1lbW9yeUNhY2hl
LnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5
LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOworICAgIG1lbW9yeUNhY2hlLnNldERlYWREZWNvZGVkRGF0
YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7CisgICAg
UGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKHBhZ2VDYWNoZVNpemUpOworCisgICAg
cGxhdGZvcm1TZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQpAQCAtNzUxLDggKzc2NSw2IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXNlckdlc3R1cmVUb2tlbkRlc3Ryb3llZChVc2VyR2VzdHVyZVRva2VuJiB0b2tlbikK
IAogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9D
bGVhciByZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgcGxhdGZvcm1DbGVhclJlc291cmNl
Q2FjaGVzKHJlc291cmNlQ2FjaGVzVG9DbGVhcik7Ci0KICAgICAvLyBUb2dnbGluZyB0aGUgY2Fj
aGUgbW9kZWwgbGlrZSB0aGlzIGZvcmNlcyB0aGUgY2FjaGUgdG8gZXZpY3QgYWxsIGl0cyBpbi1t
ZW1vcnkgcmVzb3VyY2VzLgogICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgYmV0dGVyIHdheSB0byBk
byB0aGlzLgogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOGE1MjIyZC4uMDhiNGRiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI2MSw3ICsyNjEsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoY29uc3Qg
SGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+JiBo
YXNoZXMpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7Ci0g
ICAgdm9pZCBwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFy
KTsKIAogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpp
bmRleCA1MDM2NzFiLi40ZDcxNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNDgsMTAgKzQ4LDggQEAKICNpbXBvcnQg
PFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVt
b3J5Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL05TQWNjZXNzaWJpbGl0eVNQSS5oPgotI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL3B0aHJlYWRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVk5vZGVU
cmFja2VyLmg+CkBAIC02MSw3ICs1OSw2IEBACiAjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxzdGRpby5oPgotI2ltcG9ydCA8
d3RmL1JBTVNpemUuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPFdlYkNvcmUvR3Jh
cGhpY3NTZXJ2aWNlc1NQSS5oPgpAQCAtNzUsNDUgKzcyLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdWludDY0X3Qgdm9sdW1lRnJl
ZVNpemUoTlNTdHJpbmcgKnBhdGgpCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVN
b2RlbChDYWNoZU1vZGVsKQogewotICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0
ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVz
T2ZGaWxlU3lzdGVtRm9yUGF0aDpwYXRoIGVycm9yOk5VTExdOwotICAgIHJldHVybiBbW2ZpbGVT
eXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNp
emVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKLXsKLSAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29w
eUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3Rv
cnkpCi0gICAgICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKLQot
ICAgIHVpbnQ2NF90IG1lbVNpemUgPSByYW1TaXplKCkgLyAxMDI0IC8gMTAyNDsKLQotICAgIC8v
IEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhl
IHJlcG9ydGVkIGJ5dGUgCi0gICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEg
bWVnYWJ5dGUgYm91bmRhcnkuCi0gICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gdm9sdW1lRnJl
ZVNpemUobnN1cmxDYWNoZURpcmVjdG9yeS5nZXQoKSkgLyAxMDI0IC8gMTAwMDsKLQotICAgIHVu
c2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgY2FjaGVNaW5EZWFk
Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKLSAg
ICBhdXRvIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6c2Vj
b25kcyB7IDAgfTsKLSAgICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplID0gMDsKLSAgICB1bnNpZ25l
ZCBsb25nIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGxvbmcgdXJs
Q2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwotCi0gICAgY2FsY3VsYXRlQ2FjaGVTaXplcyhjYWNoZU1v
ZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCi0gICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSwg
Y2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVjb2RlZERh
dGFEZWxldGlvbkludGVydmFsLAotICAgICAgICBwYWdlQ2FjaGVTaXplLCB1cmxDYWNoZU1lbW9y
eUNhcGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0KLSAgICBhdXRvJiBtZW1vcnlDYWNo
ZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKLSAgICBtZW1vcnlDYWNoZS5zZXRDYXBhY2l0
aWVzKGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3Rh
bENhcGFjaXR5KTsKLSAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbklu
dGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwotICAgIFBhZ2VDYWNoZTo6
c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKLX0KLQotdm9pZCBXZWJQcm9j
ZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNh
Y2hlc1RvQ2xlYXIpCi17Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzLgogfQogCiAjaWYgVVNF
KEFQUEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwCmluZGV4IDVmZGEyMWIuLjBkNjkwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcApAQCAtMjcsNTYgKzI3LDE4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCi0jaW5jbHVk
ZSAiQ2VydGlmaWNhdGVJbmZvLmgiCi0jaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU291
cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8
d3RmL1JBTVNpemUuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogewot
ICAgIHVuc2lnbmVkIGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQgY2FjaGVN
aW5EZWFkQ2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0g
MDsKLSAgICBhdXRvIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBzdGQ6OmNocm9u
bzo6c2Vjb25kcyB7IDAgfTsKLSAgICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplID0gMDsKLQotICAg
IHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7Ci0gICAgdW5zaWduZWQg
bG9uZyB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7Ci0KLSAgICB1aW50NjRfdCBkaXNrRnJlZVNp
emUgPSAwOwotCi0gICAgdWludDY0X3QgbWVtU2l6ZSA9IFdURjo6cmFtU2l6ZSgpIC8gV1RGOjpN
QjsKLSAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNpemUsIGRpc2tGcmVl
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSwgY2FjaGVN
aW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNhY2hlU2l6ZSwgdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotCi0gICAgYXV0byYg
bWVtb3J5Q2FjaGUgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgbWVt
b3J5Q2FjaGUuc2V0RGlzYWJsZWQoY2FjaGVNb2RlbCA9PSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3
ZXIpOwotICAgIG1lbW9yeUNhY2hlLnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFkQ2FwYWNpdHks
IGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwotICAgIG1lbW9yeUNh
Y2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbCk7Ci0gICAgV2ViQ29yZTo6UGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRN
YXhTaXplKHBhZ2VDYWNoZVNpemUpOwotCi0jaWYgUExBVEZPUk0oR1RLKQotICAgIFdlYkNvcmU6
OlBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkQ2xlYXJCYWNraW5nU3RvcmVzKHRydWUp
OwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2Fj
aGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQoteworICAgIC8vIEZJWE1F
OiB0aGlzIGlzIG5vIGxvbmdlciBzb3VwIHNwZWNpZmljLCB0aGlzIGZpbGUgc2hvdWxkIGJlIHJl
bmFtZWQuCisgICAgV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnNldERpc2FibGVk
KGNhY2hlTW9kZWwgPT0gQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyKTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJikKIHsKIH0KIAo=
</data>
<flag name="review"
          id="308325"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284758</attachid>
            <date>2016-07-28 00:30:09 -0700</date>
            <delta_ts>2016-07-28 08:54:03 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-cache-model.diff</filename>
            <type>text/plain</type>
            <size>33030</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5OGFhNTBiLi4yMTRlMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTYtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFNwbGl0IGNhbGN1bGF0ZUNhY2hlU2l6ZXMgaW4gdHdvIG1ldGhvZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDIzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBnZXRW
b2x1bWVGcmVlU2l6ZUZvclBhdGggYXMgdm9sdW1lRnJlZVNpemVGb3JQYXRoIGFuZCBtYWtlIGl0
IGF2YWlsYWJsZSB0byBhbGwgcGxhdGZvcm1zIGFkZGluZyBhbgorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBmb3IgbWFjLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZv
bHVtZUZyZWVTaXplRm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRWb2x1bWVGcmVlU2l6
ZUZvclBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dm9sdW1lRnJlZVNpemVGb3JQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9yUGF0aCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjp2b2x1
bWVGcmVlU2l6ZUZvclBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZvbHVtZUZyZWVTaXplRm9yUGF0aCk6CisKIDIwMTYt
MDctMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXJzdCBw
YXJhbWV0ZXIgdG8gSFRNTE1lZGlhRWxlbWVudC5jYW5QbGF5VHlwZSgpIHNob3VsZCBiZSBtYW5k
YXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAxYWYyNmNkLi44Njhi
Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xNDUsNiArMTQ1LDcg
QEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBw
YXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBk
aXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRWb2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKTsKIAogV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNZXRhZGF0YVVSTChTdHJpbmcmIFVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIApAQCAtMjAyLDkgKzIwMyw2IEBAIFN0cmluZyBm
aWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGly
ZWN0b3J5UGF0aCgpOwogQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCk7CiAjZW5kaWYKLSNp
ZiBVU0UoU09VUCkKLXVpbnQ2NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBjaGFy
Kik7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBs
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9GaWxlU3lzdGVtRWZsLmNwcAppbmRleCBjNTk1ZWY1Li44ZDk3OTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRmlsZVN5c3RlbUVmbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0ZpbGVTeXN0ZW1FZmwuY3BwCkBAIC04OCwx
MyArODgsMTggQEAgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChob21lKTsKIH0KIAotdWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRo
KGNvbnN0IGNoYXIqIHBhdGgpCitib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcm
IHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiB7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1Jl
cC5kYXRhKClbMF0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgc3RydWN0
IHN0YXR2ZnMgYnVmOwotICAgIGlmIChzdGF0dmZzKHBhdGgsICZidWYpIDwgMCkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKHN0YXR2ZnMoZnNSZXAuZGF0YSgpLCAmYnVmKSA8IDApCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnVm
LmZfYmF2YWlsKSAqIGJ1Zi5mX2JzaXplOworICAgIGZyZWVTcGFjZSA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihidWYuZl9iYXZhaWwpICogYnVmLmZfYnNpemU7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAKaW5kZXggMWQxMWI3OC4uMTE3NDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTIzMiwxNCArMjMyLDE5IEBAIENTdHJpbmcg
c2hhcmVkUmVzb3VyY2VzUGF0aCgpCiAgICAgcmV0dXJuIGNhY2hlZFBhdGg7CiB9CiAKLXVpbnQ2
NF90IGdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKQorYm9vbCBnZXRW
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQog
ewotICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChwYXRoKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZmlsZW5hbWUuZ2V0KCkpKTsKICAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9w
dEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRU
UklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwgMCkpOwogICAgIGlmICghZmlsZUluZm8pCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZ19maWxl
X2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50NjQoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJV
VEVfRklMRVNZU1RFTV9GUkVFKTsKKyAgICBmcmVlU3BhY2UgPSBnX2ZpbGVfaW5mb19nZXRfYXR0
cmlidXRlX3VpbnQ2NChmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9GSUxFU1lTVEVN
X0ZSRUUpOworICAgIHJldHVybiAhIWZyZWVTcGFjZTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5h
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmls
ZVN5c3RlbU1hYy5tbQppbmRleCA5YmJhOWVmLi4zN2NkNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQpAQCAtOTgsNiArOTgsMTMgQEAgYm9vbCBt
b3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKICAg
ICByZXR1cm4gW21hbmFnZXIgbW92ZUl0ZW1BdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm9s
ZFBhdGhdIHRvVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6bmV3UGF0aF0gZXJyb3I6bmlsXTsK
IH0KIAorYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRf
dCYgZnJlZVNwYWNlKQoreworICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNE
aWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZG
aWxlU3lzdGVtRm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOworICAgIGZyZWVT
cGFjZSA9IFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpOU0Zp
bGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25nTG9uZ1ZhbHVlXTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogI2lmICFQTEFURk9STShJT1MpCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcAppbmRleCBjMmI5M2U0Li42MGVkY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC00NDcsNCArNDQ3LDEwIEBAIFZl
Y3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0
IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCitib29sIGdldFZvbHVt
ZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA3NjRiNWE1Li4yN2FkYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTYtMDctMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFNwbGl0IGNhbGN1bGF0ZUNhY2hlU2l6ZXMgaW4gdHdvIG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDIzNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3MgdXNlZCB0byBj
YWxjdWxhdGUgbWVtb3J5IGFuZCBkaXNrIGNhY2hlIHNpemVzLCBidXQgb25seSB0aGUgd2ViIHBy
b2Nlc3MgaXMgaW50ZXJlc3RlZCBpbiBtZW1vcnkgY2FjaGVzLCBhbmQKKyAgICAgICAgdGhlIG5l
dHdvcmsgcHJvY2VzcyBpbiBkaXNrIGNhY2hlLiBXZSBjYW4gYWxzbyBhdm9pZCBhIGxvdCBvZiBk
dXBsaWNhdGVkIGNvZGUgYmV0d2VlbiBwb3J0cyB0byBzZXQgdGhlIGNhY2hlIG1vZGVsLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCk6IFVzZSBjYWxjdWxhdGVVUkxDYWNo
ZVNpemVzIHRvIHNldCB0aGUgZGlzayBjYWNoZSBzaXplIGFuZCBjYWxsCisgICAgICAgIHBsYXRm
b3JtU2V0VVJMQ2FjaGVTaXplIGlmIG5vdCBzZXQgdG8gYWxsb3cgcG9ydHMgdG8gc2V0dXAgcGxh
dGZvcm0gc3BlY2lmaWMgY2FjaGUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRVUkxD
YWNoZVNpemUpOiBSZW1vdmUgY29tbW9uIGNvZGUgdGhhdCBpcyBub3cgaW4gY3Jvc3MtcGxhdGZv
cm0gZmlsZS4KKyAgICAgICAgKFdlYktpdDo6dm9sdW1lRnJlZVNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKTogUmVu
YW1lZCB0byBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSgpLgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKTogUmVtb3ZlIGNvbW1vbiBjb2RlIHRo
YXQgaXMgbm93IGluIGNyb3NzLXBsYXRmb3JtIGZpbGUuCisgICAgICAgIChXZWJLaXQ6OmdldENh
Y2hlRGlza0ZyZWVTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6IFJlbmFtZWQgdG8gcGxhdGZvcm1TZXRVUkxDYWNo
ZVNpemUoKS4KKyAgICAgICAgKiBTaGFyZWQvQ2FjaGVNb2RlbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmNhbGN1bGF0ZU1lbW9yeUNhY2hlU2l6ZXMpOiBDYWxjdWxhdGUgdGhlIG1lbW9yeSBhbmQg
cGFnZSBjYWNoZSBzaXplcy4KKyAgICAgICAgKFdlYktpdDo6Y2FsY3VsYXRlVVJMQ2FjaGVTaXpl
cyk6IENhbGN1bGF0ZSB0aGUgZGlzayBjYWNoZSBzaXplLgorICAgICAgICAoV2ViS2l0OjpjYWxj
dWxhdGVDYWNoZVNpemVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ2FjaGVNb2RlbC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3MpOiBUZWxsIHRoZSBwYWdlIGNhY2hlIHRvIGNsZWFyIGJhY2tpbmcgc3RvcmVz
IGZvciBHVEsrIHBvcnQgdG9vLiBUaGlzIHdhcyBkb25lIGJlZm9yZSB3aGVuCisgICAgICAgIHNl
dHRpbmcgdGhlIGNhY2hlIG1vZGVsLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRD
YWNoZU1vZGVsKTogVXNlIGNhbGN1bGF0ZU1lbW9yeUNhY2hlU2l6ZXMgdG8gc2V0dXAgbWVtb3J5
IGNhY2hlcyBhbmQgY2FsbAorICAgICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwgdG8gYWxsb3cg
cG9ydHMgZG8gbW9yZSBzZXR1cCBhY2NvcmRpbmcgdG8gdGhlIGNhY2hlIG1vZGVsLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjbGVhclJlc291cmNlQ2FjaGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1TZXRDYWNoZU1vZGVsKTogUmVtb3ZlIGNvbW1vbiBjb2RlIHRoYXQgaXMgbm93IGluIGNy
b3NzLXBsYXRmb3JtIGZpbGUuCisgICAgICAgIChXZWJLaXQ6OnZvbHVtZUZyZWVTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNl
Q2FjaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9k
ZWwpOiBSZW1vdmUgY29tbW9uIGNvZGUgdGhhdCBpcyBub3cgaW4gY3Jvc3MtcGxhdGZvcm0gZmls
ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJj
ZUNhY2hlcyk6IERlbGV0ZWQuCisKIDIwMTYtMDctMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFkZCBXS1VJRGVsZWdhdGUgU1BJIGZvciBzcGVjaWZ5
aW5nIHRoYXQgYW4gYXR0YWNobWVudCBsaXN0IGlzIGZyb20gYSBtYW5hZ2VkIHNvdXJjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IGIzNWIyYWYuLjk0ZTQ1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUzOCwxMSArNTM4LDM0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20pCiB7CiAgICAgQ2FjaGVNb2RlbCBjYWNo
ZU1vZGVsID0gc3RhdGljX2Nhc3Q8Q2FjaGVNb2RlbD4oY20pOwogCi0gICAgaWYgKCFtX2hhc1Nl
dENhY2hlTW9kZWwgfHwgY2FjaGVNb2RlbCAhPSBtX2NhY2hlTW9kZWwpIHsKLSAgICAgICAgbV9o
YXNTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKLSAgICAgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2Rl
bDsKLSAgICAgICAgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworICAgIGlmICht
X2hhc1NldENhY2hlTW9kZWwgJiYgKGNhY2hlTW9kZWwgPT0gbV9jYWNoZU1vZGVsKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXNTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKKyAgICBtX2NhY2hl
TW9kZWwgPSBjYWNoZU1vZGVsOworCisgICAgdW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0
eSA9IDA7CisgICAgdWludDY0X3QgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOworICAgIHVpbnQ2
NF90IGRpc2tGcmVlU2l6ZSA9IDA7CisgICAgaWYgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTcGFj
ZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgeworICAgICAgICAvLyBBcyBh
IGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBv
cnRlZCBieXRlCisgICAgICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1l
Z2FieXRlIGJvdW5kYXJ5LgorICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOworICAg
ICAgICBjYWxjdWxhdGVVUkxDYWNoZVNpemVzKGNhY2hlTW9kZWwsIGRpc2tGcmVlU2l6ZSwgdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwogICAgIH0KKworICAg
IGlmIChtX2Rpc2tDYWNoZVNpemVPdmVycmlkZSA+PSAwKQorICAgICAgICB1cmxDYWNoZURpc2tD
YXBhY2l0eSA9IG1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlOworCisjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEUpCisgICAgYXV0byYgbmV0d29ya0NhY2hlID0gTmV0d29ya0NhY2hlOjpzaW5nbGV0b24o
KTsKKyAgICBpZiAobmV0d29ya0NhY2hlLmlzRW5hYmxlZCgpKSB7CisgICAgICAgIG5ldHdvcmtD
YWNoZS5zZXRDYXBhY2l0eSh1cmxDYWNoZURpc2tDYXBhY2l0eSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKworICAgIHBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKHVybENhY2hlTWVt
b3J5Q2FwYWNpdHksIHVybENhY2hlRGlza0NhcGFjaXR5KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IGI3MzI1MTcuLmFlODlkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIC8vIFBsYXRmb3JtIEhlbHBlcnMKLSAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChD
YWNoZU1vZGVsKTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKHVuc2lnbmVkIHVy
bENhY2hlTWVtb3J5Q2FwYWNpdHksIHVpbnQ2NF90IHVybENhY2hlRGlza0NhcGFjaXR5KTsKIAog
ICAgIC8vIENvbm5lY3Rpb25zIHRvIFdlYlByb2Nlc3Nlcy4KICAgICBWZWN0b3I8UmVmUHRyPE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQppbmRleCAwNzBlMThhLi40Y2U1YWEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW0KQEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBvcnQgPHd0Zi9SQU1TaXplLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC0xMjQsNDYgKzEyMywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNz
QwogICAgIH0KIH0KIAotc3RhdGljIHVpbnQ2NF90IHZvbHVtZUZyZWVTaXplKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKHVu
c2lnbmVkIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVpbnQ2NF90IHVybENhY2hlRGlza0NhcGFj
aXR5KQogewotICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5
ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVt
Rm9yUGF0aDooTlNTdHJpbmcgKilwYXRoIGVycm9yOk5VTExdOwotICAgIHJldHVybiBbW2ZpbGVT
eXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNp
emVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV07Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCi17Ci0gICAgdWludDY0
X3QgbWVtU2l6ZSA9IHJhbVNpemUoKSAvIDEwMjQgLyAxMDI0OwotCi0gICAgLy8gQXMgYSBmdWRn
ZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQg
Ynl0ZQotICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJv
dW5kYXJ5LgotICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IHZvbHVtZUZyZWVTaXplKG1fZGlz
a0NhY2hlRGlyZWN0b3J5KSAvIDEwMjQgLyAxMDAwOwotCi0gICAgdW5zaWduZWQgY2FjaGVUb3Rh
bENhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBjYWNoZU1pbkRlYWRDYXBhY2l0eSA9IDA7Ci0g
ICAgdW5zaWduZWQgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSAwOwotICAgIGF1dG8gZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHsgMCB9OwotICAg
IHVuc2lnbmVkIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBsb25nIHVybENh
Y2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSAwOwotCi0gICAgY2FsY3VsYXRlQ2FjaGVTaXplcyhjYWNoZU1vZGVsLCBtZW1TaXpl
LCBkaXNrRnJlZVNpemUsCi0gICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSwgY2FjaGVNaW5EZWFk
Q2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbklu
dGVydmFsLAotICAgICAgICBwYWdlQ2FjaGVDYXBhY2l0eSwgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0
eSwgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotCi0gICAgaWYgKG1fZGlza0NhY2hlU2l6ZU92ZXJy
aWRlID49IDApCi0gICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gbV9kaXNrQ2FjaGVTaXpl
T3ZlcnJpZGU7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKLSAgICBhdXRvJiBuZXR3b3Jr
Q2FjaGUgPSBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChuZXR3b3JrQ2FjaGUu
aXNFbmFibGVkKCkpIHsKLSAgICAgICAgbmV0d29ya0NhY2hlLnNldENhcGFjaXR5KHVybENhY2hl
RGlza0NhcGFjaXR5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgogICAgIE5TVVJM
Q2FjaGUgKm5zdXJsQ2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV07CiAgICAgW25z
dXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6dXJsQ2FjaGVNZW1vcnlDYXBhY2l0eV07CiAgICAg
aWYgKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKQotICAgICAgICBbbnN1cmxDYWNo
ZSBzZXREaXNrQ2FwYWNpdHk6c3RkOjptYXg8dW5zaWduZWQgbG9uZz4odXJsQ2FjaGVEaXNrQ2Fw
YWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pXTsgLy8gRG9uJ3Qgc2hyaW5rIGEgYmln
IGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1c2UgY2h1cm4uCisgICAgICAgIFtuc3Vy
bENhY2hlIHNldERpc2tDYXBhY2l0eTpzdGQ6Om1heDx1aW50NjRfdD4odXJsQ2FjaGVEaXNrQ2Fw
YWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pXTsgLy8gRG9uJ3Qgc2hyaW5rIGEgYmln
IGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1c2UgY2h1cm4uCiB9CiAKIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvbk5hbWUoQ0ZTdHJpbmdSZWYgZG9tYWluKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwCmluZGV4IDUwZTQ5ODIuLmEzZTE0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKQEAgLTQ1LDIwICs0NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotI2lmICFFTkFCTEUoTkVUV09SS19DQUNIRSkKLXN0YXRpYyB1aW50NjRf
dCBnZXRDYWNoZURpc2tGcmVlU2l6ZShTb3VwQ2FjaGUqIGNhY2hlKQotewotICAgIEFTU0VSVChj
YWNoZSk7Ci0KLSAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGNhY2hlRGlyOwotICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVChjYWNoZSksICJjYWNoZS1kaXIiLCAmY2FjaGVEaXIub3V0UHRyKCksIE5V
TEwpOwotICAgIGlmICghY2FjaGVEaXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJu
IFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTaXplRm9yUGF0aChjYWNoZURpci5nZXQoKSk7Ci19Ci0j
ZW5kaWYKLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykKIHsKICAgICBTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0QWNjZXB0TGFuZ3VhZ2VzKGxhbmd1YWdlcyk7CkBA
IC0xMDcsMzYgKzkzLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgc2V0SWdub3Jl
VExTRXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKHVuc2lnbmVkIC8qdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSovLCB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSkKIHsK
LSAgICB1bnNpZ25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hl
TWluRGVhZENhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9
IDA7Ci0gICAgYXV0byBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJv
bm86OnNlY29uZHMgeyAwIH07Ci0gICAgdW5zaWduZWQgcGFnZUNhY2hlQ2FwYWNpdHkgPSAwOwot
Ci0gICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKLSAgICB1bnNp
Z25lZCBsb25nIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKLQotI2lmIEVOQUJMRShORVRXT1JL
X0NBQ0hFKQotICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IFdlYkNvcmU6OmdldFZvbHVtZUZy
ZWVTaXplRm9yUGF0aChtX2Rpc2tDYWNoZURpcmVjdG9yeS51dGY4KCkuZGF0YSgpKSAvIFdURjo6
TUI7Ci0jZWxzZQorI2lmICFFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBTb3VwQ2FjaGUqIGNh
Y2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCk7Ci0gICAg
dWludDY0X3QgZGlza0ZyZWVTaXplID0gZ2V0Q2FjaGVEaXNrRnJlZVNpemUoY2FjaGUpIC8gV1RG
OjpNQjsKLSNlbmRpZgotCi0gICAgdWludDY0X3QgbWVtU2l6ZSA9IFdURjo6cmFtU2l6ZSgpIC8g
V1RGOjpNQjsKLSAgICBjYWxjdWxhdGVDYWNoZVNpemVzKGNhY2hlTW9kZWwsIG1lbVNpemUsIGRp
c2tGcmVlU2l6ZSwKLSAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5LCBjYWNoZU1pbkRlYWRDYXBh
Y2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2
YWwsCi0gICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5LCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5LCB1
cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKLSAgICBh
dXRvJiBuZXR3b3JrQ2FjaGUgPSBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChu
ZXR3b3JrQ2FjaGUuaXNFbmFibGVkKCkpCi0gICAgICAgIG5ldHdvcmtDYWNoZS5zZXRDYXBhY2l0
eSh1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0jZWxzZQogICAgIGlmICh1cmxDYWNoZURpc2tDYXBh
Y2l0eSA+IHNvdXBfY2FjaGVfZ2V0X21heF9zaXplKGNhY2hlKSkKICAgICAgICAgc291cF9jYWNo
ZV9zZXRfbWF4X3NpemUoY2FjaGUsIHVybENhY2hlRGlza0NhcGFjaXR5KTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHVybENhY2hlRGlza0NhcGFjaXR5KTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2FjaGVNb2RlbC5jcHAKaW5kZXggY2NkNzhhZS4uNDAzZjM0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DYWNoZU1vZGVsLmNwcApAQCAtMjcsMTMgKzI3LDE1IEBACiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9SQU1T
aXplLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotdm9pZCBjYWxjdWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWlu
dDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3QgZGlza0ZyZWVTaXplLAotICAgIHVuc2lnbmVkJiBj
YWNoZVRvdGFsQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNoZU1pbkRlYWRDYXBhY2l0eSwgdW5zaWdu
ZWQmIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBzdGQ6OmNocm9ubzo6c2Vjb25kcyYgZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKLSAgICB1bnNpZ25lZCYgcGFnZUNhY2hlQ2FwYWNpdHks
IHVuc2lnbmVkIGxvbmcmIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVuc2lnbmVkIGxvbmcmIHVy
bENhY2hlRGlza0NhcGFjaXR5KQordm9pZCBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzKENhY2hl
TW9kZWwgY2FjaGVNb2RlbCwgdW5zaWduZWQmIGNhY2hlVG90YWxDYXBhY2l0eSwgdW5zaWduZWQm
IGNhY2hlTWluRGVhZENhcGFjaXR5LCB1bnNpZ25lZCYgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIHN0
ZDo6Y2hyb25vOjpzZWNvbmRzJiBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLCB1bnNp
Z25lZCYgcGFnZUNhY2hlQ2FwYWNpdHkpCiB7CisgICAgdWludDY0X3QgbWVtb3J5U2l6ZSA9IHJh
bVNpemUoKSAvIE1COworCiAgICAgc3dpdGNoIChjYWNoZU1vZGVsKSB7CiAgICAgY2FzZSBDYWNo
ZU1vZGVsRG9jdW1lbnRWaWV3ZXI6IHsKICAgICAgICAgLy8gUGFnZSBjYWNoZSBjYXBhY2l0eSAo
aW4gcGFnZXMpCkBAIC00MSwyMyArNDMsMTcgQEAgdm9pZCBjYWxjdWxhdGVDYWNoZVNpemVzKENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVtb3J5U2l6ZSwgdWludDY0X3QgZGkKIAog
ICAgICAgICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCiAgICAgICAgIGlm
IChtZW1vcnlTaXplID49IDIwNDgpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5
NiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gOTYgKiBN
QjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxNTM2KQotICAgICAgICAgICAgY2Fj
aGVUb3RhbENhcGFjaXR5ID0gNjQgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgICAgIGNhY2hlVG90
YWxDYXBhY2l0eSA9IDY0ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0gMTAy
NCkKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDMyICogMTAyNCAqIDEwMjQ7Cisg
ICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIE1COwogICAgICAgICBlbHNlIGlm
IChtZW1vcnlTaXplID49IDUxMikKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDE2
ICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAxNiAqIE1C
OwogCiAgICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKICAgICAgICAgY2FjaGVNYXhE
ZWFkQ2FwYWNpdHkgPSAwOwogCi0gICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNhY2hlIGNh
cGFjaXR5IChpbiBieXRlcykKLSAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7Ci0K
LSAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCi0gICAgICAgIHVybENh
Y2hlRGlza0NhcGFjaXR5ID0gMDsKLQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBD
YWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOiB7CkBAIC03MSwzNyArNjcsMTcgQEAgdm9pZCBjYWxj
dWxhdGVDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0X3QgbWVtb3J5U2l6
ZSwgdWludDY0X3QgZGkKIAogICAgICAgICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4g
Ynl0ZXMpCiAgICAgICAgIGlmIChtZW1vcnlTaXplID49IDIwNDgpCi0gICAgICAgICAgICBjYWNo
ZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3Rh
bENhcGFjaXR5ID0gOTYgKiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSAxNTM2
KQotICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNjQgKiAxMDI0ICogMTAyNDsKKyAg
ICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDY0ICogTUI7CiAgICAgICAgIGVsc2UgaWYg
KG1lbW9yeVNpemUgPj0gMTAyNCkKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDMy
ICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIE1C
OwogICAgICAgICBlbHNlIGlmIChtZW1vcnlTaXplID49IDUxMikKLSAgICAgICAgICAgIGNhY2hl
VG90YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICBjYWNoZVRvdGFs
Q2FwYWNpdHkgPSAxNiAqIE1COwogCiAgICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gY2Fj
aGVUb3RhbENhcGFjaXR5IC8gODsKICAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSBjYWNo
ZVRvdGFsQ2FwYWNpdHkgLyA0OwogCi0gICAgICAgIC8vIEZvdW5kYXRpb24gbWVtb3J5IGNhY2hl
IGNhcGFjaXR5IChpbiBieXRlcykKLSAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMjA0OCkKLSAg
ICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA0ICogMTAyNCAqIDEwMjQ7Ci0gICAg
ICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0gMTAyNCkKLSAgICAgICAgICAgIHVybENhY2hlTWVt
b3J5Q2FwYWNpdHkgPSAyICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGVsc2UgaWYgKG1lbW9yeVNp
emUgPj0gNTEyKQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEgKiAxMDI0
ICogMTAyNDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0
eSA9ICAgICAgNTEyICogMTAyNDsgCi0KLSAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAo
aW4gYnl0ZXMpCi0gICAgICAgIGlmIChkaXNrRnJlZVNpemUgPj0gMTYzODQpCi0gICAgICAgICAg
ICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDc1ICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGVsc2Ug
aWYgKGRpc2tGcmVlU2l6ZSA+PSA4MTkyKQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSA0MCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBlbHNlIGlmIChkaXNrRnJlZVNpemUgPj0g
NDA5NikKLSAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMzAgKiAxMDI0ICogMTAy
NDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAyMCAq
IDEwMjQgKiAxMDI0OwotCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENhY2hlTW9k
ZWxQcmltYXJ5V2ViQnJvd3NlcjogewpAQCAtMTE1LDE2ICs5MSwxNiBAQCB2b2lkIGNhbGN1bGF0
ZUNhY2hlU2l6ZXMoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsLCB1aW50NjRfdCBtZW1vcnlTaXplLCB1
aW50NjRfdCBkaQogCiAgICAgICAgIC8vIE9iamVjdCBjYWNoZSBjYXBhY2l0aWVzIChpbiBieXRl
cykKICAgICAgICAgLy8gKFRlc3RpbmcgaW5kaWNhdGVzIHRoYXQgdmFsdWUgLyBNQiBkZXBlbmRz
IGhlYXZpbHkgb24gY29udGVudCBhbmQKLSAgICAgICAgLy8gYnJvd3NpbmcgcGF0dGVybi4gRXZl
biBncm93dGggYWJvdmUgMTI4TUIgY2FuIGhhdmUgc3Vic3RhbnRpYWwgCisgICAgICAgIC8vIGJy
b3dzaW5nIHBhdHRlcm4uIEV2ZW4gZ3Jvd3RoIGFib3ZlIDEyOE1CIGNhbiBoYXZlIHN1YnN0YW50
aWFsCiAgICAgICAgIC8vIHZhbHVlIC8gTUIgZm9yIHNvbWUgY29udGVudCAvIGJyb3dzaW5nIHBh
dHRlcm5zLikKICAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0gMjA0OCkKLSAgICAgICAgICAgIGNh
Y2hlVG90YWxDYXBhY2l0eSA9IDEyOCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVU
b3RhbENhcGFjaXR5ID0gMTI4ICogTUI7CiAgICAgICAgIGVsc2UgaWYgKG1lbW9yeVNpemUgPj0g
MTUzNikKLSAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDk2ICogMTAyNCAqIDEwMjQ7
CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIE1COwogICAgICAgICBlbHNl
IGlmIChtZW1vcnlTaXplID49IDEwMjQpCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkg
PSA2NCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNjQg
KiBNQjsKICAgICAgICAgZWxzZSBpZiAobWVtb3J5U2l6ZSA+PSA1MTIpCi0gICAgICAgICAgICBj
YWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgY2FjaGVU
b3RhbENhcGFjaXR5ID0gMzIgKiBNQjsKIAogICAgICAgICBjYWNoZU1pbkRlYWRDYXBhY2l0eSA9
IGNhY2hlVG90YWxDYXBhY2l0eSAvIDQ7CiAgICAgICAgIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0g
Y2FjaGVUb3RhbENhcGFjaXR5IC8gMjsKQEAgLTEzNSwzNyArMTExLDg0IEBAIHZvaWQgY2FsY3Vs
YXRlQ2FjaGVTaXplcyhDYWNoZU1vZGVsIGNhY2hlTW9kZWwsIHVpbnQ2NF90IG1lbW9yeVNpemUs
IHVpbnQ2NF90IGRpCiAKICAgICAgICAgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9
IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHsgNjAgfTsKIAorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKK30KKwor
dm9pZCBjYWxjdWxhdGVVUkxDYWNoZVNpemVzKENhY2hlTW9kZWwgY2FjaGVNb2RlbCwgdWludDY0
X3QgZGlza0ZyZWVTaXplLCB1bnNpZ25lZCYgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgdWludDY0
X3QmIHVybENhY2hlRGlza0NhcGFjaXR5KQoreworICAgIHN3aXRjaCAoY2FjaGVNb2RlbCkgewor
ICAgIGNhc2UgQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOiB7CisgICAgICAgIC8vIEZvdW5kYXRp
b24gbWVtb3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKKyAgICAgICAgdXJsQ2FjaGVNZW1v
cnlDYXBhY2l0eSA9IDA7CisKKyAgICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0
ZXMpCisgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKKworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOiB7CisgICAgICAgIHVp
bnQ2NF90IG1lbW9yeVNpemUgPSByYW1TaXplKCkgLyBNQjsKKworICAgICAgICAvLyBGb3VuZGF0
aW9uIG1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAgICAgIGlmIChtZW1vcnlT
aXplID49IDIwNDgpCisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gNCAqIE1C
OworICAgICAgICBlbHNlIGlmIChtZW1vcnlTaXplID49IDEwMjQpCisgICAgICAgICAgICB1cmxD
YWNoZU1lbW9yeUNhcGFjaXR5ID0gMiAqIE1COworICAgICAgICBlbHNlIGlmIChtZW1vcnlTaXpl
ID49IDUxMikKKyAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAxICogTUI7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA1MTIgKiBL
QjsKKworICAgICAgICAvLyBEaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKKyAgICAgICAg
aWYgKGRpc2tGcmVlU2l6ZSA+PSAxNjM4NCkKKyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFj
aXR5ID0gNzUgKiBNQjsKKyAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVTaXplID49IDgxOTIpCisg
ICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDQwICogTUI7CisgICAgICAgIGVsc2Ug
aWYgKGRpc2tGcmVlU2l6ZSA+PSA0MDk2KQorICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSAzMCAqIE1COworICAgICAgICBlbHNlCisgICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBh
Y2l0eSA9IDIwICogTUI7CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ2FjaGVN
b2RlbFByaW1hcnlXZWJCcm93c2VyOiB7CisgICAgICAgIHVpbnQ2NF90IG1lbW9yeVNpemUgPSBy
YW1TaXplKCkgLyBNQjsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKG1lbW9yeVNp
emUgPj0gMTAyNCkKLSAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAxNiAqIDEw
MjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDE2ICogTUI7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA4ICog
MTAyNCAqIDEwMjQ7CisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gOCAqIE1C
OwogI2Vsc2UKICAgICAgICAgLy8gRm91bmRhdGlvbiBtZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGlu
IGJ5dGVzKQogICAgICAgICAvLyAoVGhlc2UgdmFsdWVzIGFyZSBzbWFsbCBiZWNhdXNlIFdlYkNv
cmUgZG9lcyBtb3N0IGNhY2hpbmcgaXRzZWxmLikKICAgICAgICAgaWYgKG1lbW9yeVNpemUgPj0g
MTAyNCkKLSAgICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA0ICogMTAyNCAqIDEw
MjQ7CisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gNCAqIE1COwogICAgICAg
ICBlbHNlIGlmIChtZW1vcnlTaXplID49IDUxMikKLSAgICAgICAgICAgIHVybENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSAyICogMTAyNCAqIDEwMjQ7CisgICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5ID0gMiAqIE1COwogICAgICAgICBlbHNlIGlmIChtZW1vcnlTaXplID49IDI1NikKLSAg
ICAgICAgICAgIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAxICogMTAyNCAqIDEwMjQ7CisgICAg
ICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMSAqIE1COwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gICAgICA1MTIgKiAxMDI0OworICAg
ICAgICAgICAgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDUxMiAqIEtCOwogI2VuZGlmCiAKICAg
ICAgICAgLy8gRGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCiAgICAgICAgIGlmIChkaXNr
RnJlZVNpemUgPj0gMTYzODQpCi0gICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDUw
MCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA1MDAg
KiBNQjsKICAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVTaXplID49IDgxOTIpCi0gICAgICAgICAg
ICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDI1MCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAg
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAyNTAgKiBNQjsKICAgICAgICAgZWxzZSBpZiAoZGlza0Zy
ZWVTaXplID49IDQwOTYpCi0gICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDEyNSAq
IDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAxMjUgKiBN
QjsKICAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVTaXplID49IDIwNDgpCi0gICAgICAgICAgICB1
cmxDYWNoZURpc2tDYXBhY2l0eSA9IDEwMCAqIDEwMjQgKiAxMDI0OworICAgICAgICAgICAgdXJs
Q2FjaGVEaXNrQ2FwYWNpdHkgPSAxMDAgKiBNQjsKICAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVT
aXplID49IDEwMjQpCi0gICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDc1ICogMTAy
NCAqIDEwMjQ7CisgICAgICAgICAgICB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDc1ICogTUI7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gNTAgKiAxMDI0
ICogMTAyNDsKKyAgICAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gNTAgKiBNQjsKIAog
ICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2FjaGVNb2RlbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuaAppbmRleCAz
NGRkZDA0OC4uY2Y0NzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NhY2hl
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5oCkBAIC0zNyw5
ICszNyw4IEBAIGVudW0gQ2FjaGVNb2RlbCB7CiAgICAgQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93
c2VyCiB9OwogCi12b2lkIGNhbGN1bGF0ZUNhY2hlU2l6ZXMoQ2FjaGVNb2RlbCBjYWNoZU1vZGVs
LCB1aW50NjRfdCBtZW1vcnlTaXplLCB1aW50NjRfdCBkaXNrRnJlZVNpemUsCi0gICAgdW5zaWdu
ZWQmIGNhY2hlVG90YWxDYXBhY2l0eSwgdW5zaWduZWQmIGNhY2hlTWluRGVhZENhcGFjaXR5LCB1
bnNpZ25lZCYgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIHN0ZDo6Y2hyb25vOjpzZWNvbmRzJiBkZWFk
RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsLAotICAgIHVuc2lnbmVkJiBwYWdlQ2FjaGVDYXBh
Y2l0eSwgdW5zaWduZWQgbG9uZyYgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgdW5zaWduZWQgbG9u
ZyYgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwordm9pZCBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVz
KENhY2hlTW9kZWwsIHVuc2lnbmVkJiBjYWNoZVRvdGFsQ2FwYWNpdHksIHVuc2lnbmVkJiBjYWNo
ZU1pbkRlYWRDYXBhY2l0eSwgdW5zaWduZWQmIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBzdGQ6OmNo
cm9ubzo6c2Vjb25kcyYgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwgdW5zaWduZWQm
IHBhZ2VDYWNoZUNhcGFjaXR5KTsKK3ZvaWQgY2FsY3VsYXRlVVJMQ2FjaGVTaXplcyhDYWNoZU1v
ZGVsLCB1aW50NjRfdCBkaXNrRnJlZVNpemUsIHVuc2lnbmVkJiB1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5LCB1aW50NjRfdCYgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYWMz
ZTFjZi4uMTQ3NTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0yMDUsNyArMjA1LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRXZWJraXRJbmRleGVkREJFbmFi
bGVkKHRydWUpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShHVEspCiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRTaG91bGRD
bGVhckJhY2tpbmdTdG9yZXModHJ1ZSk7CiAjZW5kaWYKIApAQCAtNTI5LDExICs1MjksMjUgQEAg
dm9pZCBXZWJQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKHVpbnQzMl90IGNtKQogewogICAgIENhY2hl
TW9kZWwgY2FjaGVNb2RlbCA9IHN0YXRpY19jYXN0PENhY2hlTW9kZWw+KGNtKTsKIAotICAgIGlm
ICghbV9oYXNTZXRDYWNoZU1vZGVsIHx8IGNhY2hlTW9kZWwgIT0gbV9jYWNoZU1vZGVsKSB7Ci0g
ICAgICAgIG1faGFzU2V0Q2FjaGVNb2RlbCA9IHRydWU7Ci0gICAgICAgIG1fY2FjaGVNb2RlbCA9
IGNhY2hlTW9kZWw7Ci0gICAgICAgIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKTsK
LSAgICB9CisgICAgaWYgKG1faGFzU2V0Q2FjaGVNb2RlbCAmJiAoY2FjaGVNb2RlbCA9PSBtX2Nh
Y2hlTW9kZWwpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc1NldENhY2hlTW9kZWwgPSB0
cnVlOworICAgIG1fY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7CisKKyAgICB1bnNpZ25lZCBjYWNo
ZVRvdGFsQ2FwYWNpdHkgPSAwOworICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENhcGFjaXR5ID0g
MDsKKyAgICB1bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7CisgICAgYXV0byBkZWFk
RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29uZHMgeyAwIH07
CisgICAgdW5zaWduZWQgcGFnZUNhY2hlU2l6ZSA9IDA7CisgICAgY2FsY3VsYXRlTWVtb3J5Q2Fj
aGVTaXplcyhjYWNoZU1vZGVsLCBjYWNoZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENhcGFj
aXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZh
bCwgcGFnZUNhY2hlU2l6ZSk7CisKKyAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hl
OjpzaW5nbGV0b24oKTsKKyAgICBtZW1vcnlDYWNoZS5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVh
ZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKKyAg
ICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOworICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0
TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKKworICAgIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChjYWNo
ZU1vZGVsKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkK
QEAgLTc1MSw4ICs3NjUsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnVzZXJHZXN0dXJlVG9rZW5EZXN0
cm95ZWQoVXNlckdlc3R1cmVUb2tlbiYgdG9rZW4pCiAKIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJS
ZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgcmVzb3VyY2VDYWNoZXNUb0NsZWFy
KQogewotICAgIHBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyhyZXNvdXJjZUNhY2hlc1RvQ2xl
YXIpOwotCiAgICAgLy8gVG9nZ2xpbmcgdGhlIGNhY2hlIG1vZGVsIGxpa2UgdGhpcyBmb3JjZXMg
dGhlIGNhY2hlIHRvIGV2aWN0IGFsbCBpdHMgaW4tbWVtb3J5IHJlc291cmNlcy4KICAgICAvLyBG
SVhNRTogV2UgbmVlZCBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4KICAgICBDYWNoZU1vZGVsIGNh
Y2hlTW9kZWwgPSBtX2NhY2hlTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IDhhNTIyMmQuLjA4YjRkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0yNjEsNyArMjYxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiYgaGFzaGVzKTsKIAogICAgIHZvaWQgcGxhdGZv
cm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwotICAgIHZvaWQgcGxhdGZvcm1DbGVhclJlc291
cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhcik7CiAKICAgICB2b2lkIHNldEVuaGFuY2Vk
QWNjZXNzaWJpbGl0eShib29sKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNTAzNjcxYi4uNGQ3MTU2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KQEAgLTQ4LDEwICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9OU0FjY2Vzc2li
aWxpdHlTUEkuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9wdGhyZWFk
U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZOb2RlVHJhY2tlci5oPgpAQCAtNjEsNyArNTksNiBA
QAogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgogI2ltcG9ydCA8c3RkaW8uaD4KLSNpbXBvcnQgPHd0Zi9SQU1TaXplLmg+CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzU2VydmljZXNTUEkuaD4KQEAgLTc1
LDQ1ICs3Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotc3RhdGljIHVpbnQ2NF90IHZvbHVtZUZyZWVTaXplKE5TU3RyaW5nICpwYXRoKQordm9p
ZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCkKIHsKLSAgICBO
U0RpY3Rpb25hcnkgKmZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6cGF0aCBl
cnJvcjpOVUxMXTsKLSAgICByZXR1cm4gW1tmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFsdWVd
OwotfQotCi12b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCi17Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBuc3VybENhY2hlRGlyZWN0
b3J5ID0gYWRvcHROUygoTlNTdHJpbmcgKilXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7Ci0gICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQotICAgICAgICBuc3VybENhY2hlRGly
ZWN0b3J5ID0gTlNIb21lRGlyZWN0b3J5KCk7Ci0KLSAgICB1aW50NjRfdCBtZW1TaXplID0gcmFt
U2l6ZSgpIC8gMTAyNCAvIDEwMjQ7Ci0KLSAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEw
MDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlIAotICAgIC8vIGNv
dW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgotICAgIHVp
bnQ2NF90IGRpc2tGcmVlU2l6ZSA9IHZvbHVtZUZyZWVTaXplKG5zdXJsQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpIC8gMTAyNCAvIDEwMDA7Ci0KLSAgICB1bnNpZ25lZCBjYWNoZVRvdGFsQ2FwYWNpdHkg
PSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKLSAgICB1bnNpZ25l
ZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7Ci0gICAgYXV0byBkZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29uZHMgeyAwIH07Ci0gICAgdW5zaWduZWQg
cGFnZUNhY2hlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyB1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5ID0gMDsKLSAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlRGlza0NhcGFjaXR5ID0gMDsKLQot
ICAgIGNhbGN1bGF0ZUNhY2hlU2l6ZXMoY2FjaGVNb2RlbCwgbWVtU2l6ZSwgZGlza0ZyZWVTaXpl
LAotICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNo
ZU1heERlYWRDYXBhY2l0eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKLSAgICAg
ICAgcGFnZUNhY2hlU2l6ZSwgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkpOwotCi0gICAgYXV0byYgbWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9u
KCk7Ci0gICAgbWVtb3J5Q2FjaGUuc2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRDYXBhY2l0eSwg
Y2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7Ci0gICAgbWVtb3J5Q2Fj
aGUuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsKTsKLSAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldE1heFNpemUocGFn
ZUNhY2hlU2l6ZSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNl
Q2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQotewotICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcy4KIH0KIAogI2lmIFVTRShBUFBLSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAppbmRleCA1ZmRhMjFiLi4w
ZDY5MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzU291cC5jcHAKQEAgLTI3LDU2ICsyNywxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKIAotI2luY2x1ZGUgIkNlcnRpZmljYXRlSW5mby5oIgotI2lu
Y2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgotI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Ci0jaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1v
ZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAgICB1bnNpZ25lZCBjYWNoZVRvdGFsQ2Fw
YWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsKLSAgICB1
bnNpZ25lZCBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7Ci0gICAgYXV0byBkZWFkRGVjb2RlZERh
dGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29uZHMgeyAwIH07Ci0gICAgdW5z
aWduZWQgcGFnZUNhY2hlU2l6ZSA9IDA7Ci0KLSAgICB1bnNpZ25lZCBsb25nIHVybENhY2hlTWVt
b3J5Q2FwYWNpdHkgPSAwOwotICAgIHVuc2lnbmVkIGxvbmcgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkg
PSAwOwotCi0gICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLQotICAgIHVpbnQ2NF90IG1l
bVNpemUgPSBXVEY6OnJhbVNpemUoKSAvIFdURjo6TUI7Ci0gICAgY2FsY3VsYXRlQ2FjaGVTaXpl
cyhjYWNoZU1vZGVsLCBtZW1TaXplLCBkaXNrRnJlZVNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjYWNoZVRvdGFsQ2FwYWNpdHksIGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERl
YWRDYXBhY2l0eSwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhZ2VDYWNoZVNpemUsIHVybENhY2hlTWVtb3J5Q2FwYWNpdHksIHVybENh
Y2hlRGlza0NhcGFjaXR5KTsKLQotICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gV2ViQ29yZTo6TWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpOwotICAgIG1lbW9yeUNhY2hlLnNldERpc2FibGVkKGNhY2hl
TW9kZWwgPT0gQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyKTsKLSAgICBtZW1vcnlDYWNoZS5zZXRD
YXBhY2l0aWVzKGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2Fj
aGVUb3RhbENhcGFjaXR5KTsKLSAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwotICAgIFdlYkNv
cmU6OlBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKLQot
I2lmIFBMQVRGT1JNKEdUSykKLSAgICBXZWJDb3JlOjpQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNl
dFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikKLXsKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBubyBsb25nZXIgc291cCBz
cGVjaWZpYywgdGhpcyBmaWxlIHNob3VsZCBiZSByZW5hbWVkLgorICAgIFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlZChjYWNoZU1vZGVsID09IENhY2hlTW9kZWxE
b2N1bWVudFZpZXdlcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3Zv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpCiB7CiB9CiAK
</data>
<flag name="review"
          id="308414"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>